State zurücklesen mit Readingsproxy

Begonnen von sidney, 21 September 2023, 22:32:20

Vorheriges Thema - Nächstes Thema

sidney

Ich verwende in der Hauptsache Readingsproxies zur Home Automatisierung da ich über 1 Device (PHC) z.B. alle meine Lampen steuere.
Leider funktioniert das Zurücklesen des States mit FhemNative nicht einwandfrei. Es kommt zuerst keine Rückmeldung. Erst wenn ich die App neustarte oder in den Hintergrund (App Wechsel) und wieder zurück in den Vordergrund bringe, aktualisiert sich der Status der Buttons.
Es ist hier aber auch so, dass sich das Reading mit zirka 0.5 s Verzug als Reaktion auf ein Kommando ändert, durch Trägheit des PHC Devices selbst. Vielleicht hat es etwas hiermit zu tun. Beim Web-Frontend sehe ich auch den Verzug, die Aktualierung erfolgt aber hier sauber, also ohne Neuladen der Seite.
Benutzte ich direkt ein Device in FhemNative ohne Readingsproxy (dort wo es möglich ist), so funktioniert es einwandfrei.
(Samsung Galaxy S21, Version 4.3.1 Android 13)

Syrex-o

Zitat von: sidney am 21 September 2023, 22:32:20Ich verwende in der Hauptsache Readingsproxies zur Home Automatisierung da ich über 1 Device (PHC) z.B. alle meine Lampen steuere.
Leider funktioniert das Zurücklesen des States mit FhemNative nicht einwandfrei. Es kommt zuerst keine Rückmeldung. Erst wenn ich die App neustarte oder in den Hintergrund (App Wechsel) und wieder zurück in den Vordergrund bringe, aktualisiert sich der Status der Buttons.
Es ist hier aber auch so, dass sich das Reading mit zirka 0.5 s Verzug als Reaktion auf ein Kommando ändert, durch Trägheit des PHC Devices selbst. Vielleicht hat es etwas hiermit zu tun. Beim Web-Frontend sehe ich auch den Verzug, die Aktualierung erfolgt aber hier sauber, also ohne Neuladen der Seite.
Benutzte ich direkt ein Device in FhemNative ohne Readingsproxy (dort wo es möglich ist), so funktioniert es einwandfrei.
(Samsung Galaxy S21, Version 4.3.1 Android 13)
Was ist denn ein Readingproxy?
Hast du mal ein paar Beispiele mit Ausschnitten aus FHEM und FhemNative?

VG

sidney

https://fhem.de/commandref.html#readingsProxy
kurz:dient dazu aus mehreren Geräten ein Gerät zu machen, z.B. Thermostat + Relais -> Heizung
oder aus einem komplexen Gerät (in meinem Fall die PHC Hausautomation zur Steuerung aller Lampen), mehrere einfache Geräte (1 Lampe)
defmod rp_PHC_LIVING_1_PL_KAMEIN readingsProxy PHC:DIM01o01
attr rp_PHC_LIVING_1_PL_KAMEIN devStateIcon FB_Aus:lightbulb@grey:toggle FB_Ein:lightbulb@#ffff7f:toggle .*:lightbulb@black:toggle
attr rp_PHC_LIVING_1_PL_KAMEIN fp_Erdgeschoss 330,330,0,rp_PHC_LIVING_1_PL_KAMEIN,
attr rp_PHC_LIVING_1_PL_KAMEIN setFn {fhem "setreading rp_PHC_LIVING_1_PL_KAMEIN state toggle";;;; fhem "set PHC Living1PlKamein ein>0"}
attr rp_PHC_LIVING_1_PL_KAMEIN setList toggle

setstate rp_PHC_LIVING_1_PL_KAMEIN FB_Aus
setstate rp_PHC_LIVING_1_PL_KAMEIN 2023-09-21 22:19:25 lastCmd toggle
setstate rp_PHC_LIVING_1_PL_KAMEIN 2023-09-22 23:05:54 state FB_Aus

Im gezeigten Beispiel wird das Reading DIM01o01 aus dem Gerät PHC in ein State-Reading mit den Werten (FB_Aus, FB_Ein, Toggle) umgewandelt in dem neuen virtuellen Gerät.
Das
Toggle Kommando wird mit
StetFn in ein Kommando
set PHC Living1PlKamein ein>0 umgewandelt und an das Gerät PHC geschickt.
Das Reading State wechselt also zwischen FB_Ein -> Toggle -> FB_Aus -> Toggle -> FB_Ein. Toggle ist  ein Zwischenstatus, der nur kurz dauert (< 1s) bis das Feedback der Lampe kommt.

In FhemNative habe ich das Gerät als normales Gerät angelegt über einen Button (ein/aus). Wie gesagt, das Kommando funktioniert, nur der zurückgelsene Status wird nicht aktualisiert (erst beim Neuladen des Bildschirms). Im Fhem Webrontend nutze ich das Icon des Geräts in einem Floorplan. Dort funktioniert es einwandfrei. Andere Geräte (keine Readingsproxis) funktionieren auch in FhemNative.

Anbei die Screenshots aus FhemNative. (Sorry für die Screenshots, beim Export der Konfiguration gab es einen Fehler und das exportierte Log-File konnte ich nicht finden)

FhemNative gefällt mir sehr gut. Wäre toll wenn dies funktionieren würde.

Gruss,
Sidney

sidney


Syrex-o

Ok, verstenden.

Die Events wurden tatsächlich nicht erfasst bei Updates. Habe ich jetzt eingebaut. Kommt mit der nächsten Version.
Aber kurze Frage: Warum nimmst du in FhemNative nicht einfach die tatsächlichen Devices / Readings ?

VG

sidney

Hallo,

Danke für die Ermittlung. Ich freue mich bereits auf die nächste Version  :)

Deine Frage ist sicherlich berechtigt.

Wie bereits erwähnt, steuere ich 28 Lampen und Steckdosen über ein einziges PHC Device dadurch, dass die Kommandos jeweils anders sind.
Ich habe einen Floorplan in FHEM erstellt, wo jede Lampe über ein Webcmd und devStateIcon separat geschaltet wird. Ich wüsste jetzt nicht direkt, wie ich dies ohne Readingsproxy, als nur mit dem einen Device, hin bekommen könnte. Außerdem steuere ich 3 Devices über EnOcean Geräte, wo das Steuerungs-Device ein anderes ist als das, wo ich das Feedback her bekomme.
Was FhemNative angeht, so könnte es ohne Readingsproxis funktionieren, zumindest für die 28 Lampen, da ich hier für jede Lampe ein anderes Reading und Kommando angeben kann. Für die 3 übrigen Devices kann ich auch in FhemNative nur 1 gemeinsamen Gerätenamen fürs Setzen und Zurücklesen eingeben. Mit Readingsproxies kann ich dies erreichen. Hier wäre es womöglich nicht ohne diese machbar.

Gruß,

Yves

sidney

Hallo Syrex-o,

Ich habe meine Readingsproxy's jetzt am Laufen. Danke nochmal, auch für das schnelle Versions-Update.

Der Weg dahin war allerdings noch etwas holprig. Ich hatte weiterhin das oben beschriebene Problem bei einigen komplexeren Readingsproxy's, es ist mir aber gelungen, diese zu vereinfachen und anschließend hat es dann funktioniert. Ich hatte bei diesen Readingsproxy's das Attribute valueFn verwendet. Nach der Vereinfachung waren da keine valuFn Attribute mehr, daher nehme ich an, dass dies der Grund war. Wie gesagt ich kann mit der jetzigen Situation sehr gut leben.

Ich habe auch versucht eine Antwort auf deine Frage zu finden, ohne Readingsproxy's auszukommen, habe es allerdings aufgegeben. Ich habe mit userReadings in Fhem experimentiert sowie Regex-Ausdrücken in FhemNative. Unterstützt FhemNative Regex-Ausdrücke für Readings-Werte ? Wie gesagt ich habe es nicht hinbekommen. Was ich erreichen müsste, die Standard-Readings von meinem PHC-Gerät so zu filtern, dass ich die Infos einzelner Lampen im Reading herausfiltern kann.

Beim Übertragen der Konfiguration auf ein anderes Smartphone gab es noch einige Probleme. Am Ende gelang es mir über die "Shared Config", aber auch dies ging nicht ohne Weiteres. Das Thema passt allerdings nicht hierhin. Ich schau mal ob es ein anderes Thread hierzu gibt, und werde dann noch eine detailliertere Beschreibung des Problems abgeben.

Viele Grüße,

sidney