Seite 1 von 1

Mal wieder eine rule-Frage...

Verfasst: 25. Nov 2021 08:23
von OliverCJ
Guten Morgen zusammen,

ich hatte mir mal die folgende rule gebastelt:

Code: Alles auswählen

var Timer tRadio = null

rule "Musik fuer Olli"
when
  Item Olli_Handy changed from OFF to ON
then
  if (tRadio !== null) {
    tRadio.cancel()
    tRadio = null
  }
  if (Olli_Handy.state == ON) {
    tRadio = createTimer(now.plusSeconds(120), [|
    var Stunde = now.getHour
      if (Stunde > 7 && Stunde < 21) {
        if(Matzi_Handy.state == OFF) {
          if(WoZi_HarmonyHub_Aktion.state == "PowerOff") {
            WoZi_HarmonyHub_Aktion.sendCommand("Radio")
          }
        }
      }
    tRadio = null
    ])
  }
end
Was sie eigentlich machen sollte: Wenn sich mein Handy in der Zeit zwischen 8 und 20:59 Uhr ins WLAN einloggt, soll zwei Minute gewartet werden. Dann soll geprüft werden, ob das Handy meiner Frau ebenfalls im WLAN ist und nur, wenn das nicht der Fall ist, soll das Radio gestartet werden.

Was sie tatsächlich macht: Mein Handy loggt sich ins WLAN ein und sofern es zwischen den o.g. Uhrzeiten ist, fängt das Radio nach 2 min an zu spielen. Der WALN-Zustand des Handys meiner Frau ist ihm dabei ziemlich egal

Meine Frau ist nicht so der Radio-Typ und das Gedudel geht ihr ziemlich auf den Wecker. Und da ihr Handy ein wenig langsamer ist als meins, braucht es halt oft länger, bis es sich einloggt. Daher der Timer. Ich habe aber das Gefühl, dass er dort, wo ich ihn eingebaut habe, irgendwie falsch plaziert ist, komme aber nicht drauf, wie ich die rule umbauen muss, dass es funktioniert :(

Hat jemand einen Denkanstoss für mich?

Danke!

Re: Mal wieder eine rule-Frage...

Verfasst: 25. Nov 2021 12:39
von peter-pan
Ich weiss nicht, ob es hilft!? Ich habe die Regel ein bisschen gekürzt.

Code: Alles auswählen

var Timer tRadio = null

rule "Musik fuer Olli"
when
  Item Olli_Handy changed from OFF to ON
then
  if (tRadio !== null) {
    tRadio.cancel()
    tRadio = null
  }
  if (Olli_Handy.state == ON) {
    tRadio = createTimer(now.plusSeconds(120), [|
    var Stunde = now.getHour
    logInfo("Musik-Test"," Olli Handy Status: {} , Matzi Handy Status {}: , Hub Status: {} ", Olli_Handy.state, Matzi_Handy.state, WoZi_HarmonyHub_Aktion.state)  // für für Test
      if (Stunde > 7 && Stunde < 21 && Matzi_Handy.state == OFF && WoZi_HarmonyHub_Aktion.state == "PowerOff") {
          WoZi_HarmonyHub_Aktion.sendCommand("Radio")
      }
        tRadio = null
    ])
  }
end
Ich gehe davon aus, dass der ItemType der jeweiligen Items passt. Das LogInfo kannst du wieder auskommentieren oder rausnehmen, wenn die Status alle richtig sind.

Re: Mal wieder eine rule-Frage...

Verfasst: 26. Nov 2021 14:59
von OliverCJ
Hallo Peter,

vielen Dank! Ich werde das übers Wochenende mal ausprobieren. Da habe ich Zugriff auf beide Handys und kann ein wenig rumspielen.
Werde mal berichten, ob sich das Verhalten dann geändert hat.

VG, Oliver