Onze SR1168C controller is via een kabel en een RS485 converter aangesloten op de server. Het uitlezen van de zonneboiler is ontzettend eenvoudig. Door een goede set met tekst richting de controller te sturen krijg je antwoord waaruit je alle informatie van de zonneboiler kan halen. De software lijkt heel erg op die van het uitlezen van de Arduino, echter wordt er niet alleen geluisterd maar ook informatie verzonden.
Wanneer bovenstaande string wordt verstuurd naar de controller dan antwoord de controller met een hele rits aan data. Het verzenden gaat als volgt:
Eerst, voor de zekerheid, zorgen dat er nergens meer informatie in een buffer zit. En daarna door middel van een outputStream de string versturen naar de controller
Het ontvangen van de data is ook een event, vergelijkbaar met dat van de Arduino. Sterker nog, de code is nagenoeg identiek. Daarom laat ik hier ook alleen het verwerken van de data zien.
Alle data komt in een joekel van een string binnen. Elke deel van die string heeft een betekenis. Dankzij een Excelsheet van iemand weet ik exact wat wat is. Vanuit die lijst kan ik dus alle belangrijke data halen zoals T0 tot en met T6, hoe hard de pomp draait, hoeveel er is opgewekt etc.
Het bepalen van die waarden is een ding. Die data ergens opslaan is een andere zaak. Alle data wordt opgeslagen in een database. Door middel van een standaard HTTP aanroep wordt de data verzonden naar mijn database. De database heeft een aparte ingang zodat ik via HTTP de database kan benaderen. Het versturen naar de database gaat zo:
Maak een URL aan, maak een HTTP connectie, en lees in wat de response is. Alle informatie staat al in de URL vermeld die ik in de database weer uit elkaar kan halen en kan opslaan.
Ik maak gebruik van een Oracle 11G XE database.Dit is een gratis database versie van Oracle maar bevat wel alles wat ik nodig heb. Ik heb een Oracle achtergrond en dat maakt dus ook een groot deel uit bij de beslissing om ook hier voor Oracle te kiezen.
DTS_LOGGING, hier komt alle logging in te staan, vooral wanneer er wat fout gaat. Geeft mij meer inzicht in wat er fout gaat en waarom.
DTS_SENSORBASE, elke sensor heeft een bepaalde locatie, of PI waar die op aangesloten zit. Deze zitten allemaal in deze tabel opgeslagen
DTS_SENSORCACHE, de meest recente waarde van elke sensor zit in deze tabel opgeslagen, dit geeft een behoorlijke performancewinst
DTS_UNKNOWNSENSORS, alle data die binnenkomt maar die ik nog niet herken wordt hierin opgeslagen. Ik kan dan op een later stadium deze data alsnog inlezen