Neues Modul: ESPEasy [war: ESPEasy ohne MQTT]

Begonnen von dev0, 18 Juli 2016, 11:53:28

Vorheriges Thema - Nächstes Thema

dev0

Im aktuellen ESPEasy (R126) ist das FHEM Plugin um Daten im JSON Format erweitert worden. Das FHEM Plugin in R126 ist weiterhin kompatibel mit älteren ESPEasy Modul Versionen. Ebenso läßt sich das FHEM Plugin R126 auch weiterhin ohne das ESPEasy Modul verwerden, indem ein FHEMWEB Port als Controller Port benutzt wird. Beide Varianten, aber natürlich mit eingeschränkten Funktionen.

Das aktuelle ESPEasy Modul v0.4 verwendet jetzt die umfangreicheren JSON Daten. Sollte mit dem Modul eine ältere ESPEasy Software eingesetzt werden, dann werden die neuen Features nicht genutzt und es wird eine Warnung ausgegeben.

Neu ist die Zuordnung von ESP Werten zu FHEM Devices. Die empfangenen Werte werden einem FHEM Device zugeordnet, dessen Name so gebildet wird:
Attribut uniqIDs == 1 (default): ESPEasy_<EspName>_<DeviceName>
Attribut uniqIDs == 0: ESPEasy_<DeviceName>

Mit "Attribut uniqIDs == 0" sollte es auch möglich sein, Daten von mehreren ESPs in ein FHEM Device laufen zu lassen, wenn die <DeviceNames> (also die eigentlichen Sensornamen) identisch sind, aber die <ValueNames> unterschiedlich sind.

Sind die Devices einmal angelegt, dann können sie beliebig umbenannt werden. Die Zuordnung geschieht über das Internal IDENT und nicht über den Namen.

Die eingebettete Command reference ist aktualisiert, ebenso das readme.md auf Github.
Sollten nach dem Lesen der command ref noch Fragen auftauchen, dann fragt ;)

Die neue Version ist jetzt im develop branch auf Github verfügbar.

Aus den Release Notes:
Zitat
# - process json data (ESPEasy Version R126 required)
# - added uniqIDs attribut
# - added get user/pass
# - fixed auth bug
# - state will contain a summary (see attribute setState)
# - default room for bridge is ESPEasy, too.
# - log outdated ESPEasy versions (without json) once.
# - error handling for JSON decoding
# - ESP parameter like sleep, version, ... -> Internals
# - added attribute setState (disable value mapping to state)


JoWiemann

Hallo,

da ich jetzt etwas länger gesucht habe einen Hinweis: Der Name eines ESPEasy Device muss den FHEM Konventionen für Bezeichnungen von Readings entsprechen. Also: A-Z; a-z; 0-9; .; _

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

dev0

#107
Bei den Value Names ersetze ich ungültige Zeichen bereits durch Unterstriche. ESP Name und Device Name habe ich anscheinend noch nicht berücksichtigt. Schaue ich mir an.

Edit: @JoWiemann: Trat das mit der ESPEasy R126 oder älter auf?

JoWiemann

Mit der aktuellen ESPEasy vom Developer-Branch und dem aktuellen FHEM-Modul vom Developer-Branch. Also alles heute frisch geholt...

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

dev0

Zitat von: JoWiemann am 29 August 2016, 17:16:54
da ich jetzt etwas länger gesucht

Im Log hast Du nicht folgende Einträge vorgefunden?

2016.08.30 06:30:29.735 2: ESPEasy eb: autocreate ESPEasy_ESP02-_SI2 ESPEasy <ESP-IP> 80 eb ESP02-_SI2
2016.08.30 06:30:29.735 1: ESPEasy eb: an autocreate error occurred while creating device for ESP02-_SI2: Invalid characters in name (not A-Za-z0-9._): ESPEasy_ESP02-_SI2
2016.08.30 06:30:29.735 2: ESPEasy: Device ESPEasy_ESP02-_SI2 not defined


Aber selbst diese Hinweise können eigentlich nur dann aufgetreten sein, wenn Du eins dieser Zeichen im ESP- oder Devicenamen vergeben hattest:
- : / { } , "

Richtig?

JoWiemann

#110
Da ich alles zunächst auf meinem Testsystem, das mit verbose 4 läuft, eingerichtet hatte, habe ich die Logeinträge zunächst übersehen gehabt. Im ESP-Devicenamen befand sich ein "-". Mein Post war auch primär als Hinweis gedacht, falls sich noch jemand wundert, wenn seine Daten nicht in Fhem ankommen.



Grüße Jörg

Gesendet von iPhone 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

dev0

#111
Im Devicenamen waren noch Zeichen erlaubt, die sich zwangsläufig in einem JSON String befinden (edit: und in Readingnamen erlaubt sind). Hab es gefixed, kommt mit der nächsten Version.

Danke für den Hinweis.

carlos

Hallo,
Kann es sein dass in Zeile 139


"oledcmd" => "pcapwm <on|off|clear>",


noch ein Fehler ist?

Bei mir kommt folgende Meldung bei flascher Eingabe:


Missing argument: oledcmd needs at least 1 parameter(s)
Usage: 'set ESPEasy_nodemcu1_OLED pcapwm <on|off|clear>'



Gruß Carlos
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

dev0

Yepp, typischer copy paste Fehler  :-[
Hat zum Glück keine Auswirkung auf die Funktion.

Danke für's Melden.

Kalli01

Hi

an einem ESP habe ich ein Relais angeschlossen. Dieses kann ich auch über set gpio ein und aus schalten. Wie füge ich jetzt am sinnvollsten einen Button mit on/off und einer Lampe für den Status in FHEM ein?

dev0

#115
Hier ein Beispiel für GPIO-15 mit Icon, devStateIcon, stateFormat,...
Den on/off Text kann man optional mit dem Atrribut webCmd ausblenden.


attr <ESP> icon FS20.off
attr <ESP> stateFormat GPIO15
attr <ESP> eventMap /gpio 15 on:on/gpio 15 off:off/status gpio 15:check/
attr <ESP> devStateIcon on:ios-on-green:off off:ios-off:on .*:ios-NACK:check

#optional:
attr <ESP> webCmd :


Edit: "attr <ESP> setState 0" entfernt, da es nicht benötigt wird.

max333

Hallo,

ich habe bisher die Daten vom Lichtsensor BH1750 mit Hilfe MQTT übertragen, jetzt habe ich den ESP auf die neueste Firmware aktualisiert und übertrage nun die Daten über das neue Modul. Die Daten werden auch problemlos empfangen und angezeigt, nur werden alle Werte auf ein vielfaches von 10 gerundet und auch keine Kommastellen übertragen.

Auf der Weboberfläche vom ESPEASY sehe ich die richtigen Daten nur in FHEM nicht. Was mache ich da falsch?

dev0

#117
Die Werte der Sensoren werden vom Modul nicht modifiziert. Zeig mal ein list von der Bridge und vom betroffenen Device. Zusätzlich ein ein log mit attr verbose 5 und attr debug 1 (Edit: die Attribute in der Bridge und dem Device setzen). Bitte code tages verwenden (# button) sonst wird das unleserlich.

max333

Danke für die schnelle Antwort
Internals:
   CFGFN
   CONNECTS   912
   DEF        bridge 8383
   FD         23
   HOST       bridge
   MODULE_VERSION 0.4 RC1
   NAME       ESPBridge
   NR         193
   PASS       not defined yet !!!
   PORT       8383
   STATE      initialized
   SUBTYPE    bridge
   TYPE       ESPEasy
   USER       not defined yet !!!
   Helper:
     Dblog:
       State:
         Logdb:
           TIME       1472721883.58111
           VALUE      initialized
   Readings:
     2016-09-01 11:24:43   state           initialized
   Helper:
     urlcmd     /control?cmd=
     192.168.178.154:
       presence   present
     192.168.178.172:
       presence   present
     Espeasy4.home.int:
       presence   absent
     Outdated:
     Uniqid:
       Espeasy3_licht:
         192.168.178.154:
           build      126
           sleep      0
           unit       3
Attributes:
   debug      1
   group      ESPEasy Bridge
   room       ESPEasy,Gateway
   verbose    5


2016.09.01 17:25:36 4 : Connection accepted from ESPBridge_192.168.178.154_2365
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: accepted tcp connect <= 192.168.178.154:2365
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: received raw message: GET /fhem?cmd=setreading%20ESPEASY3%20lux%202278 HTTP/1.1 Content-Length: 234 Host: 192.168.178.176 Connection: close {"module":"ESPEasy","version":"1.0","data":{"ESP":{"name":"ESPEASY3","unit":3,"version":9,"build":126,"sleep":0,"ip":"192.168.178.154"},"SENSOR":{"v0":{"deviceName":"Licht","valueName":"lux","value":2.28e3,"type":1},"v1":{},"v2":{}}}}
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: Dumper $header: $VAR1 = { 'Host' => '192.168.178.176', 'Content-Length' => '234', 'GET' => '/fhem?cmd=setreading%20ESPEASY3%20lux%202278 HTTP/1.1', 'Connection' => 'close' };
2016.09.01 17:25:36 1 : ESPEasy ESPBridge: Dumper $content: $VAR1 = '{"module":"ESPEasy","version":"1.0","data":{"ESP":{"name":"ESPEASY3","unit":3,"version":9,"build":126,"sleep":0,"ip":"192.168.178.154"},"SENSOR":{"v0":{"deviceName":"Licht","valueName":"lux","value":2.28e3,"type":1},"v1":{},"v2":{}}}}';
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: no basic authentication required
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: Dumper $content decoded: $VAR1 = { 'version' => '1.0', 'module' => 'ESPEasy', 'data' => { 'ESP' => { 'sleep' => 0, 'unit' => 3, 'name' => 'ESPEASY3', 'build' => 126, 'ip' => '192.168.178.154', 'version' => 9 }, 'SENSOR' => { 'v2' => {}, 'v0' => { 'deviceName' => 'Licht', 'value' => 2280, 'type' => 1, 'valueName' => 'lux' }, 'v1' => {} } } };
2016.09.01 17:25:36 5 : ESPEasy ESPBridge: dispatch: ESPEASY3_Licht:192.168.178.154:1:1:setreading|lux|2280
2016.09.01 17:25:36 5 : ESPBridge dispatch ESPEASY3_Licht:192.168.178.154:1:1:setreading|lux|2280
2016-09-01 17:25:36 ESPEasy Licht lux: 2280
2016-09-01 17:25:36 ESPEasy Licht Lux:2280


Ich denk da wird hier "value":2.28e3 das Problem liegen, also in der ESPEASY-Firmware?

dev0

Zitat von: max333 am 01 September 2016, 17:33:34

2016.09.01 17:25:36 5 : ... { 'deviceName' => 'Licht', 'value' => 2280, 'type' => 1, 'valueName' => 'lux' }...



2016.09.01 17:25:36 5 : ESPEasy ESPBridge: dispatch: ESPEASY3_Licht:192.168.178.154:1:1:setreading|lux|2280
2016-09-01 17:25:36 ESPEasy Licht lux: 2280


Ich denk da wird hier "value":2.28e3 das Problem liegen, also in der ESPEASY-Firmware?

Ja, der vom ESP gesendete Wert ist schon falsch. Um sicherzustellen, dass es beim Pull Request ins ESPEasy R126 kein Fehler auftrat habe ich mir gerade die R126 von https://github.com/ESP8266nu/ESPEasy neu runtergeladen und geflasht. Bei mir funktioniert es problemlos:


"SENSOR":{"v0":{"deviceName":"BH1750","valueName":"brightness","value":166.67,"type":1}


Hast Du die Sourcen verändert/angepasst?