Neues Module: 72_VZugHome.pm

Begonnen von ivor, 16 August 2020, 21:11:44

Vorheriges Thema - Nächstes Thema

ivor


Hallo zusammen

Ich habe mich mal an ein FHEM Module für die Haushaltsgeräte mit V-Zug Home Option (https://home.vzug.com) heran gewagt. Ein erster Wurf ist hier zu finden:

https://github.com/ivoruetsche/FHEM.72_VZugHome

Mit Perl und FHEM habe ich Neuland entdeckt und bin deshalb sehr froh um Kritik und Input zum Modul.

Zur Zeit sind Readings implementiert, bin aber dran, noch weitere Funktionen umzusetzen.

gruss ivo

Prof. Dr. Peter Henning

Die Mehrzahl vom "Status" lautet nicht "Stati", sondern "Status".

LG

pah

ivor


Danke, ich hab's geändert, "Stati" kommt vom Schweizerdeutsch :-)

iHome

Genau das Modul das ich noch gesucht habe.Vielen Dank!
Einbindung unserer Adora SL (Geschirrspüler) hat gut geklappt!
Jetzt fehlen mir nur noch die Pushmeldungen 'Wenn Fertig' oder 'Glanzmittel nachfüllen', die werd ich am Wochenende noch einbauen und mit Alexa verknüpfen...

iHome

#4
Hallo zusammen

ich hab folgendes Problem mit diesem Module bzw. der Deviceübersicht (DeviceOverview).
Mein Device (Geschirrspüler) zeigt dort nur 'active'

Möchte ich in der Deviceübersicht einen farbigen (rot/grün) zeigenden Geschirrspüler haben und den Status z.B. 'Salz nachfüllen' anzeigen.

Ich habe versucht ein stateFormat zu machen mit zwei Readings:
VzAiDeviceStatus.Inactive   (true/false)
VzAiDeviceStatus.Status     (z.b. 'Salz nachfüllen')

Ich habe dafür folgende Attributte gesetzt:
devStateIcon     ein:scene_dishwasher@green aus:scene_dishwasher@red
eventMap          true:aus false:ein
stateFormat       VzAiDeviceStatus.Inactive VzAiDeviceStatus.Status

Vieleicht kann mir jemand sagen wo ich mein Denkfehler mache.


ivor

Salü

hast Du mal versucht, nur jeweils ein Reading auszuwerten?

attr VzWaschmaschine stateFormat VzAiDeviceStatus.Inactive
attr VzWaschmaschine devStateIcon true:on false:off
attr VzWaschmaschine icon scene_dishwasher


Ich konnte das gerde nicht ausprobieren, da ich noch unterwegs bin... Bin also nicht sicher ob soweit alles stimmt...

gruss ivo

iHome

Hallo Ivo

Ja, ich habs auch nur mit einem Reading versucht.
Auch hab ich Deine Attributangaben versucht, welches jedoch das Icon auf der linken Seite zeigen. Aber auch da bleibt der Status 'active'.

Folgendes Verhalten ist mir aufgefallen und lässt sich reproduzieren:

Wenn ich das Attribut StateFormat mit einem Reading "VzAiDeviceStatus.Inactive" setze (ich drück auf 'attr') wird kurzzeitig das Icon farblich angezeigt.

Sobald ich die Seite aber aktuallisiere, wird wieder der Status 'active' angezeigt und das Icon ist weg.
Dieses Verhalten ist nur bei diesem Device (über das 72_VZugHome.pm Modul) so feststellbar. (Habe leider nur ein VZug-Device)


ivor

Salü

Ich kann es zwar nachvollziehen, jedoch finde ich die Ursache zur Zeit nicht. Ich muss mir da etwas mehr Zeit nehmen.

gruss ivo

iHome

#8
Hallo Ivo

Ich habe im Fhemlog festgestellt, folgenden dauerhaften Fehler festgestellt:
2020.12.17 08:06:22 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:09:23 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:10:23 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:12:29 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:15:27 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:19:30 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:20:30 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:23:32 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:24:32 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:28:36 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:31:35 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:38:42 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY
2020.12.17 08:43:45 1: VZugHome_CallingDeviceResult vzug_adora: hash result expected, but it is ARRAY


habe dann mit verbose 5 folgende Einträge erhalten:

2020.12.17 08:47:01 5: VZugHome_GetReadingUpdates vzug_adora: is called [readings]
2020.12.17 08:47:01 4: VZugHome_GetReadingUpdates vzug_adora: Device is up 192.168.90.140 [ping]
2020.12.17 08:47:01 5: VZugHome_GetReadingUpdates vzug_adora: sub readings
2020.12.17 08:47:01 5: VZugHome_GetReadingUpdates vzug_adora: Start While
2020.12.17 08:47:01 3: VZugHome_GetReadingUpdates vzug_adora: calling VZugHome_CallingDevice // hh getTime </> HASH(0x55b178a90a00) ...
2020.12.17 08:47:01 3: VZugHome_GetReadingUpdates vzug_adora: calling VZugHome_CallingDevice // ai getDeviceStatus </> HASH(0x55b17c01dbe8) ...
2020.12.17 08:47:01 3: VZugHome_GetReadingUpdates vzug_adora: calling VZugHome_CallingDevice // hh getCategories </> HASH(0x55b17b7edfc8) ...
2020.12.17 08:47:01 5: VZugHome_GetReadingUpdates vzug_adora: End While
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora:: : give me back: data: ["Category_0"] / error:
2020.12.17 08:47:01 5: VZugHome_CallingDeviceResult vzug_adora: result should be text / function is IntCmd
2020.12.17 08:47:01 5: VZugHome_CallingDeviceResult vzug_adora: result is text
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: IntCmd:  /
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora:: : give me back: data: {"DeviceName":"Adora SL","Serial":"41129 000008","Inactive":"true","Program":"","Status":"","ProgramEnd":{"End":"","EndType":"0"},"deviceUuid":"0000197832"} / error:
2020.12.17 08:47:01 5: VZugHome_CallingDeviceResult vzug_adora: result should be json / function is Readings
2020.12.17 08:47:01 5: VZugHome_CallingDeviceResult vzug_adora: readingsBeginUpdate called
2020.12.17 08:47:01 5: VZugHome_CallingDeviceResult vzug_adora: result is json
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.DeviceName / Adora SL
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.DeviceName / Adora SL
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.ProgramEnd.EndType / 0
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.ProgramEnd.EndType / 0
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.Serial / 41129 000008
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.Serial / 41129 000008
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.Inactive / true
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.Inactive / true
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.Status / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.Status / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.ProgramEnd.End / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.ProgramEnd.End / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.Program / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.Program / -
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Readings: VzAiDeviceStatus.deviceUuid / 0000197832
2020.12.17 08:47:01 4: VZugHome_CallingDeviceResult vzug_adora: Result: VzAiDeviceStatus.deviceUuid / 0000197832
2020.12.17 08:47:02 4: VZugHome_CallingDeviceResult vzug_adora:: : give me back: data: 2020-12-17T08:47:04 / error:
2020.12.17 08:47:02 5: VZugHome_CallingDeviceResult vzug_adora: result should be text / function is Readings
2020.12.17 08:47:02 5: VZugHome_CallingDeviceResult vzug_adora: readingsBeginUpdate called
2020.12.17 08:47:02 5: VZugHome_CallingDeviceResult vzug_adora: result is text
2020.12.17 08:47:02 4: VZugHome_CallingDeviceResult vzug_adora: Readings:  /


Kannst Du mit dem etwas anfangen?

Nachtrag: Aufgrund der Logeinträge gehe ich davon aus, dass der Fehler beim Abfragen der 'Categorien' erfolgt.
Folgendes Abfrageergebnisse, wenn ich die Browserabfrage auf den Geschirrspüler mache (siehe Anhänge).

Ich schliesse daraus, dass der Code nicht damit umgehen kann, das bei Categories nur ein Wert drin ist.
Habe den Code des Modules 72_VZugHome.pm versucht anzuschauen und vermute das Problem zwischen Zeile 44 und 99. Ich selber verstehe aber den Code zuwenig und stehe hier an..


vielen Dank fürs prüfen


Freundliche Grüsse

ivor

Salü

Im ersten Auszug vom Log hat's ja regelmässig "hash result expected, but it is ARRAY" Einträge, jedoch im zweiten Auszug nicht. Kannst Du mal mitschneiden, wenn ein solcher Fehler aufkommt?

Grundsätzlich sieht aber der untere Auszug soweit Fehlerfrei aus (sonst hätte es eine Fehlermeldung nach dem "error:".

Was für mich noch unklar ist, warum man den Status von diversen Rückgabewerten sehen kann im FHEM Gui, auf diese jedoch nicht zugreiffen kann um z.B. ein Icon einzufärben etc. Irgendwas mach ich da noch falsch bei der Verarbeitung. Wie Du auch festgestellt hast, konnte ich Deine Beobachtung nachvollziehen und beim ersten mal funktioniert's, danach nicht mehr.

Ich hoffe, dass ich in den kommenden Tagen mir nochmals Zeit nehmen kann um's anzuschauen.

gruss ivoi

iHome

Hallo Ivo

Habe Dir hier mal einen Auszug des Logs mit Verbose 5 im Zeitraum von 15 Minuten aufgezeichnet darin ist auch der erste Eintrag vorhanden (wiederholt sich natürlich immer wieder). Hoffe das hilft bei der Analyse.

Betreffend dem Icon Problem habe ich mich gefragt, ob dies evtl. mit den Punkten in den ReadingNamen zu tun hat? Habe irgendwo in diesem Forum mal gelesen, dass Punkte in den Devicenamen zu Problemen führen könnte, da Punkte auch für Regex verwendet wird. Dies nur mal ein Gedanke eines Nichtprogramierers ;-). Habe versucht die Unterschiede zu sehen von funktionierenden Devices (allerdings handelt es sich da um Homematic-Leistungsmesser, welche ich an die Waschmaschine und Tumbler angeschlossen habe, da diese Geräte noch kein Vzug-Home haben).

Danke fürs Prüfen und einen schönen vierten Advent!

gruss

ivor

#11
Merci für's Log. Ich sehe nun die Ursache für den "hash result expected, but it is ARRAY", betrifft jedoch nur die zur Verfügung stehenden Sprachen, welche vom FHEM Module eh ignoriert werden:

give me back: data: [{"lan":"de","desc":"Deutsch"},{"lan":"fr","desc":"Français"},{"lan":"it","desc":"Italiano"},{"lan":"rm","desc":"Rumantsch"},{"lan":"en","desc":"English"},{"lan":"es","desc":"Español"}]

Ich passe das bei Gelegenheit noch an, ist aber leider nicht die Ursache für das "Readings" problem...

gruss ivo

iHome

Trotzdem lieben Dank! Auch das Entfernen des störenden Logeintrages ist doch schon ein Erfolg ;-)

ivor

Zitat von: iHome am 20 Dezember 2020, 12:19:33
Betreffend dem Icon Problem habe ich mich gefragt, ob dies evtl. mit den Punkten in den ReadingNamen zu tun hat? Habe irgendwo in diesem Forum mal gelesen, dass Punkte in den Devicenamen zu Problemen führen könnte, da Punkte auch für Regex verwendet wird.

Das war auch mein erster Gedanke, aber wenn ich den Punkt entferne aus den Feldnamen, kann ich das Problem immer noch nachvollziehen.

Ich bin das am zusammenfassen und frag mal im Entwickler-Forum nach, ob da jemand eine Idee haben könnte.

Liebe Grüsse
Ivo

ivor

#14
Salü iHome

Könntest Du mal im Module folgende Änderung machen und nochmals testen, ob sich das Problem bei Dir ebenfalls gelöst hat mit der Anzeige des readings:

FHEM/72_VZugHome.pm / Zeile 122:
  if ($sVzResFunc eq "Readings") { readingsEndUpdate($hash, 0); }

ändern auf
  if ($sVzResFunc eq "Readings") { readingsEndUpdate($hash, 1); }

Danach muss FHEM neu gestartet werden.

gruss ivo