Seite 1 von 1

Wert Abfrage will nicht

Verfasst: 18. Jun 2020 14:06
von chefjr
Hallo in die Runde!

ich bin ganz neu in dem Thema openhab, und auch kaum Wissen in scripting ... ;)

Mit viel lesen und suchen habe ich aber schon einiges umsetzten können. Leider komme ich aber bei der Wert abfrage nicht weiter:

Code: Alles auswählen

rule "PumpenmailWLAN"
   when
      Item DeviceWifiSignal changed 
   then
      var DeviceWifiSignal = (DeviceWifiSignal.state as Number).floatValue
      if(DeviceWifiSignal.state == 0)
      mailActions.sendMail("xx.xx@gmail.com", "Pumpe kein Wlan", "Zur Info ... ")
      
end
ich bekomme immer folgende Fehler:
The method state(int) is undefined for the type float
The method or field state is undefined for the type Number

hänge schon Stunden am suchen und testen ... finde nicht woran es liegt?!

DaNkE!

Re: Wert Abfrage will nicht

Verfasst: 18. Jun 2020 15:08
von peter-pan
Ich weiss zwar nicht genau, wie dein Item (DeviceWifiSignal) aussieht, und was du genau erreichen willst, aber wenn du ein Item-Wert in einer Variablen hinterlegen willst, dann solltest du die Variable nicht genauso nennen, wie das Item. Eine Variable hat keine Methode(Value-Wert) "state". Daher kommen auch vermutlich die Fehlermeldungen.
Probier's mal so:

Code: Alles auswählen

rule "PumpenmailWLAN"
   when
      Item DeviceWifiSignal changed 
   then
      var vWiFiSignal = (DeviceWifiSignal.state as Number).floatValue
      if(vWiFiSignal == 0)
      mailActions.sendMail("xx.xx@gmail.com", "Pumpe kein Wlan", "Zur Info ... ")
end
Wenn das nicht klappt, solltest du mal das Item "DeviceWifiSignal" posten (und natürlich die Fehlermeldungen).

Re: Wert Abfrage will nicht

Verfasst: 18. Jun 2020 21:00
von chefjr
DANKE! Das wars! ;)

Re: Wert Abfrage will nicht

Verfasst: 19. Jun 2020 11:47
von peter-pan
Gerne, freut mich, dass es geklappt hat. Vielleicht noch ein kleiner Hinweis. Falls du mehrzeilige Kommandos in der IF-Bedingung hast, solltest du die in "geschweifte Klammern" setzen:

Code: Alles auswählen

rule "PumpenmailWLAN"
   when
      Item DeviceWifiSignal changed 
   then
      var vWiFiSignal = (DeviceWifiSignal.state as Number).floatValue
      if(vWiFiSignal == 0) {
        mailActions.sendMail("xx.xx@gmail.com", "Pumpe kein Wlan", "Zur Info ... ")
      }
end
..... geht natürlich auch mit einzeiligem Code ;)