Hauptmenü

userReading

Begonnen von Freee84neu, 05 November 2018, 01:12:58

Vorheriges Thema - Nächstes Thema

Freee84neu

Hallo

Habe ein userReading angeklagt welches wie folgt lautet

Betrieb { my $val=ReadingsVal("Waschmaschine", "ENERGY_Power", ""); if ($val > 30) { $val="on";} elsif ($val <= 30 ) { $val="off";} ;; $val}

Also das Reading Betrieb geht bei höher 30 auf on und bei 30 oder niedriger auf off

Sowei recht einfach


Jetzt würde ich gerne aber auch standby rein bekommen
Also >30 on
Zwischen 30 und 3 standby
Unter 3 off

Jetzt stehe ich voll auf dem Schlauch wie ich das standby mit reinbekomme

Wäre nett wenn jemand helfen könnte

Hans Franz

elsif ($val <= 30 ) && ($val >= 3 )
Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Freee84neu

Betrieb { my $val=ReadingsVal("Waschmaschine", "ENERGY_Power", ""); if ($val > 30) { $val="on";} elsif ($val < 3 ) { $val="off";} elsif ($val <= 30 ) && ($val >= 3 ) { $val="standby";} ;; $val}


   
Error evaluating Waschmaschine userReading Betrieb: syntax error at (eval 2374424) line 1, near ") &&"
Global symbol "$val" requires explicit package name at (eval 2374424) line 1.
syntax error at (eval 2374424) line 1, near "$val}"

Klappt auch nicht das ist noch zu hoch für mich sorry


binford6000

Die zwei Klammern um das && sind zuviel  ;)
Also:
Betrieb {my $val=ReadingsVal("Waschmaschine","ENERGY_Power",""); if ($val > 30) {$val="on";} elsif ($val < 3) {$val="off";} elsif ($val <= 30 && $val >= 3) {$val="standby";};$val}
VG Sebastian

Freee84neu

Super vielen Dank. Das wird wohl noch dauern bis ich das ganze richtig verstanden habe

Freee84neu

#5
Hallo nochmal

würde gerne in einem userReading zählen wie oft  das ON im State reinkommt.

ich habe sowas ähnliches schon über ein notify aber ich würde es gerne direkt über das reading machen wollen
Ich hatte an das hier gedacht aber irgendwas ist wohl Falsch.  ;) , hab das ganz noch nicht so verstand ....


ON {my $val=ReadingsVal("Dummy_Waschmaschine","state",""); if ($val = ON) {$val="+1";} else {$val="+0";};$val}
oder
ON {my $Wert=ReadingsVal("Dummy_Waschmaschine","state",""); if ($Event = ON) {$Wert="+1";} else {$Wert="+0";};$Wert}

Wäre nett wenn mir jemand auf die Sprünge helfen könnte.




Freee84neu

#6
($Event = ON)

das müsste denke ich schon mal so sein

($Event eq "ON")




Byte09

Nur auf die schnelle gesehen:

String Vergleich nicht mit '=' sondern mt 'eq'

Addition  '$val=$val + 1' oder '$val++'

Bitte unbedingt in perl Grundlagen einarbeiten.... da führt kein Weg vorbei.

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Freee84neu

#8
ja ich muss auf jeden Fall an einen Perl Grundlagen arbeiten  ::) aber irgendwie bekomme ich das nicht in den Kopf

ON {my $val=ReadingsVal("Dummy_Waschmaschine","state",""); if ($Event eq "ON") {$val = $val +1 ;} else {$val = $val +0 ;};$val}

das ist wohl auch was falsch


Danke schon mal

PS. wenn ich  "($Event eq "ON")" nehme Bräuchte ich doch garnicht  ""else {$val = $val +0 ;}"" mit rein nehmen oder ? das wäre doch nur wenn ich auf alle Events reagieren würde oder hab ich das ganze total fasch verstanden, jetzt bin ich wohl total durcheinander  ???



CoolTux

Im Grunde funktioniert es eigentlich wie beim Notify, eigentlich brauchst Du gar keine Abfrage wenn das RegEx passt


ON { if ( $EVENT eq "ON" ) { ReadingsVal("Dummy_Waschmaschine","state","") +1 } }

Bei dieser Form reagiert das userReadings auf alle Events zu seinem Device. Wenn Du lediglich auf den state Event reagieren möchtest, musst du das mit an geben


ON:ON { ReadingsVal("Dummy_Waschmaschine","state","") +1 }

Allerdings scheint state ja kein ON OFF zu liefern sondern numerische Werte wen ich das richtig interpretiere.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Freee84neu

Danke für die Hilfe

mein state gibt "ON" "OFF" und "STANDBY" raus und wollte zählen wie off "ON" reinkommt

jetzt bin ich durchander...

ON { if ( $EVENT eq "ON" ) { ReadingsVal("Dummy_Waschmaschine","state","") +1 } }

"ON" name des userReadings

"""{ if ( $EVENT eq "ON" )""" wenn das eintrift also ein Event mit ON

""""{ ReadingsVal("Dummy_Waschmaschine","state","") +1 }"""  dann soll er das machen also state +1 setzen

jetzt stehe ich voll auf dem schlauch oder hab ich es richtig verstanden





CoolTux

Nein das wird so nicht.

ReadingsVal("Dummy_Waschmaschine","state","") +1

Bedeutet, lese den Wert aus dem Reading state aus und addiere 1 dazu. Das geht aber nur wenn der Wert auch eine Zahl ist und kein String.
Du solltest auch eigentlich Fehlermedungen im log haben.

Du kannst das ganze aber testen. Einfach zwei Dummys zusammen setzen und damit üben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Dummy Waschmaschine ist das selbe device wie das wo das userreading rein soll?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


Internals:
   CFGFN     
   NAME       dummyWaschmaschine
   NR         24
   STATE      ON
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-11-09 06:50:32   ON              ON
     2018-11-09 06:50:32   state           ON
Attributes:
   readingList state
   room       Test
   setList    state:ON,OFF,STANDBY
   userReadings ON:ON { ReadingsVal($name,'state','none') }


Das liefert Dir erstmal ein Reading ON mit dem Wert von state. Was genau willst Du nun machen? Du willst wissen wie oft der Event ON kam?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


Internals:
   CFGFN     
   NAME       dummyWaschmaschine
   NR         24
   STATE      ON
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-11-09 06:53:28   ON              2
     2018-11-09 06:53:28   state           ON
Attributes:
   readingList state
   room       Test
   setList    state:ON,OFF,STANDBY
   userReadings ON:ON { ReadingsVal($name,'ON',0) + 1 }


Das zählt Dir Deine ON Evente von state.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net