Reading auslesen und Wert in ein neues packen

Begonnen von stoniii, 11 November 2017, 19:09:32

Vorheriges Thema - Nächstes Thema

stoniii

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?

viegener

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") {
...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

amenomade

#2
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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stoniii

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.

amenomade

Ja mein Schuld. So besser:
  fhem ("setreading HUEDevice8 previousHue ".ReadingsVal("HUEDevice8", "hue", "XX"));
sollte aber gehen?

Wenn nicht, zeig bitte ein "list HUEDevice8"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stoniii

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.


amenomade

Das hast Du ein anderes Syntaxproblem. Zeig bitte dein gesammtes notify wieder
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stoniii

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

amenomade

Hmmm. Wie genau editierst Du dein notify? External Editor? Klick auf DEF? Rawdef?

Zeig mal bitte ein "list -r Keller_Waschmaschine"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stoniii

ü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

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stoniii

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

amenomade

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"))}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MKeY

#13
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
Wer Fehler findet, darf sie behalten!
RPi's, D1Mini
Homematic, Hue, Sonoff, Alexa, Xiaomi, ConBee
Prusa MK2.5, Prusa MK3S (MMU2S vorhanden, aber nervtötend)
Lowrider 2CNC

stoniii

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