DIY draadloze temperatuursensor voor pimatic - en meer! - Update

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

[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

Volgende: ESPimaticRF : verstuur RF verkeer over wifi vanuit Pimatic 13-11 ESPimaticRF : verstuur RF verkeer over wifi vanuit Pimatic
Volgende: Je kachel aansturen met pimatic, een echte thermostaat 04-'15 Je kachel aansturen met pimatic, een echte thermostaat

Reacties


Door Tweakers user K-Jay, zaterdag 23 januari 2016 14:50

Mooi project Koffie!
Hoe zit het met de voeding van de ESP? Gebruik je een batterij of een adapter?

Door Tweakers user Koffie, zaterdag 23 januari 2016 14:56

Ik maak gebruik van een development board
Standaard komt deze met een batterijhouder voor 3 AA batterijen. Ik heb de houder eraf geknipt e 5v USB opgezet , die 0.5 volt extra is geen probleem voor de onboard regulator.

Door Tweakers user Mars Warrior, zondag 24 januari 2016 20:49

Leuke interface. Heb je deze nu met de hand gecodeerd of met een ide/tool?

Door Tweakers user Koffie, zondag 24 januari 2016 20:58

Mars Warrior schreef op zondag 24 januari 2016 @ 20:49:
Leuke interface. Heb je deze nu met de hand gecodeerd of met een ide/tool?
De website is gemaakt op het bootstrap framework, daardoor was het redelijk makkelijk om een strakke pagina te maken :)

Door Tweakers user elleP, maandag 25 januari 2016 10:36

Mooi projectje! Ik heb de onderdelen liggen en was ongeveer hetzelfde van plan, dus ik ga vanavond eens kijken of ik jouw code kan recyclen daarvoor.

Mijn idee was om met een thermokoppel en een max6675 de uitgangstemperatuur van mijn kachel beter kan controleren, om maximaal efficient hout te kunnen stoken.

Door Tweakers user pasz, woensdag 27 januari 2016 22:10

Wat een prachtig stukje software.

Ik loop tegen 1 dingetje aan. Ik kan maar 3 html files uploaden. Daarna lukt het niet meer.
Wat zal ik doen ? Alles opnieuw ? Ik gebruik hetzelfde bord als jij.

Door Tweakers user Koffie, woensdag 27 januari 2016 23:09

Even je board goed zetten bij flashen.
Ik gok dat je je board niet aangepast hebt, je flashed dat met 512K en 64K SPIFFS.
Als je dezelfde als ik heb, moet je de 4M (1M SPIFFS) nemen, dan past het wel.
(zag je vraag ook al op Github :P )

[Reactie gewijzigd op woensdag 27 januari 2016 23:11]


Door Tweakers user pasz, vrijdag 29 januari 2016 21:14

Werkt perfect Koffie. Ik heb de issue op github gesloten.
Nu eens kijken wat mijn andere ESP bordjes aankunnen. 8-)

Door Tweakers user indexample, zondag 31 januari 2016 18:22

de link werkt niet meer, ik denk omdat ze geen ESP met batteryholder meer verkopen?
Ik zie er genoeg op Ebay maar daar staat niet bij of het de 4mb versie betreft ( vanaf esp8266 12E en 12F?)

Door Tweakers user Koffie, zondag 31 januari 2016 18:38

indexample schreef op zondag 31 januari 2016 @ 18:22:
[...]


de link werkt niet meer, ik denk omdat ze geen ESP met batteryholder meer verkopen?
Ik zie er genoeg op Ebay maar daar staat niet bij of het de 4mb versie betreft ( vanaf esp8266 12E en 12F?)
Op ebay zoeken naar "esp8266 development board" en dan die gele boardjes met batterijhouder.
Maar een laatste versie NodeMCU zal ook gewoon moeten werken.

Door Tweakers user indexample, zondag 31 januari 2016 21:12

ah top! toch dus, twijfelde omdat ik er geen 4mb bij zag staan...ordered en afwachten!

[Reactie gewijzigd op zondag 31 januari 2016 21:53]



Door Tweakers user Tijsje, donderdag 4 februari 2016 22:55

Ik heb de boel ook draaiende en kan relais aansturen via Pimatic. Werkt top!
Ik heb er nu ook een DS18B20 aangehangen, en de temp wordt keurig weergegeven in de webinterface van de esp8266 .
Maar hoe krijg ik dit nu pimatic in? Moet ik een VariablesDevice toevoegen? Maar wat moet ik dan invullen bij expression?
Heb je misschien een voorbeeldje voor me?

Door Tweakers user Koffie, vrijdag 5 februari 2016 07:23

Ga in ESPimatic naar Configure -> Hardware -> DS18B20
Het laatatse veld (variable name) is de naam van een variable in Pimatic.
Maak in Pimatic een variable aan met exact die naam, en de variable zal gevuld worden vanuit ESPimatic.

Mocht je de waarde op de GUI in Pimatic willen zien moet je idd even een VariblesDevice toevoegen :

code:
1
2
3
4
5
6
7
8
9
10
11
12
{
      "id": "mode",
      "name": "Mode",
      "class": "VariablesDevice",
      "variables": [
        {
          "name": "modeVar",
          "expression": "$mode",
          "type": "string"
        }
      ]
    },


Door skipper79, donderdag 17 maart 2016 15:23

Koffie schreef op vrijdag 05 februari 2016 @ 07:23:
Ga in ESPimatic naar Configure -> Hardware -> DS18B20
Het laatatse veld (variable name) is de naam van een variable in Pimatic.
Maak in Pimatic een variable aan met exact die naam, en de variable zal gevuld worden vanuit ESPimatic.

Mocht je de waarde op de GUI in Pimatic willen zien moet je idd even een VariblesDevice toevoegen :

code:
1
2
3
4
5
6
7
8
9
10
11
12
{
      "id": "mode",
      "name": "Mode",
      "class": "VariablesDevice",
      "variables": [
        {
          "name": "modeVar",
          "expression": "$mode",
          "type": "string"
        }
      ]
    },

Inmiddels ook trotse bezitter van een ESP12F! Eea is geÔnstalleerd en krijg de variabele waarde in Pimatic te zien, alleen is mis ik nog de eenheid en een grafiek...
Is er een mogelijkheid om deze toch toe te voegen bij een 'VariablesDevice'?

Door Tweakers user skipper79, donderdag 17 maart 2016 15:53

Iets te snel gereageerd 😊. "Type" aanpassen naar 'number' is al voldoende!

Door Alfred, zaterdag 23 juli 2016 21:33

Ziet er mooi uit dit project en zeker netjes gedaan!
Kwam hier terecht omdat ik met wat instabiliteit te maken hebt met IE en FF browsers.

Door Tweakers user ruud909, zaterdag 8 oktober 2016 17:57

Fantastisch project. Respect :-)
maar wie kan mij helpen??
Het flashen is (eindelijk) gelukt, maar als ik de html en js bestanden upload, blijf ik de vereenvoudigde webpagina zien met nu een lijst van bestanden die geŁpload zijn. Ik krijg maar niet de GUI te zien.
Heeft iemand een idee wat er fout gaat?

Door Tweakers user Mopperman, donderdag 18 mei 2017 13:56

Alles is besteld en we gaan eens kijken als het binnen is. Enige waar ik mee zit is: DS18B20.
Moet hier nog een weerstand tussen of kan deze rechtstreeks worden aangesloten?

Door Tweakers user Koffie, donderdag 18 mei 2017 22:22

Mopperman schreef op donderdag 18 mei 2017 @ 13:56:
Alles is besteld en we gaan eens kijken als het binnen is. Enige waar ik mee zit is: DS18B20.
Moet hier nog een weerstand tussen of kan deze rechtstreeks worden aangesloten?
Je zult een 4K7 weerstand moeten plaatsen tussen VCC en DATA

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier ťťn aanmaken.