Zwembadtemperatuur via mqtt

Door K-Jay op vrijdag 23 juni 2017 11:09 - Reacties (9)
CategorieŽn: Geknutsel, Home automation, Raspberry pi, Views: 2.392

Inleiding
Als je mijn voorgaande blogposts gelezen hebt, weet je dat ik regelmatig met pimatic in de weer ben. Zo kan ik verlichting schakelen, temperatuur loggen, een foto maken als iemand aanbelt en nog veel meer.

433MHz vs wifi
Het is mooi weer en daarom heb ik een zwembadje in de achtertuin opgezet. Je kunt natuurlijk met je grote teen voelen hoe koud het water is, maar de tweaker in mij wil de watertemperatuur uiteraard objectief vastgelegd hebben. Probleem: de afstand van mijn meterkast naar het zwembad is ongeveer 25 meter. Te lang voor een kabeltje en eigenlijk ook te lang om 433MHz-communicatie te gebruiken. Maar dankzij mijn nieuwe Unifi accesspoint heb ik wel beschikking over betrouwbare wifi!

Mqtt
Het wordt dus wifi. Een geschikt protocol om dan te gebruiken is mqtt, een protocol waarmee IoT-apparaten op een simpele manier informatie met elkaar uitwisselen. Bij een mqtt-uitwisseling zijn drie partijen betrokken:
- een publicerende partij, in mijn geval een ESP8266 met een temperatuursensor
- een ontvangende partij, die de gepubliceerde gegevens weergeeft, in mijn geval pimatic
- een broker die de communicatie tussen beide bovenstaande partijen verzorgt. Ik gebruik Mosquitto, geinstalleerd op de Raspberry pi waar pimatic ook op staat

Wat heb je nodig
- een werkende pimatic installatie op een Raspberry pi
- een ESP8266 nodemcu (ebay link)
- een DS18b20 temperatuursensor (ebay link)
- een weerstand 4.7K
- voeding voor je ESP (standaard telefoonoplader, micro-usb)
- behuizing, ik gebruik deze

Aan de slag

Stap 1: ESPEasy installeren op de ESP8266
De open-sourcesoftware ESPEasy zorgt dat de ESP8266 diverse sensoren kan uitlezen en de waarden via mqtt kan versturen. ESPEasy kan nog veel meer overigens.
Download ESPEasy en verbind je ESP met een USB-kabel aan je PC. Volg nu het stappenplan op de wiki van ESPEasy:
Upload succesvol? Herstart je ESP en maak verbinding met het wifi-netwerk dat je ESP nu heeft opgezet. Vul in de getoonde pagina de gegevens van jouw wifi-netwerk in. De ESP is nu in je netwerk opgenomen en kan via de browser beheerd worden.
Tip vanuit de reacties: kies bij de Controllers voor OpenHAB MQTT.

Stap 2: Temperatuursensor verbinden en uitlezen
Verbind de DS18B20 als volgt aan je ESP:
- zwart aan GND
- rood aan 3V3
- geel aan GPIO 13 (D7)
en plaats een weerstand van 4.7K tussen geel en rood.
Navigeer nu met een browser naar het ip van je ESP. Voeg een nieuw device toe:

https://tweakers.net/ext/f/Tm3FMEeJcEGlIxnvoqZtPp2J/full.png

Stap 3: Mosquitto installeren
Ga met Putty of een andere SSL-tool naar je Raspberry pi. Voer de volgende commando’s uit:
Key importeren:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

mosquitto ophalen:
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

terug naar root:
cd

updaten:
sudo apt-get update

mosquitto installeren:
sudo apt-get install mosquitto

mosquitto starten:
mosquitto -v

Stap 4: pimatic aanpassen
Installeer in pimatic de plugin pimatic-mqtt. Dat kan via de interface, of door de config aan te passen.
Voeg vervolgens de volgende regels toe aan je config, bij de devices:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   {
      "class": "MqttSensor",
      "id": "espeasy_1",
      "name": "espeasy_1",
      "attributes": [
        {
          "name": "temperature",
          "topic": "/espeasy_1/temp_zwembad/Temperature",
          "type": "number",
          "unit": "įC",
          "acronym": "Temperatuur zwembad",
          "messageMap": {}
        }
      ],
      "xAttributeOptions": []
    }


Herstart pimatic. Je nieuwe device zal nu de temperatuur laten zien.

https://tweakers.net/ext/f/XpLIOtp72JIgMsDNxu7EPSuV/full.png

Nog een extra tip: na een eventuele herstart van je pi moet je Mosquitto ook weer starten. Dit kun je automatiseren door het starten van Mosquitto als een regel aan pimatic toe te voegen waarin je gebruik maakt van de shell-execute plugin:

code:
1
2
3
4
5
6
7
    {
      "id": "start-mosquitto",
      "name": "Start mosquitto",
      "rule": "when pimatic is starting then execute \"sudo mosquitto -d\"",
      "active": true,
      "logging": true
    }


En nu verder!
Met ESPEasy kun je nog veel meer. Ik heb inmiddels ook al twee deursensoren op dezelfde ESP aangesloten. Indien gewenst kan ik dat in een volgend blogbericht uitleggen. Verder wil ik de mqtt-communicatie nog beveiligen met een wachtwoord. Genoeg te doen dus!

https://tweakers.net/ext/f/C7aFklF19mquZ2S4nT3kpwIe/full.jpg
En je ziet er bijna niets van

Op verzoek twee foto's van mijn ESP in de schuur, kastje open en kastje dicht.
https://tweakers.net/ext/f/YiYTP7b3vqurungVou81S6wj/medium.jpg
https://tweakers.net/ext/f/FbYRkU3fLVcuXHCY24q725IY/medium.jpg

Volgende: Load cell mod voor t3pa 06-'17 Load cell mod voor t3pa
Volgende: Review T300 alcantara 03-'17 Review T300 alcantara

Reacties


Door Tweakers user pasz, zaterdag 24 juni 2017 17:43

Leuk! Erg benieuwd naar de deursensoren.

Door Tweakers user Xavier, zondag 25 juni 2017 22:11

Thanks voor je blog, zeer interessant en doet mij ook nadenken om maar eens een Pi te kopen en wat te klooien met sensoren in huis.

Maar klopt je hardware lijstje wel? Ik zie geen voeding ofzo. En kan je er een foto van maken? Eventueel linkje naar Ebay voor het doosje etc?

Door Tweakers user K-Jay, maandag 26 juni 2017 08:48

Xavier schreef op zondag 25 juni 2017 @ 22:11:
Thanks voor je blog, zeer interessant en doet mij ook nadenken om maar eens een Pi te kopen en wat te klooien met sensoren in huis.

Maar klopt je hardware lijstje wel? Ik zie geen voeding ofzo. En kan je er een foto van maken? Eventueel linkje naar Ebay voor het doosje etc?
Dank voor je feedback! Ik heb voeding en behuizing aan de lijst toegevoegd. Een foto zal ik ook toevoegen.

Door Tweakers user Crashy, zaterdag 1 juli 2017 16:07

Dank voor weer een leuke update! Temperatuur (2 stuks) hangen er nu aan, en geven al op de ESP de juiste temperatuur door, ik ben zelf nog aan het zoeken hoe ik een PIR juist kan aansluiten, ik zie die namelijk zo 123 niet tussen de devices staan, daarnaast is er nog de uitdaging van 5v voor de PIR, terwijl de ESP maar 3.3v levert, ook nog een uitdaging.

Het kan aan mij liggen, maar ik mis een aantal configuratie stappen. Misschien kan je mij hier nog mee helpen?

-Zijn er nog extra instellingen op de ESPeasy die ik moet instellen? MQTT broker, details?
-Mosquito lijkt te draaien, maar ik heb daar geen enkele informatie over instellingen, etc.
-De instellingen in PiMatic zijn voor mij ook niet helder, bijvoorbeeld wordt er bij de device toevoegen van de MQTT sensor gevraagd om een brokerId, wat ik ook invul, ik krijg een error: (@plugin.brokers[@config.brokerId]).

Ik hoop dat je nog kan helpen, dank!

Door Tweakers user Crashy, zaterdag 1 juli 2017 17:34

Correctie op mijzelf... na wat heen en weer gezocht en geklooid te hebben lijkt de Mosquito MQTT broker nu data vanuit de ESP te ontvangen elke paar seconde. Ik heb in de ESP gekozen voor OpenHAB MQTT. Blijf wel nog bij de fout dat ik geen brokerId kan invullen.

Edit 3: Pfff, de aanhouder wint, vraag me niet hoe, maar het is eindelijk gelukt! Via de config file aanpassen werkt het allemaal, als je het via de plugin en de device settings uitvoert gaat het niet werken.

Enige wat overblijft is het aansluiten van de PIR sensor(en), iemand enig idee hoe dit kan met ESPeasy?

Edit 4: als ik je code voor het automatisch starten van mosquitto overneem, geeft hij bij mij een foutmelding in de log: Could not parse rule "when pimatic is starting then execute "sudo mosquitto -d"": Could not find an provider that provides the next action of "execute "sudo mosquitto -d"".

[Reactie gewijzigd op zaterdag 1 juli 2017 18:22]


Door Tweakers user K-Jay, zondag 2 juli 2017 21:59

Top dat het gelukt is!
Dank voor de tip van OpenHAB MQTT, ik heb het aan de tekst toegevoegd.
Voor het uitvoeren van die regel moet je de shell-execute plugin installeren in pimatic.
PIR-sensoren heb ik niet, dus daar kan ik helaas geen antwoord op geven.

Door Tweakers user Crashy, maandag 10 juli 2017 07:50

Ha, dank K-Jay!

Door Tweakers user The Executer, donderdag 21 juni 2018 12:53

Hoe verbindt jij de probe met de headers van de ESP? Zo te zien hetzelfde systeem als de kabels van pc-behuizingen (aan/uit/reset/HDDLED etc)?

Door Tweakers user K-Jay, donderdag 21 juni 2018 13:40

The Executer schreef op donderdag 21 juni 2018 @ 12:53:
Hoe verbindt jij de probe met de headers van de ESP? Zo te zien hetzelfde systeem als de kabels van pc-behuizingen (aan/uit/reset/HDDLED etc)?
Jep, female jumper cables zijn dat. Overal te krijgen :)

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)