Aktualisierte ESPEasy Modul Version 2.0 (RC5)

Begonnen von dev0, 10 Juni 2018, 11:34:01

Vorheriges Thema - Nächstes Thema

dev0

Modulintern wurde einiges an Code umgeschrieben, um neue Befehle/Plugins einfacher integrieren zu können. Daher wäre es gut, wenn der eine oder andere die angehängte Modulversion testen würde, bevor ich das Modul ins FHEM svn einchecke. Neben den internen Umbauten gibt es folgende Änderungen:

Erweiterungen:

  • Native Unterstützung weiterer ESP Easy Systembefehle: deepSleep, taskvalueset, taskvaluesetandrun, taskrun, timerset, rules, sendto, sendtohttp, sendtoudp, publish, notify, resetflashwritecounter.

  • Als Ergänzung zum 'raw' set Befehl gibt es nun zusätzlich den 'rawsystem' Befehl, der ggf. nicht unterstützte ESP Easy Befehle aus command.ino berücksichtigt. Siehe: https://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference .

  • Mit Hilfe des Attributs 'userSetCmds' können eigene oder nicht unterstützte Plugins nachgerüstet werden. Ebenfalls können damit Befehle, interner und eigener Plugin, gemappt werden (z.B. 'set <dev> on' statt 'set <dev> <plugin> on'), um FHEMWEB Widgets und die FHEM Set Extensions nutzen zu können.

  • Der get Befehl 'setcmds' zeigt die verfügbaren set Befehle incl. verwendeter Parameter an. Hilfreich bei selbst definierten oder gemappten Befehlen.

  • Die Set Extensions können mit dem Attribut 'useSetExtensions' aktiviert werden.

  • Die "riskanten" ESP Easy Befehle 'erase', 'reset' und 'resetflashwritecounter' können mit dem Attribut 'disableRiskyCmds' deaktiviert werden.

  • Inverse Logik für on/off, wenn der Wert von einem ESP Easy Switch stammt. Forum #89533: attr <dev> readingSwitchText 2

  • Von der ESP Easy Firmware nicht akzeptierte Befehle werden im logischen Device protokolliert.

  • Der neue Befehl 'adminpassword' steht im logischen Device zur Verfügung, um ggf. das Admin Passwort an den ESP zu senden, um die sendende IP Adresse "freizuschalten". Leider unterstützt ESP Easy kein basic auth, afaik.
Änderungen:

  • Das Attribut 'resendFailedCmd' bestimmt jetzt die Anzahl der Versuche den ESP zu erreichen. Vorher wurde unendlich lange versucht eine Verbindung aufzubauen wenn das Attribut auf 1 (aktiviert) gesetzt war.

  • Es werden nur noch Attribute angezeigt, die auch zur Verfügung stehen bzw. freigeschaltet sind: Bridge/Device und ggf. erst durch setzen anderer Attribute nötig werden (mapLightCmds, etc...).

  • Readings können nicht mehr via 'get <dev> <reading>' abgerufen werden. Zu diesem Zweck gibt es ReadingsVal().

  • Anwender, die das nfx Plugin von djcysmic nutzen, müssen den Wert des Attributs mapLightCmds ändern: statt "attr <dev> mapLightCmds Lights" muss "attr <dev> mapLightCmds nfx" gesetzt werden. Sonst können keine FHEMWEB Widgets genutzt werden.
Korrekturen:

  • Bei den Befehlen raw/rawsystem funktionierte das HTTP resend nicht.

  • Argumente des ESP Easy 'gpio' Befehls werden nur noch bei Bedarf gemapped (on=>1, off=>0) und nicht mehr abgewiesen, wenn sie unbekannt sind.

  • Perl Warning: "Unescaped left brace in regex is deprecated" behoben (Perl >= 5.26)
Sonstiges:

  • Es wird nicht mehr auf eine alte Modulversion geprüft, die via Update aus dem Github Repository installiert wurde.

  • Die Attribute pollGPIOs, readingPrefixGPIO und readingSuffixGPIOState wurden in der command reference als veraltet (deprecated) markiert. Ggf. werden diese Funktionen, in einer der nächsten Version, entfallen, falls sich kein begründeter Widerstand regt.

  • Modulinterne Strukturänderungen um das Modul einfacher, z.B. um weitere Befehle, erweitern zu können.
FHEM muss nach der Aktualisierung neu gestartet werden, ein reload des Moduls reicht nicht aus.

Nicht implementiert habe ich die folgenden ESPEasy Befehle, da ich den Sinn nicht erkenne, diese in FHEM nutzen zu können. Ich lasse mich im Einzelfall aber überzeugen:
Zitat
accessinfo, build, blynkget, background, config, nosleep, timerpause, timerresume, delay, clearrtcram, save, load, timezone, udptest, udpport, unit, password, usentp, dns, dst, gateway, ip, name, ntphost, settings, subnet, wdconfig, wdread, wifiapmode, wificonnect, wifidisconnect, wifikey2, wifikey, wifissid2, wifissid, wifiscan, clearaccessblock, sdcard, sdremove, debug, executerules, i2cscanner, taskclear, taskclearall, logentry, lowmem, malloc, meminfo, mqttretainflag, messagedelay, sysload, serialfloat

Sollten noch weitere Plugins unterstützt werden, die schon ins ESP Easy (Mega) Repository aufgenommen wurden und nicht nur im Playground "vor sich hin dümplen"?

Wie immer: die "Device specific help" ist direkt nach dem Modulupdate und reload/restart aktiv. Die command reference muß einmalig mit dem Befehl "perl ./contrib/commandref_join.pl", im FHEM Hauptverzeichnis, aktualisiert werden.

Edit:
2018-07-22: Modulversion auf 2.00_RC3 aktualisiert
2018-08-16: Modulversion auf 2.00_RC4 aktualisiert
2018-09-07: Modulversion auf 2.00_RC5 aktualisiert, Details der Aktualisierungen angepasst.
2018-09-23: Modul aus dem Anhang entfernt. Version 2.0 ist ins FHEM svn Repository eingecheckt worden.

dev0

Die Modulversion im ersten Beitrag habe ich aktualisiert (v2.0_RC3):


  • changed: Das Attribut resendFailedCmd bestimmt jetzt die Anzahl der Versuche den ESP zu erreichen. Vorher wurde unendlich lange versucht eine Verbindung aufzubauen wenn das Attribut auf 1 (aktiviert) gesetzt war.

  • changed: Readings können nicht mehr via 'get <dev> <reading>' abgerufen werden. Zu diesem Zweck gibt es ReadingsVal().

  • changed: Weitere interne Strukturänderungen zur besseren Wartbarkeit des Moduls.

  • bugfix:  Bei den Befehlen raw/rawsystem funktionierte das HTTP resend nicht.

  • bugfix: Argumente des GPIO Befehls werden nur noch bei Bedarf gemapped (on=>1, off=>0) und nicht abgewiesen, wenn sie unbekannt sind

Ich möchte nochmals darum bitten, dass die Version von dem einem oder anderen Anwender getestet wird, bevor ich sie einchecke. Rückmeldungen bitte in diesem Thread. Danke.

Schobi

Hallo

Ich hab die Version 2.0 (RC3) seit einer Woche am laufen ohne Probleme .....Danke

dev0

@Schobi: Vielen Dank für Deine Rückmeldung. Nett dass zumindest ein Anwender, von geschätzten 2000+, eine Rückmeldung gibt.
@All: Da sich sonst niemand gemeldet hat, gehe ich davon aus, dass alles perfekt funktioniert.

Ich habe die Version im ersten Beitrag nochmals aktualisiert (RC4). Mit dieser Version habe ich alle Erweiterungen umgesetzt, die sich angesammelt hatten. Bis diese Version ins FHEM SVN Repository eingecheckt ist werde ich keine neuen Features mehr einbauen oder etwas anderes umbauen. Wenn keine weiteren Rückmeldungen kommen, dann gehe ich davon aus, dass alles weiterhin funktioniert...

v2.0_RC4:


  • add: get-command 'setcmds': zeigt die verfügbaren set-commands incl. verwendeter Parameter an. Hilfreich bei selbst definierten commands (attr userSetCmds).

  • add: Inverse Logik für on/off, wenn der Wert von einem ESP Easy 'Switch' stammt. Forum #89533, attr readingSwitchText = 2

  • add: setExtensions: Muss mit dem Attribut useSetExtensions aktiviert werden und es müssen die set-commands on/off definiert sein

  • add: setDevAttrList: Es werden nur noch Attribute angezeigt, die auch zur Verfügung stehen bzw. freigeschaltet sind: Bridge/Device und ggf. erst durch setzen anderer Attribute nötig werden (mapLightCmds/colorpicker, etc...)

  • changed: Die Attribute pollGPIOs, readingPrefixGPIO und readingSuffixGPIOState wurden in der command reference als veraltet (deprecated) markiert. Ggf. werde ich diese Funktionen in einer der nächsten Version entfernen, falls sich kein Widerstand regt.

  • changed: Statt der neu eingeführten Attribute userSetCmds und userSetMaps gibt es nur noch das Attribut userSetCmds mit geänderter Syntax. Siehe command ref.

  • fixed: Perl Warning: Use of unescaped "{" ..., falls ich das in den vorgehenden Versionen noch nicht erwähnt hatte.

sash.sc

Sorry, die Meldung ist unter gegangen.

Läuft soweit. Bis heute keine Probleme.

Danke für deine Arbeit und Mühe und Zeit und.....

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Frank_Huber

Huch,
Ich hab das ganz übersehen.
Werd morgen im Büro mein Test System darauf updaten.
Da hängen paar wemos dran...

Danke!

Gesendet von meinem Doogee S60 mit Tapatalk


clumsy

Hallo

Ich hab mal die neue version (RC4) installiert. Irgendwas scheint jedoch mit dem Login auf den ESPEasy nodes nicht (mehr) zu funktionieren. Die Kommandos werden in der RC4 Version nicht (mehr) ausgeführt. Erst wenn ich mich manuell auf der Node anmelde (von der gleichen IP wie der FHEM Server ist), funktionieren die Kommandos. Nach dem instalieren der alten Version (und reset der Node, damit man sich wieder anmelden muss), klappts wieder.

Ein Log mit Kommentaren unten.

Müsste ich bei der neuen Version den Login neu definieren? Evtl. hat das auch mit der geänderten URL von "/control?cmd=" auf "/?cmd=" zu tun, dass man sich bei "?cmd" vorher bei der Node anmelden muss?

Grüsse aus der sonnigen Schweiz

STefan


dev0

ZitatIrgendwas scheint jedoch mit dem Login auf den ESPEasy nodes nicht (mehr) zu funktionieren.
Weder die offizielle ESPEasy Modul Version noch die RC4 Version kennen einen Mechanismus zum Login an einem ESP Easy Node. Was verwendet die ESP Easy Firmware, basic auth, digest access authentication oder eine Loginmaske?

ZitatEvtl. hat das auch mit der geänderten URL von "/control?cmd=" auf "/?cmd=" zu tun
Ob die geänderte oder die ursprüngliche URL korrekt ist kannst Du doch schnell selbst im Browser ausprobieren.

Zitatdass man sich bei "?cmd" vorher bei der Node anmelden muss?
Auch hier wäre es nett, wenn Du das austesten würdest, ich benutze keinen Login auf meinen ESPs und komme im Moment auch nicht zum Testen.

clumsy

Zitat von: dev0 am 22 August 2018, 18:05:44
Weder die offizielle ESPEasy Modul Version noch die RC4 Version kennen einen Mechanismus zum Login an einem ESP Easy Node. Was verwendet die ESP Easy Firmware, basic auth, digest access authentication oder eine
Loginmaske?
Loginmaske
/login

Zitat von: dev0 am 22 August 2018, 18:05:44
Ob die geänderte oder die ursprüngliche URL korrekt ist kannst Du doch schnell selbst im Browser ausprobieren.
hab ich ja?! s.u.

Zitat von: dev0 am 22 August 2018, 18:05:44
Auch hier wäre es nett, wenn Du das austesten würdest, ich benutze keinen Login auf meinen ESPs und komme im Moment auch nicht zum Testen.
Hab ich ja, deshalb hatte ich ja geschrieben dass es damit zu tun haben könnte dass man sich bei /?cmd erst anmelden muss...

hmm... irgendwie reden wir nicht so ganz die gleiche sprache, oder du magst einfach nicht, wenn jemand deine software analysiert, testet oder vorschläge hat, keine ahnung... wie shcon geschrieben, ich bin schon seit über 10 jahren mit dabei fhem immer mal wieder etwas zu erweitern in den verschiedensten modulen und fragemnten, aber so schlecht wie mit dir hab ich mich noch mit keinem entwickler verstanden... ich meine ich versuche mir wirklich mühe zu geben, zu erklären was ich gefunden habe oder vorschlagen will...

tut mir echt leid wenn ich dir zu nahe trete, mit meinen tests, vorschlägen und reports, evtl. sollte ich mich auf die releases und meine eigenen anpassungen beschränken.... oder du sagst mir, was dein problem mit mir ist?

dev0

#9
Deine Aussagen waren mir zu schwammig, um daraufhin Code zu entwickeln oder anzupassen. Auch, dass Kommandos in der RC4 nicht funktionieren, obwohl nur die URL von einem Kommando geändert wurde, verwirren mich...

Wenn die ESP Easy Firmware einen ordentlichen HTTP Statuscode 4xx zurück liefert, wenn man nicht angemeldet ist, dann sollte das einfach anzufangen sein. Kennst Du die URL mit den benötigten (GET/POST) Parametern zum login und den zurückgelieferten HTTP Statuscode falls man noch nicht angemeldet ist oder die Anmeldedaten falsch sind?

Edit: Die Frage hat sich erledigt: Status Code 302

clumsy

Zitat von: dev0 am 24 August 2018, 07:44:14
Edit: Die Frage hat sich erledigt: Status Code 302
Yep ;) wollte ich auch grad schreiben, kommt ein redirect auf die /login seite..

weshalb die authentication einmal benötigt wird und einmal nicht, kann ich auch nicht sagen, müsste ich im ESPEasy core code nachschauen... auch ob die "alte" version in zukunft noch unterstützt wird... in den entwickler foren und changelogs hab ich so nichts gefunden...

dev0

Ich habe die Version im ersten Beitrag nochmals aktualisiert (RC5).

- Da der 'event' Befehl mit der urprünglichen URL weiterhin funktioniert, habe ich die Änderung der URL zurückgezogen.
- Wenn das 'Admin Password' auf einem ESP Easy node gestzt ist, dann wird, für die internen Befehle (ala reboot, rules, ...),  eine Autentifizierung benötigt. Das Passwort kann man nun mit dem set Befehl 'adminpassword' im Device hinterlegen. Der passende Befehl 'get adminpassword' existiert ebfalls.

Sollte es keine weiteren Auffälligkeiten geben, dann checke ich die Version so ins svn ein.

Maista

Hallo dev0

Danke für das Modul.

Ich habe die Testversion eingespielt und werde das mit meiner neuen 4fach-Steckdosen-Leiste testen.
Bis jetzt tut alles wie gehabt.

Gruss Gerd

dev0

Danke für die Rückmeldung. Mir geht es beim Testen in erster Linie auch nur darum, dass sich in den bestehen Funktionen keine Bugs eingeschlichen haben, die schlimmstenfalls FHEM zum Absturz bringen könnten. Es gibt mittlerweile bestimmt viele Anwendungsfälle, die ich nicht auf dem Schirm habe...

Wenn keine weiteren Bugs (danke auch an clumsy) auftauchen, dann werde ich diese Version nach meinem Urlaub einchecken.

clumsy

Hallo

musste die letzten tage mein komplette HW und SW updaten (server seitig) und hab erst jetzt wieder einigermassen alles zum laufen bekommen, deshalb konnte ich noch nicht testen oder antowrten... werde das modul aber auch heute och einspielen und mit meinen nodes testen... danke schonmal für den update..

Grüsse aus der sonnigen Schweiz!