FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: stoniii am 11 November 2017, 19:09:32

Titel: Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 19:09:32
Hallo Zusammen,

ich habe da ein für mich größeres und für euch hoffentlich kleineres Problem.

Kurzversion: Ich möchte bei einer RGB-Lampe den Farbwert zwischenspeichern.

Langversion: Ich habe einen Fibaro Zwischenstecker zum erkennen ob die Waschmaschine im Keller fertig ist.
Dies funktioniert auch bereits alles. Wenn die Waschmaschine fertig ist soll im Wohnzimmer die Lampe auf "grün" wechseln um anzuzeigen, dass die Maschine im fertig ist. Jetzt möchte ich mit meinen Amazon Dashbutton die inzwischen auf grün gewechselte Lampe wieder auf den ursprünglich eingestellten Farbwert stellen.

Notify für Fibaro Zwischenstecker - hier müsste wohl ein Farbcode zwischenspeichern erfolgen?
ZWave_SWITCH_BINARY_3:power:.* {
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
     }

     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
          fhem("set HUEDevice8 rgb 98ff23");

     }
}


Notify Dashbutton - hier müsste wohl ein "gespeicherter Farbcode widerherstellen rein"
DashButton01:present set HUEDevice8 toggle

wer kann hier weiterhelfen?
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: viegener am 11 November 2017, 19:51:42
Wäre nicht die einfachste Lösung einen Dummy für die Zwischenspeicherung zu verwenden?
Dazu den aktuellen Farbwert auslesen (kenne mich mit Hue nicht aus, deshalb weiss ich nicht welches Reading das wäre)
Im dashbutton notfy dann den state vom dummy als Wert für das Setzen verwenden

Oder habe ich jetzt was missverstanden?

Achso und eine Kleinigkeit: im zweiten if deines notifys sollte es vermutlich "on" als default wert sein, denn wenn nichts gesetzt ist willst Du ja wohl den korrekten wert setzen:


...
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "on") eq "on") {
...
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 19:52:00
setreading HUEDevice8 previousHue ReadingsVal("HUEDevice8", "hue", "XX") im ersten, und dann set HUEDevice8 hue ReadingsVal("HUEDevice8", "previousHue", "XX")

Mit XX entweder leer, oder mit einer beliebige Hue Farbe
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 20:24:08
danke euch schonmal :)

habe es wie amenomade gepostet hat versucht aber komme nicht klar.

die einzige schreibweise, wie ich es abspeichern kann ist

ZWave_SWITCH_BINARY_3:power:.* {
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
     }

     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
  fhem "setreading HUEDevice8 previousHue ".(ReadingsVal("HUEDevice8", "hue", "XX"));
          fhem("set HUEDevice8 rgb 98ff23");

     }
}




funktionieren tut es dann trozdem nicht.

wenn ich versuche

ZWave_SWITCH_BINARY_3:power:.* {
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
     }

     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
  setreading HUEDevice8 previousHue ReadingsVal("HUEDevice8", "hue", "XX");
          fhem("set HUEDevice8 rgb 98ff23");

     }
}



lässt fhem mich nicht speichern wegen einen syntax error.

leider bin ich noch ein Anfänger und blicke bei fhem noch nicht so recht durch.
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 20:42:09
Ja mein Schuld. So besser:
  fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));
sollte aber gehen?

Wenn nicht, zeig bitte ein "list HUEDevice8"
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 20:47:53
geht leider noch nicht  :'(

HUEDevice8
Internals:
   CHANGED
   DEF        8  IODev=Hue
   ID         8
   INTERVAL
   IODev      Hue
   NAME       HUEDevice8
   NR         59
   STATE      on
   TYPE       HUEDevice
   manufacturername IKEA of Sweden
   modelid    TRADFRI bulb E27 CWS opal 600lm
   name       Color light 3
   swversion  1.3.002
   type       Color light
   uniqueid   00:0b:57:ff:fe:ab:f0:e1-01
   READINGS:
     2017-11-11 20:37:08   alert           none
     2017-11-11 20:37:08   bri             254
     2017-11-11 20:37:08   colormode       xy
     2017-11-11 20:37:08   effect          none
     2017-11-11 20:37:08   hue             62608
     2017-11-11 20:37:08   onoff           1
     2017-11-11 20:37:08   pct             100
     2017-11-11 20:37:08   reachable       1
     2017-11-11 20:37:08   rgb             0000f9
     2017-11-11 20:37:08   sat             0
     2017-11-11 20:37:08   state           on
     2017-11-11 20:37:08   xy              0.1321,0.0284
   helper:
     alert      none
     bri        254
     colormode  xy
     ct         -1
     devtype
     effect     none
     hue        62608
     pct        100
     reachable  1
     rgb        0000f9
     sat        0
     update_timeout 1
     xy         0.1321,0.0284
Attributes:
   IODev      Hue
   alias      Color light 3
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   model      TRADFRI bulb E27 CWS opal 600lm
   room       0.0.0 Testing,9.7.1 HUE Devices
   subType    colordimmer
   webCmd     hue:rgb:rgb ff0000:rgb 98FF23:rgb 0000ff:toggle:on:off


Auszug ausm Logfile
2017.11.11 20:46:31 3: Keller_Waschmaschine return value: Unknown command {
, try help.
Unknown command }

, try help.
Unknown command fhem, try help.
Unknown command fhem("set, try help.
Unknown command }
}


, try help.

Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 20:59:32
Das hast Du ein anderes Syntaxproblem. Zeig bitte dein gesammtes notify wieder
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 21:00:50
Internals:
   DEF        ZWave_SWITCH_BINARY_3:power:.* {
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
     }

     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));
          fhem("set HUEDevice8 rgb 98ff23");

     }
}



   NAME       Keller_Waschmaschine
   NOTIFYDEV  ZWave_SWITCH_BINARY_3
   NR         84
   NTFY_ORDER 50-n_KU_Spuelmaschine_start
   REGEXP     ZWave_SWITCH_BINARY_3:power:.*
   STATE      2017-11-11 20:52:15
   TYPE       notify
   READINGS:
     2017-11-11 20:48:39   state           active
Attributes:
   room       0.0.0 Testing
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 22:24:05
Hmmm. Wie genau editierst Du dein notify? External Editor? Klick auf DEF? Rawdef?

Zeig mal bitte ein "list -r Keller_Waschmaschine"
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 22:26:33
über die Webseite dann im notify auf DEF (habe des Theme Hausautomatisierung.com installiert)

hier des notify
define Keller_Waschmaschine notify ZWave_SWITCH_BINARY_3:power:.* {\
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {\
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");;\
     }\
\
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {\
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");;\
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));;\
          fhem("set HUEDevice8 rgb 98ff23");;\
\
     }\
}\
\
\

attr Keller_Waschmaschine room 0.0.0 Testing

setstate Keller_Waschmaschine 2017-11-11 21:33:23
setstate Keller_Waschmaschine 2017-11-11 20:48:39 state active
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 23:01:27
Anscheinend gibt es irgendwelches (Sonder-?)Zeichen am Ende jeder Linie.
Versuch mal bei jeder Zeile (wenn Du auf DEF geklickt hast), das letzte Zeichen zu löschen
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 23:25:08
ja du hattest recht, da waren wohl noch Leerzeichen oder sowas drin. habe den code nochmal alle Leerstellen gelöscht und neu formatiert.
jetzt funktioniert die Farbänderung auf "grün" und der Wert "previusHue" wird auch gesetzt.


Aber irgendwas passt im notify für den Farbwechsel noch nicht.

2017.11.11 23:19:13 1: PERL WARNING: Argument "ReadingsVal("HUEDevice8"," isn't numeric in addition (+) at ./FHEM/31_HUEDevice.pm line 503.
2017.11.11 23:19:13 1: PERL WARNING: Argument ""previousHue"," isn't numeric in multiplication (*) at ./FHEM/31_HUEDevice.pm line 504.


hier nochmal mein Amazon Dash Button

Internals:
   DEF        set HUEDevice8 rgb ReadingsVal("HUEDevice8", "previousHue", "XX")
   NAME       notDashButton01
   NR         80
   NTFY_ORDER 50-notDashButton01
   REGEXP     set
   STATE      active
   TYPE       notify
   READINGS:
     2017-11-11 23:16:49   state           active
Attributes:
   room       0.0.0 Testing
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: amenomade am 11 November 2017, 23:47:23
Ja, gleiches Problem wie am Anfang für den anderen.

Ich bin mir nicht mehr sicher, ob notify die Syntax [Device:Reading] akzeptiert, wenn ja:
set HUEDevice8 rgb [HUEDevice8:previousHue]

Wenn nicht:
set HUEDevice8 rgb {ReadingsVal("HUEDevice8", "previousHue", "XX")}

Und wenn immer noch nicht, dann
{fhem ("set HUEDevice8 rgb ".ReadingsVal("HUEDevice8", "previousHue", "XX"))}
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: MKeY am 11 November 2017, 23:54:58
ReadingsNum schon probiert?
Die Funktion ReadingsNum() extrahiert einen numerischen Wert aus dem Reading

sehe gerade, du hattest es immer. Aber Num sollte bei Zahlen verwendet werden. Vmtl bei den ganzen probieren abhanden gekommen
Titel: Antw:Reading auslesen und Wert in ein neues packen
Beitrag von: stoniii am 11 November 2017, 23:58:52
Vielen vielen dank für die super hilfe :)

Lösung: habe im notify den Wert auf "rgb" setzen lassen
Internals:
   DEF        ZWave_SWITCH_BINARY_3:power:.* {
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) > 18 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "off") {
          fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine on");
     }
     if (ReadingsNum("ZWave_SWITCH_BINARY_3", "power", 0) < 10 && ReadingsVal("ZWave_SWITCH_BINARY_3", "Waschmaschine", "off") eq "on") {
fhem("setreading ZWave_SWITCH_BINARY_3 Waschmaschine off");
fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "rgb", "XX"));
fhem("set HUEDevice8 rgb 98ff23");
  }
}
   NAME       Keller_Waschmaschine
   NOTIFYDEV  ZWave_SWITCH_BINARY_3
   NR         81
   NTFY_ORDER 50-Keller_Waschmaschine
   REGEXP     ZWave_SWITCH_BINARY_3:power:.*
   STATE      2017-11-11 23:54:30
   TYPE       notify
   READINGS:
     2017-11-11 23:48:41   state           active
Attributes:
   room       0.0.0 Testing


im Dash Button Notify
Internals:
   DEF        set HUEDevice8 rgb [HUEDevice8:previousHue]
   NAME       notDashButton01
   NR         80
   NTFY_ORDER 50-notDashButton01
   REGEXP     set
   STATE      active
   TYPE       notify
   READINGS:
     2017-11-11 23:54:39   state           active
Attributes:
   room       0.0.0 Testing


Jetzt hab ich nur ein Problem mit meinen Dash Button aber ich denk des hat mit diesen Problem nichts mehr zu tun.
wenn ich direkt set HUEDevice8 rgb [HUEDevice8:previousHue] funktioniert es wie es sollte.

nochmal DANKE
Titel: Reading auslesen und Wert in ein neues packen
Beitrag von: justme1968 am 12 November 2017, 09:33:57
um kurz über eine hue lampe zu benachrichtigen kann man effect verwenden.

um sich den zustand länger zu merken ist rgb nicht gut geeignet. da colormode und ein/aus verloren gehen. auch die anderen readings sind für sich alleine genommen nicht gut da die aktuelle farbe immer aus mindestens 3 informationen besteht. dazu kommt dann noch der colormode.

um sich den aktuellen zustand zu merken und später wieder her zu stellen bietet sich LightScene an. hier wird auch berücksichtig das die lampe gerade aus sein könnte oder in einen anderen color mode läuft.

einfach eine mit save zwischenspeichern und mit set scene wieder herstellen.