Neues Modul: ESPEasy [war: ESPEasy ohne MQTT]

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

Vorheriges Thema - Nächstes Thema

dev0

Zitat von: P.A.Trick am 03 Oktober 2016, 12:16:56
Was hälst du von einem Wiki Eintrag?
Zitat von: Muschelpuster am 29 Oktober 2016, 18:15:32
Ich sehe den Vorteil eines Wiki-Artikels gegenüber der commandref darin, dass man etwas links und rechts vom Modul schauen kann, besser auf die Hardware eingehen kann, Bilder einbinden kann etc.
Nur weil ich Wiki-Artikeln gegenüber kritisch eingestellt bin oder Vorurteile habe, heißt es nicht, dass Ihr keinen Artikel schreiben könnt. Alles was dem Anwender hilft ist willkommen und das Modul sollte bald auch einen Status erreicht haben, an dem es nicht mehr grundlegend geändert wird.

dev0

Ich denke darüber nach das Attribut 'uniqIDs' aus dem Modul zu entfernen, da es den Code an einigen Stellen enorm verkompliziert und dadurch auch die Wartung/Weiterentwicklung erschwert. Es gibt schon jetzt Einschränkungen, wenn man das Attribut disabled. Die Funktionalität (mehrere ESPs in einem Device darzustellen) läßt sich mit einer readingsGroup sogar wesentlich flexibler umsetzen.

Meinungen, Einwände?


P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

JoWiemann

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

#334
Beispiele für readingsGroups im Zusammenhang mit ESPEasy. Vielleicht kann es jemand mal gebrauchen...

Sysinfos aus meheren Devices darstellen. Die verwendeten 'value names' (-> Readings) sind in diesem Beispiel RSSI, voltage und uptime aus allen ESPEasy Devices.
(raw definition):

defmod rg_ee_si readingsGroup <Device>,<RSSI [dBm]>,<Voltage [V]>,<Uptime [m]> TYPE=ESPEasy:RSSI,voltage,uptime


Selbiges, aber etwas formatierter und bunter.
(raw definition):

defmod rg_ee_si readingsGroup <Device>,<RSSI [dBm]>,<Voltage [V]>,<Uptime [y ddd hh.mm]> TYPE=ESPEasy:RSSI,voltage,uptime
attr rg_ee_si cellStyle { 'style="margin: 0 20px 0 10px"' }
attr rg_ee_si style style="width:700px;;"
attr rg_ee_si valueColumn { RSSI => 1, voltage => 2, uptime => 3 }
attr rg_ee_si valueFormat {\
return "" if ($READING ne "uptime");;\
my $m = $VALUE;;\
return sprintf "0 000 00:%02d", $m if $m < 60;;\
my $h = $m / 60;; $m %= 60;;\
return sprintf "0 000 %02d:%02d", $h, $m if $h < 24;;\
my $d = $h / 24;; $h %= 24;;\
return sprintf "0 %03d %02d:%02d", $d, $h, $m if $d <365;;\
my $y = $d / 365;; $d %= 365;;\
return sprintf "%d %03d %02d:%02d", $y, $d, $h, $m;;\
}
attr rg_ee_si valueStyle {\
if ($READING eq "RSSI") {\
  if    ($VALUE >  -75) { undef }\
  else {($VALUE <= -85) ? 'style="color:red"' : 'style="color:orange"' }\
}\
elsif ($READING eq "voltage") {\
  if     ($VALUE >= 3.2) { undef }\
  else { ($VALUE <  3.0) ? 'style="color:red"' : 'style="color:orange"' }\
}\
else { undef }\
}


Mehrere Relais eines Devices darstellen und schalten. In diesem Beispiel werden die Relais (Relay1, Relay2, Relay3) des Device KE_HTR1 benutzt, die mit den GPIOs 12, 13 und 15 verbunden sind.
(raw definition):

defmod rg_ee_relays readingsGroup <%sani_heating>,<Relay1>,<Relay2>,<Relay3> KE_HTR1:Relay1,Relay2,Relay3
attr rg_ee_relays commands { \
  'Relay1.on'  => 'set $DEVICE gpio 12 off',\
  'Relay1.off' => 'set $DEVICE gpio 12 on',\
  'Relay2.on'  => 'set $DEVICE gpio 13 off',\
  'Relay2.off' => 'set $DEVICE gpio 13 on',\
  'Relay3.on'  => 'set $DEVICE gpio 15 off',\
  'Relay3.off' => 'set $DEVICE gpio 15 on'\
}
attr rg_ee_relays style style="width:700px;;"
attr rg_ee_relays valueIcon {\
  'Relay1.on'  => 'ios-on-green',\
  'Relay1.off' => 'ios-off',\
  'Relay2.on'  => 'ios-on-green',\
  'Relay2.off' => 'ios-off',\
  'Relay3.on'  => 'ios-on-green',\
  'Relay3.off' => 'ios-off'\
}


majorshark

#336
ZitatBeispiele für readingsGroups im Zusammenhang mit ESPEasy. Vielleicht kann es jemand mal gebrauchen...

Hallo. Ich habe die Beispiele mit den readingsGroups mal ausprobiert. Das scheint bei mir nicht so recht zu funktionieren. Es werden alle Devices/Values in einer neuen Zeile Angezeigt. Bei mir sind auch alle Values in eigenen Devices gespeichert. Ist das überhaupt richtig so. Scheint mir als hätte ich irgendwo ein Konfigfehler. Sollte das Device "ESPEasy_AZ_..." nur einmal auftauchen oder nicht?

Edit: Ich habs. Habe einfach auf dem ESP den "Namen" im Device weggelassen. Das habe ich scheinbar überlesen.


Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

majorshark

Da ich das mit den Readings jetzt verstanden habe, habe ich das Beispiel von dev0 um die IP erweitert. So kann ich direkt aus FHEM in des entsprechende Device switchen.
Wer's braucht.  ;)


defmod rg_ee_si readingsGroup <Device>,<RSSI [dBm]>,<Voltage [V]>,<Uptime [y ddd hh.mm]>,<IP> TYPE=ESPEasy:RSSI,Voltage,Uptime,+HOST
attr rg_ee_si cellStyle {'style="margin: 0 20px 0 10px"'}
attr rg_ee_si room ESPEasy
attr rg_ee_si style style="width:700px;;;;"
attr rg_ee_si valueColumn {RSSI => 1, Voltage => 2, Uptime => 3, +HOST => 4}
attr rg_ee_si valueFormat {\
if ($READING eq "Uptime")\
{\
my $m = $VALUE;;\
return sprintf "0 000 00:%02d", $m if $m < 60;;\
my $h = $m / 60;;;; $m %= 60;;\
return sprintf "0 000 %02d:%02d", $h, $m if $h < 24;;\
my $d = $h / 24;;;; $h %= 24;;\
return sprintf "0 %03d %02d:%02d", $d, $h, $m if $d <365;;\
my $y = $d / 365;;;; $d %= 365;;\
return sprintf "%d %03d %02d:%02d", $y, $d, $h, $m;;\
}\
elsif ($READING eq "HOST")\
{\
  return "<a href=http://".$VALUE." target= \"_blank\">".$VALUE."</a>";;\
}\
else\
{\
  return ""\
}\
}
attr rg_ee_si valueStyle {\
if ($READING eq "RSSI") {\
  if    ($VALUE >  -75) { undef }\
  else {($VALUE <= -85) ? 'style="color:red"' : 'style="color:orange"' }\
}\
elsif ($READING eq "Voltage") {\
  if     ($VALUE >= 3.2) { undef }\
  else { ($VALUE <  3.0) ? 'style="color:red"' : 'style="color:orange"' }\
}\
else { undef }\
}
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

homeum

#338
Hallo,

ich habe jetzt über ESPEasy einen DHT22 für Temperatur und Luftfeuchtigkeit eingerichtet.
Im ESPEasy ist dabei die Reihenfolge der Werte Temperature, Humidity

Im state für das Device in fhem werden die aber anders herum angezeigt, also H:  T:
Im Prinzip wäre es mir egal, aber irgendwie scheint das Dewpoint-Modul damit ein Problem zu haben,
denn bei den anderen Sensoren mit Temperatur und Luftfeuchtigkeit ist immer T der erste Wert, dann H und danach kann Dewpoint den errechneten Wert anhängen, was nun hiermit irgendwie nicht funktioniert

Kann man die Reihenfolge der Werte im state verändern, so dass es konform mit der üblichen Darstellung von Devices mit temperature und humidity ist?

Für STATE geht es ja über das Attribut stateformat aber generell, um die übliche Darstellung von Sensoren zu erreichen...?

Edit:
Ich habe da noch ein weiteres Problem bezüglich state der ESPEasy-Devices.
In allen Devices von ESPEasy wird der state auch im Filelog kein SPACE zwischen den Werte-Bezeichnungen und den eigentlichen Werten ausgegeben.
Wenn ich nun nur state logge, ist es damit nicht mehr möglich, plots korrekt aus dem Filelog zu generieren, da die Positionen der Werte ja durch den Trenner SPACE festgelegt wird.
FileLog Auszug eines ESPEasy-Devices.

2016-11-04_19:43:48 ESPEasy_Witty3_DHT22 H:80 T:2.6
2016-11-04_19:45:49 ESPEasy_Witty3_DHT22 H:80 T:2.5
2016-11-04_19:46:49 ESPEasy_Witty3_DHT22 H:80 T:2.6
2016-11-04_19:47:49 ESPEasy_Witty3_DHT22 H:80 T:2.5
2016-11-04_19:49:49 ESPEasy_Witty3_DHT22 H:81 T:2.6


FileLog Auszug eines normalen Temp/Hum-Sensors

2016-11-04_19:38:09 CUL_TCM97001_145 T: 4.1 H: 95 D: 3.4
2016-11-04_19:43:28 CUL_TCM97001_145 T: 4.1 H: 95 D: 3.4
2016-11-04_19:48:45 CUL_TCM97001_145 T: 4.1 H: 95 D: 3.4

Hier sind die Werte für T an der eindeutigen Position 4 mit dem Wert "4.1"

Oben im Logauszug von ESPEasy-Device wäre Position 4 belegt mit "T:2.6", welches das Problem im Plot verursacht und damit auch im FTUI nicht dargestellt wird.

Ist es also möglich, die state-Angaben entsprechend den anderen Formaten in fhem nach dem Doppelpunkt generell mit einem SPACE zu trennen?
Ich denke, das kann nur Modul-intern angepasst werden und nicht durch attr ... ?

dev0

Zitat von: majorshark am 04 November 2016, 11:54:50
Edit: Ich habs. Habe einfach auf dem ESP den "Namen" im Device weggelassen. Das habe ich scheinbar überlesen.
Du kannst den 'device name' weglassen, wenn der 'esp name' gesetzt ist. Dann kannst Du aber für diese Sensoren keine Regeln auf dem ESP anlegen. Die bessere Variante wäre identische Namen für alle 'esp devices' zu vergeben, die in einem FHEM Device dargestellt werden sollen.

dev0

Zitat von: homeum am 04 November 2016, 18:43:54
Im state für das Device in fhem werden die aber anders herum angezeigt, also H:  T:
Im Prinzip wäre es mir egal, aber irgendwie scheint das Dewpoint-Modul damit ein Problem zu haben,
Schau Dir bitte in der commandref die optionalen Parameter des dewpoint Modules an und benutze die einzelnen Readings und nicht state.

Zitat von: homeum am 04 November 2016, 18:43:54
Kann man die Reihenfolge der Werte im state verändern, so dass es konform mit der üblichen Darstellung von Devices mit temperature und humidity ist?
Es gibt keine übliche Reihenfolge von Werten im Reading state. Wenn ein anderes Modul genau die, von Dir beschriebene, Darstellung benötigt, dann kannst Du das Attribut setState disablen und Dich selbst mit einem userReading oder notify darum kümmern, dass es so gesetzt wird, wie Du es möchtest. Im Fall von dewpoint ist das aber unnötig.

Zitat von: homeum am 04 November 2016, 18:43:54
In allen Devices von ESPEasy wird der state auch im Filelog kein SPACE zwischen den Werte-Bezeichnungen und den eigentlichen Werten ausgegeben.
Das fehlende space werde ich in die nächste Version einbauen. Bedenke aber, dass state nicht nur Sensorwerte darstellt, sondern auch andere Status darstellt wie absent, present, opened. Wenn das nicht erwünscht ist, dann ein userReading benutzen.

majorshark

#341
Zitat von: dev0 am 05 November 2016, 07:38:01
... Dann kannst Du aber für diese Sensoren keine Regeln auf dem ESP anlegen...

Stimmt daran habe ich nun auch wieder nicht gedacht. Also noch einmal umkonfigurieren.

Edit: Die Rules scheinen mit den gleichen deviceNamen nicht mehr zu Funktionieren. Kann das jemand bestätigen?
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

dev0

Das schrieb schon mal jemand im Sonoff Thread. Ich kann das aber nicht bestätigen, denn bei mir funktioniert das bisher problemlos.

Billy

Hallo, hab bei mir ein SONOFF mit ESPEasy gemäß WIKI aufgesetzt.
Läuft im Prinzip bis auf die Tatsache dass ich im FHEM immer wieder die Meldung

WARNING_192.168.148.13
192.168.148.13: No route to host


bekomme.
Damit kann ich dann auch nicht mehr schalten.
Im Log sieht das so aus.
2016.11.06 09:30:55 2: ESPEasy ESPEasy_Sonoff_1_PUMP: WARNING: 192.168.148.13: No route to host
2016.11.06 10:00:54 2: ESPEasy ESPEasy_Sonoff_1_PUMP: RESOLVED: 192.168.148.13: No route to host
2016.11.06 10:03:07 2: ESPEasy ESPEasy_Sonoff_1_PUMP: WARNING: 192.168.148.13: No route to host
2016.11.06 10:08:26 2: ESPEasy ESPEasy_Sonoff_1_PUMP: RESOLVED: 192.168.148.13: No route to host
2016.11.06 10:09:42 2: ESPEasy ESPEasy_Sonoff_1_PUMP: WARNING: 192.168.148.13: No route to host


Was könnte das sein? Wie kann ich das Problem eingrenzen?
Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Pyromane

Zitat von: Billy am 06 November 2016, 10:22:45WARNING_192.168.148.13
192.168.148.13: No route to host

Was könnte das sein? Wie kann ich das Problem eingrenzen?

Kannst du das ESP dann pingen?
Kommst du auf die ESP Webseite?