Autor Thema: DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device  (Gelesen 88157 mal)

Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
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 ;-).
« Letzte Änderung: 29 März 2015, 15:14:51 von Papaloewe »

Offline Mad22

  • New Member
  • *
  • Beiträge: 28
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)

Offline schka17

  • Sr. Member
  • ****
  • Beiträge: 871
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

Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
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/
« Letzte Änderung: 29 März 2015, 13:28:49 von Papaloewe »

Offline Mad22

  • New Member
  • *
  • Beiträge: 28
Hallo Thomas,

Danke für die Infos .


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)

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 844
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.
« Letzte Änderung: 03 April 2015, 23:00:42 von locutus »

Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
@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

Offline John

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1426
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 CULV3 MAX HM  Logo  ESP8266 MQTT PID20 HourCounter MaxScanner KostalPiko

Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
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

Offline John

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1426
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 CULV3 MAX HM  Logo  ESP8266 MQTT PID20 HourCounter MaxScanner KostalPiko

Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
Zitat
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"

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


Offline Papaloewe

  • Sr. Member
  • ****
  • Beiträge: 718
ok, habs schon gefunden:
Zitat
The 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:
Zitat
the 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.
« Letzte Änderung: 06 April 2015, 21:06:33 von Papaloewe »

Offline John

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1426
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
« Letzte Änderung: 06 April 2015, 21:39:22 von John »
CubieTruck CULV3 MAX HM  Logo  ESP8266 MQTT PID20 HourCounter MaxScanner KostalPiko

Offline John

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1426
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
« Letzte Änderung: 07 April 2015, 20:18:15 von John »
CubieTruck CULV3 MAX HM  Logo  ESP8266 MQTT PID20 HourCounter MaxScanner KostalPiko

Offline fh168

  • Sr. Member
  • ****
  • Beiträge: 796
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-