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 :-)
Kann man noch haben:
- ein vollständiges "list" von dummy_KlingelVordertuer
- die Definition in FTUI
?
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
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!
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
Zustimmung.
Ausserdem hatte ich um ein "list" vom dummy gebeten, nicht um ein "list -R", das wir schon ganz am Anfang hatten...
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
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.