ESP8266 mit ESPEasy in wenigen Minuten an Fhem anbinden

Begonnen von Reinhart, 26 Dezember 2015, 10:33:51

Vorheriges Thema - Nächstes Thema

hjgode

Zitat von: The-Holgi am 07 März 2016, 17:46:44
Hallo,
versuche gerade einen 2. ESP8266 in Fhem einzubinden.
Mir ist nur nicht klar wie ich da vorgehen muß, hatte im ersten Ansatz versucht in ESP Easy
/hooks/devices/1/SensorData/temperature
in /hooks1/devices/1/SensorData/temperature zu ändern.
Das hat leider nicht geklappt, die werte vom ersten ESP werden dann nicht mehr an fhem übertragen.
Hoffe jemand hat einen Tipp für mich, beim Einrichten bin ich nach der Anleitung im ersten post vorgegangen.
Was hat es eigentlich mit der IDX/Variable auf sich, ist die frei wählbar ?

Gruß Holgi

In ESPeasy trägst Du einen Broker, sagen wir Übermittler, unter Main Settings Controller IP ein. Das ist die Adresse auf der zB mosquitto läuft. Dieser kann für mehrere ESPeasy u.a. MQTT devices genutzt werden.

Unter Advanced findest Du das Muster nach dem ein ESPeasy seine Werte publiziert:
     /hooks/devices/%id%/SensorData/%valname%
die %id% ist die, die Du unter devices als idx angibst. Du kannst mehrere ESPeasy betreiben und die Werte allein anhand von %id% unterscheiden.Zum Beispiel nutzt Du auf einem ESPEasy 1 bis 9 und auf dem nächsten 10-19.

In FHEM kannst Du diese Werte dann ebenfalls genau definieren: Zum Beispiel:

   subscribeReading_Temperature          /hooks/devices/1/SensorData/temperature

und

   subscribeReading_Temperature          /hooks/devices/11/SensorData/temperature

Auch hier gibt es nur einen Broker (zB mosquitto).

Du kannst auch ohne MQTT via httpmod in FHEM arbeiten: für das vorgenannte Beispiel wäre das:

define httpmod1 HTTPMOD http://192.168.0.106/devices?setpage=1 300
attr httpmod1 userattr readingsName1 readingsRegex1 requestHeader1 requestHeader2 stateFormat
attr httpmod1 group json
attr httpmod1 readingsName1 Temperatur
attr httpmod1 readingsRegex1 temperature:</div><div class="div_r">([\d\.]+)
attr httpmod1 requestHeader1 Content-Type: application/json
attr httpmod1 requestHeader2 Accept: */*
attr httpmod1 room Aussen,Dachboden
attr httpmod1 stateFormat {sprintf("Temp: %.2f", ReadingsVal($name,"Temperatur",undef))}

~josef

Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

Pf@nne

Um die MQTT-Kommunikation unabhängig zu beobachten finde ich den MQTT-SPY echt klasse.

https://github.com/kamilfb/mqtt-spy/wiki/Downloads

Damit hat man zumindest eine unabhängige Quelle, ist bei der Fehlersuche mit zwei unbekannten eine echte Erleichterung.

FHEM auf: DS415+ (Master), Raspberry Pi 2

The-Holgi

#122
Danke für die ausführliche Erklärung und den Tipp mit MQTT-Spy.

Eine Frage hätte ich noch, wie muß die zeile unter Advanced aussehen wenn ich mit einem ESP8266 mehrere Sensoren betreibe, ich meine wie werden die verschiedenen idx Nummern eingetragen ?

Gruß Holgi
Raspberry Pi 5

Pf@nne

%id% ist der Platzhalter für die individuelle ID jedes Sensors, sofern ich mich richtig erinnere...
FHEM auf: DS415+ (Master), Raspberry Pi 2

schka17

Genau, %id% entspricht der IDX nummer, diese ist für FHEM eigentlich irrelevant, darf nur nicht 0 sein sonst wird dieser Wert nicht gepublished, kann natürlich auch wie schon beschrieben als identifier verwendet werden. Ich verwende die Variable %sysname% und %valname%, %id% benötige eigentlich nicht, zumindest noch nicht, ist immer 1, die Unterscheidung ist eben %valname%.

Hier ein Beispiel
/devices/%sysname%/Sensor_Data_ID%id%/%valname%




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

The-Holgi

#125
Hm, so richtig hab ich das noch nicht verstanden.
Ich habe jetzt zum Test 2 ESP8266 mit ESP-Easy in Betrieb.
Am ersten ist ein DS18B20 und unter Advanced so eingestellt:
Subscribe Template: /Home/#
Publish Template: /hooks/devices/%id%/SensorData/%valname%
Als IDX habe ich  1 eingegeben.
Das funktioniert sehr gut, die Temperaturen werden seit Tagen ohne Fehler an fhem übertragen.
Sobald ich aber den 2. ESP8266 mit einem DHT22 in Betrieb nehme mit den gleichen Einstellungen in Advanced nur mit einer anderen IDX (habe hier 10 gewählt).
Kommt vom ersten nichts mehr bei fhem an (transmission-state:  subscription acknowledged).
In mqtt-spy kommen auch keine Daten an.
Sorry wenn ich mich vielleicht ein bisschen blöd anstelle.

Gruß Holgi
Raspberry Pi 5

RappaSan

Ich versuch's mal:
Bei mir läuft es z.B. so:

# Device 1 definieren
define CR_Sens1 MQTT_DEVICE BME280
attr CR_Sens1 IODev MyBroker
attr CR_Sens1 stateFormat Temperatur: Temperature°C, Druck: Pressure, Hum: Humidity
attr CR_Sens1 subscribeReading_Humidity /hooks/devices/1/SensorData/Humidity
attr CR_Sens1 subscribeReading_Pressure /hooks/devices/1/SensorData/Pressure
attr CR_Sens1 subscribeReading_Temperature /hooks/devices/1/SensorData/Temperature

# Device 2 definieren
define CR_Sens2 MQTT_DEVICE BME280
attr CR_Sens2 IODev MyBroker
attr CR_Sens2 stateFormat Temperatur: Temperature°C, Druck: Pressure, Hum: Humidity
attr CR_Sens2 subscribeReading_Humidity /hooks/devices/2/SensorData/Humidity
attr CR_Sens2 subscribeReading_Pressure /hooks/devices/2/SensorData/Pressure
attr CR_Sens2 subscribeReading_Temperature /hooks/devices/2/SensorData/Temperature


Damit empfange ich die Daten von beiden BME280 mit den unterschiedlichen IDs 1 und 2.

Pf@nne

Evtl. könnten beide MQTT-Clients den selben Namen haben.
Das mag der Broker garnicht.

Ich weiß aber nicht, ob man diesen separat einstellen kann oder ob der Clientname genutzt wird.
FHEM auf: DS415+ (Master), Raspberry Pi 2

The-Holgi

#128
Hallo,
danke für die Hilfe. Wie sehen deine Einstellungen in Advanced bei ESP-Easy aus ?
Sobald ich den 2. ESP mit den passenden Controller IP und Port starte geht eigentlich nichts mehr. Ohne das ich schon was in fhem gemacht hätte.
Die ESP´s haben unterschiedliche Namen, einmal ESP8266 und einmal ESP8266_3. Zumindest habe ich die Namen so unter Einstellungen angegeben.
Gruß Holgi
Raspberry Pi 5

Pf@nne

Ich nutze das ESPEasy nicht (mehr,  hatte nur mal gestestet) , daher kann ich zu den Einstellungen nicht viel sagen.
Schau mal im Code mit was der MQTT-SERVER initialisiert wird.

Ich nutze ESP8266_Basic. .... ;D
FHEM auf: DS415+ (Master), Raspberry Pi 2

The-Holgi

Ich habs gefunden.
Man muß unter den Main Settings  in ESP-Easy verschiedene Unit Nr. Vergeben.
@Pf@nne nach dem das geklärt ist kann ich mich wieder um ESP8266_Basic kümmern  ;)

Gruß Holgi
Raspberry Pi 5

hjgode

Zitat von: The-Holgi am 08 März 2016, 16:37:06
Ich habs gefunden.
Man muß unter den Main Settings  in ESP-Easy verschiedene Unit Nr. Vergeben.
@Pf@nne nach dem das geklärt ist kann ich mich wieder um ESP8266_Basic kümmern  ;)

Gruß Holgi

Danke für die Info.

Steht ja eigentlich auch schön rot auf http://www.esp8266.nu/index.php/EasyProtocols

~josef
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

The-Holgi

Ja,
da hatte ich das dann auch entdeckt.
Wer lesen kann.....
Raspberry Pi 5

RappaSan


Inputsammler

Cool Danke.
Hab ein Update gemacht auf die neue Version
Nun sind meine Probleme auch weg :-)

Gerd
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.