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

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

Vorheriges Thema - Nächstes Thema

ckbln

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


PeMue

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
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

John

@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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Papaloewe

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

ckbln

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

Kuzl

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.)

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

John

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
   
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Bapt. Reverend Magersuppe

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?
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

JoWiemann

Hallo, ja, da es wohl nur zu Demo Zwecken drin war.


Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

SirUli

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