Domotica met pimatic, deel 2: temperatuur meten met een DS18B20

Door K-Jay op woensdag 6 januari 2016 14:41 - Reacties (14)
CategorieŽn: Home automation, Raspberry pi, Views: 5.779

In mijn vorige blogpost over pimatic heb ik uitgelegd hoe je pimatic installeert op de Raspberry pi en hoe je vervolgens KlikAanKlikUit kunt schakelen. Ook heb ik verteld dat er nog veel meer mogelijk is met pimatic, waaronder het meten en loggen van temperatuur. Hoe je dat doet, leg ik uit in deze blogpost.

temperatuur in pimatic

Wat heb je nodig
  • ds18b20 one-wire temperatuursensor. Verkrijgbaar op Ebay voor ongeveer 2 euro per stuk
  • weerstand van 4.7 kOhm
ds18b20

Aansluiten en configureren
Sluit de sensor aan op de GPIO-pinnen van je Raspberry pi zoals weergegeven in onderstaande afbeelding:

temperatuur in pimatic

Je kunt overigens zo veel sensors aansluiten als je wil. In onderstaande stappen ga ik ervan uit dat je er twee hebt.

Sensors aangesloten? Dan gaan we met de pi aan de slag.

Log met SSH in op je pi en open de boot config:
sudo nano /boot/config.txt

scroll naar beneden en voeg de volgende regel toe:
dtoverlay=w1-gpio

sla de invoer op (ctrl+x, y, enter) op en reboot:
sudo reboot

Voer vervolgens deze commando’s uit:
sudo modprobe w1-gpio

sudo modprobe w1-therm

De Raspberry pi weet nu dat er temperatuursensors aan zijn GPIO hangen. Eens kijken of we ze kunnen vinden. Voer het volgende commando uit:
ls -l /sys/bus/w1/devices/

om alle aangesloten apparaten te tonen. De aangesloten temperatuursensors hebben een aanduiding die begint met “28-“. Dat is het hardware-id van de sensor. Sla het ergens op, want dat hebben we straks nodig.

devices in putty

Installeer nu de ds18b20-plugin in pimatic.
Open de config-editor en maak per sensor een device aan. Hier heb je de genoteerde hardwareID's nodig:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{  
"id": "tempsensor1",  
"name": "Temperatuursensor 1",  
"class": "DS18B20Sensor",  
"hardwareId": "xxxxx",  
"interval": 10000  
} ,
{  
"id": "tempsensor2",  
"name": "Temperatuursensor 2",  
"class": "DS18B20Sensor",  
"hardwareId": "xxxxx",  
"interval": 10000  
}


De waarde bij "interval" is het aantal milliseconden tussen de uitlezingen van de sensor.

Sla de config op, pimatic herstart automatisch.

Als pimatic weer draait kun je de sensors aan een van je pagina's toevoegen.

Automatisch laden
Om te voorkomen dat je na iedere herstart van je Raspberry pi die modprobe-commando’s moet opgeven kun je ze beter bij het opstarten automatisch laden. Open het bestand "modules":
sudo nano /etc/modules

en voeg de volgende regels toe:

code:
1
2
w1-gpio 
w1-therm


en sla het bestand op met ctrl-x, y, enter.

Troubleshooting
:? De sensor wordt niet getoond in de lijst met aangesloten hardware
  • Controleer dat je sensor en de weerstand correct hebt aangesloten
  • Weet je zeker dat je de juiste weerstand gebruikt hebt?
  • Heb je de modprobe-commando's (1 voor 1) uitgevoerd?
En dan nog dit
Als alles gelukt is, heb je nu temperatuurlogging in pimatic. Met het rules-systeem kun je nu acties verbinden aan de gemeten waarden, zoals het schakelen van je verwarming of je airco.

Een nadeel van de beschreven methode is dat de sensor met een kabeltje verbonden moet zijn aan de Raspberry pi. Een draadloze sensor biedt veel meer vrijheid. Als je daar ervaringen mee hebt, deel ze! Dan zal ik op mijn beurt in een volgende blogpost vertellen hoe ik op mijn smartphone een notificatie mťt foto krijg als er iemand bij mijn woning aanbelt.

Volgende: Notificatie deurbel op je smartphone (pimatic deel 3) 01-'16 Notificatie deurbel op je smartphone (pimatic deel 3)
Volgende: DIY head tracking, deel 1: IR-clip 01-'16 DIY head tracking, deel 1: IR-clip

Reacties


Door Tweakers user clogie886, woensdag 6 januari 2016 15:03

Ik heb Pimatic & Raspberry proberen te gebruiken met verschillende DHT11 sensoren maar liep hier tegen het probleem aan met kabellengte tussen DHT11 en Raspberry, 6-7 meter ging niet lukken :? Hoe lang mag de kabel zijn met de DS18B20?

Door Tweakers user K-Jay, woensdag 6 januari 2016 15:14

Goeie vraag! Als ik even snel google, zie ik dat het afhangt van de kwaliteit van je verlengkabel. Als je goede UTP-kabel gebruikt, zou je 30 meter moeten kunnen halen, lees ik ergens.
Mijn sensoren hebben momenteel een kabel van ongeveer 1 meter. DHT11-sensoren heb ik trouwens geen ervaring mee.

Door Tweakers user clogie886, woensdag 6 januari 2016 15:49

Ik gebruikte 'standaard' telefoonkabel 4 aders waarvan ik er maar 3 gebruikte. Heb pas later begrepen dat omdat het een digitaal signaal is wat verstuurd wordt het maar een korte afstand overbruggen. Waar heb jij gelezen 30m met UTP kabel?


Door Tweakers user Thedr, donderdag 7 januari 2016 11:00

Voor een draadloze variant is het leuk om eens te kijken naar een combinatie met een ESP8266 waar bijvoorbeeld onze held Koffie mee bezig is: https://www.youtube.com/watch?v=nxY3igxzyz0
Ook deze, waarop bovenstaande gebaseerd is, is interessant: http://forum.pimatic.org/...-temperature-and-humidity

Door Tweakers user onok, donderdag 7 januari 2016 15:08

Ik maak ook veel gebruik van ds18b20 sensoren op de pi. Ik gebruik geen pimatic, maar ga lekker zelf aan de knutsel. Als je net als mij met nodeJS aan de slag wil, kun je deze library gebruiken:
https://www.npmjs.com/package/ds18x20

Door Tweakers user indigo79, donderdag 7 januari 2016 20:44

Bij Maxim kan je ook (gratis) engineering samples aanvragen. Maximum twee per type als ik me niet vergis, maar als het is om eens iets te proberen en je verder geen andere componenten nodig hebt (wat voor iets als dit experiment wel eens het geval kan zijn) is dat wel een fijne oplossing.

Door Tweakers user jandirks, vrijdag 8 januari 2016 10:52

Ik gebruik de ESP8266 (zoals @Thedr voorsteld, maar dan via een NodeMCU) die ik van Espruino firmware heb voorzien. Deze firmware maakt programmeren in JavaScript mogelijk. De ESP8266 verbindt met een interval van 10 minuten met mijn wifi access point, stuurt een url met onder andere als parameter de temperatuur gemeten via een DS18B20 door naar mijn domoticz server. Met een kleine aanpassing in mij code wil ik elke minuut de temperatuur meten en het gemiddeld na 10 minuten doorsturen.

Voordeel is dat een ESP8266 (en ook NodeMCU) goedkoper is dan een RPI2 en RPi0 die je ook nog moet voorzien van wifi of netwerk. Voor een paar tientjes heb ik in elke kamer, maar ook buiten, een node die de temperatuur doorgeeft.

Door Tweakers user francoski, zaterdag 9 januari 2016 10:48

Leuk! Leek mij ook interessant dus ook maar even in elkaar geknutseld. Draait prima met een telefoonkabel van meter of 8 ertussen.

Door Tweakers user rorie, zaterdag 9 januari 2016 12:03

jandirks schreef op vrijdag 08 januari 2016 @ 10:52:
Ik gebruik de ESP8266 (zoals @Thedr voorsteld, maar dan via een NodeMCU) die ik van Espruino firmware heb voorzien. Deze firmware maakt programmeren in JavaScript mogelijk. De ESP8266 verbindt met een interval van 10 minuten met mijn wifi access point, stuurt een url met onder andere als parameter de temperatuur gemeten via een DS18B20 door naar mijn domoticz server. Met een kleine aanpassing in mij code wil ik elke minuut de temperatuur meten en het gemiddeld na 10 minuten doorsturen.

Voordeel is dat een ESP8266 (en ook NodeMCU) goedkoper is dan een RPI2 en RPi0 die je ook nog moet voorzien van wifi of netwerk. Voor een paar tientjes heb ik in elke kamer, maar ook buiten, een node die de temperatuur doorgeeft.
Lijkt me super leuk om dit te maken, wat gebruik je voor voeding hiervoor? Een batterij of accu lijkt mij alleen een optie als deze minimaal een jaar mee gaan. Via usb of adapter lijkt mij een betere optie alleen ben ik deze oplossing nog niet tegen gekomen.

Door Tweakers user Thedr, zaterdag 9 januari 2016 14:39

Ik zou dan eerder voor een DHT-22 of liever nog een BME280 sensor gaan. Deze meten naast temperatuur ook relatieve luchtvochtigheid en de BME280 ook luchtdruk. Vooral de laatste is wellicht wat duurder, maar kleiner en misschien ook wel iets nauwkeuriger.

Door Tweakers user jandirks, maandag 11 januari 2016 08:00

rorie schreef op zaterdag 09 januari 2016 @ 12:03:
[...]


Lijkt me super leuk om dit te maken, wat gebruik je voor voeding hiervoor? Een batterij of accu lijkt mij alleen een optie als deze minimaal een jaar mee gaan. Via usb of adapter lijkt mij een betere optie alleen ben ik deze oplossing nog niet tegen gekomen.
Ik gebruik vooralsnog een USB adapter. Kosten minder dan een biertje, nadeel is dat je overal waar je ee temperatuur node ophangt een stopcontact kwijt bent.

Ik ben nog opzoek naar een leuk kastje waar ik het adapter en de ESP8266/DS18B20 in kwijt kan (edit:) en die ik dus rechtstreeks in het stopcontact kan stoppen.

[Reactie gewijzigd op maandag 11 januari 2016 08:04]


Door Tweakers user rorie, maandag 11 januari 2016 14:48

jandirks schreef op maandag 11 januari 2016 @ 08:00:
[...]


Ik gebruik vooralsnog een USB adapter. Kosten minder dan een biertje, nadeel is dat je overal waar je ee temperatuur node ophangt een stopcontact kwijt bent.

Ik ben nog opzoek naar een leuk kastje waar ik het adapter en de ESP8266/DS18B20 in kwijt kan (edit:) en die ik dus rechtstreeks in het stopcontact kan stoppen.
Heb je toevallig nog een schema hiervan? Of sluit je deze USB adapter rechtreeks aan zonder weerstand?

Door Tweakers user jandirks, dinsdag 12 januari 2016 13:01

rorie schreef op maandag 11 januari 2016 @ 14:48:
[...]


Heb je toevallig nog een schema hiervan? Of sluit je deze USB adapter rechtreeks aan zonder weerstand?
De NodeMCU kan rechtstreeks op USB worden aangesloten, dus geen gehannis met de omzetting naar 3.3V. De DS18B20 temp sensor heb ik op de pins van de NodeMCU aangesloten. Ik zie dat sommigen een pull-up weerstand gebruiken tussen data en ground (zo uit mijn hoofd), maar zonder die weerstand lijkt het ook goed te werken en deze schijnt ook niet meer nodig te zijn (bron: http://wp.josh.com/2014/0...-for-ds18b20-temp-sensor/)

Ik kan je eventueel de code die ik gebruik aanleveren als je wilt!

Reageren is niet meer mogelijk