DIY draadloze temperatuursensor voor pimatic - en meer! - Update

Door Koffie op zaterdag 23 januari 2016 13:42 - Reacties (20)
Categorie: -, Views: 5.402

[Update]
Na het plaatsen van deze blogpost is er het nodige op de Github repo geplaatst.
Vragen/problemen kun je kwijt in het issues 'forum' , ook is er een wiki aangemaakt. Er zijn inmiddels ook wat aanpassingen doorgevoerd op de code, lees even de release notes door op Git ;)

Zo'n 2 jaar geleden plaatste ik deze post : Koffie's tweakblog: DIY draadloze temperatuursensor voor pilight
Met deze sensor kon ik de temperatuur in de woonkamer meten en met RF naar pilight verzenden. In de tussentijd is er weer een hoop veranderd.
Zoals lezers van mijn spaarzame blogposts weten ben ik al lange tijd volledig over op Pimatic, een domotica systeem wat ik zelf erg fijn vind.

http://zooi.oostindie.com/images/49920160123_125539_tn.jpg

De hardware markt is ook veranderd. Inmiddels koop je voor een paar dollars een ESP8266. Een ESP is nog het best uit te leggen als 'een Arduino op 80 Mhz, meer flash geheugen onboard wifi'. Ja je leest het goed, fully wifi op een chip zo groot als een stuiver :Y)
Dit opent natuurlijk een wereld aan mogelijkheden.
Een lange wens was om een soort alles in 1 module te bouwen, waarbij ik in een config kan aangeven wat zijn functie is en gaan met die banaan, zonder dat ik voor elk mini-projectje de code hoef aan te passen.

Om dit voor elkaar te krijgen heb ik mijn persoonlijke wensen op een rijtje gezet en ben ik begonnen met schrijven van code en testen met diverse sensoren.
Mijn persoonlijk eisenpakket was/is:

- Compatible met Pimatic
- Temperatuur meten en versturen
- Eventueel luchtvochtigheid meten en versturen
- Relays aansturen
- infrarood zenden
- Weergave van temperatuur, leesbaar op grote afstand

Uiteindelijk is daar mijn project ESPimatic uit voortgekomen. Alle bovenstaande eisen zitten in de code, het is slechts een kwestie van de juiste hardware aan of uit zetten. De module is volledige te besturen vie een webinterface. Zelfs vervangen van een nieuwe flash of HTML bestanden kan vanaf de website.

http://zooi.oostindie.com/images/585espimatic_02.png

Wat heb ik allemaal nodig :?
Om te beginnen een ESP, Zelf gebruik ik een ESP8266-12 met 4mb flash. Daarnaast heb je de sensor naar wens nodig (DS18B20, DHTxx, max7219 LED Matrix).


Hoe installeer ik het :?
Download de code: https://github.com/koffienl/ESPimatic
Compileer de code met Arduino en upload deze via serial naar je ESP.

OK, software staat er op, en nu :?
De eerste keer zal de ESP opstarten in Access Point modus. Maak met verbinding met SSID ESPimatic en wachtwoord espimatic.
Ga met je browser naar 192.168.4.1 , je ziet nu een simpele pagina om je wifi gegevens in te vullen. Na het invullen zal de ESP herstarten en verbinding maken met je wifi netwerk.
Zoek op welk IP adres van je DHCP server heeft gekregen (is te zien op console of in je router/DHCP), en ga er met je browser naar toe.
Je ziet nu wederom een simpele pagina. Met deze pagina upload je 1 voor 1 alle HTML bestanden die je van GitHub hebt gedownload.
Herstart nu voor de laatste keer je ESP en maak verbinding met je browser naar het IP adres.
Je ziet nu de website zoals bedoeld is voor ESPimatic.
Begin door in het menu System -> GPIO aan te vinken welke GPIO's je tot je beschikking hebt. Vervolgens ga je in het menu System -> Pimatic om daar je pimatic API gegevens in te vullen.
Je bent nu klaar om sensoren aan of uit te zetten.
GPIO's die je niet in het begin als zijnde beschikbaar hebt aangevuld en GPIO's in gebruik door sensoren kun je niet kiezen.

Wat kan ik met al die pagina's :?
Een korte toelichting op alle pagina's en menu optie's die er zijn:

Hardware -> DS18B20
Hier kun je een DS18B20 aan of uit zetten. Vul ook in hoe de variabele in pimatic heet zodat de temperatuur naar pimatic verstuurd kan worden

Hardware -> LED Matrix
Wanneer je 2 max7219 LED Matrix'en goed hebt aangesloten kun je die hier aan zetten. Let op : CLK moet naar GPIO14 en DIN naar GPIO13. CS gaat op de GPIO die je hier kiest.
Selecteer ook wat je wil zien op je matrix.

Hardware -> IR LED
Wanneer je een IR code weet voor je apparatuur (zie hiervoor http://www.righto.com/200...rared-remote-library.html ) kun je de ESPimatic een IR code laten versturen. In pimatic heb ik een variabele aangemaakt (bijvoorbeeld $ACwoonkamerON en als inhoud de IR code van mijn airco. Vervolgens heb ik een dummyswitch aangemaakt met de volgende rule:

code:
1
IF ACon is turned on THEN execute "sudo curl  --silent --data 'action=ir&value=$ACslaapkamerON' http://esp01/api > /dev/null"


Pimatic verstuurd dan naar de 'api' van ESPimatic de IR code, de ESP zal deze vervolgens naar de IR LED sturen.

Hardware -> Relay
Er kunnen tot maximaal 4 relais aangesloten worden op de ESP. Hier kun je de functie aan of uit zetten en de GPIO instellen.

Hardware -> DHT
Indien je liever een DHTxx gebruikt ipv een DS18B20 dan kan dat. Persoonlijk vind ik een DHT(11) verre van accuraat en stabiel .. andere zweren er bij. Je zou in theorie ook een DHT22 kunnen aansturen, maar omdat ik die niet heb weet ik niet of dat werkt. Volgens de code moet het werken ;)

System -> Wifi
Wijzig hier je wifi instellingen. Wanneer de ESP bij opstarten geen verbinding met wifi kan maken, zal deze altijd als Access Point opstarten (zelfde gegevens als bij eerste keer gebruiken).

System -> Pimatic
Hier kun je al je Pimatic gegevens invullen

System -> Firmware
Hier kun je een BIN file uploaden. Let op dat je bij het compileren in Arduino de juiste ESP aangeeft. Je kan zoveel flash hebben als je wil, maar als de draaiende BIN gecompileerd is als een 1mb chip gaat het simpelweg niet lukken.

System -> GPIO
Hier kun je beschikbare GPIO's instellen.

System -> Reset
Dit zal *alle* opgeslagen settings verwijderen, inclusief wifi gegevens. Deze gegevens zijn niet te herstellen!

System -> Filemanager
Hier kun je de HTML files uploaden en/of verwijderen. Let op : bestaande bestanden zullen zonder bevestiging overschreven worden. Verwijderde bestanden zijn niet meer terug te halen.
Wanneer je root.html verwijderd, zal de ESP opstarten met een versimpelde filemanager als root.

Refresh
Refresh haalt de specifieke instellingen van de pagina waar je je bevind opnieuw op.

Reboot
Hiermee herstart je de ESP.

De ESPimatic heeft ook een simpele 'api' waarmee je via een HTTP opdracht commando's kunt versturen.
Syntax van de URL is : http://esp-ip/api?action=[action]&value=[value]
De volgende opdrachten zijn mogelijk:

action = ir , value = 3420,1592,500,1128, ...... hiermee laat je een IR code versturen
action = reboot , value = true Herstart de ESP
action = matrix_brightness value=[0-8] wijzig de helderheid van deLED Matrix
action = matrix_display , value = [on-off[ Zet de LED Matrix uit
action = relay[1-4] , value = [on-off[ Zet relay x aan of uit
action = clearerror , value =[wifi,ds18b20,eeprom,upgrade] Hiermee verwijder je bepaalde errors, dat wprd echter ook al gedaan door de webpagina die de foutmelding ontvangt.
action = reset , value=true Hiermee verwijder je alle opgeslagen gegevens, inclusief wifi