[Gelöst]Qubino ZMNHDD1 dimmer devStateIcon

Begonnen von wthiess, 02 Mai 2017, 22:28:13

Vorheriges Thema - Nächstes Thema

wthiess

Hallo Leute!

Möchte meine Dimmer ein veränderbares Icon je nach dim% zuordnen.
devStateIcon .......

Bitte um Hilfe.

Gefunden:
attr ZWave_SWITCH_MULTILEVEL_2 devStateIcon {Color::devStateIcon($name,"dimmer",undef,"state")}


lg
Wolfgang

Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

rudolfkoenig

attr fgd ZWave_SWITCH_MULTILEVEL_2  {$state=~s/[^0-9]//g;;sprintf(".*:light_light_dim_%02d",10*int($state/10))}

oder

attr ZWave_SWITCH_MULTILEVEL_2 devStateIcon {$state=~s/[^0-9]//g;;$state=~m/^$/?".*:off":sprintf(".*:dim%02d%%",6.25*int($state/6.25))}



wthiess

Hallo Rudolf!

Danke für die beiden anderen Möglichkeiten. Aber meine gefällt mir besser.
Weil es hier ein "Ein" und "Aus" gibt.
Aber gut zu wissen das es auch andere Möglichkeiten gibt.
Werde es mir speichern.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

tomspatz

#3
@rudolfkoenig
attr ZWave_SWITCH_MULTILEVEL_2 devStateIcon {$state=~s/[^0-9]//g;;$state=~m/^$/?".*:off":sprintf(".*:dim%02d%%",6.25*int($state/6.25))}

Das Beispiel finde ich schon super und ich glaube es zu verstehen.
Doch funktioniert bei einem FGD212 Fibaro das "off" nicht.
Das Icon wechselt kurz zu off also ausgeschaltete Lampe und der slider geht auf null doch dann sofort wieder zurück auf den "letzten" state.
Auch werden alle Werte unter 6 nur als Zahl angezeigt.

LG
Tom

rudolfkoenig

Kannst du bitte alle relevanten Events hier anhaengen?

tomspatz

hmmmmm
Wie meinst du das denn?
Der Dimmer liefert im state z.B.

2017-05-10 21:03:20 ZWave DimmerSchlafzimmer dim 37
2017-05-10 21:03:20 ZWave DimmerSchlafzimmer reportedState: dim 37


oder auch

2017-05-10 21:04:06 ZWave DimmerSchlafzimmer dim 5
2017-05-10 21:04:06 ZWave DimmerSchlafzimmer reportedState: dim 5


LG
Tom

rudolfkoenig

ZitatWie meinst du das denn?
Du sagst, es funktioniert bei off nicht, und ich wollte es nachstellen/debuggen. Ich gehe aber davon aus, das bei "off" nicht die gezeigten Events gesendet werden, deswegen lasse ich das vorlaeufig mit dem debuggen -> Ich brauche die Events im Problemfall.

tomspatz

#7
Kannst du ggf. damit etwas anfangen
2017.06.06 08:58:06 4: WEB_192.168.1.10_50755 POST /fhem?cmd.DimmerSchlafzimmer=set%20DimmerSchlafzimmer%20on&room=Schlafzimmer&XHR=1&fwcsrf=csrf_971809974966905&fw_id=85076; BUFLEN:0
2017.06.06 08:58:06 5: Cmd: >set DimmerSchlafzimmer on<
2017.06.06 08:58:06 3: ZWave set DimmerSchlafzimmer on
2017.06.06 08:58:06 5: Starting notify loop for DimmerSchlafzimmer, 1 event(s), first is on
2017.06.06 08:58:06 5: BatterieStatus: not on any display, ignoring notify
2017.06.06 08:58:06 5: BatterieStatusProzent: not on any display, ignoring notify
2017.06.06 08:58:06 5: LichtAlle: not on any display, ignoring notify
2017.06.06 08:58:06 5: End notify loop for DimmerSchlafzimmer
2017.06.06 08:58:06 4: WEB: /fhem?cmd.DimmerSchlafzimmer=set%20DimmerSchlafzimmer%20on&room=Schlafzimmer&XHR=1&fwcsrf=csrf_971809974966905&fw_id=85076 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.06.06 08:58:06 5: Starting notify loop for DimmerSchlafzimmer, 2 event(s), first is dim 52
2017.06.06 08:58:06 5: BatterieStatus: not on any display, ignoring notify
2017.06.06 08:58:06 5: BatterieStatusProzent: not on any display, ignoring notify
2017.06.06 08:58:06 5: LichtAlle: not on any display, ignoring notify
2017.06.06 08:58:06 5: End notify loop for DimmerSchlafzimmer
2017.06.06 08:58:08 4: Connection closed for WEB_192.168.1.10_50748: EOF
2017.06.06 08:58:08 4: WEB_192.168.1.10_50755 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2017-06-06.log; BUFLEN:0


Im Event monitor taucht beim klick auf das Dimmer Lampensymbol auch nur sowas auf:
2017-06-06 09:12:37 ZWave DimmerSchlafzimmer on
2017-06-06 09:12:37 ZWave DimmerSchlafzimmer dim 33
2017-06-06 09:12:37 ZWave DimmerSchlafzimmer reportedState: dim 33



Nochmals detaliert was NICHT funktioniert. Licht ist an, dim 55 o.ä. beim klick in der weboberfläche auf das Lampensymbol (dim50%) erscheint ganz kur das lampen aus Symbol und SOFORT danach wird wieder auf den letzten Status angezeigt. Das Licht selbst also die Lampe macht dabei keinen mucks.
Über den Schalter der am device direkt angeschlossen ist wird auch abgeschaltet.

Auch werden alle dim Werte unter bzw. bis dim6 nicht ausgewertet also NUR als Zahl dargestellt.
Das Verhalten ist sowohl in fhem WEB sowie auch WEBphone und WEBtablet identisch.

LG
Tom

tomspatz


rudolfkoenig

Ich warte immer noch auf die richtigen Events. Du zeigst die Events, die beim klick auf on auftreten, und beschreibst ein Problem beim klicken auf dim55%.
Die Meldungen aus dem LOG sind in diesem Fall nicht interessant, da es um ein Darstellungsproblem mit FHEMWEB geht.

Ich haette gerne die Events im Problemfall, die aber vollstaendig, fuer alle Problemfaelle einzeln, damit ich die Probleme nachstellen kann.
Mein Beispiel oben verwendet $state, deswegen brauche zusaetzlich stateFormat => bitte alle Attribute fuer DimmerSchlafzimmer (am besten aus "Raw definition") hier posten.

tomspatz

SORRY ich verstehe dich nicht  :(

Also das ist das device, ich habe jetzt das attr devStateIcon rausgenommen.
Somit habe ich jetzt in der Weboberfläche einen Schieberegler mit Wert Null sowie die Lampe  AUS.
Bewege ich den Schieber bekommt dieser eine Zahl 1 bis 99. Ich schiebe den jetzt auf 35.
Das Lampensymbol wechselt von Lampe aus auf "dim 35" als Beispiel
Klicke ich jetzt auf das "dim 35" wechselt die Anzeige kurz zu Lampe an Symbol dann sofort wieder "dim 35", der Schieber geht kurzzeitig auf Null und springt dann sofort wieder auf 35.

defmod DimmerSchlafzimmer ZWave c9cc092a 36
attr DimmerSchlafzimmer userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr DimmerSchlafzimmer IODev ZWDongle_0
attr DimmerSchlafzimmer alias Licht SZ
attr DimmerSchlafzimmer classes ZWAVEPLUS_INFO BASIC VERSION MANUFACTURER_SPECIFIC SWITCH_MULTILEVEL DEVICE_RESET_LOCALLY ASSOCIATION_GRP_INFO ASSOCIATION POWERLEVEL SECURITY FIRMWARE_UPDATE_MD CRC_16_ENCAP CONFIGURATION SENSOR_MULTILEVEL METER MULTI_CHANNEL_ASSOCIATION MULTI_CHANNEL PROTECTION ALARM SWITCH_ALL APPLICATION_STATUS MARK SCENE_ACTIVATION
attr DimmerSchlafzimmer group Licht
attr DimmerSchlafzimmer icon light_ceiling
attr DimmerSchlafzimmer neighborListPos 458.883929681652,782.8438616355282
attr DimmerSchlafzimmer room Schlafzimmer,System,ZWave
attr DimmerSchlafzimmer vclasses ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BASIC:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:2 METER:3 MULTI_CHANNEL:4 MULTI_CHANNEL_ASSOCIATION:3 POWERLEVEL:1 PROTECTION:2 SCENE_ACTIVATION:1 SECURITY:1 SENSOR_MULTILEVEL:4 SWITCH_ALL:1 SWITCH_MULTILEVEL:3 VERSION:2 ZWAVEPLUS_INFO:2
attr DimmerSchlafzimmer webCmd dim


Jetzt devStateIcon gesetzt:
defmod DimmerSchlafzimmer ZWave c9cc092a 36
attr DimmerSchlafzimmer userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr DimmerSchlafzimmer IODev ZWDongle_0
attr DimmerSchlafzimmer alias Licht SZ
attr DimmerSchlafzimmer classes ZWAVEPLUS_INFO BASIC VERSION MANUFACTURER_SPECIFIC SWITCH_MULTILEVEL DEVICE_RESET_LOCALLY ASSOCIATION_GRP_INFO ASSOCIATION POWERLEVEL SECURITY FIRMWARE_UPDATE_MD CRC_16_ENCAP CONFIGURATION SENSOR_MULTILEVEL METER MULTI_CHANNEL_ASSOCIATION MULTI_CHANNEL PROTECTION ALARM SWITCH_ALL APPLICATION_STATUS MARK SCENE_ACTIVATION
attr DimmerSchlafzimmer devStateIcon {$state=~s/[^0-9]//g;;;;$state=~m/^$/?".*:off":sprintf(".*:dim%02d%%",6.25*int($state/6.25))}
attr DimmerSchlafzimmer group Licht
attr DimmerSchlafzimmer icon light_ceiling
attr DimmerSchlafzimmer neighborListPos 458.883929681652,782.8438616355282
attr DimmerSchlafzimmer room Schlafzimmer,System,ZWave
attr DimmerSchlafzimmer vclasses ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BASIC:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:2 METER:3 MULTI_CHANNEL:4 MULTI_CHANNEL_ASSOCIATION:3 POWERLEVEL:1 PROTECTION:2 SCENE_ACTIVATION:1 SECURITY:1 SENSOR_MULTILEVEL:4 SWITCH_ALL:1 SWITCH_MULTILEVEL:3 VERSION:2 ZWAVEPLUS_INFO:2
attr DimmerSchlafzimmer webCmd dim


Jetzt gibt es bei Regler Null das Lampe aus Symbol.
Bewege ich den Regler wechselt das Lampensymbol zu dim37% o.Ä. Symbol (je nachdem)
Klicke ich auf das Symbol wird ganz kurz Lampe aus Symbol angezeigt danach sofort wieder das dim37%.
Alle Schieberegler Werte unter 7 werden gar nicht in Symbole aufgelöst, es steht dann anstatt der Lampe eine 1 bis 6.

Bei einem Weiterem Dimmer, Selbe Type habe ich gebastelt:
.*\b\d{1}(?!\d):dim06%:off .*1\d.*:dim12%:off .*2\d.*:dim25%:off .*3\d.*:dim37%:off .*4\d.*:dim43%:off .*5\d.*:dim50%:off .*6\d.*:dim68%:off .*7\d.*:dim75%:off .*8\d.*:dim87%:off .*9\d.*:dim100%:off

Das funktioniert wie gewünscht
Wenn die Lampe ein dim Symbol bekommt kann man darauf klicken und sie geht aus.

Tut mir leid wenn ich dich damit so strapaziere. Ich probiere auch schon vieles aus und lerne aber das will nicht so einfach.

LG
Tom

rudolfkoenig

Jetzt fehlt noch die Liste der Events, die bei deinem Schaltversuchen im Event-Monitor oder telnet/inform timer auftauchen.
Da ich kein FGD212 habe, kann ich das nicht nachstellen, brauche also die Events.

Zitat[...]
Das funktioniert wie gewünscht
Und warum moechtest es dann abloesen?

tomspatz

Aus dem Event Monitor

2017-07-16 17:20:14 ZWave DimmerSchlafzimmer dim 56
2017-07-16 17:20:14 PRESENCE iPhoneGabiWLAN absent
2017-07-16 17:20:14 PRESENCE iPhoneGabiWLAN presence: absent
2017-07-16 17:20:14 ZWave DimmerSchlafzimmer dim 56
2017-07-16 17:20:14 ZWave DimmerSchlafzimmer reportedState: dim 56
2017-07-16 17:20:15 ZWave DimmerSchlafzimmer power: 41.7 W
2017-07-16 17:20:16 PRESENCE iPadBT absent
2017-07-16 17:20:16 PRESENCE iPadBT presence: absent
2017-07-16 17:20:18 ZWave DimmerSchlafzimmer on
2017-07-16 17:20:18 ZWave DimmerSchlafzimmer dim 56
2017-07-16 17:20:18 ZWave DimmerSchlafzimmer reportedState: dim 56


Zeile 1 ich schiebe den Regler in der WEB in der Ansicht wird die Lampe mit grünen Balken angezeigt
Zeile 2 und 3 ignore
Zeile 4 -6 ist wohl die Meldung zurück vom Dimmer
Zeile 7 und 8 ignore
Zeile 9 Ich klicke auf das Lampensymbol von Zeile 1

Scheinbar wird beim Klick auf das Symbol nicht off sondern on gesendet ?

ZitatUnd warum moechtest es dann abloesen?

Experimentierfreude und Lernbereitschaft, es macht halt Spaß in fhem zu graben.  ;)

LG
Tom

rudolfkoenig

Folgendes sollte fuer on/off und dim <= 6 funktionieren:
attr DimmerSchlafzimmer devStateIcon {return ".*:$state" if($state=~ /^(on|off)$/);; $state=~s/[^0-9]//g;; $state=~m/^$/||$state<=6?".*:off":sprintf(".*:dim%02d%%",6.25*int($state/6.25))}

Wenn Status nicht on ist, dann generiert ein Click auf dem Icon ein on, und nur genau bei on den off. Das ist hartkodiert.

ZitatExperimentierfreude und Lernbereitschaft, es macht halt Spaß in fhem zu graben.
Na dann das naechste mal bitte selbst debuggen, z.Bsp. mit eingestreuten Log Anweisungen, wie ich das gerade gemacht habe:
attr DimmerSchlafzimmer devStateIcon {Log 1, $state;; return ".*:$state" if($state=~ /^(on|off)$/);; $state=~s/[^0-9]//g;; Log 1, "X:$state";; $state=~m/^$/||$state<=6?".*:off":sprintf(".*:dim%02d%%",6.25*int($state/6.25))}

tomspatz

ZitatWenn Status nicht on ist, dann generiert ein Click auf dem Icon ein on, und nur genau bei on den off. Das ist hartkodiert.
Dann ist das wahrscheinlich der "Fehler" wenn ein dimXX Symbol angezeigt wird dann ist das ja nicht ON.

Dein Beispiel generiert leider unterhalb von dim7 jetzt nur das Lampe off Symbol allerdings mit Mouseover wird dimX angezeigt, somit gibt es von dort aus auch kein aus.

Ich denke "wir" ;) sollten das abbrechen, zumal ich ja eine funktionierende Lösung habe.
ZitatNa dann das naechste mal bitte selbst debuggen, z.Bsp. mit eingestreuten Log Anweisungen, wie ich das gerade gemacht habe:
Ich werde mich bessern, doch ist mein Wissen da noch recht begrenzt.

LG
Tom