Ankündigung

Einklappen
Keine Ankündigung bisher.

Umschalten mit Openhab

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Umschalten mit Openhab

    Hallo zusammen,

    ich möchte über Openhab meinen Fernseher umschalten. Ich habe eine Harmony Hub und einen Receiver mit Enigama2.
    Ich habe das Networkbinding installiert und weiße schon einmal wann meine Box im Standby oder an ist ist.

    So, jetzt zu meinem Problem..

    Ich möchte den Fernseher über Alexa anschalten und umschalten.

    Da sich der Zeitpunkt für das Umschalten stark verändert (Fernseher läuft schon bis Alles komplett aus) muss da irgendwie eine Logik rein.

    Es müsste irgendwie so aussehen...

    Wenn der Fernseher bereits läuft:

    rule "Test"
    when
    Item VOX received command

    If HarmonyHubStube_CurrentActivity.state == ("Fernseher")
    then
    {
    sendHttpGetRequest(„http://192.168.188.30/api/zap?sRef=1...0000:0:0:0:“)
    }


    Wenn der Fernseher zwar nicht läuft, der Receiver aber im Standby ist dann:

    rule "Test"
    when
    Item VOX received command

    If HarmonyHubStube_CurrentActivity.state != ("Fernseher") && (Receiver_Netzwerk_Online == ON)
    then
    {
    HarmonyHubStube_CurrentActivity.sendCommand("Ferns eher")
    Thread::sleep(4000)
    sendHttpGetRequest(„http://192.168.188.30/api/zap?sRef=1...0000:0:0:0:“)
    } == ON)



    und wenn alles komplett aus ist es wohl richtig kompliziert...

    rule "Test"
    when
    Item VOX received command

    If HarmonyHubStube_CurrentActivity.state != ("Fernseher") == (Receiver_Netzwerk_Online == OFF)
    then
    {
    HarmonyHubStube_CurrentActivity.sendCommand("Ferns eher")
    Thread::sleep(so lange bis der Receiver da ist aber wenn es zu lange dauert dann schluss......)
    sendHttpGetRequest(„http://192.168.188.30/api/zap?sRef=1...0000:0:0:0:“)
    }


    Das Ziel ist es alles in eine Regel zu bekommen und das es funktioniert. Ich bin nicht sooooooo erfahren mit Regeln und hoffe das ich wenigstens die Klammern richtig gesetzt habe.

    Danke für Hilfe.. aber setzt bitte nicht zu viel voraus..... ;-)


    Gruß Lars

    #2
    Geschickt wäre, wenn die Rule aufgerufen wird, zu prüfen, welche Geräte laufen, diese zu starten, falls sie nicht laufen und dann zu warten, bis sie den Betriebszustand erreicht haben.
    Die Rule sieht dann so aus:
    Code:
    var Timer myTimer = null
    rule "VOX empfangen"
    when
        Item VOX received command or
        Item mySleep received update
    then
        if (HarmonyHubStube_CurrentActivity.state.toString != "Fernseher") {
            HarmonyHubStube_CurrentActivity.sendCommand("Fernseher")
        }
        if (Receiver_Netzwerk_Online.state != ON) {
            enigma_wol.sendCommand(ON)
        }
        if (Receiver_Netzwerk_Online.state != ON || HarmonyHubStube_CurrentActivity.state.toString != "Fernseher") {
            Thread::sleep(4000)
            mySleep.postUpdate(ON)
        }
        else {
            sendHttpGetRequest(„http://192.168.188.30/api/zap?sRef=1:0:19:EF11:421:1:C00000:0:0:0:%E2%80%9C")
        }
    end
    Das Item mySleep ist ein ungebundenes Item, es ist also quasi eine Variable. Der Witz dabei ist, dass es als Trigger nutzbar ist. Die Rule triggert sich also alle 4 Sekunden selbst, bis sowohl Fernseher als auch Receiver eingeschaltet sind. Ansonsten wird der Befehl ausgeführt.
    Die aktuelle Activity als Merkmal für den Fernseher ist vermutlich nicht sonderlich zuverlässig, besser wäre z.B. mit einem Zwischenstecker die aktuelle Leistung zu messen, falls das Gerät keine andere Möglichkeit bietet, den Betriebszustand zu messen.

    Kommentar


      #3
      Hi,
      genau das habe ich gesucht. Ich habe den Punkt "enigma_wol.sendCommand(ON)" auch gegen ein Thread::sleep(4000) getauscht,
      da ich nicht mit WOL arbeiten kann. Jetzt habe ich noch ein Problemchen... Das Networkbindig hat einen Timeout. Da der Fernseher Gott sei Dank nicht den ganzen Tag läuft, rennt er da natürlich rein. Somit ist Receiver_Netzwerk_Online dann immer OFF. Kann ich das erneute Suchen nach dem Gerät irgendwie aus der Regel erneut senden?

      Unbenannt.png




      Zitat von udo1toni Beitrag anzeigen
      Geschickt wäre, wenn die Rule aufgerufen wird, zu prüfen, welche Geräte laufen, diese zu starten, falls sie nicht laufen und dann zu warten, bis sie den Betriebszustand erreicht haben.

      Kommentar


        #4
        Hallo zusammen,

        habe die Regel ein wenig angepasst und jetzt passt es für mich. Danke an UDO1Toni für die Unterstützung:

        Code:
        var Timer myTimer = null
        rule "Pro7 empfangen"
        when
            Item Pro7 received command or
            Item mySleep received update
        then
            if (HarmonyHubStube_CurrentActivity.state.toString == "Fernseher") 
            {
                sendHttpGetRequest("http://192.168.188.30/api/zap?sRef=1:0:19:EF75:3F9:1:C00000:0:0:0:")
            }
            if (HarmonyHubStube_CurrentActivity.state.toString != "Fernseher") 
            {
                HarmonyHubStube_CurrentActivity.sendCommand("Fernseher")
            }
            if (Receiver_Netzwerk_Online.state != ON) 
            {
                Thread::sleep(10000)
                mySleep.postUpdate(ON)
            }
            else 
            {
                Thread::sleep(3000)
                sendHttpGetRequest("http://192.168.188.30/api/zap?sRef=1:0:19:EF75:3F9:1:C00000:0:0:0:")
            }
        end

        Kommentar


          #5
          Naja, das mag zwar funktionieren, war aber nicht mein Gedanke Wenn alle Geräte online sind, sendest Du nun zweimal Deinen Befehl (einmal im ersten if, ein weiteres Mal im letzten if. Meine Idee war, die Geräte einzuschalten, falls sie nicht laufen, in der ersten Schleife den Fernseher, in der zweiten Schleife den enigma. Anschließend wird immer wieder überprüft, ob beide Geräte laufen. Solange mindestens eines der Geräte nicht gestartet ist, wird die Rule erneut aufgerufen (nach Wartezeit). erst wenn beide Gerräte laufen, wird der Befehl abgesetzt (ohne Wartezeit).

          Kommentar


            #6
            Hi,
            du hast recht das ich den Befehl 2 Mal setzte, das Problem ist, das auch wenn das Netzwerk des Receivers da ist, ich leider noch nicht schalten kann. Am Besten wäre natürlich das der Receiver ein Signal gibt, wenn dieser soweit ist.

            Kommentar

            Lädt...
            X