[gelöst] Reading bei unterschieden zwischen STATE und state für FTUI aufbereiten

Begonnen von Moerk, 05 Januar 2021, 12:14:17

Vorheriges Thema - Nächstes Thema

Moerk

Hallo zusammen,

ich weis das dieses (oder ähnliche) Themen hier schon oft behandelt wurden, aber ich stecke fest und erkenne mein Problem nicht. 

Ich habe ein Dummy-Device, in dem per Notify zwei Readings gesetzt werden. Diese setze ich mit State-Format zu einem STATE zusammen, und diesen möchte ich mit Tablett UI dann in verschiedene Symbole umsetzen.

Das Device hat außerdem noch ein WebCMD, mit dem eigentlich nur ein Event ausgelöst werden soll welches von einem weiteren Notify abgegriffen wird, damit wird dann ein SET-Befehl an einen HomematicIP Schalter gesendet.

Das FTUI als solches funktioniert, andere Widgets die z.B. nur einen on/off Status an ein MQTT Device übermittelten laufen wie erwartet.

Leider komme ich jetzt mit FTUI nicht an meinen STATE. Es gibt auch ein Reading state welches durch das WebCMD erzeugt und gesetzt wird, dieses steht immer auf ,,press" (das ist das WebCMD), und samt wird das Symbol im FTUI nicht korrekt umgeschaltet.

Ich vermute mal das ich mit dem Widget nur an das Reading state komme, nicht aber an das internal STATE.
Hat jemand eine Idee wie ich mein Ziel erreichen kann?

Hier das Device:
defmod dummy_KlingelVordertuer dummy
attr dummy_KlingelVordertuer event-on-change-reading .*
attr dummy_KlingelVordertuer event-on-update-reading .*
attr dummy_KlingelVordertuer room Dummy,Vordertuer
attr dummy_KlingelVordertuer setList press
attr dummy_KlingelVordertuer stateFormat Laut: isLoud  |  Status: DoorbellState
attr dummy_KlingelVordertuer webCmd press


isLoud und DoorbellState sind die Readings die mit zwei Notifys gesetzt werden:

defmod notKlingelStummschaltungAktualisierung_ReadingKlingelDummy notify d_ccu:varSys.Global.KlingelLaut:.* setreading dummy_KlingelVordertuer isLoud $EVTPART1

defmod notKlingelRingEvent notify Klingel:(ring|idle) setreading dummy_KlingelVordertuer DoorbellState $EVENT

Und mit diesem Notify greife ich das 'press' aus dem Dummy ab:
dummy_KlingelVordertuer:press set HM_HmIP.virtuell.Marvin.varSys.Global.KlingelLaut datapoint PRESS_SHORT 1

Wie immer freue ich mich über Unterstützung :-)

FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI

amenomade

Kann man noch haben:
- ein vollständiges "list" von dummy_KlingelVordertuer
- die Definition in FTUI
?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Ja lists würden helfen...

Aber das ist schon mal Quatsch:

Zitat
attr dummy_KlingelVordertuer event-on-change-reading .*
attr dummy_KlingelVordertuer event-on-update-reading .*

Erst alle Readings nur bei Änderung und dann doch wieder alle egal ob Änderung oder nicht... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Moerk

Aber das ist schon mal Quatsch:

Ja das, äähhhh, das war verzweifeltes rumprobieren  ::)

Hier ein list-R von dem Dummy:
define dummy_KlingelVordertuer dummy
attr dummy_KlingelVordertuer event-on-change-reading .*
attr dummy_KlingelVordertuer event-on-update-reading .*
attr dummy_KlingelVordertuer room Dummy,Vordertuer
attr dummy_KlingelVordertuer setList press
attr dummy_KlingelVordertuer stateFormat Laut: isLoud  |  Status: DoorbellState
attr dummy_KlingelVordertuer webCmd press

define notKlingelPushMuteToggleButton notify dummy_KlingelVordertuer:press set HM_HmIP.virtuell.Marvin.varSys.Global.KlingelLaut datapoint PRESS_SHORT 1
attr notKlingelPushMuteToggleButton room Vordertuer,notify

define notKlingelRingEvent notify Klingel:(ring|idle) setreading dummy_KlingelVordertuer DoorbellState $EVENT
attr notKlingelRingEvent room Vordertuer,notify

define notKlingelStummschaltungAktualisierung_ReadingKlingelDummy notify d_ccu:varSys.Global.KlingelLaut:.* setreading dummy_KlingelVordertuer isLoud $EVTPART1
attr notKlingelStummschaltungAktualisierung_ReadingKlingelDummy room Vordertuer,notify

setstate dummy_KlingelVordertuer Laut: true  |  Status: idle
setstate dummy_KlingelVordertuer 2021-01-05 15:49:43 DoorbellState idle
setstate dummy_KlingelVordertuer 2021-01-05 11:08:40 isLoud true
setstate dummy_KlingelVordertuer 2021-01-05 11:08:40 state press

setstate notKlingelPushMuteToggleButton 2021-01-05 11:08:40
setstate notKlingelPushMuteToggleButton 2021-01-05 08:58:34 state active

setstate notKlingelRingEvent 2021-01-05 15:49:43
setstate notKlingelRingEvent 2021-01-05 08:12:06 state active

setstate notKlingelStummschaltungAktualisierung_ReadingKlingelDummy 2021-01-05 11:08:40
setstate notKlingelStummschaltungAktualisierung_ReadingKlingelDummy 2021-01-04 21:49:15 state active


Und hier aus FTUI
<div class=""
data-type="symbol"
data-device="dummy_KlingelVordertuer"
data-get = "STATE"
data-states='["Laut: false | Status: idle","Laut: false | Status: ring","Laut: true | Status: idle","Laut: true | Status: ring"]'
data-icons='["fa-bell-slash-o","fa-bell-slash","fa-bell-o","fa-bell"]'>
</div>


Auch wenn man es vielleicht nicht merkt ( ;D ), ich habe nur eine ungefähre Vorstellung von dem was ich da mache.
Hauptsächlich möchte ich erreichen, dass ich ein Symbol habe das mir sowohl den zustand Klingel Laut/Leise als auch den Zustand Klingelt/Klingelt nicht anzeigt.

Ich habe keine Möglichkeit gefunden das anders zu machen als über den Dummy, da die beiden Infos aus unterschiedlichen Devices kommen. Aber wenn mein hier eingeschlagener weg völlig daneben ist und es bessere gibt - ich freue mich tatsächlich immer dazu zu lernen!
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI

Thorsten Pferdekaemper

Hi,
ich würde das mit einem userReading versuchen, welches einen von state/STATE klar abgegrenzten Namen hat. Außerdem würde ich den Inhalt etwas einfacher gestalten, also ohne "Sonderzeichen" wie "|".
Gruß,
   Thorsten
FUIP

amenomade

Zustimmung.

Ausserdem hatte ich um ein "list" vom dummy gebeten, nicht um ein "list -R", das wir schon ganz am Anfang hatten...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Moerk

Guten Morgen,

ZitatAusserdem hatte ich um ein "list" vom dummy gebeten, nicht um ein "list -R", das wir schon ganz am Anfang hatten..

Stimmt, sorry! Zu meiner Verteidigung: ich habe im Wiki gelesen das bei der Option -R auch [...] mit ausgegeben werden, habe es daher einfach für die umfangreichere Ausgabe gehalten.

Zitatich würde das mit einem userReading versuchen, welches einen von state/STATE klar abgegrenzten Namen hat. Außerdem würde ich den Inhalt etwas einfacher gestalten, also ohne "Sonderzeichen" wie "|".
Das war der Lösungsweg mit dem das Verhalten jetzt wie gewünscht ist.
Ich habe ein Userreading erstellt und lade die insgesamt vier Werte dort rein. Die if-verschachtelung sind noch etwas gruselig, eleganter wäre es eigentlich die Angaben "Muted/Loud" und  "Ring/Idle" einfach getrennt zu ermitteln und zusammen zu führen, aber so geht es erstmal:

attr dummy_KlingelVordertuer userReadings Statenum {if(ReadingsVal("dummy_KlingelVordertuer","isLoud","") eq "false") { {if(ReadingsVal("dummy_KlingelVordertuer","DoorbellState","") eq "idle") {return "MutedIdle"} else { return "MutedRing"}}} else { {if(ReadingsVal("dummy_KlingelVordertuer","DoorbellState","") eq "idle") {return "LoudIdle"} else { return "LoudRing"}}}}

Ganz vielen Dank für eure Unterstützung! Es ist echt toll wie einem in diesem Forum wirklich geholfen wird, auch wenn man mal mit 'dummen' Fragen oder auch falschen Antworten kommt. Es gibt da auch ganz andere Forum...

Viele Grüße, Moerk
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI

Moerk

p.S: Ich habe das Thema als gelöst markiert und auch den betreff geändert, da er der Sache nun näher kommt. Vielleicht hilft es dann auch noch mal jemand anderem.
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI