FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: Papaloewe am 28 März 2015, 19:52:13

Titel: DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 28 März 2015, 19:52:13
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/ (http://nodered.org/)
Mensch damit ergeben sich ja noch viel mehr Möglichkeiten und das auch für einen Nicht-Programmierer, wie mich ;-).
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Mad22 am 28 März 2015, 20:21:56
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

Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: schka17 am 28 März 2015, 21:49:30
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
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 29 März 2015, 12:28:42
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/ (http://hackaday.com/2015/02/08/hack-allows-esp-01-to-go-to-deep-sleep/)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Mad22 am 29 März 2015, 13:24:44
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/ (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 (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 (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



Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: locutus am 29 März 2015, 13:34:11
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.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 29 März 2015, 22:03:06
@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/ (http://www.whatimade.today/flashing-the-nodemcu-firmware-on-the-esp8266-linux-guide/)

Gruß
Thomas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 05 April 2015, 23:09:27
Ich habe die Vorlage von PapaLoewe etwas überarbeitet:

Zu Lua: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


Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 06 April 2015, 09:57:52
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 (https://github.com/cutec-chris/fhem2mqtt)
Soll eine andersartige "fhem2fhem" Lösung sein, aber über einen MQTT-Broker.

Gruß
Thomas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 06 April 2015, 10:53:30
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 (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
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 06 April 2015, 18:49:16
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

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 06 April 2015, 21:04:46
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 (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.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 06 April 2015, 21:21:43
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 (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/ (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
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 07 April 2015, 08:53:30
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
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: fh168 am 07 April 2015, 20:01:03
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
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 07 April 2015, 20:10:07
Hi Robin,
da habe ich mich wohl unklar ausgedrückt:


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

Genau das meine ich.
Es wird die Arduino-IDE verwendet, aber ohne Arduino, es kommt also nur der ESP8266 zum Einsatz.
(siehe Board-Auswahl in der Arduino-IDE)

John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 07 April 2015, 22:03:14
...und DeepSleep funktioniert wohl auch!
http://www.esp8266.com/viewtopic.php?f=32&t=2305&sid=04d06b3faef19b5d1163c12cdbdd7eea (http://www.esp8266.com/viewtopic.php?f=32&t=2305&sid=04d06b3faef19b5d1163c12cdbdd7eea)

Das wird jetzt noch sehr spannend.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 07 April 2015, 22:15:45
Das wird langsam wirklich interessant. Hat jemand schon Erfahrung sammeln können, ob die Teile (wenn es viele sind) das vorhandenen WLAN-Netzwerk (geschwindigkeitstechnisch) negativ beeinflussen?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 07 April 2015, 22:27:27
Ich habe derzeit nur 2 im Einsatz, konnte aber noch keine negativen Auswirkungen feststellen.
(1x Fritzbox im DG, 1x WLAN-Router im Keller, sonstige Clients)

Mich hat mehr die Reichweite interessiert.
Dazu habe ich den Testaufbau an den ungünstigsten Stellen im Haus verbaut.
Auch hier gab es keine Probleme.

Da die WLAN-Infrastruktur in der Regel als gegeben zu sehen ist, sind diese Controller ohne weitere Maßnahmen
(bessere Antennen ...) adhoc einsetzbar. Ein unschlagbarer Vorteil.

John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 07 April 2015, 22:52:41
Danke für die Antwort!
Ich habe zwei dieser Teile bereits hier rum liegen, muss mich wohl mehr damit beschäftigen (man-man, irgendwie zu viele Baustellen gerade :) )
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 08 April 2015, 00:09:53
Zitat von: John am 06 April 2015, 10:53:30
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 (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

Hallo John,

ich hätte das gerne ausprobiert, scheinbar fehlen da aber zwei Files in dem Zip, die *.lc die benötigt werden. Kannst du die auch noch posten und wofür sind die eigentlich?

Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 08 April 2015, 08:03:25
Hallo Karl,

du brauchst nur die *.lua Dateien.
Die anderen (*.lc) kannst du auf dem ESP aus denen kompilieren. Danach könnten die *.lua Dateien theoretisch auch vom ESP gelöscht werden.
Schau mal hier rein: https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#nodecompile (https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#nodecompile)
Stickwort: mode.compile()

Wenn ich dir einen Rat geben darf: Probier direkt die modifizierte ESP-Arduino-IDE aus. Ich habe viel Zeit mit der nodemcu und lua-Scripten verschwendet und bin nicht richtig glücklich damit geworden.

Gruß
Thomas
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: schka17 am 08 April 2015, 08:08:45
Hallo Thomas,

Danke das habe ich dann später in der Nacht auch herausgefunden, leider habe ich das Problem dass ich immer die Meldung bekomme dass zu wenig Speicher vorhanden ist. Irgendetwas mache ich scheinbar noch falsch. Die uncompilierten Beispiele laufen nämlich auch nicht. Naja, heute kommt ja die nächste Nacht...

Gruß

Karl


Sent from my iPad using Tapatalk
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: SpenZerX am 08 April 2015, 09:02:17
Zitat von: Papaloewe am 08 April 2015, 08:03:25


Wenn ich dir einen Rat geben darf: Probier direkt die modifizierte ESP-Arduino-IDE aus. Ich habe viel Zeit mit der nodemcu und lua-Scripten verschwendet und bin nicht richtig glücklich damit geworden.


Mit der Arduino IDE wirst du die nächste Zeit verschwenden. Warum nimmst du nicht gleich die SDK vom Hersteller?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 08 April 2015, 09:13:36
ZitatMit der Arduino IDE wirst du die nächste Zeit verschwenden. Warum nimmst du nicht gleich die SDK vom Hersteller?

Da bin ich mir nicht so sicher, denn die Hersteller SDK ist intergraler Bestandteil der ESP-Arduino-IDE!
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Bapt. Reverend Magersuppe am 08 April 2015, 09:24:39
Zitat von: hexenmeister am 07 April 2015, 22:15:45
Das wird langsam wirklich interessant. Hat jemand schon Erfahrung sammeln können, ob die Teile (wenn es viele sind) das vorhandenen WLAN-Netzwerk (geschwindigkeitstechnisch) negativ beeinflussen?

Es sind ja immer nur kleine Datenkrümel die da durchs Netz gefunkt werden. Ich überlege allerdings, für die ganze Sachen ein eigenes WLAN aufzumachen mit eigenem Adressbereich. Die kleinen können (noch?) kein IPv6 und das übliche Fritzbox-254IP-Netz könnte schnell voll sein.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: SpenZerX am 08 April 2015, 09:45:28
OK, wenn du damit kein ungewollten Ballast in deinen Code schleppst sollte das dann gleichwertig sein. Wird sich zeigen ob man damit dann schneller/besser entwickeln kann. Für jemanden wie mich der sich die letzten Monate mit der SDK beschäftigt hat sehe ich da keinen Vorteil, eher Nachteile.

Hinsichtlich Performance ist sowieso bei dem FHEM-Perl die Schwachstelle. Da braucht man noch nicht über zusätzliche Netzwerke nachdenken...
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 08 April 2015, 10:03:09
Zitat von: SpenZerX am 08 April 2015, 09:02:17
Mit der Arduino IDE wirst du die nächste Zeit verschwenden. Warum nimmst du nicht gleich die SDK vom Hersteller?

Gute Frage,

NodeMCU schien mir geeignet zu sein, zumindest habe ich grob die Syntax verstanden und glaubte auch die Zusammenhänge zu verstehen, es gibt viele Beispiele und Demos, und auch dieses Projekt setzte darauf auf.

Mit der Arduino IDE bin ich auch nicht so richtig glücklich, und das SDK vom Hersteller verstehe ich überhaupt nicht.

Die letzten Jahrzehnte bin ich mit linux shell scripts, rudimentär HTML und PHP ausgekommen. Jetzt beschäftige ich mit Perl (die regexp bringen mich zur Verzweiflung), Python, JS, CSS, Node-red, MQTT, Arduino, LUA usw.,  schön langsam wird es unübersichtlich.

Ich will das jetzt einmal mit NodeMCu zum Laufen bringen, dann schaue ich mir die Alternativen an, gerade bei diesem Teil gibts im Moment sehr viele Projekt und Entwicklungen, mal sehen was sich durchsetzt.

Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 08 April 2015, 10:15:47
Zitat von: Bapt. Reverend Magersuppe am 08 April 2015, 09:24:39
Es sind ja immer nur kleine Datenkrümel die da durchs Netz gefunkt werden. Ich überlege allerdings, für die ganze Sachen ein eigenes WLAN aufzumachen mit eigenem Adressbereich. Die kleinen können (noch?) kein IPv6 und das übliche Fritzbox-254IP-Netz könnte schnell voll sein.

Die Anzahl ist nicht das Problem. Sollten die 254-Stück nicht ausreichen, kann man ja durch Anpassung der Netztmaske einen größeren Netztsegment verwenden.

Das Problem mit der Geschwindigkeit beefürchte ich nicht wegen der Datenmenge. Wie groß die 'Krümmel' sind ist (fast) egal. Die Frage ist, wie viele es sind und wie die Teile sich im Netzt melden. Denn die Gesamtgeschwindigkeit wird durch den langsamsten Telnehmer bestimmt. Die Kärtchen sollen aber 802.11n können. Wenn das tatsächlich so ist, dann wäre das ja gut.

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 09 April 2015, 07:26:01
@ John, könntest du den Code von der Arduino-IDE veröffentlichen?

Evtl wär das ganze ja auch in kombination mit einem µC denkbar. Allerdings hab ich dafür noch nirgends eine gute lib gefunden, die halbwegs verständlich wär
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 09 April 2015, 08:49:02
Programmbeispiel im Anhang:

DHT22 wird alle 5 Sekunden eingelesen zum MQTT Broker gepublished. (GPIO 2)
Relais wechselt alle 5 Sekunden den Zustand (GIPO 0).

DHT22 library wurde geringfügig modifziert.

John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 09 April 2015, 11:30:06
Zitat von: John am 09 April 2015, 08:49:02
Programmbeispiel im Anhang:

DHT22 wird alle 5 Sekunden eingelesen zum MQTT Broker gepublished. (GPIO 2)
Relais wechselt alle 5 Sekunden den Zustand (GIPO 0).

DHT22 library wurde geringfügig modifziert.

John

Hallo John,

diese Arduino IDE bringt mich noch zur Verzweiflung, kannst du mir bitte einen Tip geben wo ich deine Files genau hinkopieren muss? Ich bekomme beim verify immer nur "error compiling", aber keinen Hinweis was das Problem ist.

Danke

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 09 April 2015, 17:35:37
Auch ich erhalte beim Kompilieren nur "Fehler beim Kompilieren" die beiden libs hab ich in den "libraries"-Ordner kopiert und die scheinen auch gefunden zu werden. So komm ich leider nicht weiter :(
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 09 April 2015, 18:06:31
Hab ihr schon ein Beispiel übersetzt, das die  Arduino-IDE von Haus aus mitbringt.
Z.B. ESP8266Webserver (siehe Anhang)
Das muss in jedem Fall vorhanden sein, wenn ihr die korrekte IDE verwendet.

Versucht das erst mal zu Laufen zu bekommen. Dann ist eure IDE korrekt eingerichtet.
Danach könnt ihr mit meinem Beispiel weitermachen.

Ist das Board in der IDE  auf ESP8266 eingestellt ?
siehe http://forum.fhem.de/index.php/topic,35572.msg283383.html#msg283383 (http://forum.fhem.de/index.php/topic,35572.msg283383.html#msg283383)


John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 09 April 2015, 18:18:30
Das Beispiel ist Vorhanden, lässt sich aber auch nicht kompilieren. Das richtige Device ist eingestellt.
Ist das bei dir auch so, dass nicht angezeigt WAS falsch ist, wenn was falsch ist?

Ich habe Arduino 1.6.1 von hier : https://github.com/esp8266/Arduino/releases (https://github.com/esp8266/Arduino/releases)
sollte doch stimmen oder? (windows-Version)

Gruß
Kuzl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 09 April 2015, 18:23:19
Zitat von: John am 09 April 2015, 18:06:31
Hab ihr schon ein Beispiel übersetzt, das die  Arduino-IDE von Haus aus mitbringt.
Z.B. ESP8266Webserver (siehe Anhang)
Das muss in jedem Fall vorhanden sein, wenn ihr die korrekte IDE verwendet.

Versucht das erst mal zu Laufen zu bekommen. Dann ist eure IDE korrekt eingerichtet.
Danach könnt ihr mit meinem Beispiel weitermachen.

Ist das Board in der IDE  auf ESP8266 eingestellt ?
siehe http://forum.fhem.de/index.php/topic,35572.msg283383.html#msg283383 (http://forum.fhem.de/index.php/topic,35572.msg283383.html#msg283383)

John

Hallo John,

die Beispiele habe ich zwar, aber es kommt der selbe Fehler.
Als Board kann ich nur generic ESP8266 board einstellen, ich habe mittlerweile auch auf IDE 1.6.3 upgedatet, hat natürlich nichts gebracht.


Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: SpenZerX am 09 April 2015, 20:02:08
Hallo,

kennt sich jemand gut mit Elektronik aus?

Wie ist das mit dem ADC am ESP

Analogsensor zwischen ADC Pin und VDD3V3, + zusätzlich Schaltung gemäß Anhang? Wobei die Werte R11 und R9 Projektspezifisch zu wählen sind oder fix sein können? und ADC EX eine Art Test-Meßpunkt ist?

(Schematic vom Nodemcu-devkit)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 09 April 2015, 20:33:43
@Kuzl
ZitatIch habe Arduino 1.6.1 von hier : https://github.com/esp8266/Arduino/releases (https://github.com/esp8266/Arduino/releases)
sollte doch stimmen oder? (windows-Version)
Genau den verwende ich auch, allerdings unter Ubuntu die Linux-Variante.

Ich konnte nach der Installation und korrekten Boardeinstellung, sofort alles fehlerfrei compilieren.

John
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 09 April 2015, 23:03:02
@ SpenZerX: kommt drauf an, ob du einen aktiven oder passiven Sensor hast. Was willst du denn anschließen?

@John: dann werd ich morgen mal die Linux-Variante ausprobieren :)

Viele Grüße
KUZL
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 09 April 2015, 23:54:47
Ich meine irgendwo gelesen zu haben, dass es bei der Windows Version noch Probleme gibt.
Ich benutze ebenfalls die IDE unter Linux und es funktioniert.

Evtl. das hier?
http://www.esp8266.com/viewtopic.php?f=26&t=2261 (http://www.esp8266.com/viewtopic.php?f=26&t=2261)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: SpenZerX am 10 April 2015, 06:08:53
@Kuzel: es geht eher um die Frage wie die Schaltung aussehen muss um sich alle Optionen des ADC z.B. über einen Steckverbinder offen zu halten. Ob man also die dargestellten Widerstände auf das PCB bringen sollte und was sie bewirken. Erprobung wäre dann mit Moisture Sensor für Erde, FIGARO TGS4161 Gas Sensor und Fotozelle.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 10 April 2015, 07:22:25
@SpenZerx: Das sind alles aktive Sensoren (TGS4161 und am besten auch Photodiode mit OVP). D.h Sie haben eine eigene Versorgung und erzeugen dann direkt eine Ausgangsspannung und kannst somit direkt in den Analogpin gehen.
Bei einem LDR z.b. müsstest du einen Spannungsteiler machen, da er ja nur seinen Widerstand in Abhängigkeit der Beleuchtungsstärke ändert:

    VCC
     |
   |  | Widerstand
   |  |
     |_____Analogpin
     |
   |  |
   |  | LDR
   _|_

Die Schaltung, die du gepostet hast, zeigt eine Pegelanpassung für Sensoren, die eine Größere Ausgangsspannung haben.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 10 April 2015, 11:00:37
Mir ist gerade noch eine weitere Idee gekommen:

Man könnte ja einen "MQTT-Modem"-Sketch programmieren, den man dann in größeren Projekten verwenden kann. Ich stelle mir vor, der Haupt-Controller des Projekts steuert den ESP8266 über UART kommandos wie z.b. "push /bad/temp 15.80" und der ESP erledigt den rest. außerdem kann der Haupt-Controller den ESP einfach über die RST-Leitung schlafen legen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 10 April 2015, 13:57:16
@Kuzl

ich hab einen ähnlichen Gedanken nur genau anders herum.

Der ESP managed alles und "mißbraucht" einen Arduino als IO-Erweiterung.
Beide kommunizieren über die serielle Schnittstelle

Damit hat man kein Ressourcen-Probleme mehr und kann gleichzeitig auf die komplette Hardware-Pallette von Arduino zugreifen.
Arduino übernimmt nur noch die Anbindung der Hardware mit entsprechenden Treibern.
Im günstigsten Fall hat man einen Sketch für den Arduino mit allen Sensoren/Aktoren, die man jemals verwenden will.
Die Treiber werden vom ESP fallweise aktiviert/angefordert, so daß nur noch der Sketch am ESP zu individualisieren ist.

Die Netzwerkanbindung ist ja mit dem ESP ohnehin gegeben.

Ich denke folgende Library ist dazu gut geeignet.
http://playground.arduino.cc/Code/CmdMessenge (http://playground.arduino.cc/Code/CmdMessenger)

Die muss dann auf beiden Seiten integriert werden.

John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: golem am 10 April 2015, 14:09:36
@John

ist da nicht eine Lösung mit Firmata einfacher, da es die passenden Module schon gibt?
ich finde gerade die Lösung nur ESP8266 so gut da sie einfach nur schön klein ist.

gruß Denis 
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 10 April 2015, 14:54:53
Unter Ubuntu geht das kompilieren :)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 10 April 2015, 18:00:11
Hast es wahrscheinlich mit Windows 32Bit probiert und es läuft wohl bisher nur unter Win 64Bit!
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 10 April 2015, 18:14:48
Nö war schon 64 bit .... komisch
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 10 April 2015, 18:59:30
@golem
Hallo Denis,
danke für den Hinweis. Firmata ist noch ein weisser Fleck auf meiner "Landkarte".
John
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 10 April 2015, 19:09:39
@John:
Ja das ist die alternative :D wollte nur den ESP so kurz wie möglich eingeschaltet lassen wegen dem stromverbrauch. Was allerdings sinnvoller ist kann ich noch nicht sagen, da er ja dann immer erst den initialisierungsprozess durchlaufen muss bevor ich was senden kann
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 17 April 2015, 15:46:08
SO, ich habe jetzt endlich mal John's lua Version zum laufen bekommen, letztendlich schuld daran war dass die Debian Wheezy Mosquitto Version 3.1 zu alt ist und die connection zum Broker nicht funktioniert hat.
Wenn wer das selbe Problem hat hier der Link zu einem alternativen repository: http://mosquitto.org/2013/01/mosquitto-debian-repository/

Damit kann ich dann mit dem Arduino IDE Problem weitermachen, ist übrigens W64, also an 32bit Version kann es nicht liegen.

Gruß
Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 17 April 2015, 16:17:35
Unter Windows gibt es scheinbar generelle Probleme.
https://github.com/esp8266/Arduino (https://github.com/esp8266/Arduino)

Scroll ein wenig herunter bis Downloads.
Dort ist die Windows Version zur Zeit mit "failing" getagged.
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Jaydee am 19 April 2015, 12:46:15
Also bei mir läuft die Arduino(+ESP8266) IDE problemlos, trotz "failing"...

@John: du hast da einen Screenshot der die Struktur im MQTT-Broker darstellt... Woher kommt der? Was ist das für eine GUI?

LG
Jan



Gesendet von iPad mit Tapatalk
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: schka17 am 19 April 2015, 13:18:31
Hallo Jan,

Das ist MQTTspy.

Könntest du vielleicht die struktur deiner Arduino library posten, bzw. was hast wohin kopiert? Ich bekomme es nicht hin.

Gruß

Karl


Sent from my iPad using Tapatalk
Titel: DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Jaydee am 19 April 2015, 14:09:14
Hi Karl,

Danke für den Tipp!
Ich hab gnz einfach nur die arduino-1.6.1-p1-windows.zip von Github runtergeladen und (zunächst auf dem Desktop) entpackt. Dann die ESPDHT22.zip von John runtergeladen, die beiden Verzeichnisse aus dem Libraries-Unterverzeichnis, in das Libraries-Verzeichnis des Arduino-Ordners gelegt und das ESPDHT22FHEM-Verzeichnis aus Johns ZIP in den Examples-Ordner von Arduino kopiert.
Und dann noch in der IDE unter Werkzeuge des Programmer auf "esptool" gesetzt, den Com-Port gewählt und als Platine das "Generic ESP8266 board" genommen.

Das wars...

LG
Jan(http://images.tapatalk-cdn.com/15/04/19/bf0a99d18bac8753c12c433f337e4611.jpg)
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: schka17 am 19 April 2015, 15:01:31
Super, danke

Probiere ich heute abend gleich aus.

Gruß

Karl


Sent from my iPad using Tapatalk
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 21 April 2015, 17:23:58
Ich kann bestätigen, dass diese Version funktioniert.
PS: MQTTspy ist ja mal ein schönes Tool :)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: frank am 21 April 2015, 19:16:31
die programmierung über arduino ide hört sich prima an. da müsste ich endlich mal nicht bei null anfangen.  :)
wie sind denn die erfahrungen mit den wlan antennen (pcb-etched, ceramic) bezüglich der reichweite, wenn das modu in einem gehäuse sitzt?
sehe ich das richtig, dass die module in der übersichtstabelle im prinzip die selbe hardware haben, aber jeweils unterschiedliche pins zugänglich sind? antenne, formfaktor, abschirmung sind natürlich auch unterschiedlich.

(http://forum.fhem.de/index.php?action=dlattach;topic=35572.0;attach=31321;image)

gruss frank
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 22 April 2015, 14:06:21
Im gehäuse kann ich nichts sagen, würde aber denken, dass da plastik nicht viel ausmacht.
manche sagen, dass die Keramik-Antenne nicht so gut ist wie die PCB- kann ich nicht sagen hab nicht beide.

Hat jemand schon den internen Temperatursensor ausprobiert bzw ans laufen bekommen?

Und kann man irgendwie die Versorgungsspannung des ESP messen, um z.b. eine Batteriewarnung zu senden?

Gruß,
Kuzl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: ken016 am 24 April 2015, 08:39:28
Guten Morgen  zusammen,

bin erst neu wieder zum fhem gekommen und bin dann über dieses Threat gestolpert.
Dieser passt gerade super zu meinen aktuellen frickelein.

Also ich habe die ESPDHT22.zip  von John kompiliert und in den ESP8266 bekommen.
Mosquitto ist installiert.

Das hier sagt mein UART Terminal.
connected with TP-LINK_C1A7BA, channel 10
dhcp client start...
.ip:192.168.222.129,mask:255.255.255.0,gw:192.168.222.1
.Init
new state:2
+Try to connect
ClientID:ESP/02
connected
new state:3
update counter
update hum
update temp
update relais
callback starts with topic:ESP/02/relais/set
compare to topic:ESP/02/relais/set
callback relais
update counter
update relais
update hum
update temp
update counter
update relais

Bin also bis zu dem Punkt vom Starter Beitrag:
-"Im fhem die zus. notwendigen MQTT perl Komponenten installiert."
-"In fhem eine MQTT-Verbindung definiert und danach ein MQTT-Device."

An diesen beiden Aussagen hänge ich aktuell.
Könnte mir jemand da Unterstützung geben?
Herzlichen Dank.

grüße
Ken

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 24 April 2015, 10:03:43
Zitat von: ken016 am 24 April 2015, 08:39:28

Bin also bis zu dem Punkt vom Starter Beitrag:
-"Im fhem die zus. notwendigen MQTT perl Komponenten installiert."
-"In fhem eine MQTT-Verbindung definiert und danach ein MQTT-Device."

An diesen beiden Aussagen hänge ich aktuell.
Könnte mir jemand da Unterstützung geben?
Herzlichen Dank.

grüße
Ken

nun, steht alles schön beschrieben in der Commandref, du musst ein IO Device anlegen,

http://fhem.de/commandref.html#MQTT (http://fhem.de/commandref.html#MQTT)

dort sind auch die Vorrausetzungen beschrieben.

dann ein MQTTDevice

http://fhem.de/commandref.html#MQTT_DEVICE (http://fhem.de/commandref.html#MQTT_DEVICE)

Ich bin dann bei dem autosubscribes auf die topics ein bischen "gestolpert", scheinbar funktioniert das + nur über einen Hierarchie Ebene, daher habe ich auch die Topics in den LUA Skripts angepasst und die Value Ebene entfernt.

Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 24 April 2015, 15:01:37
ZitatIch bin dann bei dem autosubscribes auf die topics ein bischen "gestolpert", scheinbar funktioniert das + nur über einen Hierarchie Ebene, daher habe ich auch die Topics in den LUA Skripts angepasst und die Value Ebene entfernt.

Das "+" funktioniert so schon richtig, nur scheint das "#" nicht implementiert zu sein.
Das "#" sollte eigentlich über mehrere Ebenen hinweg als Joker fungieren.
Tut es (bisher) aber leider nicht ;-(.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 27 April 2015, 08:23:42
Zitat von: Jaydee am 19 April 2015, 14:09:14
Hi Karl,

Danke für den Tipp!
Ich hab gnz einfach nur die arduino-1.6.1-p1-windows.zip von Github runtergeladen und (zunächst auf dem Desktop) entpackt. Dann die ESPDHT22.zip von John runtergeladen, die beiden Verzeichnisse aus dem Libraries-Unterverzeichnis, in das Libraries-Verzeichnis des Arduino-Ordners gelegt und das ESPDHT22FHEM-Verzeichnis aus Johns ZIP in den Examples-Ordner von Arduino kopiert.
Und dann noch in der IDE unter Werkzeuge des Programmer auf "esptool" gesetzt, den Com-Port gewählt und als Platine das "Generic ESP8266 board" genommen.

Das wars...

LG

Hallo Jan,

danke, funktioniert.

Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 28 April 2015, 13:29:16
Mal ne blöde Frage.... wie betreibt man das ganze sinnvoll mit Batterien?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 15 Mai 2015, 15:02:39
Ich hab jetzt mal mit dem Sleep experementiert und auch den verbrauch des DHT22 senken können, indem ich seine Versorgung an einen GPIO gehängt habe und nur beim messen einschalte. Was mir eher sorgen macht, ist grundsätzlich eine 3.3V-Versorgung durch batterien zu erreichen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Bapt. Reverend Magersuppe am 15 Mai 2015, 22:07:17
Zitat von: Kuzl am 15 Mai 2015, 15:02:39
Was mir eher sorgen macht, ist grundsätzlich eine 3.3V-Versorgung durch batterien zu erreichen.

3x Monozelle an einem Step-Down könnte klappen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: drdownload am 16 Mai 2015, 09:11:38
Ich bastle auch gerade herum gerade was Batteriebetrieb betrifft und gerade das Aktualisierungsintervall hat extremen Einfluss weil beim ESP8266 gerade das Wiederverbinden mit Wifi und MQTT Broker 3-4 Sekunden dauert.

Gibt es bei MQTT eigentlich die Möglichkeit den Timestamp der Nachricht zu setzen? Mein Gedanke wäre sonst zB Messwerte nur 4x in der Stunde zu übermitteln aber alle 5 min zu erfassen.
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 16 Mai 2015, 09:25:23
Einen Step-down hab ich auch schon probiert aber der hat mir 5mA im leerlauf gezogen... momwntan teste ich 3xMonozelle und 2 Dioden dahinter allerdings saugt das die Batterien nicht wirklich leer

Zu Timestamps fällt mir nichts ein leider. könnte man wenn dann mit Fhem erledigen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: drdownload am 16 Mai 2015, 09:43:54
Nachdem erst der Broker den Timestamp hinzufügt könnte man es natürlich zur Payload dazugeben, aber es ist die Frage wie MQTT konform das noch wäre.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 16 Mai 2015, 11:53:30
Es gibt auch sehr sparsame StepUps. Z.B. max1724 benötigt im Leerlauf gerade mal 5µA.
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 16 Mai 2015, 11:56:54
Der klingt ganz gut. Nur dir 150mA maximalstrom geben mir bedenken. Das Modul kann ja auch kurzzeitig 200mA ziehen. Macht dem das was aus?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 16 Mai 2015, 13:17:54
War nur ein Beispiel, es gibt sicher auch leistungsfähigere. Obwohl, ich denke, ein Elko könnte das Problem lösen, da solcher Verbrauch nur kurzfristig notwendig sein dürfte. Müsste man ausprobieren.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 16 Mai 2015, 17:04:46
Stimmt auch wieder.
Ist allerdings noch ein weiter Weg dort hin...
Die IDE scheint zuminderst unter Windows noch sehr Buggy zu sein. Mit der neusten Version funktioniert der sleep nicht und mit der alten kann man den watchdog nicht einstellen. Der löst bei mir im Moment bei jedem 3 Reboot aus; meistens dann, wenn ich die versorgungsspannung Messen will. Außerdem scheint die DHT-Library nur zu funktionieren, wenn man ein delay am Anfang einbaut. Kann sich das jemand erklären?
Hier mal mein Code (abwandlung aus dem geposteten von vor ein paar Tagen)



#include <stdio.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Client.h"

#include <DHT.h>
#include <PubSubClient.h>
extern "C" {
  #include "user_interface.h"
  uint16 readvdd33(void);
}

#define SENSOR_POWER_PIN 0
#define HUMIDITY_SENSOR_PIN 2
#define SHOW_MEASURE

// --------- adjust following settings for radio
const char* ssid = "****************";
const char* password = "************";

// --------- settings for MQTT
char mqttBroker[] = "zbox";
int  mqttPort = 1883;

#define MQTTDeviceID "02"
#define MQTTClientID "ESP." MQTTDeviceID
#define MQTT_USER ""
#define MQTT_PASSWORD ""

#define TOPIC_ClientID "ESP/" MQTTDeviceID
#define TOPIC_LastWill  TOPIC_ClientID "/connected"

#define TOPIC_Location  TOPIC_ClientID "/location"

#define TOPIC_HumidityState  TOPIC_ClientID "/humidity"
#define TOPIC_TemperatureState  TOPIC_ClientID "/temperature"
#define TOPIC_VddState TOPIC_ClientID "/Vdd"


// stati der mqtt statemachine
#define ST_INIT 0
#define ST_CONNECT 2
#define ST_CONNECTED 3


bool firstInit = true;

// mqtt callback handler
void mqttCallback(char* topic, byte* payload, unsigned int length);

WiFiClient ethClient;

//mqtt client verbindung definieren, samt callback
PubSubClient client(mqttBroker, mqttPort, mqttCallback, ethClient); // instanziierung ueber DNS Namen

DHT dht;

bool tempReq=false;
bool humReq=false;
bool vddReq=false;
float lastTemp;
float lastHum;
float lastVdd;
unsigned long dhtWaiter;

int MqState = 0;
unsigned long MqWaiter;
boolean callbackEnable=false;

char charBuffer[32];

// ------------------------
void setup() {

   Serial.begin(115200);   
//   delay(2000);

   Serial.println("Startup...");
   
   //activate DHT22
   pinMode(SENSOR_POWER_PIN, OUTPUT);
   digitalWrite(SENSOR_POWER_PIN, LOW);
   
   // Connect to WiFi network
   WiFi.begin(ssid, password);
   Serial.println("Wifi Started");
   delay(2000);

   dht.setup(HUMIDITY_SENSOR_PIN); 

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
}
// ------------------------
// publish mit retain
boolean myPublish(char* topic, char* payload){
  client.publish(topic,(uint8_t*)payload,strlen(payload),true);
}

// ------------------------
// process DHT22
void processDHT()
{
  if(!firstInit)
    return;
 
  delay(dht.getMinimumSamplingPeriod());
 
  dht.readSensor();
  if (dht.getStatus() != dht.ERROR_NONE)
  {
    Serial.print("result:");Serial.println(dht.getStatusString());
    return;
  }

  lastTemp = dht.getTemperature();

  if (isnan(lastTemp))
  {
    Serial.println("Failed reading temperature from DHT");
  }
  else{
    tempReq=true;
    #if defined(SHOW_MEASURE)
      Serial.println(""); Serial.println(""); Serial.print("T: "); Serial.println(lastTemp);
    #endif
  }

  lastHum = dht.getHumidity();

  if (isnan(lastHum)) {
    Serial.println("Failed reading humidity from DHT");
  }
  else{
    humReq=true;

    #if defined(SHOW_MEASURE)
      Serial.print("H: "); Serial.println(lastHum);
    #endif
  }
}

// ------------------------
// process VDD
void processVDD()
{
  if(!firstInit)
     return;

  lastVdd = readvdd33() / 1000.0;
  vddReq=true;
 
  #if defined(SHOW_MEASURE)
     Serial.print("VDD: "); Serial.println(lastVdd); Serial.println("");     
  #endif
}

// ---------------------------
// mqtt callback,after an external publish for subscribed items
void mqttCallback(char* topic, byte* payload, unsigned int length)
{
    Serial.print("callback starts with topic:");Serial.println(topic);
}

// ---------------------------
// called after connection to mqtt broker
void onMqttConnected(){
    myPublish((char *)TOPIC_Location,(char *)"Aussen");
}

// ---------------------------
// processes the items to be published
void processMqttItems(){
  char buffer[30];
  String strBuffer;

  if (humReq){
     humReq=false;
     strBuffer =  String(lastHum);
     strBuffer.toCharArray(charBuffer,10);
     myPublish((char *)TOPIC_HumidityState,charBuffer); 
     Serial.println("update hum"); 
  }
 
  if (tempReq){
     tempReq=false;
     strBuffer =  String(lastTemp);
     strBuffer.toCharArray(charBuffer,10);
     myPublish((char *)TOPIC_TemperatureState,charBuffer); 
     Serial.println("update temp"); 
  }
 
  if (vddReq){
     vddReq=false;
     strBuffer =  String(lastVdd);
     strBuffer.toCharArray(charBuffer,10);
     myPublish((char *)TOPIC_VddState,charBuffer); 
     Serial.println("update Vdd"); 
  }
 
  if ((firstInit == false) && (humReq == false) && (tempReq == false) && (vddReq == false))
  {
    pinMode(SENSOR_POWER_PIN, INPUT);
   
    Serial.println("go to sleep");
//    ESP.wdtDisable();
    system_deep_sleep_set_option(0);
    system_deep_sleep(5 * 60 * 1000 * 1000);
      Serial.println("..."); 
      delay(1000);   
  }
}
// -------------------------------

void processMQTT(){
int nextState=MqState;

if (millis() < MqWaiter)
    return;

if (MqState == ST_INIT){
    Serial.println("Init");
    client.disconnect();
    MqWaiter = millis() + 500;
    nextState = ST_CONNECT;
}
else if (MqState == ST_CONNECT)
  {
    Serial.println("+Try to connect");
    Serial.print("ClientID:");Serial.println(TOPIC_ClientID);
   
    callbackEnable=false;
   
    // clientID, user,password,Will-Topic, Qos, Retain, will msg
    if (client.connect((char *)TOPIC_ClientID,(char *)MQTT_USER ,(char *)MQTT_PASSWORD,(char *)TOPIC_LastWill,1,1,(char *)"0"))  {
      Serial.println("connected");

      myPublish((char *)TOPIC_LastWill,(char *)"1");

      onMqttConnected();
      callbackEnable=true;
     
      nextState = ST_CONNECTED;
    }
    else {
      Serial.println("not connected");
      nextState = ST_INIT;
    }
  }
 
  else if (MqState == ST_CONNECTED){
    // mqtt loop
    if ( ! client.loop()){
      Serial.println("disconnected");
      nextState = ST_INIT;
    }
    else {
      processMqttItems();
    }
  }

  if (nextState != MqState)
  {
    MqState = nextState;
    Serial.print("new state:");Serial.println(nextState);
  }


// -------------------------------
void loop() { 
  processDHT();
  processVDD();
  processMQTT();

  firstInit = false;
}
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: hexenmeister am 16 Mai 2015, 17:32:37
Zitat von: Kuzl am 16 Mai 2015, 17:04:46
Außerdem scheint die DHT-Library nur zu funktionieren, wenn man ein delay am Anfang einbaut. Kann sich das jemand erklären?

Ohne mich jetzt in den Code zu vergraben... Aber DHT benötigt eine bestimmte Zeit zum Initialisieren und kann nicht (sinnvoll) sofort abgefragt werden.

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 16 Mai 2015, 19:05:26
Das würde ich verstehen ja. Allerdings wird das delay vor dem initialisieren des DHT benötigt. Ändert auch nichts, wenn der DHT dauerhaft versorgt wird.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: ckbln am 30 Mai 2015, 21:57:54
Zitat von: John am 09 April 2015, 08:49:02
Programmbeispiel im Anhang:

DHT22 wird alle 5 Sekunden eingelesen zum MQTT Broker gepublished. (GPIO 2)
Relais wechselt alle 5 Sekunden den Zustand (GIPO 0).

DHT22 library wurde geringfügig modifziert.

John



Hallo John
ich habe deine Software auf dem ESP8266 installiert.
Leider startet der ESP nicht, wenn die Datenleitung des DHT22 mit dem GPI02 beim Anlegen der Betriebsspannung verbunden ist.
Heisst, ich lassen den ESP8266 starten in dem ich GPIO2 offen lassen.
Wenn ich dann an der seriellen Schnittstelle sehe, dass der ESP sich mit dem Router verbinden will, stelle ich die Verbindung vom DHT22 Datenpin zum GPIO2 her.
Dann läuft alles ohne Probleme.
Woran kann das liegen?
Gruß Christof

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: PeMue am 01 Juni 2015, 20:03:09
Zitat von: John am 06 April 2015, 10:53:30
Hallo Thomas,
anbei das Projekt.

John
Hallo John,

hättest Du mir auch die fhem Definitionen? Ich versuche das gerade nachzuvollziehen bzw. bei einem anderen Sensor die Daten über MQTT zu übertragen. Die Arduino IDE ist mir noch "zu weit weg", ich versuche es erst mal mit lua Skripten.

Danke + Gruß

PeMue
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 01 Juni 2015, 20:53:07
@PeMue

Definition des Brokers (läuft auf dem Raspi )
define MyBroker MQTT pi:1883
attr MyBroker room MQTT


Definition für Relais und Temperatur

define ESP8266.01 MQTT_DEVICE
attr ESP8266.01 IODev MyBroker
attr ESP8266.01 autoSubscribeReadings ESP8266/01/relais/+
attr ESP8266.01 publishSet 1 0 ESP8266/01/relais/set
attr ESP8266.01 room MQTT
attr ESP8266.01 stateFormat transmission-state
attr ESP8266.01 subscribeReading_Location ESP8266/01/location
attr ESP8266.01 subscribeReading_set ESP8266/01/relais/set

define ESP8266.01.Temp MQTT_DEVICE
attr ESP8266.01.Temp IODev MyBroker
attr ESP8266.01.Temp autoSubscribeReadings ESP8266/01/temperature/+
attr ESP8266.01.Temp room MQTT
attr ESP8266.01.Temp stateFormat transmission-state
attr ESP8266.01.Temp subscribeReading_Location ESP8266/01/location
attr ESP8266.01.Temp subscribeReading_value ESP8266/01/temperature/value


John
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Papaloewe am 18 Juni 2015, 19:35:41
Zitat von: ckbln am 30 Mai 2015, 21:57:54


Hallo John
ich habe deine Software auf dem ESP8266 installiert.
Leider startet der ESP nicht, wenn die Datenleitung des DHT22 mit dem GPI02 beim Anlegen der Betriebsspannung verbunden ist.
Heisst, ich lassen den ESP8266 starten in dem ich GPIO2 offen lassen.
Wenn ich dann an der seriellen Schnittstelle sehe, dass der ESP sich mit dem Router verbinden will, stelle ich die Verbindung vom DHT22 Datenpin zum GPIO2 her.
Dann läuft alles ohne Probleme.
Woran kann das liegen?
Gruß Christof

Hallo Christof,

es könnte an der zu schwachen Versorgungsspannung des ESP liegen. Der zieht beim Einschalten relativ viel Strom. Falls du die Versorgung von den USB-Seriell Wandler nimmst, wäre das eine Erklärung.
Ich wollte am GPIO0 (Relaisausgang) nur noch eine LED anklemmen, aber da hatte ich auch die von dir beschriebenen Probleme. Bin aber noch nicht dazu gekommen den ESP mit einem eigenem separaten Netzteil auszustatten. Der Winter kommt bestimmt und dann hat man wieder mehr Zeit ;-).

Gruß Thomas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: ckbln am 18 Juni 2015, 20:25:48
Hallo Thomas,
ich versorge den ESP mit  einem LM2596 Schaltreglermodul. Dazu habe ich in die 3,3 Volt ein 470 uF Kondensator geschaltet. Das hat schon einmal einen stabileren Langzeit Test ermöglicht. Das Problem mit Neustart wurde dabei nicht beseitigt. Die ganze Schaltung ist ja auch noch auf dem Breadboard aufgebaut. Ich hatte schon den Verdacht das dieser Aufbau der Grund ist. Letztendlich habe ich dann wie in vielen Schaltungen vorgesehen einen 100nF Kondensator an den VCC Pin des ESP und gegen Masse geschaltet. Seitdem startet der ESP gut und auch die Langzeitstabilität hat sich verbessert, läuft jetzt 10 Tage ohne Ausfall. Wenn ich wieder etwas mehr Zeit habe werde das ganze dann auf Lochrasterplatine bringen.

Im ESP8266EX Hardware User Guide steht zum Thema Power on:

2.2.2. Power-on Sequence and Power Reset
Power-on sequence
The voltage of the chipset's WiFi power supply systems is 3.3V, therefore only one rule should be
abide by when you power on the device: Pin7 CH_EN, the power enable pin, should be powered on
at the same time when or after the power supply system is powered on.
Note: If the power management IC is connected with the power-on enable pin CHIP_EN, it can control the
power on-and-off of ESP8266EX by output high and low voltage through its GPIOs. However, pulsed current
might be produced at the same time. In order to delay the transmission of pulsed signal and avoid unstable
current of CHIP_EN, a RC time-delay circuit (R=1kΩ, C=100nF) is needed. There is an internal pull-up in the
CHIP_EN pin, so no external pull-up is needed.


Verstehe ich das richtig, dass der CHIP_EN über eine RC Kombination an VCC hängen soll?

Gruß
Christof
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 19 Juni 2015, 07:33:19
So wie es da steht den Widerstand und den Kondensator in Reihe und zwischen CHIP_EN und GND schalten. hat den Sinn, dass beim Einschalten der Versorgungsspannung der ESP etwas verzögert startet und so der Versorgungsspannung Zeit gibt stabil zu werden (Stützkondensatoren aufzuladen etc.)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 16 Juli 2015, 16:01:14
Zitat von: John am 05 April 2015, 23:09:27
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

Hallo John,

komme auf einen etwas älteren Post zurück, ich versuche gerade das Relais zu steuern und werde auch aus commandref zum MQTT Device nicht schlau. Könntest du mir auf die Sprünge helfen wie ich das Relais schalten kann?

hier das list meines Devices

Internals:
   IODev      MQTT
   NAME       test_ESP01
   NR         2363
   STATE      29°C  46%
   TYPE       MQTT_DEVICE
   qos        1
   retain     1
   Readings:
     2015-07-16 10:45:31   connected       1
     2015-07-16 16:03:43   humidity        46
     2015-07-16 10:45:33   location        test01
     2015-07-16 16:03:57   relais          1
     2015-07-16 16:03:08   temperature     29
     2015-07-16 16:03:57   transmission-state incoming publish received
   Message_ids:
   Publishsets:
     Relais:
       topic      /ESP8266/01/relais
       values:
         [
         0
         1
         ]
   Sets:
     relais     [,0,1,]
   subscribe:
     /ESP8266/01/+
     /ESP8266/01/connected
     /ESP8266/01/humidity
     /ESP8266/01/location
     /ESP8266/01/relais
     /ESP8266/01/temperature
   subscribeExpr:
     ^\/ESP8266\/01\/([^/]+)$
     ^\/ESP8266\/01\/connected$
     ^\/ESP8266\/01\/humidity$
     ^\/ESP8266\/01\/location$
     ^\/ESP8266\/01\/relais$
     ^\/ESP8266\/01\/temperature$
   Subscribereadings:
     /ESP8266/01/connected connected
     /ESP8266/01/humidity humidity
     /ESP8266/01/location location
     /ESP8266/01/relais relais
     /ESP8266/01/temperature temperature
Attributes:
   IODev      MQTT
   autoSubscribeReadings /ESP8266/01/+
   publishSet_relais [ 0 1 ] /ESP8266/01/relais
   qos        at-least-once
   retain     1
   room       MQTT
   stateFormat temperature°C  humidity%
   subscribeReading_connected /ESP8266/01/connected
   subscribeReading_humidity /ESP8266/01/humidity
   subscribeReading_location /ESP8266/01/location
   subscribeReading_relais /ESP8266/01/relais
   subscribeReading_temperature /ESP8266/01/temperature


danke und Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 16 Juli 2015, 19:25:16
Anbei das List meines devices:

Internals:
   IODev      MyBroker
   NAME       ESP8266.01
   NR         667
   STATE      subscription acknowledged
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2015-04-06 19:08:11   Location        DG.Bad
     2015-04-06 19:11:25   set             0
     2015-04-05 22:57:40   state           0
     2015-07-09 06:24:47   transmission-state subscription acknowledged
     2015-04-06 19:33:42   value           35
   Message_ids:
   Publishsets:
     :
       topic      ESP8266/01/relais/set
       values:
         1
         0
   Sets:
     0
     1
   subscribe:
     ESP8266/01/relais/+
     ESP8266/01/location
     ESP8266/01/relais/set
   subscribeExpr:
     ^ESP8266\/01\/relais\/([^/]+)$
     ^ESP8266\/01\/location$
     ^ESP8266\/01\/relais\/set$
   Subscribereadings:
     ESP8266/01/location Location
     ESP8266/01/relais/set set
Attributes:
   IODev      MyBroker
   autoSubscribeReadings ESP8266/01/relais/+
   publishSet 1 0 ESP8266/01/relais/set
   room       MQTT
   stateFormat transmission-state
   subscribeReading_Location ESP8266/01/location
   subscribeReading_set ESP8266/01/relais/set
 

John
   
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: schka17 am 17 Juli 2015, 14:46:04
Zitat von: John am 16 Juli 2015, 19:25:16
Anbei das List meines devices:

Internals:
   IODev      MyBroker
   NAME       ESP8266.01
   NR         667
   STATE      subscription acknowledged
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2015-04-06 19:08:11   Location        DG.Bad
     2015-04-06 19:11:25   set             0
     2015-04-05 22:57:40   state           0
     2015-07-09 06:24:47   transmission-state subscription acknowledged
     2015-04-06 19:33:42   value           35
   Message_ids:
   Publishsets:
     :
       topic      ESP8266/01/relais/set
       values:
         1
         0
   Sets:
     0
     1
   subscribe:
     ESP8266/01/relais/+
     ESP8266/01/location
     ESP8266/01/relais/set
   subscribeExpr:
     ^ESP8266\/01\/relais\/([^/]+)$
     ^ESP8266\/01\/location$
     ^ESP8266\/01\/relais\/set$
   Subscribereadings:
     ESP8266/01/location Location
     ESP8266/01/relais/set set
Attributes:
   IODev      MyBroker
   autoSubscribeReadings ESP8266/01/relais/+
   publishSet 1 0 ESP8266/01/relais/set
   room       MQTT
   stateFormat transmission-state
   subscribeReading_Location ESP8266/01/location
   subscribeReading_set ESP8266/01/relais/set
 

John


Hallo John,

danke, habe das jetzt genauso gemacht (habe einfache deine Definitionen verwendet.
Habe ich das richtig verstanden dass das Setzen eines Status das automatischen toggeln unterbrechen soll? Das tut es bei mir nicht. Scheinbar funktioniert aber auch das publish nicht, zumindest sehe ich mit MQQspy nix. Irgendeine Idee?

Komischerweise kann ich keine MQTT-Devices löschen? Es wird nur unsubscribe gesendet, aber das Device ist nach wie vor vorhanden.

Gruß

Karl
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: John am 17 Juli 2015, 21:51:08
ZitatHabe ich das richtig verstanden dass das Setzen eines Status das automatischen toggeln unterbrechen soll? Das tut es bei mir nicht.

Das Toggle wird nicht unterbrochen, eher gestört.
Es wird einfach alle 5 Sekunden ausgehend vom aktuellen Zustand umgeschalten.
Wenn nun jemand in der Zwischenzeit den Zustand des Relais über MQTT ändert wird dies seitens des Toggle-Prozesses als
neuer Ausgangszustand gewertet.

Es gibt also scheintbar 2 Herren für das Relais. Der Toggle-Prozess und User, der via MQTT einen Befehl ans Relais absetzt.

ZitatScheinbar funktioniert aber auch das publish nicht
auch nicht wenn du diesen dierkt über MQTTSpy ausführst und FHEM aussen vor lässt ?
(durch einen publish von 0 bzw. 1 auf ESP8266/01/relais/set )

John
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: schka17 am 17 Juli 2015, 21:58:27
Hallo John,
Publish mit MQTTspy hatte ich noch nicht probiert, aber das erstere erscheint mir dann schon plausibel, ich habe mir den code nicht angesehen und einfach gedacht das togglen wird unterbrochen.

Vielen Dank

Gruß

Karl


Sent from my iPad using Tapatalk
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 18 August 2015, 23:00:20
Hallo,

anbei das Beispiel von John erweitert um BMP085/180 und TSL2561 und "Deep Sleep".

Viel Spaß beim Testen und Probieren.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Bapt. Reverend Magersuppe am 19 August 2015, 11:37:29
Zitat von: JoWiemann am 18 August 2015, 23:00:20
Hallo,

anbei das Beispiel von John erweitert um BMP085/180 und TSL2561 und "Deep Sleep".

Viel Spaß beim Testen und Probieren.

Grüße Jörg

Irgendwie ist das Relais auf der Strecke geblieben, ist das Absicht?
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: JoWiemann am 19 August 2015, 13:03:07
Hallo, ja, da es wohl nur zu Demo Zwecken drin war.


Grüße Jörg

Gesendet von iPad mit Tapatalk
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: SirUli am 19 August 2015, 15:11:40
Hi Jörg,

wenn ich dein Beispiel richtig lese dann hast du alle Sensoren (DHT22, BMP085/180 und TSL2561) gleichzeitig angeschlossen, richtig? Dann hast du vermutlich auch nen größeren ESP8266 (als den ESP-01) verwendet? Wenn ja, welchen?

Viele Grüße,
Uli
Titel: DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 19 August 2015, 15:49:59
Hallo Uli, der BMP und TSL werden, wie alle I2C hintereinander geschaltet. Den DHT habe ich auf PIN 2 gesetzt. (Verwendet habe ich das Break Out Board von Locutus).


Grüße Jörg

Gesendet von iPhone mit Tapatalk

PS: Wenn ich die Tage Zeit habe liefere ich noch eine Doku nach. Die Pinbelegung ist ziemlich am Anfang im Code hinterlegt. Außerdem setzte ich auf eine statische IP. Muss im Code entsprechend gesetzt werden.
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 20 August 2015, 09:51:47
ich habe auch mal ein beispiel mit deep sleep und diversen i2c sensoren gemacht, das sogar schön funktioniertr. nur die batterielaufzeit war mit 3 wochen bei 12 Messungen pro Stunde nicht so toll.
habe liftdruck temperatur und liftfeuchtigkeit gemessen

Gesendet von meinem GT-I9505 mit Tapatalk

Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: SirUli am 20 August 2015, 10:01:26
Hi Jörg, sorry hatte die Sensoren nicht genau angesehen - hatte das I2C übersehen... Mein Fehler. Sieht auf jeden Fall interessant aus, vielleicht kannst du die Doku noch beisteuern :) vielen Dank schon Mal!
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: frank am 20 August 2015, 10:36:12
Zitat von: Kuzl am 20 August 2015, 09:51:47
ich habe auch mal ein beispiel mit deep sleep und diversen i2c sensoren gemacht, das sogar schön funktioniertr. nur die batterielaufzeit war mit 3 wochen bei 12 Messungen pro Stunde nicht so toll.
habe liftdruck temperatur und liftfeuchtigkeit gemessen
ist der esp dabei 12 mal in der stunde aufgewacht, oder 3 sensoren mal 12 messungen = 36 sendecyclen?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 20 August 2015, 14:28:25
Er ist alle 5 Minuten aufgewacht, hat alle Sensoren abgefragt und die Daten an MQTT gesendet. Wenn Interesse besteht, kann ich den Code mal hochladen. Ist allerdings etwas verändert (hab das Intervall dann auf 10 oder 15 Minuten gestellt) mir ist dann beim Testen durch Dämlichkeit von mir der ESP abgeraucht und dann hab ich damit die Laufzeit nicht testen können.
Hab für die 3 Wochen 2x AA Battierie + Step-Up verwendet
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: PeMue am 20 August 2015, 14:45:54
Zitat von: Kuzl am 20 August 2015, 14:28:25
Wenn Interesse besteht, kann ich den Code mal hochladen.
... aber gerne doch.

Danke + Gruß

PeMue
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: frank am 20 August 2015, 15:26:49
ZitatEr ist alle 5 Minuten aufgewacht, hat alle Sensoren abgefragt und die Daten an MQTT gesendet.
danke für die info, aber etwas ernüchternd.  :(
hast du eventuell auch mal den deepsleep strom bei dir gemessen?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 21 August 2015, 15:18:53
Hallo,

hab noch mal ein bisschen am Source gebastelt und hoffe, dass die Doku im Source ausreicht.

Grüße Jörg
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Kuzl am 21 August 2015, 15:46:41
@frank: nein hab ich mangelns Geräte nicht gemacht. sollte aber nicht so groß gewesen sein, die sensoren hatten alle einen sehr kleinen stand-by-current.
der source kommt am sonntag, früher bin ich nicht zuhause.

Gesendet von meinem GT-I9505 mit Tapatalk

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 23 August 2015, 19:10:41
Im Anhang der Versprochene Code.

Ich musste damals die Lib des BMP085 etwas anpassen, da der ESP8266 noch keine Potenzen rechnen konnte, aber da es bei Jörg geht geh ich mal davon aus, dass das mitlerweile funktioniert. Außerdem muss hier bei meinem Code gegebenfalls auf die aktuellen befehle umgestellt werden, wenn z.b. der Deep-Sleep nicht mehr funktioniert (sollte aber gehen)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 26 August 2015, 09:44:32
Hallo, Zusammen,

nach mehr als 30h "probieren" gebe ich nun auf und wende mich an Euch.
Ich habe einen ESP8266-01 und einen ESP8266-07. Beide mit NodeMCU 0.9.6 float 20150704 geflasht und die drei Skripte im Anhang per LuaLoader 0.87 aufgespielt. Ich bekomme leider nur falsche Temperaturwerte und der Feuchtigkeitswert meldet "nil" zurück (Checksum Error). MQTT hatte funktioniert, habe ich aber bewusst mal deaktiviert, um das Auslesen zu korrigieren.

Die Stromversorgung kommt von einem Arduino Mega2560 Board mit einem 3300µF Elko und 0,47µF Folienkondensator parallel.

Was mache ich falsch? Google kennt diesen Fall nicht, also gehe ich davon aus, dass der Fehler bei mir vor dem Aufbau sitzt. Müssen die Skripte in kompilierter Form laufen? Das habe ich noch nicht geschafft.

Vielen Dank schon mal.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 27 August 2015, 17:26:24
Hallo Familienpapi,

ich bin von lua auf die Arduinio IDE umgestiegen. In einem Post weiter oben gibt es einen von mit weiter entwickelten Sketch, der mehrere Sensoren integriert.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 29 August 2015, 17:07:53
Hallo, Jörg,

das habe ich mir angeschaut. Leider arbeite ich noch mit Windows 8.1 und die Arduino IDE 1.6.4 unterstützt die ESPs nicht (zumindest bei mir nicht).

Nach den letzten beiden Nächten mit Datenblatt, Oszi und vielen Tests läuft es heute nun schon den ganzen Tag ohne Probleme. Das Timing der offiziellen dht22.lua stimmt nicht mit dem Datenblatt des Herstellers überein. Ich habe es entsprechend abgeändert und stelle meine Erkenntnisse hier gerne zur Verfügung.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Bapt. Reverend Magersuppe am 30 August 2015, 20:37:24
Zitat von: Familienpapi am 29 August 2015, 17:07:53
Hallo, Jörg,

das habe ich mir angeschaut. Leider arbeite ich noch mit Windows 8.1 und die Arduino IDE 1.6.4 unterstützt die ESPs nicht (zumindest bei mir nicht).

Du musst die ESP  über den Boardmanager (http://arduino-hannover.de/2015/04/08/arduino-ide-mit-dem-esp8266/) einlesen. Dann geht das.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 31 August 2015, 10:22:52
oK.
IDE auf 1.6.5 aktualisiert und den Boardmanager aktualisiert. Ich sehe nun die ESP Boards. Danke für den Tipp.

Nun wäre es absolut klasse, Firmata auf den ESP8266 zu installieren. Dann stünde uns alles offen, was die Arduino Boards mit FHEM auch können.
Darf jetzt aber erst mal wieder ein wenig Geld verdienen. Mal schauen... (war jetzt ein wenig off-topic)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 26 September 2015, 19:11:38
Ich habe mittlerweile bei mir den testaufbau ans laufen bekommen,

der esp steuert eine LED und ich kann in fhem mit dem set befehl die led an und ausschalten. als readings habe ich "set" und "status"



kann mir vielleicht jetzt einer erklären, wie ich einen button anlege, der als lichtschalter fungiert und gleichzeitig den status des device anzeigt?

Ich komme irgendwie nicht zu einem Ergebnis. Ich habe ein devstateicon angelegt, allerdings weiss ich nicht wie ich die readings so definieren kann, dass diese im button angezeigt werden. das selbe mit umschalten, wie bekomme ihc den button so hin, dass dieser einen "set"-befehl ausführt, wenn ich diesen anklicke
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: KaiK am 05 Oktober 2015, 20:50:40
Hallo zusammen,

ich wollte das auch mal ausprobieren. Habe die aktuelle staging Version der Arduino ESP Addons installiert und die Libraries aus den ZIP Files von  John. Bekomme folgende Fehlermeldung. Diese kann man auch so (ähnlich) im Bugtracker der ESP Addons finden, steht dort aber als solved.
Hatte das jemand von euch und wenn ja, wie habt ihr das gelöst?

VG
Kai


Arduino: 1.6.5 (Windows 7), Platine: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

In file included from ESPDHT22FHEM.ino:16:0:
C:\Users\abc\Documents\Arduino\libraries\PubSubClient/PubSubClient.h:68:46: error: section attribute not allowed for '<anonymous>'
    boolean publish_P(char *, uint8_t PROGMEM *, unsigned int, boolean);
                                              ^
ESPDHT22FHEM.ino: In function 'void processDHT()':
ESPDHT22FHEM:157: error: 'max' was not declared in this scope
ESPDHT22FHEM.ino:157:65: note: suggested alternative:
In file included from c:\users\abc\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\abc\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-1160-gef26c5f\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\abc\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-1160-gef26c5f\libraries\ESP8266WiFi\src/ESP8266WiFi.h:32,
                 from ESPDHT22FHEM.ino:11:
c:\users\abc\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:260:5: note:   'std::max'
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
ESPDHT22FHEM.ino: In function 'void mqttCallback(char*, byte*, unsigned int)':
ESPDHT22FHEM:214: error: 'min' was not declared in this scope
ESPDHT22FHEM.ino:214:37: note: suggested alternative:
In file included from c:\users\abc\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\abc\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-1160-gef26c5f\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\abc\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-1160-gef26c5f\libraries\ESP8266WiFi\src/ESP8266WiFi.h:32,
                 from ESPDHT22FHEM.ino:11:
c:\users\abc\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note:   'std::min'
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
'max' was not declared in this scope
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 06 Oktober 2015, 07:25:32
ja min und max waren bei mir auch noch unbekannt , setze einfach ans Ende zwei Zeilen :

int min(int x, int y)  {if (x<y) return x; else return y;}
int max(int x, int y) {if (x>y) return x; else return y;}
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 09 Oktober 2015, 13:42:53
Hallo,

habe nun auch den BME280 integriert. Der kann Luftfeuchte, Temperatur und Luftdruck. Anbei auch die BME Library etwas angepasst, da ich beim kompilieren immer Fehler mit SPI.h bekommen habe.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: PeMue am 09 Oktober 2015, 13:48:44
Zitat von: JoWiemann am 09 Oktober 2015, 13:42:53
... habe nun auch den BME280 integriert. Der kann Luftfeuchte, Temperatur und Luftdruck.
Hast Du dafür ein Break-Out Board?

Gruß PeMue
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 09 Oktober 2015, 13:52:03
Hallo,

https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout/pinouts

und

http://www.watterott.com/de/BME280-Breakout-Luftfeuchtigkeits-Druck-Tempertursensor

Grüße Jörg
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: KaiK am 24 November 2015, 21:29:35
Hallo zusammen,

weiß jemand von euch, wie ich (bei Nutzung der Arduino IDE) die blaue LED auf dem NodeMCU bzw ESP Modul deaktivieren kann?
Die wird ja nicht aktiv im Code angesteuert, sondern scheint intern im ESP geregelt zu sein...

VG
Kai
Titel: Antw:DHT22 -&gt; ESP8266 (ESP-01) &lt;=Wlan=&gt; Mosquitto &lt;- Fhem &lt;- MQTT &lt;- MQTT_Device
Beitrag von: Wzut am 25 November 2015, 07:31:20
Zitat von: KaiK am 24 November 2015, 21:29:35
weiß jemand von euch, wie ich (bei Nutzung der Arduino IDE) die blaue LED auf dem NodeMCU bzw ESP Modul deaktivieren kann?
Ja, kein Serial.print benutzen :) bzw. mit digitalWrite(BUILTIN_LED, HIGH)
Schau dir mal von den Beispielen den Blink Sketch an :
/*
ESP8266 Blink by Simon Peter
Blink the blue LED on the ESP-01 module
This example code is in the public domain

The blue LED on the ESP-01 module is connected to GPIO1
(which is also the TXD pin; so we cannot use Serial.print() at the same time)

Note that this sketch uses BUILTIN_LED to find the pin with the internal LED
*/

void setup() {
  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(BUILTIN_LED, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                    // but actually the LED is on; this is because
                                    // it is acive low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(BUILTIN_LED, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 03 Dezember 2015, 22:29:51
Zitatja min und max waren bei mir auch noch unbekannt , setze einfach ans Ende zwei Zeilen :
Code: [Auswählen]
int min(int x, int y)  {if (x<y) return x; else return y;}
int max(int x, int y) {if (x>y) return x; else return y;}

min und max ist bei mir auch nicht bekannt, an welche Stelle muss der Code genau?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 04 Dezember 2015, 07:52:56
da in meinem Bsp min und max zwei ganz normale Funktionen sind kannst du sie hinsetzen wo du willst.
D.h. vor die anderen , zwischen zwei andere oder eben wie von mir vorgschlagen ganz ans Ende :)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 04 Dezember 2015, 12:44:31
hab ich probiert, aber es hat nicht funktioniert.
Mir ist gerade aufgefallen, sind Klammer und Semikolon vertauscht?

mfg Andreas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 08 Dezember 2015, 21:14:22
ich habe jetzt alle Stellen ausprobiert, leider ohne Erfolg. Hier mal der Ausschnitt aus meinem Sketch:

bool relVal;
bool relaisReq;
unsigned long RelaisWaiter;

int min(int x, int y) {if (x<y) return x; else return y;}
int max(int x, int y) {if (x>y) return x; else return y;}


void setup() {
 
   Serial.begin(115200);   
   delay(5000);



   Serial.println("DHT22 Demo starts...");


Wo liegt der Fehler?

Gruß Andreas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 08 Dezember 2015, 21:44:54
Zitat von: anco1726 am 08 Dezember 2015, 21:14:22
Wo liegt der Fehler?
Gegenfrage : Wo ist die Fehlermeldung ?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 08 Dezember 2015, 23:02:50
Hallo,

das ist die Fehlermeldung:

Arduino: 1.6.6 (Windows 7), Board: "Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck"

ESPDHT22FHEM:95: error: '_Tp' does not name a type

int min(int x, int y) {if (x<y) return x; else return y;}

               ^

ESPDHT22FHEM:95: error: ISO C++ forbids declaration of '__a' with no type [-fpermissive]

int min(int x, int y) {if (x<y) return x; else return y;}

                    ^

ESPDHT22FHEM:95: error: '_Tp' does not name a type

int min(int x, int y) {if (x<y) return x; else return y;}

                               ^

ESPDHT22FHEM:95: error: ISO C++ forbids declaration of '__b' with no type [-fpermissive]

int min(int x, int y) {if (x<y) return x; else return y;}

                                    ^

ESPDHT22FHEM:95: error: expected constructor, destructor, or type conversion before ';' token

int min(int x, int y) {if (x<y) return x; else return y;}

                                        ^

ESPDHT22FHEM:96: error: '_Tp' does not name a type

int max(int x, int y) {if (x>y) return x; else return y;}

               ^

ESPDHT22FHEM:96: error: ISO C++ forbids declaration of '__a' with no type [-fpermissive]

int max(int x, int y) {if (x>y) return x; else return y;}

                    ^

ESPDHT22FHEM:96: error: '_Tp' does not name a type

int max(int x, int y) {if (x>y) return x; else return y;}

                               ^

ESPDHT22FHEM:96: error: ISO C++ forbids declaration of '__b' with no type [-fpermissive]

int max(int x, int y) {if (x>y) return x; else return y;}

                                    ^

ESPDHT22FHEM:96: error: expected constructor, destructor, or type conversion before ';' token

int max(int x, int y) {if (x>y) return x; else return y;}

                                        ^

ESPDHT22FHEM:97: error: '_Tp' does not name a type



               ^

ESPDHT22FHEM:97: error: ISO C++ forbids declaration of '__a' with no type [-fpermissive]



                    ^

ESPDHT22FHEM:97: error: '_Tp' does not name a type



                               ^

ESPDHT22FHEM:97: error: ISO C++ forbids declaration of '__b' with no type [-fpermissive]



                                    ^

ESPDHT22FHEM:97: error: '_Compare' has not been declared



                                         ^

ESPDHT22FHEM:97: error: expected constructor, destructor, or type conversion before ';' token



                                                         ^

ESPDHT22FHEM:98: error: '_Tp' does not name a type

void setup() {

               ^

ESPDHT22FHEM:98: error: ISO C++ forbids declaration of '__a' with no type [-fpermissive]

void setup() {

                    ^

ESPDHT22FHEM:98: error: '_Tp' does not name a type

void setup() {

                               ^

ESPDHT22FHEM:98: error: ISO C++ forbids declaration of '__b' with no type [-fpermissive]

void setup() {

                                    ^

ESPDHT22FHEM:98: error: '_Compare' has not been declared

void setup() {

                                         ^

ESPDHT22FHEM:98: error: expected constructor, destructor, or type conversion before ';' token

void setup() {

                                                         ^

exit status 1
'_Tp' does not name a type

  Dieser Report hätte mehr Informationen mit
  "Ausführliche Ausgabe während der Kompilierung"
  aktiviert in Datei > Einstellungen.


Ich hoffe du kannst mir weiter helfen.

mfg Andreas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 09 Dezember 2015, 09:08:37
Zitat von: anco1726 am 08 Dezember 2015, 23:02:50
Arduino: 1.6.6 (Windows 7)
hmmm , ich verwende die 1.6.5 unter Linux und habe deine Fehlermeldung auch in ähnlicher Form, allerdings "nur" als Warnung. Ich deute das so das die eigenen min & max Funktion mit den inzwischen gefixten internen min, max Funktionen kollidieren.
Versuche doch einfach mal die beiden eigenen Funktionen umzubenennen (z.B in mymin und mymax)  und diese Namen dann in den jeweiligen Aufrufen im Sketch zu benutzen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: sbiermann am 09 Dezember 2015, 09:43:27
Die Arduino IDE 1.6.6 sollte man nicht verwenden wenn es um den ESP8266 geht. Es wird empfohlen die 1.6.5 zu verwenden. Ich find nur gerade nicht mehr den Link zu der Webseite wo ich das gelesen hatte. Vielleicht hängen damit die kompletten Fehlermeldungen zusammen.

Eine andere Frage, hat jemand einen Schaltplan für die Schaltung? Ich hab in dem Sourcecode gesehen das die Spannung eingelesen und per MQTT gepushed wird, mir ist aber nicht ganz klar wie die Verkabelung der z.B. AA Batterien aussieht.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 10 Dezember 2015, 23:05:48
Danke für die Hilfe, ich habe die Arduino IDE 1.65 installiert, und siehe da, es funktioniert.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 12 Dezember 2015, 20:56:52
Hallo,

ich muss leider noch mal nerven, was habt ihr in Mosquito konfiguriert? Könnt ihr den Code evtl. hier posten?

mfg Andreas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 12 Dezember 2015, 23:05:13
Hallo, Andreas,

eigentlich muss man nichts konfigurieren, außer Du arbeitest mit mehreren IPs und möchtest nur an eine IP binden oder Du möchtest einen anderen Port.
Wo genau liegt im Moment noch das Problem? Dann kann man es etwas eingrenzen. 
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 13 Dezember 2015, 10:09:09
@anco1726, wo hast du den Mosquito laufen und welche Version ? Raspberry ?
Such mal hier im Forum nach Mosquito und MQTT,  es gibt da einige Beiträge wo die User eine falsche Version installiert hatten.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: a_quadrat am 13 Dezember 2015, 12:05:31
Danke für den Hinweis. Ich habe im Sketch "pi" durch die IP des Servers ausgetauscht, jetzt scheint es zu funktionieren.

mfg Andreas
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: ome am 15 Dezember 2015, 21:20:29
Hallo,
seit einigen Tagen versuche ich mich auch mit FHEM und MQTT. Habe inzwischen auch die ersten vorsichtigen Ergebnisse mit dem EPS8266 ESP-01. Da mir aber immer noch nicht wirklich die Zusammenhänge mit Topic, Payload etc. im Arduino (1.6.5, unter Win7) Sketch und die korrespondierenden Einträge im FHEM wirklich klar sind, habe ich den letzten Beispielsketch von Jörg heruntergeladen. Die fehlenden Libraries habe ich bei Adafruit heruntergeladen. Idee ist den Arduino Sketch nachzuvollziehen und anhand eurer Screenshots aus FHEM entsprechende Rückschlüsse auf die notwendigen Einträge zu entnehmen.

Nun erhalte ich folgende Fehlermeldung vorm Upload bzw. kompilieren auf den ESP-01:


ESPDHT22FHEM:149: error: no matching function for call to 'DHT::DHT()'
ESPDHT22FHEM.ino:149:5: note: candidates are:
In file included from ESPDHT22FHEM.ino:37:0:
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:40:4: note: DHT::DHT(uint8_t, uint8_t, uint8_t)
    DHT(uint8_t pin, uint8_t type, uint8_t count=6);
    ^
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:40:4: note:   candidate expects 3 arguments, 0 provided
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:38:7: note: constexpr DHT::DHT(const DHT&)
class DHT {
       ^
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:38:7: note: constexpr DHT::DHT(DHT&&)
C:\Users\Olaf Meier\Documents\Arduino\libraries\DHT/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided
ESPDHT22FHEM.ino: In function 'void startSensors()':
ESPDHT22FHEM:332: error: 'class DHT' has no member named 'setup'
ESPDHT22FHEM.ino:335:30: warning: 'void TwoWire::pins(int, int)' is deprecated (declared at C:\Users\Olaf Meier\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\Wire/Wire.h:54) [-Wdeprecated-declarations]
ESPDHT22FHEM.ino: In function 'void processDHT()':
ESPDHT22FHEM:544: error: 'class DHT' has no member named 'getMinimumSamplingPeriod'
ESPDHT22FHEM:544: error: 'max' was not declared in this scope
ESPDHT22FHEM.ino:544:85: note: suggested alternative:
In file included from c:\users\olaf meier\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\Olaf Meier\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\Olaf Meier\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/ESP8266WiFi.h:32,
                 from ESPDHT22FHEM.ino:33:
c:\users\olaf meier\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:260:5: note:   'std::max'
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
ESPDHT22FHEM:554: error: 'class DHT' has no member named 'readSensor'
ESPDHT22FHEM:555: error: 'class DHT' has no member named 'getStatus'
ESPDHT22FHEM:555: error: 'class DHT' has no member named 'ERROR_NONE'
ESPDHT22FHEM:558: error: 'class DHT' has no member named 'getStatusString'
ESPDHT22FHEM:562: error: 'class DHT' has no member named 'getTemperature'
ESPDHT22FHEM:574: error: 'class DHT' has no member named 'getHumidity'
ESPDHT22FHEM.ino: In function 'void mqttCallback(char*, byte*, unsigned int)':
ESPDHT22FHEM:601: error: 'min' was not declared in this scope
ESPDHT22FHEM.ino:601:37: note: suggested alternative:
In file included from c:\users\olaf meier\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\Olaf Meier\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\Olaf Meier\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/ESP8266WiFi.h:32,
                 from ESPDHT22FHEM.ino:33:
c:\users\olaf meier\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note:   'std::min'
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
no matching function for call to 'DHT::DHT()'


Die Adafruit Libraries habe ich wie sonst auch in den Ordner C:\Users\ome\Documents\Arduino\libraries gespült. Die alten Libraries habe ich dort herausgenommen. Aktuelle Version wie folgt:

name=DHT sensor library
version=1.2.3
author=Adafruit
maintainer=Adafruit <info@adafruit.com>
sentence=Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
paragraph=Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
category=Sensors
url=https://github.com/adafruit/DHT-sensor-library
architectures=*


Vielleicht hat jemand eine Idee. Danke schon mal im voraus.

Gruß Olaf

PS. Der Mosquitto Broker läuft zusammen mit FEHM und noch einigen anderen Dingen wie ADS-B und RTL-SDR stabil auf einem RasPi B
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 16 Dezember 2015, 07:42:37
ersetze mal deine DHT.h und DHT.cpp durch die angehängte Version
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: ome am 16 Dezember 2015, 23:49:18
Hallo Wzut, vielen Dank Dir! Mit der angepassten DHT Library und der ergänzten/umbenannten eigenen min/max Funktion läuft der Sketch. Jetzt werde ich in den nächsten Tagen mal weiter schauen.
Gruß Olaf
;D
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 17 Dezember 2015, 11:25:10
Sehr schön , die DHT Lib die ich gepostet hatte stammt aus dieser Quelle :
http://playground.arduino.cc/Main/DHTLib
du hattest vermutlich die Version von Adafruit :
https://github.com/adafruit/DHT-sensor-library
Die Adafruit Version muss ich mir mal die Tage ansehen und testen, eigentlich sollte die für den ES8266 besser sein da sie einen zusätzlichen Warteparameter hat der speziell beim Einsatz auf dem ESP höher einzustellen ist als bei einem Atmega ( 11 statt default 6)
Zitat// Initialize DHT sensor
20.// NOTE: For working with a faster than ATmega328p 16 MHz Arduino chip, like an ESP8266,
21.// you need to increase the threshold for cycle counts considered a 1 or 0.
22.// You can do this by passing a 3rd parameter for this threshold.  It's a bit
23.// of fiddling to find the right value, but in general the faster the CPU the
24.// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
25.// Arduino Due that runs at 84mhz a value of 30 works.
26.// This is for the ESP8266 processor on ESP-01
27.DHT dht(DHTPIN, DHTTYPE, 11); // 11 works fine for ESP8266
Quelle : https://learn.adafruit.com/esp8266-temperature-slash-humidity-webserver/code
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 17 Dezember 2015, 22:17:47
hi, also mein ESP-01 läuft jetzt testweise zusammen mit einem DHT-22.

Ich habe das ganze auch mit dem PID20 modul verknüpft und teste damit meine heizungssteuerung.

Zusätzlich habe ich noch einen RGBW-LED Dimmer realisiert, der auch ohne probleme läuft (einen "firmware-bug" gibt es noch beim prototypen, aber den behebe ich, wenn ich die fertigen platinen habe)


Ich habe nur das problem, dass der ESP-01 regelmässig die verbindung zum mqtt server verliert, die Signalqualität liegt bei 39% (ESP <-> Router) und es gibt auch keine WLAN-Verbindungsabbrüche glaube ich.

Das eigentliche Problem ist aber nicht, der verbindungsverlust, sondern eher das, was bei einem reconnect im Topic steht. Das lässt nämlich den PID20 verrückt spielen:

Verbindet sich der ESP neu zum Server, steht im Topic als Wert ein "?", woraus für den PID resultiert, dass die aktuelle temperatur 0°C ist. Ihr könnt euch bestimmt vorstellen , was dann mit dem Stellantrieb passiert... :)

Ich habe das vorübergehend so gelöst: Verliert der ESP die verbindung, wird "tempReq" und "humReq" auf true gesetzt, damit bei einem reconnect die letzten werte wieder eingetragen werden.

Hat jemand ähnliche probleme? Und wenn ja wie gelöst?


Vielleicht versuche ich das mal mit den esp-12 die ich noch hier habe. aber als reine temp-sensoren sind die mir eigentlich zu "overkill"
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Kuzl am 18 Dezember 2015, 07:32:03
Wenn in dem Topic ein "?" steht, dann trägt das der ESP auch ein. d.h. du musst suchen, wo er das einträgt (z.b. bei der Initialisierung oder dem "bekanntmachen" des Topics
Das einfach rausnehmen und dann passts wieder.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 18 Dezember 2015, 08:46:19
Hallo, LarsMie,

das Problem des Timeouts hatte ich auch. Ich habe den Timeout in der Datei PubSubClient.h in der Library direkt wie folgt geändert:

...
// MQTT_KEEPALIVE : keepAlive interval in Seconds
#define MQTT_KEEPALIVE 120
...


und ich sende alle 60 Sekunden unter dem Topic /lwt einen reconnect.

Das löste das Problem. Unter https://github.com/Familienpapi/ESP8266RoomControl kannst Du meine komplette Lösung einsehen. Läuft jetzt seit über 2 Monaten ohne Probleme.

Wenn ein ? gesendet wird, dann muss das - wie von Kuzl bereits erwähnt - aus Deinem Code kommen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 18 Dezember 2015, 10:27:46
Hmm okay,

danke schonmal für die Tipps!

ich habe den Code hier aus dem Thread übernommen und für mich abgeändert. Ich werde mal nach dem Fragezeichen suchen.


Und schnell gefunden. Habe das mal auskommentiert.


Zwei Fragen habe ich aber noch:

Mein Client soll alle 10min. die Temperatur messen und dann senden. Sollte für Raumtemperatur vollkommen ausreichen.

Sollte dann der KEEPALIVE intervall auch 10min. sein?


zu /lwt:

Du machst aber keinen "forced" disconnect, oder?

Und "first connect" wird jedesmal geschrieben wenn du einen disconnect hattest oder nur nach dem Einschalten?  Gefolgt von "connected", aber ein "disconnected" kann man ja nicht schicken....



Edit: Mann Falscher Button... hier sollte noch einiges mehr an Text stehen :)

Ich komme nachher nochmal drauf zurück
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 18 Dezember 2015, 11:36:45
Zitat von: LarsMie am 18 Dezember 2015, 10:27:46
Mein Client soll alle 10min. die Temperatur messen und dann senden. Sollte für Raumtemperatur vollkommen ausreichen.
Eine Frage des persönlichen Geschmacks, ich werte die Temp Sensoren alle Minute aus, vergleiche den Messwert mit dem vorherigen und bei Ungleichheit geht der neue Wert ab zum Broker.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 18 Dezember 2015, 12:30:19
Zitat von: Wzut am 18 Dezember 2015, 11:36:45
Eine Frage des persönlichen Geschmacks, ich werte die Temp Sensoren alle Minute aus, vergleiche den Messwert mit dem vorherigen und bei Ungleichheit geht der neue Wert ab zum Broker.


So habe ich das zuerst auch gemacht. Ich möchte nur irgendwann die (Temperatur)-Sensoren autark mit Batterien betreiben und die sollen dann all 10-15min. Aufwachen, messen und publishen. Habe in der richtung aber noich keine Tests gemacht, aber beim Infos sammeln habe ich schon ein paar dinge über die laufzeiten herausgefunden. Mit nem 3100mAh LiPo oder mit 2 2800mAh AA-Akkus sollte eine passable Laufzeit zu erreichen sein.

Wenn dem nicht so ist, muss ich mir ne andere lösung einfallen lassen ala NRF24L01 -> MQTT Gateway. Die sind ja sehr stromsparend und man hat keine Reconnectzeiten zum WLAN. Hier im Forum gibt es ja eine Lösung, bei der ein nanoCUL und NRF24L01 zu einem kombinierten gateway zusammengebaut wurden. Wie das ganze mit mqtt auszustatten sein wird muss ich dann schauen, wenn es soweit kommt.



Ich habe jetzt das problem, dass mein client sich gar nicht mehr verbinden will. Ich werde das Programm nochmal ganz neu aufsetzen anhand des Beispiels von Familienpapi.

Ein Frage dazu @Familienpapi: Hast du dafür die aktuellste Pubsubclient-Lib von knolleary genommen? Es gibt ja glaube ich noch eine veränderte Pubsubclient von jemand anderem.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 18 Dezember 2015, 12:31:53
Hallo, LarsMie,

FirstConnect sende ich, um meinem FHEM mitzuteilen, alle aktuellen Daten für das Display an den RoomControl zu senden. Sonst zeigt das ja nur die Initialisierungswerte an.
Ich habe es auch mal mit 90 Sekunden versucht, aber auch da ist der Connect dann weg, trotz Timeout 120. Somit bin ich halt bei 60 Sekunden geblieben. Und ja, alle 60 Sekunden muss eine Übertragung eines Topics erfolgen, sonst wird die Verbindung unterbrochen. Dafür nutze ich den Topic /lwt. Auch meinem RPi ist die aktuelle mosquitto in der Grundkonfiguration installiert.

Vielleicht gibt's da ja auch andere Möglichkeiten, den Connect länger aufrecht zu erhalten. Ich habe mich nicht intensiv damit beschäftigt.

Deep Sleep wird mit MQTT nicht sauber funktionieren, außer Du baust die Verbindung (zuerst WLAN und dann MQTT) nach jedem Aufwachen komplett neu auf.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 18 Dezember 2015, 12:37:32
Zitat von: Familienpapi am 18 Dezember 2015, 12:31:53
Deep Sleep wird mit MQTT nicht sauber funktionieren, außer Du baust die Verbindung (zuerst WLAN und dann MQTT) nach jedem Aufwachen komplett neu auf.


So hatte ich das vor, auch wenn das ca. 10sek. dauert.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 18 Dezember 2015, 12:47:12
oK. Ich melde mal ernsthaftes Interesse am funktionierenden Code an. Wie sieht's mit mySensors aus? Gibt's da auch Möglichkeiten mit Deep Sleep?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 18 Dezember 2015, 14:03:58
Die NFR24L01-Dinger sind ja im eigentlichen sinne keine eigenständigen uC mit TCP/IP unterstützung. Die laufen aber im gleichen Frequenzband wie der alte WLAN-Standard (2,4GHz). Ist aber am ende eigentlich dasselbe wie 868MHz (glaube ich zumindest), also keine voraussetzungen wie authentifikation oder ip adresse.

Klar wird es eine Adresse geben müssen, sonst wüßte ja kein Teilnehmer welche Nachricht für wen gedacht ist.

Ich habe beim infos sammeln auf jeden fall von einer Sleep-Funktion gelesen, man müsste dann den NFR24L01 und den uC beziehungsweise auch nur den NFR24L01 in sleep schicken können.


Ich habe hier mal den Thread aus dem ich das habe verlinkt:

http://forum.mysensors.org/topic/524/mqtt-client-gateway (http://forum.mysensors.org/topic/524/mqtt-client-gateway)

Der hat das eigentliche Gateway von mySensors wohl so umgebaut, dass es nicht als Server sondern als Bridge dient. Aber wie das MQTT-Protokoll gehandlet wird, ob man das in die Clients mit implementieren muss oder ob die Bridge das alleine umsetzt (also die publish, subsrcibe, connect events usw.), weiss ich noch nicht. Soweit habe ich noch nicht gelesen.

Edit:

Steht schon im ersten Post :)

Also das Teil dient als Gateway zwischen deinen NFR24L01 und dem MQTT-Server. Der Server subscribed sich auf alle Topics die im Topic deiner wahl zu finden sind. (Das werden dann alle nodes sein, die sich mit deinem Gateway verbinden). Das Gateway kommuniziert mit deinen Nodes (die NFR24L01) und setzt das ganze auf der anderen Seite ins MQTT-Protokoll um.

Hat wohl noch keiner versucht, aber vielleicht klappt das auch mit einem ESP8266 als Ethernet-Client. Speicher ist auf jeden fall genug vorhanden.


Edit 2: ich merk grad ich bin der totale theoretiker :)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 18 Dezember 2015, 18:58:22
Zitat von: Familienpapi am 18 Dezember 2015, 12:31:53
Und ja, alle 60 Sekunden muss eine Übertragung eines Topics erfolgen, sonst wird die Verbindung unterbrochen.
hmm , kann ich so nicht bestätigen. Da ich ja meine Temperaturwerte nur bei Veränderung übertrage habe ich meist  3 - 5 Minuten Intervalle und das ohne die Verbindung zum Mosquitto zu verlieren. 
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: LarsMie am 18 Dezember 2015, 21:47:27
@ Familienpapi:

Wenn ich die DeepSleep geschichte ans laufen bekommen habe, dann sage ich dir bescheid.  Oder hattest du Interesse an dieser Gateway-Geschichte?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 18 Dezember 2015, 21:52:01
@Wzut: Wie hast Du das gemacht? Wie erwähnt hat es bei mir nicht funktioniert und nach 65 Sekunden die Verbindung getrennt. Würde mich freuen, wenn Du Deine Config mit uns teilen könntest.

@LarsMie: Deep Sleep würde mich interessieren.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 19 Dezember 2015, 18:13:36
Zitat von: Familienpapi am 18 Dezember 2015, 21:52:01
Würde mich freuen, wenn Du Deine Config mit uns teilen könntest.
Ich denke meine config hat nichts besonderes :
Mosquitto mit apt-get install installiert , mosquitto.conf habe ich unverändert gelassen.
Der ESP Sketch ist eine leicht angepasste Version von Johns ESPDHT22FHEM (DHT22 gegen OneWire getauscht und Callback rausgeworfen)
Welche PubSubClient lib verwendest du ? Die in Johns Archiv hat wenn ich es richtig sehe einen MQTT_Keepalive von 15 Sekunden. 
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 20 Dezember 2015, 13:37:00
Habe mosquitto von mosqitto.org manuell installiert. Über apt-get habe ich eine ziemlich alte Version erhalten, mit welcher MQTT gar nicht so wirklich funktioniert hatte.
Meine pubsubclient.h ist
/*
PubSubClient.h - A simple client for MQTT.
  Nick O'Leary
  http://knolleary.net
*/

mit Stand vom 29.09.2015 und meinem geänderten KeepAlive.
Gibt's bessere Lösungen?
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 20 Januar 2016, 14:48:20
Hallo liebe Fhem Gemeinde,

ich habe die Version vom Jörg vom 09.10. geladen und nach 3 Tagen rum compilieren hab ich die Schauze voll. Ständig fehlen mir irgendwelche Libaries oder bieten nicht die Funktionen die gefordert sind...

Ist eventuell jemand bereit seinen letzten (funktionierenden :) ) Stand hier zur Verfügung zu stellen inklusive Libary?

Ich bedanke mich recht herzlich im voraus!

Gruß
Manfred

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 20 Januar 2016, 14:59:28
Zitat von: crememanfred am 20 Januar 2016, 14:48:20
Ständig fehlen mir irgendwelche Libaries oder bieten nicht die Funktionen die gefordert sind...

Hallo Manfred,

welche Arduinoversion benutzt Du und welche Libraries werden angemeckert. Dann kann man auch helfen.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 20 Januar 2016, 15:35:50
Hallo Jörg,

danke für die schnelle Antwort!

Benutze Version 1.6.5

Hier die Fehlermeldung(en):


Arduino: 1.6.5 (Windows 7), Platine: "Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck"

In file included from ESPDHT22FHEM_KIM1.ino:38:0:
C:\Users\kwalder\Documents\Arduino\libraries\PubSubClient/PubSubClient.h:68:46: error: section attribute not allowed for '<anonymous>'
    boolean publish_P(char *, uint8_t PROGMEM *, unsigned int, boolean);
                                              ^
ESPDHT22FHEM_KIM1.ino: In function 'void startSensors()':
ESPDHT22FHEM_KIM1:307: error: 'I2C_SDA' was not declared in this scope
ESPDHT22FHEM_KIM1:307: error: 'I2C_SCL' was not declared in this scope
ESPDHT22FHEM_KIM1.ino: In function 'void processDHT()':
ESPDHT22FHEM_KIM1:454: error: 'max' was not declared in this scope
ESPDHT22FHEM_KIM1.ino:454:85: note: suggested alternative:
In file included from c:\users\kwalder\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\kwalder\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\kwalder\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/ESP8266wifi.h:32,
                 from ESPDHT22FHEM_KIM1.ino:33:
c:\users\kwalder\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:260:5: note:   'std::max'
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
In file included from ESPDHT22FHEM_KIM1.ino:37:0:
C:\Users\kwalder\Documents\Arduino\libraries\DHT/DHT.h:83:8: error: 'void DHT::readSensor()' is protected
   void readSensor();
        ^
ESPDHT22FHEM_KIM1:464: error: within this context
ESPDHT22FHEM_KIM1.ino: In function 'void mqttCallback(char*, byte*, unsigned int)':
ESPDHT22FHEM_KIM1:511: error: 'min' was not declared in this scope
ESPDHT22FHEM_KIM1.ino:511:37: note: suggested alternative:
In file included from c:\users\kwalder\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\memory:62:0,
                 from C:\Users\kwalder\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/WiFiClient.h:28,
                 from C:\Users\kwalder\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src/ESP8266wifi.h:32,
                 from ESPDHT22FHEM_KIM1.ino:33:
c:\users\kwalder\appdata\roaming\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note:   'std::min'
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
Multiple libraries were found for "WiFiClient.h"

Used: C:\Users\kwalder\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi

Not used: C:\Program Files (x86)\Arduino\libraries\WiFi

'I2C_SDA' was not declared in this scope



Besten Dank! Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 20 Januar 2016, 15:50:49
Hallo Manfred,

die 1.6.5 ist sehr viel rigider was die Prüfung von Deklarationen und Notationen angeht. Damit wird der Code in der Form nicht laufen.

Ich arbeite noch mit der 1.6.1 und den dazugehörenden ESP-Librarys.

Grüße Jörg

Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 20 Januar 2016, 16:31:57
Hallo Jörg,

gut dann werde ich das mal austesten mit 1.6.1

Wie integriere ich bei 1.6.1 das ESP8266 Board in den Core? In Version 1.6.5 ging das easy über den Board Manager, kann im Netz nichts dadrüber finden...

Zitatund den dazugehörenden ESP-Librarys.

Darf ich fragen welche im Detail?

Besten Dank und Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 20 Januar 2016, 16:38:10
Zitat von: JoWiemann am 20 Januar 2016, 15:50:49
Damit wird der Code in der Form nicht laufen.
hmm , ich arbeite seit Monaten unter Linux mit der 1.6.5 ohne Probleme
( OK, die min & Max Fehlermeldung mal ausgenommen läuft der DHT22 Sketch eigentlich glatt durch) 
aber war bei der 1.6.5 unter Windoof nicht mal was mit 32 vs 64 Bit ? 
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 20 Januar 2016, 17:44:48
Zitat von: crememanfred am 20 Januar 2016, 16:31:57
Darf ich fragen welche im Detail?

Besten Dank und Gruß
Manfred
https://github.com/esp8266/Arduino/tree/master
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 20 Januar 2016, 22:14:29
Hallo Jörg,

also mit Version 1.6.1 funktioniert das kompilieren wirklich einwandfrei! Danke für den Tipp!

Allerdings bin ich scheinbar wirklich zu doof den ESP8266 Core in der IDE zu integrieren. Der von dir geposte Link hilft mir leider auch nicht weiter! :/

Wärst du nochmal so freundlich mir auf die Sprünge zu helfen?

Besten Dank & Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 21 Januar 2016, 14:01:54
Hallo Jörg,

aaalso, bin doch nicht zu doof, hab es nun endlich hinbekommen das Board unter 1.6.1 zu integrieren!  8)

Nun aber spuckt er doch wieder diverse Fehlermeldungen aus wenn ich das ESP8266 Board in der IDE angewählt habe und kompiliere! :/

Arduino: 1.6.1 (Windows 7), Platine: "Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

In file included from ESPDHT22FHEM_KIM1.ino:38:0:

C:\Users\kwalder\Documents\Arduino\libraries\PubSubClient/PubSubClient.h:68:46: error: section attribute not allowed for '<anonymous>'

    boolean publish_P(char *, uint8_t PROGMEM *, unsigned int, boolean);

                                              ^

ESPDHT22FHEM_KIM1.ino: In function 'void startSensors()':

ESPDHT22FHEM_KIM1.ino:304:7: error: expected unqualified-id before '.' token

ESPDHT22FHEM_KIM1.ino:307:14: error: 'I2C_SDA' was not declared in this scope

ESPDHT22FHEM_KIM1.ino:307:23: error: 'I2C_SCL' was not declared in this scope

In file included from C:\Program Files (x86)\Arduino\hardware\esp8266com\esp8266\libraries\ESP8266WiFi\src/WiFiClient.h:25:0,

                 from C:\Program Files (x86)\Arduino\hardware\esp8266com\esp8266\libraries\ESP8266WiFi\src/ESP8266WiFi.h:39,

                 from ESPDHT22FHEM_KIM1.ino:33:

ESPDHT22FHEM_KIM1.ino: In function 'void processDHT()':

ESPDHT22FHEM_KIM1.ino:454:58: error: expected primary-expression before '.' token

C:\Program Files (x86)\Arduino\hardware\esp8266com\esp8266\cores\esp8266/Arduino.h:254:24: note: in definition of macro 'max'

#define max(a,b) ((a)>(b)?(a):(b))

                        ^

ESPDHT22FHEM_KIM1.ino:454:58: error: expected primary-expression before '.' token

C:\Program Files (x86)\Arduino\hardware\esp8266com\esp8266\cores\esp8266/Arduino.h:254:32: note: in definition of macro 'max'

#define max(a,b) ((a)>(b)?(a):(b))

                                ^

ESPDHT22FHEM_KIM1.ino:464:6: error: expected unqualified-id before '.' token

ESPDHT22FHEM_KIM1.ino:465:10: error: expected primary-expression before '.' token

ESPDHT22FHEM_KIM1.ino:465:29: error: expected primary-expression before '.' token

ESPDHT22FHEM_KIM1.ino:468:40: error: expected primary-expression before '.' token

ESPDHT22FHEM_KIM1.ino:472:26: error: expected primary-expression before '.' token

ESPDHT22FHEM_KIM1.ino:484:23: error: expected primary-expression before '.' token

Fehler beim Kompilieren.

  Dieser Report hätte mehr Informationen mit
  "Ausführliche Ausgabe während der Kompilierung"
  aktiviert in Datei > Einstellungen



Jörg ne Idee wodran es liegen könnte?

Zitataber war bei der 1.6.5 unter Windoof nicht mal was mit 32 vs 64 Bit ?

Ich habe die 32bit Version am laufen...unter welcher gab es denn Probleme?

Besten Dank & Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 21 Januar 2016, 14:57:17
Zitat von: crememanfred am 21 Januar 2016, 14:01:54
Jörg ne Idee wodran es liegen könnte?

Hallo Manfred,

ich bin da auch total überfragt, da ich auf einer Umgebung aufsetze, die ich leider im Netz nicht mehr finde. Ich werde nächste Woche von einem schnelleren Anschluss aus mal meine Umgebung in die Cloud laden und Dir zur Verfügung stellen.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 21 Januar 2016, 14:59:43
Hallo, Zusammen,

ich arbeite ausschließlich mit der 1.6.5 in der Portable Edition (zuerst unter Win8.1 x64 und jetzt unter Win10 x64). Da kann man mehrere parallel mit verschiedenen Bibliotheken laufen lassen.

Unter https://github.com/Familienpapi/ESP8266RoomControl habe ich meinen ESP8266 Code gepostet. Dieser arbeitet jetzt seit min. 4 Monaten produktiv in zwei Räumen ohne Probleme. Per MQTT werden die Daten alle 60 Sekunden an FHEM übergeben und FHEM sendet Daten via GetHttpFile.

Mosquitto habe ich per Hand auf meinem RPi installiert. Die Version über apt-get install war bei mir viel zu alt.

Somit fällt es mir im Moment ein wenig schwer, die Problematiken nachvollziehen zu können. Gerne kann ich auch posten, welche Bibliotheken in welchen Versionen ich verwende. Vielleicht könnte das weiter helfen.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: sbiermann am 21 Januar 2016, 15:01:50
Ich hab gestern meinen ESP8266-12 bekommen und gleich mal ausprobiert mit dem DHT-22. Dabei bin ich auf das gleiche Problem mit dem PubSubClient gestoßen. Ich hab das Problem gelöst in dem ich wie hier in dem Beitrag https://gist.github.com/igrr/7f7e7973366fc01d6393 geschrieben die PubSubClient Version https://codeload.github.com/Imroy/pubsubclient/zip/master verwendet habe. Damit funktioniert es mit der Arduino 1.6.5 32 Bit unter Windows.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 21 Januar 2016, 15:19:18
Hallo zusammen,

danke zunächst für all euer Feedback!

ZitatIch werde nächste Woche von einem schnelleren Anschluss aus mal meine Umgebung in die Cloud laden und Dir zur Verfügung stellen.

Das wäre wunderbar! Das Angebot nehme ich dankend an Jörg!

ZitatGerne kann ich auch posten, welche Bibliotheken in welchen Versionen ich verwende. Vielleicht könnte das weiter helfen.

Auch das Angebot nehme ich gerne an Familienpapi, greife gerade nach jedem Strohhalm. Ich denke das die Bibliothek ohnehin das Problem an der Sache ist...

ZitatDabei bin ich auf das gleiche Problem mit dem PubSubClient gestoßen. Ich hab das Problem gelöst in dem ich wie hier in dem Beitrag https://gist.github.com/igrr/7f7e7973366fc01d6393 geschrieben die PubSubClient Version https://codeload.github.com/Imroy/pubsubclient/zip/master verwendet habe. Damit funktioniert es mit der Arduino 1.6.5 32 Bit unter Windows.

Hatte ich bereits vorher schon versucht, leider ohne Erfolg...dennoch vielen Dank für den Tipp!

Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 21 Januar 2016, 15:20:48
Zitat von: sbiermann am 21 Januar 2016, 15:01:50
Ich hab gestern meinen ESP8266-12 bekommen und gleich mal ausprobiert mit dem DHT-22. Dabei bin ich auf das gleiche Problem mit dem PubSubClient gestoßen. Ich hab das Problem gelöst in dem ich wie hier in dem Beitrag https://gist.github.com/igrr/7f7e7973366fc01d6393 geschrieben die PubSubClient Version https://codeload.github.com/Imroy/pubsubclient/zip/master verwendet habe. Damit funktioniert es mit der Arduino 1.6.5 32 Bit unter Windows.

Welchen Sketch hast du verwendet wenn ich fragen darf?

Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: sbiermann am 21 Januar 2016, 15:24:28
Den Sketch von Jörg (http://forum.fhem.de/index.php/topic,35572.msg342183.html#msg342183) habe ich verwendet, wobei ich sagen muss ich hab alles was nicht MQTT und DHT22 ist raus geworfen aus dem Sketch.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 21 Januar 2016, 15:36:08
Den hab ich auch verwendet, irgendwas mach ich oder mein PC doch falsch...also ich   ::)

Da ich auch nur MQTT & DHT verwenden möchte, würde ich gerne mal deinen Sketch missbrauchen. Würdest du mir deinen Sketch zur Verfügung stellen?

Danke & Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: JoWiemann am 21 Januar 2016, 15:42:44
Hallo Manfred,

wie gesagt, nächste Woche mit einer schnelleren Leitung. Ich habe nur 400 MBit upload.

Grüße Jörg
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: crememanfred am 21 Januar 2016, 15:50:21
Hallo Jörg,

habe ich volles Verständnis (bezüglich Upload Kapazität) für und bin dir zu Dank verpflichtet!

Melde dennoch Interesse an den Sketch von sbiermann, vielleicht erschlägt sich das eine oder andere Kompilierungs-Problem dadurch automatisch...ein versuch ist es allemal Wert...

Danke und Gruß
Manfred
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Wzut am 21 Januar 2016, 16:25:20
ich habe das eben mal durchgespielt :
Basis: Arduino IDE V 1.6.5 unter Win7 32 Bit
unter Additional Board Manager URLs :
http://arduino.esp8266.com/stable/package_esp8266com_index.json 
dann unter Board Manager das Paket ESP8266 angewält und installiert  ( siehe Screenshot)
Den DHT22 von Jo runtergeladen und entpackt , in der Arduino IDE geöffnet und Board auf Generic ESP8266 gestellt und los.
Kommt die alte bekannte min  und max Fehlermeldung.
am Ende vom Sketch eingefügt :
int min (int a , int b)
{if (a<b) return a; else return b;}
int max (int a , int b)
{if (a>b) return a; else return b;}

läuft nun ohne weitere Fehlermeldung durch :)
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 21 Januar 2016, 16:31:06
Also:
meine Arduino IDE ist die 1.6.5-r5 (32Bit). Mein System ist Win10 Pro x64, flashen über einen USB RS232 Wandler an COM3 (kann variieren).

Die ESP8266 Bibliothek: http://arduino.esp8266.com/stable/package_esp8266com_index.json (Additional Boards Manager URL)

Time.h:

Readme file for Arduino Time Library

Time is a library that provides timekeeping functionality for Arduino.

The code is derived from the Playground DateTime library but is updated
to provide an API that is more flexable and easier to use.

A primary goal was to enable date and time functionality that can be used with
a variety of external time sources with minimum differences required in sketch logic.

Example sketches illustrate how similar sketch code can be used with: a Real Time Clock,
internet NTP time service, GPS time data, and Serial time messages from a computer
for time synchronization.

The functions available in the library include:
...


IRremoteESP8266.h:

* IRremote for ESP8266
*
* Based on the IRremote library for Arduino by Ken Shirriff
* Version 0.11 August, 2009
* Copyright 2009 Ken Shirriff
* For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
...


PubSubClient.h:

PubSubClient.h - A simple client for MQTT.
  Nick O'Leary
  http://knolleary.net

Mit einer Änderung des TimeOuts in Zeile 26:

#define MQTT_KEEPALIVE 120


DHT.h:

/* DHT library

MIT license
written by Adafruit Industries
*/


Der Rest sind die Standard Libraries aus dem 1.6.5 Menü "Manage Libraries", jeweils in der aktuellsten Version.

Wie bereits erwähnt, arbeite ich mit einer manuellen mosquitto Installation unter Debian auf Raspberry. FHEM und Raspberry sind up-to-date (erst letztes Wochenende durchgeführt).

Mein FHEM Code:

define MQTT1 MQTT 192.168.x.x:1883
attr MQTT1 room zConfig
attr MQTT1 group MQTT

und

define 14_RoomControl_IP_Port dummy
attr 14_RoomControl_IP_Port room zConfig
attr 14_RoomControl_IP_Port group 14
set 14_RoomControl_IP_Port 192.168.x.x:1883

define 14_MQTT MQTT_DEVICE 14_MQTT
attr 14_MQTT IODev MQTT1
attr 14_MQTT stateFormat transmission-state
attr 14_MQTT subscribeReading_connect /14/lwt
attr 14_MQTT subscribeReading_heater /14/heater
attr 14_MQTT subscribeReading_humidity /14/humi
attr 14_MQTT subscribeReading_ir /14/ir
attr 14_MQTT subscribeReading_light /14/light
attr 14_MQTT subscribeReading_lux /14/lux
attr 14_MQTT subscribeReading_motion /14/motion
attr 14_MQTT subscribeReading_temperature /14/temp
attr 14_MQTT room zConfig
attr 14_MQTT group 14

define 14_MQTT_notify_connect notify 14_MQTT:connect.* {\
  if (ReadingsVal("14_MQTT","connect"," ") eq "first_connect") {\
    GetHttpFile(Value("14_RoomControl_IP_Port"),"/heater?value=".ReadingsVal("14_Temp_Thermostat","state","-99"));;\
    GetHttpFile(Value("14_RoomControl_IP_Port"),"/alarm?value=".ReadingsVal("Global_Alarm","state","1"));;\
    GetHttpFile(Value("14_RoomControl_IP_Port"),"/window?value=".ReadingsVal("14_Tuere1","state","open"));;\
    GetHttpFile(Value("14_RoomControl_IP_Port"),"/weather1?value=".ReadingsVal("RoomControlWeather1","state","-1"));;\
    GetHttpFile(Value("14_RoomControl_IP_Port"),"/weather2?value=".ReadingsVal("RoomControlWeather2","state","-99"));;\
  }\
}
attr 14_MQTT_notify_connect room zConfig
attr 14_MQTT_notify_connect group 14


Hoffe, das hilft weiter. Ob ich die libraries hier mit dran hängen darf, weiß ich nicht. Wenn ja, gerne.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Pf@nne am 21 Januar 2016, 17:19:45
Moin,

läuft den der DHT22 alleine, also per Print Ausgabe?

ESP und MQTT hatte ich hier mal zusammen geschrieben.......
http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/113-mqtt-basic-esp8266-mqtt-example (http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/113-mqtt-basic-esp8266-mqtt-example)

vielleicht hilft das....
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: sbiermann am 21 Januar 2016, 21:17:53
Hier ist mein Sketch: https://github.com/sbiermann/ESP8266-DHT22-MQTT
Ist wie schon gesagt der Sketch von Jörg aber radikal um alles raus geworfen was ich nicht brauche.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: magic am 27 Februar 2016, 03:25:52
Hallo,

ich versuche nun schon seit Stunden den Sketch von Jörg oder sbiermann zu compilen jedoch ohne Erfolg.
Ich versuche es mit Arduino IDE 1.6.7 auf Windows 10 64bit.

Welche libs brauche ich denn?

im Paket von sbiermann wird zum beispiel abgebrochen weil die mqtt.h fehlt.

Könnte mir jemand ein Archiv mit allen notwendigen libs liefern?


Arduino: 1.6.7 (Windows 10), Board: "NodeMCU 0.9 (ESP-12 Module), 80 MHz, Serial, 115200, 4M (3M SPIFFS)"

ESPDHT22FHEM:74: error: no matching function for call to 'PubSubClient::PubSubClient(WiFiClient&, char [13], int&)'

PubSubClient client(ethClient, mqttBroker, mqttPort);

                                                    ^

C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino:74:52: note: candidates are:

In file included from C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino:11:0:

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:99:4: note: PubSubClient::PubSubClient(const char*, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&, Stream&)

    PubSubClient(const char*, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:99:4: note:   candidate expects 5 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:98:4: note: PubSubClient::PubSubClient(const char*, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&)

    PubSubClient(const char*, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:98:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:97:4: note: PubSubClient::PubSubClient(const char*, uint16_t, Client&, Stream&)

    PubSubClient(const char*, uint16_t, Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:97:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:96:4: note: PubSubClient::PubSubClient(const char*, uint16_t, Client&)

    PubSubClient(const char*, uint16_t, Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:96:4: note:   no known conversion for argument 1 from 'WiFiClient' to 'const char*'

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:95:4: note: PubSubClient::PubSubClient(uint8_t*, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&, Stream&)

    PubSubClient(uint8_t *, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:95:4: note:   candidate expects 5 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:94:4: note: PubSubClient::PubSubClient(uint8_t*, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&)

    PubSubClient(uint8_t *, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:94:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:93:4: note: PubSubClient::PubSubClient(uint8_t*, uint16_t, Client&, Stream&)

    PubSubClient(uint8_t *, uint16_t, Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:93:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:92:4: note: PubSubClient::PubSubClient(uint8_t*, uint16_t, Client&)

    PubSubClient(uint8_t *, uint16_t, Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:92:4: note:   no known conversion for argument 1 from 'WiFiClient' to 'uint8_t* {aka unsigned char*}'

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:91:4: note: PubSubClient::PubSubClient(IPAddress, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&, Stream&)

    PubSubClient(IPAddress, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:91:4: note:   candidate expects 5 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:90:4: note: PubSubClient::PubSubClient(IPAddress, uint16_t, void (*)(char*, uint8_t*, unsigned int), Client&)

    PubSubClient(IPAddress, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:90:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(IPAddress, uint16_t, Client&, Stream&)

    PubSubClient(IPAddress, uint16_t, Client& client, Stream&);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:89:4: note:   candidate expects 4 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:88:4: note: PubSubClient::PubSubClient(IPAddress, uint16_t, Client&)

    PubSubClient(IPAddress, uint16_t, Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:88:4: note:   no known conversion for argument 1 from 'WiFiClient' to 'IPAddress'

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&)

    PubSubClient(Client& client);

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:87:4: note:   candidate expects 1 argument, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:86:4: note: PubSubClient::PubSubClient()

    PubSubClient();

    ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:86:4: note:   candidate expects 0 arguments, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:67:7: note: constexpr PubSubClient::PubSubClient(const PubSubClient&)

class PubSubClient {

       ^

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:67:7: note:   candidate expects 1 argument, 3 provided

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:67:7: note: constexpr PubSubClient::PubSubClient(PubSubClient&&)

C:\Users\magic\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:67:7: note:   candidate expects 1 argument, 3 provided

ESPDHT22FHEM:77: error: no matching function for call to 'DHT::DHT()'

DHT dht;

     ^

C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino:77:5: note: candidates are:

In file included from C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino:9:0:

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:40:4: note: DHT::DHT(uint8_t, uint8_t, uint8_t)

    DHT(uint8_t pin, uint8_t type, uint8_t count=6);

    ^

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:40:4: note:   candidate expects 3 arguments, 0 provided

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note: constexpr DHT::DHT(const DHT&)

class DHT {

       ^

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note: constexpr DHT::DHT(DHT&&)

C:\Users\magic\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided

C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino: In function 'void setup()':

ESPDHT22FHEM:148: error: 'startSensors' was not declared in this scope

    startSensors();

                 ^

ESPDHT22FHEM:154: error: 'processDHT' was not declared in this scope

       if(processDHT()) //read DHT22

                     ^

ESPDHT22FHEM:157: error: 'processMqttItems' was not declared in this scope

         processMqttItems();//send temp and hum to MQTT Broker

                          ^

C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino: In function 'void startSensors()':

ESPDHT22FHEM:188: error: 'class DHT' has no member named 'setup'

    dht.setup(DHT22_PIN);

        ^

C:\Users\magic\Documents\Arduino\ESPDHT22FHEM\ESPDHT22FHEM.ino: In function 'boolean processDHT()':

ESPDHT22FHEM:204: error: 'class DHT' has no member named 'readSensor'

   dht.readSensor();

       ^

ESPDHT22FHEM:205: error: 'class DHT' has no member named 'getStatus'

   if (dht.getStatus() != dht.ERROR_NONE)

           ^

ESPDHT22FHEM:205: error: 'class DHT' has no member named 'ERROR_NONE'

   if (dht.getStatus() != dht.ERROR_NONE)

                              ^

ESPDHT22FHEM:208: error: 'class DHT' has no member named 'getStatusString'

     if (debugOutput) Serial.println(dht.getStatusString());

                                         ^

ESPDHT22FHEM:212: error: 'class DHT' has no member named 'getTemperature'

   temperature = dht.getTemperature();

                     ^

ESPDHT22FHEM:219: error: 'class DHT' has no member named 'getHumidity'

   humidity = dht.getHumidity();

                  ^

exit status 1
no matching function for call to 'PubSubClient::PubSubClient(WiFiClient&, char [13], int&)'

  Dieser Report hätte mehr Informationen mit
  "Ausführliche Ausgabe während der Kompilierung"
  aktiviert in Datei > Einstellungen.


Gruß
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: sbiermann am 27 Februar 2016, 08:39:19
Hier sind meine beiden Libraries die ich nutze. Einmal für den DHT22 und für MQTT.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Mickbaer am 27 Februar 2016, 14:16:58
Hallo,
die Arduino IDE 1.6.7 scheint für den ESP8266 buggy zu sein.
Versuchs mal mit der 1.6.5 das geht wesentlich besser.   :)
Gruß
Mickbaer aus Berlin
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: Familienpapi am 27 Februar 2016, 15:05:04
Die 1.6.5 ist die letzte Version, die mit dem ESP8266 zuverlässig funktioniert.
Am besten "portable" arbeiten. So kann man mehrere Versionen für die jeweiligen Bausteine passend nebeneinander haben.
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: magic am 05 März 2016, 21:41:47
Nabend,
soweit sogut :-)

Ich habe den Sketch von sbiermann erfolgreich compiliert und auf ein Nodemcu v0.9 hochgeladen.
Das Wifi funktioniert, er connected auf einen MQTT. Jedoch habe ich noch mit dem DHT-22 Probleme.

Er hängt an D4 des NodeMCU, das Pin Setting ist 2.

Ich habe nun mal ein bisschen und her experimentiert und mir ist dabei aufgefallen das der DHT22 sich nur auslesen lässt wenn ich ihn nach dem boot kurz von der 3.3vcc trenne und nicht in den deep sleep gehe. Das verwundert mich sehr. Hat da jemand eine Idee zu?

Ich habe Pin1 vom dht22 an 3.3v, Pin 2 an GPIO-2, Pin 4 an GND.

Ich verwende so ein Breakout Board:
http://www.ebay.de/itm/DHT22-AM2302-Luft-Feuchtigkeit-Feuchte-Temperatur-Sensor-Modul-Fur-Arduino-TE248-/201389650576?hash=item2ee3c23290:g:D4sAAOSwKtlWlgqk


Log:
ZitatConnecting to ChuckNorris
f 0, ....scandone
state: 0 -> 2 (b0)
.state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
pm open phy_2,type:1 0 0
cnt

connected with ChuckNorris, channel 1
ip:10.0.0.200,mask:255.255.0.0,gw:10.0.0.1
.
WiFi connected
IP address:
10.0.0.200
sleep enable,type: 1
Wifi Started
WiFi connection time 3681 ms
MQTT is connected
DHT22: +++DHT start
DHT22 Error: TIMEOUT
MQTT is disconnected
state: 5 -> 0 (0)
rm 0
pm close 7 0 39618/612308
WiFi is disconnected
sleeping for 30 seconds
del if0
usl
sul 0 0
ESP8266 run complete in 20428 ms
deep sleep 9s

Code:
Zitat/*************************************************/
/* Includes                                      */
/*************************************************/
#include <stdio.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "Client.h"

#include <DHT.h>
#include <MQTT.h>
#include <PubSubClient.h>

#include <Wire.h>

// Include API-Headers
extern "C" {
#include "ets_sys.h"
#include "os_type.h"
#include "osapi.h"
#include "mem.h"
#include "user_interface.h"
#include "cont.h"
}

/*************************************************/
/* Debugging                                     */
/*************************************************/
const bool debugOutput = true;  // set to true for serial OUTPUT

/*************************************************/
/* Definitions                                   */
/*************************************************/
// in seconds, time between measurements, sketch goes into deep sleep between readings
// should be at least 30secs, to thingspeak only allows update every 20s and script excekution is about 20s
#define REPEAT_INTERVAL 30

#define SERIAL_SPEED 115200

#define DHT22_PIN 2       // Pin 12 as 1-wire bus for DHT22

/*************************************************/
/* Settings for WLAN                             */
/*************************************************/
const char* ssid = "ChuckNorris";
const char* password = "xxXxxx";

/*************************************************/
/* Static IP                                     */
/*************************************************/
IPAddress ip(10,0,0,200);
IPAddress gateway(10,0,0,1);
IPAddress subnet(255,255,0,0);

/*************************************************/
/* Settings for MQTT                             */
/*************************************************/
char mqttBroker[] = "10.0.0.5";
int  mqttPort = 1883;

#define MQTTDeviceID "01"
#define MQTTClientID "ESP8266." MQTTDeviceID
#define MQTT_USER ""
#define MQTT_PASSWORD ""

#define TOPIC_ClientID "ESP8266/" MQTTDeviceID
#define TOPIC_LastWill  TOPIC_ClientID "/connected"
#define TOPIC_HumidityState  TOPIC_ClientID "/humidity/value"
#define TOPIC_TemperatureState  TOPIC_ClientID "/temperature/value"

// Create an WiFiClient object, here called "ethClient":
WiFiClient ethClient;

//Create MQTT client object
PubSubClient client(ethClient, mqttBroker, mqttPort);

// Create an DHT object, here called "dht":
DHT dht;
float temperature;
float humidity;
char charBuffer[32];

int wifiConnectCounter = 0;

// Pin14: VCC for Sensors
const int GPIO_Power_Sensors = 14;


// ------------------------
void setup() {
   Serial.begin(115200);   

   if (debugOutput) Serial.println("ESP8266 starts...");

   // power on sensors
   pinMode(GPIO_Power_Sensors, OUTPUT);
   digitalWrite(GPIO_Power_Sensors, HIGH);
   //disable internal LED
   pinMode(2, OUTPUT);
   digitalWrite(2, HIGH );
   long start = millis();
   
   if (debugOutput) Serial.println("Wifi wait for connection");

   system_deep_sleep_set_option(1); // alt. 2 to not recalibrate WiFi after wake up, 1 is more stable needs more power
   wifi_set_sleep_type (LIGHT_SLEEP_T);

   if (debugOutput) Serial.setDebugOutput(true); // enable WIFI Debug output
   if (debugOutput) Serial.println();
   if (debugOutput) Serial.println();
   if (debugOutput) Serial.print("Connecting to ");
   if (debugOutput) Serial.println(ssid);

   // Connect to WiFi network
   WiFi.mode(WIFI_STA);
   yield();

   WiFi.disconnect();
   yield();

   WiFi.begin(ssid, password);
   WiFi.config(ip, gateway, subnet);

   // Wait for connection
   while (WiFi.status() != WL_CONNECTED) {
     delay(500);
     wifiConnectCounter++;
     if (debugOutput)  Serial.print(".");
     if (wifiConnectCounter > 100) {
       if (debugOutput)  Serial.println("No WiFi connection, try again in " + String(REPEAT_INTERVAL) + " seconds");
       system_deep_sleep(REPEAT_INTERVAL * 1000 * 1000); // after deep sleep automtic reset
       delay(200); // give some time to activate sleep state
     }
   }
   if (debugOutput) Serial.println("");
   if (debugOutput) Serial.println("WiFi connected");
   if (debugOutput) Serial.println("IP address: ");
   if (debugOutput) Serial.println(WiFi.localIP());
   wifi_set_sleep_type (LIGHT_SLEEP_T);

   if (debugOutput) Serial.println("Wifi Started");
   client.disconnect();
   //wait at least 3 seconds...
   long wait = millis()-start;
   if (debugOutput) Serial.println("WiFi connection time "+String(wait)+" ms");
   if( wait < 3000)
    delay(3000-wait);
   //starting the sensor
   startSensors();
   // connect to MQTT Broker
   while (!client.connected()) {
   if (client.connect((char *)TOPIC_ClientID,(char *)TOPIC_LastWill,1,1,(char *)"0")) 
    {
      if (debugOutput) Serial.println("MQTT is connected");
      if(processDHT()) //read DHT22
      {
        yield();
        processMqttItems();//send temp and hum to MQTT Broker
        delay(500);
      }
    }
    else
    {
      if (debugOutput) Serial.println("MQTT is not connected... retrying");
      delay(200);
    }
  }
    // disconnect from MQTT
    client.disconnect();
    if (debugOutput) Serial.println("MQTT is disconnected");
    yield();

    // disconnect from WiFi
    WiFi.disconnect();
    if (debugOutput) Serial.println("WiFi is disconnected");
    yield();


  // all done enable deep_sleep
   long sleep_dur = REPEAT_INTERVAL * 1000 * 1000 - millis() * 1000;
   if (debugOutput) Serial.println("sleeping for " + String(REPEAT_INTERVAL) + " seconds");
   system_deep_sleep(sleep_dur);
   if (debugOutput) Serial.println("ESP8266 run complete in "+String(millis())+" ms");
   delay(1000);//waiting a little bit, deep sleep needs some time to start
}

void startSensors(void) {
   // Setup DHT22
   dht.setup(DHT22_PIN);
}

// ------------------------
// publish mit retain
boolean myPublish(char* topic, char* payload)
{
  client.publish(topic,(uint8_t*)payload,strlen(payload),true);
}

// ------------------------
// process DHT22
boolean processDHT()
{
  if (debugOutput) Serial.println("DHT22: +++DHT start");
 
  dht.readSensor();
  if (dht.getStatus() != dht.ERROR_NONE)
  {
    if (debugOutput) Serial.print("DHT22 Error: ");
    if (debugOutput) Serial.println(dht.getStatusString());
    return false;
  }

  temperature = dht.getTemperature();
  if (isnan(temperature))
  {
    if (debugOutput) Serial.println("DHT22: Failed reading temperature from DHT");
  }
  if (debugOutput) Serial.print("DHT22 Deg: "); Serial.println(temperature);
 
  humidity = dht.getHumidity();
  if (isnan(humidity)) {
    if (debugOutput) Serial.println("DHT22: Failed reading humidity from DHT");
  }
  if (debugOutput) Serial.print("DHT22 Hum: "); Serial.println(humidity);
  if (debugOutput) Serial.println("DHT22: ---DHT done");
  return true;
}

// ---------------------------
// processes the items to be published
void processMqttItems()
{
  String strBuffer;
  strBuffer =  String(humidity);
  strBuffer.toCharArray(charBuffer,10);
  myPublish((char *)TOPIC_HumidityState,charBuffer); 
  if (debugOutput) Serial.println("Action: update hum"); 
  yield();

  strBuffer =  String(temperature);
  strBuffer.toCharArray(charBuffer,10);
  myPublish((char *)TOPIC_TemperatureState,charBuffer); 
  if (debugOutput) Serial.println("Action: update temp"); 

}
// -------------------------------

void loop() {
  //not needed
}

Gruß magic
Titel: Antw:DHT22 -> ESP8266 (ESP-01) <=Wlan=> Mosquitto <- Fhem <- MQTT <- MQTT_Device
Beitrag von: wingfighter am 13 März 2016, 18:09:55
Hallo Magic

Wenn Du das Modul aus dem Link verwendest und Pin 1 links ist, muss an 1 die Masse als GND, an 2 (MItte) +3,3V und an PIN 3 rechts kommt die Verbindung zum GPIO in Deine Fall GPIO2 hin.
Wenn Du ein Modul mit vier Anschlüssen verwendest, also ohne das Board, dann  muss zwischen VCC (+3,3V) und der Datenleitung noch ein ca. 5-10kOhm-Widerstand geschaltet werden.

Den Quelltext habe ich mir auch mal angeguckt.
Die DHT-Library, die Du verwendest hatte ich bei meinen Versuchen auch im Test. Das sieht mir nach dieser aus https://github.com/markruys/arduino-DHT (https://github.com/markruys/arduino-DHT)
Da kamen bei meinen Versuchen allerdings keine plausiblen Werte raus.

Versuch mal diese hier: https://github.com/adafruit/DHT-sensor-library (https://github.com/adafruit/DHT-sensor-library)
Mit der habe ich gute Erfahrungen gemacht.

Gruß Wingfighter