Sensornetwerk stabiel

Sinds 15 november vorig jaar is onze douche WTW voorzien van sensoren. Nu na bijna drie maanden heb ik eindelijk de software stabiel genoeg om deze te gaan uitbreiden. Dingen waar ik tegenaan ben gelopen.

Raspberry PI

De Raspberry PI is niet 100% stabiel. Na ongeveer een maand gedraaid te hebben liep de hele Raspberry ineens vast. Daar kwam ik uiteraard pas na een paar dagen achter waardoor er dus een periode is geweest waarin niets is gelogd. De oplossing die ik nu gekozen heb is erg simpel. Elke zondag wordt automatisch door middel van een cron job de Raspberry herstart.

De scripts voor het loggen heb ik intussen opgenomen in init.d. Dus elke keer als hij herstart wordt automatisch de logsoftware ingeladen.

Database performance

Zes sensoren, elke 30 seconden een melding richting de server. Dat zijn dus 12 records die per minuut worden weggeschreven. Dat zijn 17280 records per dag, dat zijn omgerekend 6,3 miljoen records op jaarbasis. De bedoeling is om behoorlijk op te gaan schalen, het zal mij niets verbazen als er straks 50 sensoren in huis hangen. Op jaarbasis zou dat betekenen dat er 52.5 miljoen records worden opgeslagen in mijn database als ik om de 30 seconden records weg laat schrijven.Eigenlijk wil ik de resolutie gaan opschroeven naar elke 10 seconden, dan kom je dus uit op astronomische getallen in de database.

Ook bij het schrijven van de onderliggende query’s moet ik daar rekening mee houden. Ik heb dus intussen mijn eigen code geoptimaliseerd zodat alles zo optimaal mogelijk draait. Bij sommige queries was nog een hoop winst te halen. Daarnaast heb ik een intelligente manier gevonden om veel minder records weg te schrijven.

Voorbeeld

Tijd Waarde
0:00:05 17,7
0:00:35 17,7
0:01:05 17,7
0:01:35 17,7
0:02:05 17,8

Vier keer dezelfde temperatuur opeenvolgend. Dat moet anders kunnen. Dat heb ik nu opgelost door het volgende te doen:

Tijdvan TijdTot Waarde
0:00:05 0:01:35 17,7
0:02:05 0:02:05 17,8

In plaats van 5 records weg te schrijven kan ik dit nu in twee doen ten koste van het opnemen van een extra kolom. Nu maakt het ook bijna niet meer uit of ik nu elke 30 seconden  of elke seconde de temperatuur weg wil schrijven in de database. Ik had begin deze week nog ruim 950.000 records in de tabel zitten. Na het optimaliseren met bovenstaande algoritme ging ik terug naar 180.000 records.  Het mooiste is nog de sensor die de temperatuur in de kruipruimte meet. In plaats van 2880 records per dag schrijft mijn code nu nog maar 150 records weg.

Nog een ander voordeel is dat de objecten die ik aanmaak voor de website ook een stuk kleiner zijn geworden, hierdoor worden grafieken weer veel sneller gerenderd.

En nu

Ik heb intussen extra DS18B20 sensoren besteld, een extra Raspberry heb ik ook al liggen. De volgende  slag wordt het monitoren van de zonneboiler boven. Dit is de lijst met sensoren die ik wil gaan ophangen.

  1. Aanvoertemperatuur zonneboiler richting collector
  2. Retourtemperatuur zonneboiler vanaf collector
  3. Koud water in
  4. Warm water uit
  5. CV systeem zonneboiler in
  6. CV systeem zonneboiler uit
  7. Temperatuur onderin de boiler
  8. Temperatuur halverwege de boiler
  9. CV Ketel, CV retour ( onderste leiding )
  10. CV ketel, CV aanvoer ( onderste leiding )
  11. CV aanvoer CV ( aanvoertemperatuur van de ketel zelf )
  12. CV retour CV ( retourtemperatuur bij de ketel )
  13. Ruimtetemperatuur kantoor
  14. Ruimtetemperatuur washok/3e WC
  15. Heet water temperatuur na het mengventiel
  16. Optioneel: Temperatuur achterste slaapkamer
  17. Optioneel: Temperatuur overloop
  18. Optioneel: Collector temperatuur
  19. Optioneel: Temperatuur vliering
  20. Optioneel: Temperatuur inloopkast

De collector wil ik ook uiteraard graag gaan loggen op deze manier, alleen zit de collector erg ver weg en wordt die sensorleiding erg lang.

Om al die sensoren netjes aan te sluiten wil ik zelf een soort temperatuur HUB gaan maken zodat ik netjes met stekkertjes nieuwe sensoren kan toevoegen, vergelijkbaar met een computernetwerk.

Thermostaat

En niet te vergeten, een aantal van bovenstaande temperaturen heb ik ook nodig om mijn eigen thermostaat straks te laten werken!

 

Wordt vervolgd