cybertux-logo
Dagtemperatuur
(24 uur)
Maandgemiddelden
(vergelijk 2  jaren)
Datumhistorie
(alle jaren)
De techniek

Externe links

Temperatuur sensoren Dallas DS18S20Grafieken maken met Gnuplot




De techniek achter de temperatuurmetingen

De temperatuurmetingen waar ik op 19 januari 2013 om 12:00 uur mee ben gestopt, zijn op 17 december 2013 om 20:30 uur weer hervat. Nu met een Raspberry Pi:

De nieuwe server die ik in januari 2013 in gebruik heb genomen heeft weliswaar een RS232-poort, maar die werkt, zoals wel vaker met laptops, op een lagere spanning. Daardoor konden de sensoren niet meer worden uitgelezen, want die hebben die hogere spanning nodig.
De Raspberry Pi, die nu als extra server draait, heeft speciale IO-pinnen, waar je van alles op aan kunt sluiten. Dus ook temperatuursensoren. En dat werkt perfect!

Hardware

De gebruikte sensoren, Dallas DS18S20, zijn zogenaamde 1-wire devices. Ze worden, parallel aan elkaar, met 1 datalijn aangesloten op een GPIO-pin van de Raspberry Pi. Alles wat verder nog nodig is, is een pull-up-weerstand van 4K7. Meer niet.


Bron: http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/temperature

Op dit moment zijn drie sensoren aangesloten: buiten, binnen en in de garage. De sensor in de garage hangt ongeveer 1,50 meter boven de vrieskast en aan het golfpatroon in de temperatuur kan je precies zien wanneer de vriezer inschakelt. De minimale temperatuurverhoging die daardoor optreedt wordt feilloos door de sensor geregistreerd.

Software

Het uitlezen van de sensoren is niet meer dan het lezen van een bestandje dat door de device-driver wordt klaargezet. Aangezien dit geen tijdkritische zaak is, gaat dat snel genoeg. Bovendien kost het initialiseren en lezen van de sensor ongeveer 500 ms, dus veel haast hoef je niet te hebben.
Een crontab-taak zorgt ervoor dat elke 15 minuten een shell-script wordt gestart dat de sensoren uitleest.

Voor de datum en tijd wordt het commando date -u gebruikt, waarmee de tijd in UTC-formaat wordt verkregen. Dat is de tijd zonder zomertijdcorrectie, zodat we geen gaten of overlappingen in de temperatuurregistratie krijgen. Deze waarde moet dan met één worden opgehoogd, omdat we één tijdzone verder naar het oosten zitten ten opzichte van UTC.

Het inlezen en bewaren in een MySQL-database gebeurt in een bash-script dat ik speciaal voor deze versie heb geschreven. De oude software was niet meer bruikbaar.
Groot verschil met de oude versie is dat nu alles wordt gedaan in dit script, dus ook het maken van het invoerbestand met grafiekwaarden (gnuplot24) voor gnuplot.

gnuplot gnuplot24

Het bestand gnuplot24 bevat alle opmaak en verwijzingen die gnuplot nodig heeft voor het maken van de grafiek. In bovenstaand voorbeeld is dat een grafiek van de laatste 24 uur.

Het script zal ik binnenkort ook hier plaatsen.

N.B.
Dat is uiteraard een script voor Linux.
Als je nog steeds met Windows werkt, dan heb je er niets aan.

gnuplot

Het programma gnuplot bestaat al sinds 1986 en wordt nog steeds verder ontwikkeld. Je kan er zowel interactief als in batchmode grafieken mee maken. Ideaal dus, om automatisch webpagina's mee te genereren.

Door de complexe mogelijkheden is het niet iets wat een doorgewinterde muisklikker een "gebruikersvriendelijk" programma zou noemen, maar in wetenschappelijke en wiskundige kringen is het een erg populair programma.

Mijn eenvoudige toepassing doet dus niet echt recht aan de uitgebreide mogelijkheden, maar op de homepage van gnuplot staan veel mooie voorbeelden.

Een groot voordeel van gnuplot is dat het rechtstreeks .gif en .png-bestanden kan genereren, zonder dat er een grafische user-interface aanwezig hoeft te zijn. Daardoor is het heel goed te gebruiken een headless server zonder het X-Window-System.




Laatst gewijzigd: 21-12-2013