DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device

Begonnen von Papaloewe, 28 März 2015, 19:52:13

Vorheriges Thema - Nächstes Thema

Papaloewe

Liebe fhem-Gemeinde,

ich möchte hier kurz meinen Bastelversuch vorstellen.
Ein extrem preiswerter WLAN-Sensor, welcher mit dem Temperatur- und Luftfeuchtefühler, dht22 und dem ESP8266 arbeitet. (ohne Arduino-Gateway!)
In Summe kommt man auf ca. 5 bis 6€, je nach Gehäuse etc.

In Stichworten, wie ich vorgegangen bin:
ESP mit der alternativen Firmware "nodemcu", aktuelle Version 0.9.5 geflashed.
MQTT-Client unter LUA aus diversen Quellen zusammengesucht, modifiziert und auf ESP geladen.
dht22 mit ESP zusammengesteckt (GPIO2).
Mosquitto-Broker auf Raspi installiert. Darauf läuft übrigends auch mein fhem.
(Eine zus. Belastung ist kaum spürbar.)
Im fhem die zus. notwendigen MQTT perl Komponenten installiert.
In fhem eine MQTT-Verbindung definiert und danach ein MQTT-Device.

Was soll ich sagen, jetzt läuft es (endlich) seit ca. 24h durch und "published" mir jede 10s den aktuellen Temperaturwert und Feuchtigkeitswert ins fhem.

Wenn Interesse besteht stelle ich gerne die LUA-Scripte dafür noch ein.

Was noch nicht geht:
Batteriebetrieb, denn die Funktion "deep-sleep" erfordert eine winzige Hardwaremodifikation am ESP.
Die Drahtbrücke bekomme ich aber einfach nicht am soc angelötet ;-(.
Ich habe bisher nur einen stabilen Betrieb hinbekommen, wenn ich ein Topic sende.
Daher übertrage ich in diesem einem Topic beide Werte zusammen.

Soweit erstmal in aller Kürze.
Ggf. demnächst mehr.

MfG
Thomas

P.S.: Bei der Einarbeitung in MQTT bin ich auf die Software "node-red" aufmerksam geworden:
http://nodered.org/
Mensch damit ergeben sich ja noch viel mehr Möglichkeiten und das auch für einen Nicht-Programmierer, wie mich ;-).

Mad22

Hallo Thomas,

ich bin auf jedenfall interessiert .

Ein paar Links zum ESP habe ich gefunden und werde mir schon mal ein paar bestellen :-) Dauert ja eh immer etwas bei den Chinesen .

Die Firmware und vielleicht einen Tip oder Link wie man die flasht wäre auch noch ganz gut .
Interessant wäre auf jedenfall auch der Batteriebetrieb .

Ich weiß nur noch nicht ob ich dem nächste so viel Zeit zum basteln habe , es stehen noch ein paar andere Projekte an .

Gruß Martin

Raspberry Pi2 Model B, Add-On Board mit 1.8" TFT LCD, FHEM V5.6, CULFW V1.61, JeeLink Clone, HMUsb,  FS20, Homematic , LaCrosse, 1-Wire (10x DS1820)

schka17

Hallo Thomas,
das interessiert mich auch sehr, bin gerade auch dabei, mehr mit MQTT und dem ESP zu experimentieren, Node-red habe ich auch schon in einer testumgebung, hier sehe ich auch riesiges Potential, vor allem wenn man nicht der Entwickler ist wie ich. also für die Scripte wäre ich sehr dankbar, das ist das nächste was ich geplant habe. Welche ESP Version verwendest du?

Gruß

Karl


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Papaloewe

ok, gerne.
Anbei die von mir verwendeten LUA-Scripte für den MQTT-Client mit dht22 Auswertung auf dem ESP8266 (01). Sie stammen aus diversen Quellen im Internet und wurden lediglich angepasst.

Viel Erfolg!

Gruß
Thomas

P.S.: Wer bekommt so etwas gelötet, oder hat einen Tip für mich?
http://hackaday.com/2015/02/08/hack-allows-esp-01-to-go-to-deep-sleep/

Mad22

Hallo Thomas,

Danke für die Infos .


Zitat von: Papaloewe am 29 März 2015, 12:28:42
P.S.: Wer bekommt soetwas gelötet, oder hat einen Tip für mich?
http://hackaday.com/2015/02/08/hack-allows-esp-01-to-go-to-deep-sleep/

Ich denke das bekommt man hin , z.B. mit diesem Fädeldraht http://de.wikipedia.org/wiki/F%C3%A4deltechnik . Oder hier http://www.reichelt.de/Verdrahtungssysteme/F-DELSTIFT/3/index.html?&ACTION=3&LA=2&ARTICLE=55442&GROUPID=3377&artnr=F%C3%84DELSTIFT

Ich würde den Draht schon vorher verzinnen und dann erst am Microprozessor anlöten . Das ist etwas fummelig, sollte aber gehen . Wenn Du das gar nicht hinbekommst würde ich anbieten das Du mir den zuschickst und ich ihn für Dich löte . Falls Interesse besteht können wir die Daten dann per PM austauschen .

Gruß Martin



Raspberry Pi2 Model B, Add-On Board mit 1.8" TFT LCD, FHEM V5.6, CULFW V1.61, JeeLink Clone, HMUsb,  FS20, Homematic , LaCrosse, 1-Wire (10x DS1820)

locutus

Hol dir das ESP-03 Funkmodul. Deep Sleep kann verwendet werden, nachdem auf dem ESP-03 Modul die im Bild markierte Lötbrücke geschlossen wurde. Die Brücke stellt eine Verbindung zwischen Pin XPD_DCDC und Pin EXT_RSTB her.

Papaloewe

@locutus
Danke für den Hinweis. Diese Lötbrücke beim Typ:03 werde auch ich wohl hinbekommen ;-).

@Mad22
Danke dir für dein Angebot. Ggf. werde ich darauf zurückkommen.
Nach dieser Anleitung habe ich meinen ESP geflashed:
http://www.whatimade.today/flashing-the-nodemcu-firmware-on-the-esp8266-linux-guide/

Gruß
Thomas

John

Ich habe die Vorlage von PapaLoewe etwas überarbeitet:


       
  • zusätzlich wird ein Relais angesteuert über GPIO 0
  • diese kann auch über MQTT gesteuert werden
  • die topics wurden FHEM konform angelegt, so daß diese einfacher einzubinden sind
  • Feuchte und Temperatur werden nur nach Änderung spätestens nach 60 Sekunden übertragen
Zu Lua:

       
  • man muss alle lua quellen compilieren (bis auf init.lua) und diese dann aufrufen, sonst kommt es sofort zu "stdin:1: not enough memory "
  • größere Projekte lassen sich mit dem Lua meiner Meinung nach nicht realisieren, da man schnell am Ende ist
Dennoch ist es absolut bemerkenswert, daß das alles auf dem kleinen Modul Platz findet.


Anbei noch die Struktur im MQTT-Broker, sowie die Einbindung über FHEM am Beispiel der Temperatur

John


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Papaloewe

Hallo John,

ja, das ist sehr interessant.

Wärst du denn bereit deine Änderungen zu posten, damit wir etwas daraus lernen können?
Danke dir :)

Kennst du schon das hier:
https://github.com/cutec-chris/fhem2mqtt
Soll eine andersartige "fhem2fhem" Lösung sein, aber über einen MQTT-Broker.

Gruß
Thomas

John

Hallo Thomas,
anbei das Projekt.

Die Files auf dem ESP
----------------------------
dht22.lc        : 1288 bytes
dht22.lua       : 2588 bytes
dht22_mqtt.lc   : 4392 bytes
dht22_mqtt.lua  : 4309 bytes
init.lc         : 204 bytes
init.lua        : 63 bytes
----------------------------
Total file(s)   : 6
Total size      : 12844 bytes

Ich habe mit dem ESPlorer entwickelt.

Das Relais toggled übrigens alle 5 Sekunden automatisch. Man kann dann diesen Zyklus über MQTT "stören".

Besten Dank für den Link, ich werde mir das bei Gelegenheit ansehen.

Spannend finde ich auch diesen Link
https://github.com/esp8266/arduino

Wenn das nur halbwegs funktioniert wird es für MySensors, Firmata  und viele anderen IOT-Lösungen, die hier diskutiert werden "eng"

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Papaloewe

ZitatSpannend finde ich auch diesen Link
https://github.com/esp8266/arduino

Wenn das nur halbwegs funktioniert wird es für MySensors, Firmata  und viele anderen IOT-Lösungen, die hier diskutiert werden "eng"

Danke Dir, John.

Mensch das wär doch was. Hast du schon damit experimentiert?
Was ist noch nicht verstanden habe:
Welche Firmware brauche ich dafür auf dem ESP, oder funktioniert das dann ganz analog zum Arduino.
Also der Sketch wird über die Arduino-IDE einfach in den ESP hochgeladen und läuft dort sofort?
Dadurch hätte sich auch das Memory-Problem unter Lua erledigt!

MfG
Thomas


Papaloewe

ok, habs schon gefunden:
ZitatThe Arduino IDE generates machine code from your c source and uploads it to the ESP8266.
It doesn't matter what firmware was previously flashed, because it will get overwritten, anyways.

Steht hier:
http://www.esp8266.com/viewtopic.php?f=26&t=2245

Und noch ganz ausführlich:
Zitatthe esp8266 has a built in bootloader which is used to upload code ( program the chip). The bootloader is selected at power up by the state of GPIO pins. A serial uart based uploader is often selected by default. The arduino esp8266 IDE is an extension of the arduino IDE. Code in a sketch is compiled specifically for the esp8266 and together with the API's for the esp8266 is uploaded via the bootloader. The esp8266 can now run the code in the sketch and the sketch can call the wifi features as well as other features of the esp8266 since the code for these API's was also loaded. Information about the esp8266 API is part of the esp8266 SDK. Now libraries used for avr or atmega chips may not work without modification since the esp8266 chip is very different.

John

Hallo Thomas,
hab grade mein erstes Testprogramm zum Laufen gebracht

Example:WifiWebServer

Zitat
.....
WiFi connected
Server started
192.168.178.76
new client

Es funktioniert.
Bei URL http://192.168.178.76/gpio/0
erhalte ich im Browser
"GPIO is now low"

Bin nach dieser Anleitung vorgegangen
http://makezine.com/2015/04/01/installing-building-arduino-sketch-5-microcontroller/

Ausgabe nach dem Compilieren (ganz andere Werte als beim Arduino)
"Der Sketch verwendet 197.392 Bytes (37%) des Programmspeicherplatzes. Das Maximum sind 524.288 Bytes"

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

Ich habe das Lua-Beispiel mit DHT22 und dem Relais auf Arduino-IDE +ESP8266 umgesetzt.

Es benötigt zusätzlich zum Footprint 1k an Code. Nun sind immer noch 325K frei.

Arduino-IDE + ESP8266 wird wohl eine "Killer"-Applikation werden.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

fh168

Hallo John,

als "Killer-Applikation" würde ich es finden, wenn man es ohne Arduino und den ESP8266 im Sleep Modus betreiben könnte.

Das erste mit dem DHT steht hier irgendwo im Forum. Ich habe den ESP8266 mal mit dem One-Wire DS18B20 verheiratet ohne Arduino und verbloggt: http://blog.moneybag.de/fhem-temperaturmessung-mit-dem-esp-8266-und-ds18b20-ohne-arduino-datenuebertragung-per-wlan/
Mit einem Relais würde man das und einem anderen Baustein (z.b. mit mehreren GPIOs -12) auch wohl hinbekommen. Die 5 V für das Schalten des Relais muss man irgendwo noch holen. Damian ist da wohl elektrotechnisch weiter.
Meiner Meinung nach verbrät der Baustein noch zuviel Strom, da bleibe ich derzeitig immer noch auf dem NRF. (Sleep 0,2mA, senden 18mA)
Oder seid ihr da schon weiter?

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-