Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. How to: PS4 einschalten/steuern mit Harmony Aktivität oder HomeKit

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

How to: PS4 einschalten/steuern mit Harmony Aktivität oder HomeKit

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
12 Beiträge 5 Kommentatoren 4.1k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    noaboa
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen

    Seit längerem verfolge ich das Ziel mein Heimkino zu automatisieren. Nun ist mir dies gelungen und möchte hier grob Dokumentieren wie ich dies auf die Beine gestellt habe. Schritte um die Adapter zu konfigurieren sind bereits vorhanden deshalb werde ich auf dies grösstenteils verzichten.

    Anregungen oder Verbesserungen vom Code sind sehr willkommen, da ich kein Programmierer bin.

    Mein Ziel:

    Mit der Harmony Companion Fernbedienung sowie HomeKit mein TV und Samsung Soundsystem sowie die Playstation einzuschalten und zu bedienen.

    Aktivitäten auf dem Harmony Hub

    Heimkino

    Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User.

    Netflix

    Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User dazu noch Netflix starten.

    Spotify

    Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User dazu noch Spotify starten und den aktuellen Titel wiedergeben.

    Die Aktivitäten sollen über die Aktionstasten auf der Fernbedienung als auch über HomeKit ein und aus geschaltet werden können.

    Benötigte Adapter:

    • Logitech Harmony Adapter

    • JavaScript Adapter + NPM Modul ps4-waker

    • Yahka

    • Spotify-premium Adapter

    PS4 mit Harmony Aktivität starten/über HomeKit starten

    Da das Harmony Hub die PlayStation 4 nicht einschalten kann sondern nur per Bluetooth steuern, kommt hier das NPM Modul „ps4-waker“ zum Einsatz. Dieses NPM Modul muss auf dem Raspberry installiert. Danach in den JavaScript Adapter eingetragen.

    Somit kann mit dem Befehl über die Konsole ps4-waker konfigurieren (mit der PlayStation verbinden).

    Und danach in einem Script mit

    exec("ps4-waker");
    

    ausgeführt werden.

    Danach habe ich ein State erstellt welcher PS4.Schalter heisst und folgendes Script.

    Script: PS4

    /*Wenn PS4.Schalter ein*/
    on({id:"PS4.Schalter"/*Schalter*/, val:true},function(obj){
    
        //Log eintrag
        log("einschalten");
    
        //Befehl PS4 Starten über ps4-waker
        exec("ps4-waker");
    
    });
    
    /*Wenn PS4.Schalter aus*/
    on({id:"PS4.Schalter"/*Schalter*/, val:false},function(obj){
    
        //Log eintrag
        log("ausschalten");
    
        //Befehl PS4 Standby über ps4-waker
        exec("ps4-waker standby");
    
    })
    

    Es hört auf den Schalter und wenn dieser ein oder aus geschaltet wird sendet es den Befehl um die PS4 ein zuschalten resp. in Standby Modus zu versetzen.

    Nun erstellen wir den Schalter im Yahka:

    Name: PS4

    Kategorie: Switch

    Fügen einen Service hinzu.

    Service-Type: Switch

    ON

    1: InOutFunktion ioBroker.State

    2: Umwandlungsfunktion passthrough

    1: InOutParams PS4.Schalter

    2: Umwandlungsparameter PS4.Schalter

    Jetzt können wir bereits die PS4 mit HomeKit ein/ausschalten.

    Um die PS4 über eine Harmony Aktivität zu starten habe ich ein weiteres Script geschrieben.

    Script: Heimkino_v0.1

    on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:1},function(obj){
    //Log eintrag
    log("starten");
    //Triggert PS Script um PS4 einzuschalten
    setState("PS4.Schalter"/*Schalter*/,true);
     /*Befehl wird erneut ausgeführt, da das Login triggert sonst bleibt es hängen bei der User Auswahl*/       
            setTimeout(function(obj){
                    exec("ps4-waker");
                },40000);     
        }    
    on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:3},function(obj){
    //Log eintrag
        log("aus");   
    //Triggert PS Script um PS4 auszuschalten
        setState("PS4.Schalter"/*Schalter*/,false);
    });
    

    Um Nun die Aktivität über HomeKit ein und aus zu schalten, müssen wir erneut einen State anlegen welcher Homekit Steuern kann, da HomeKit nicht die korrekten Befehle an Hamrony senden kann.

    Ich habe ihn „Homekit_Heimkino.Schalter“ genannt. Und hier dazu das Script

    Script: Heimkino_Homekit_v0.1

    on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:true},function(obj){
    //Aktueller Status von der Harmony Aktivität
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
       //Wenn keine Aktivität gestartet ist 
        if (cstatus === 0){
            //Dann Starte die Aktivität Heimkino
            setState("harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,1);
            log("starten");
        }
        else{
            //wenn sie gestartet ist muss sie nicht nochmals gestartet werden sonst gibt es eine schlaufe.
        }
    });
    
    on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:false},function(obj){
    //Aktueller Status von der Harmony Aktivität
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
       //Wenn eine Aktivität gestartet ist 
        if (cstatus === 2){.
    //Dann Schalte Sie aus
            setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3);
            log("aus"); 
        }
        else{
    //wenn sie gestartet ist muss sie nicht nochmals gestartet werden sonst gibt es eine schlaufe.
        }
    });
    

    Damit der HomeKit State auch aktuell bleibt müssen wir das vorherige Script ergänzen mit:

    Dieser

    setState("Homekit_Heimkino.Schalter"/*Schalter*/,true);
    

    direkt nach

    setState("PS4.Schalter"/*Schalter*/,true);
    

    Und dieser

    setState("Homekit_Heimkino.Schalter"/*Schalter*/,false);
    

    direkt nach

    setState("PS4.Schalter"/*Schalter*/,false);
    

    Nun haben wir das grundlegende mal durch.

    Ich habe die Script noch weiter angepasst, damit ich Netflix oder Youtube öffnen kann mit der Fernbedienung über die Aktionstasten von der Harmony Fernbedienung. Und beim Drucken der Heimkino taste kann ich das aktuelle Spiel oder die Anwendung schliessen.

    Wenn ich Spotify Öffne habe ich noch ein weitere Script erstellt welches dann direkt den aktuellen Song von Spotify abspielt.

    Hier alle meine Scripts aktuellen Scripts. Evtl sind noch anpassungen nötig. z.B. ID's anpassen oder setTimeout länger oder kürzer setzen und natürlich muss man auch noch weitere States anlegen wenn man mehr als ein Script resp Aktivität hat sowie auch im Yahka die Devices anlegen damit sie über HomeKit steuerbar sind.

    Script: Heimkino_v1.0

    on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:1},function(obj){
    
        //schreibt den Status des Schalters in die Varibale
        var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
    
        //Wenn PS4 an 
        if (psstatus === true){
    
            //Dann PS4 Anwendung schliessen
            log("zurücksetzen");
            exec("ps4-waker remote ps:1000 up up  up up up up up up enter down down enter");
    
        } else {
    
            //Sonst PS4 einschalten und Schalter aktualisieren
            log("starten");
            setState("PS4.Schalter"/*Schalter*/,true);
            setState("Homekit_Heimkino.Schalter"/*Schalter*/,true);
    
            //PS4 Login
            setTimeout(function(obj){
                    exec("ps4-waker");
                },40000);
    
        }    
    
    });
    
    on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:3},function(obj){
        log("aus");   
        //Schaltet PS4 und State Heimkino aus
        setState("PS4.Schalter"/*Schalter*/,false);
        setState("Homekit_Heimkino.Schalter"/*Schalter*/,false);
    });
    

    Script: Homekit_Heimkino_v1.0

    on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:true},function(obj){
    
    //Aktueller Status von der Harmony Aktivität
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
    
       //Wenn keine Aktivität gestartet ist 
        if (cstatus === 0){
    
            //Dann Starte die Aktivität Heimkino
            setState("harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,1);
            log("starten");
        }
        else{
            //Sonst nichts machen
    
        }
    
    });
    
    on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:false},function(obj){
    
    //Aktueller Status von der Harmony Aktivität    
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
    
        //Wenn eine Aktivität gestartet ist
        if (cstatus === 2){
    
            //Dann Schalte die aktuelle Aktivität aus
            setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3);
            log("aus"); 
        }
        else{
             //Sonst nichts machen
        }
    });
    

    Script: Musik hören_v1.0

    on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:1},function(obj){
    
        //schreibt den Status des Schalters in die Varibale
        var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
    
         //Wenn PS4 an 
        if (psstatus === true){
    
            //Dann Starte nur Spotify
            log("only Spotify");
            exec("ps4-waker start CUSA01780");
    
        } else {
                //Sonst PS4 einschalten und Schalter aktualisieren
                log("an"); 
                setState("PS4.Schalter"/*Schalter*/,true);
                setState("Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,true);
    
                //Nachdem die PS4 eingeschaltet ist Spotify starten
                setTimeout(function(obj){
                    exec("ps4-waker start CUSA01780");
                },40000);
    
        }
    
    });
    
    on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:3},function(obj){
        log("aus");   
        //Schaltet PS4 und State Musik hören aus
        setState("PS4.Schalter"/*Schalter*/,false);
        setState("Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,false);
    });
    

    Script: Musik hören_Homekit_v1.0

    on({id:"Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,val:true},function(obj){
    
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
    
        if (cstatus === 0){
            setState("harmony.0.Harmony_Hub.activities.Musik"/*activity:Heimkino*/,1)
            log("starten");
        }
        else{
    
        }
    
    });
    
    on({id:"Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,val:false},function(obj){
    
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
    
         if (cstatus === 2){
            setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3)
            log("aus"); 
     }
        else{
    
        }
    });
    

    Script: Netflix_v1.0

    on({id:"harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,val:1},function(obj){
    
       var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val
    
        if (psstatus === true){
    
            log("only Netflix");
            exec("ps4-waker start CUSA00127");
    
        } else {
    
                log("an");   
                setState("PS4.Schalter"/*Schalter*/,true);
                setState("Homekit_Netflix.Schalter"/*Homekit_Netflix.Schalter*/,true);
    
                setTimeout(function(obj){
                    exec("ps4-waker start CUSA00127");
                },40000);
    
        }
    
    });
    
    on({id:"harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,val:3},function(obj){
        log("aus");   
        setState("PS4.Schalter"/*Schalter*/,false);
        setState("Homekit_Netflix.Schalter"/*Homekit_Netflix.Schalter*/,false);
    });
    

    Script: Netlfix_Homekit_v1.0

    on({id:"Homekit_Netflix.Schalter"/*Schalter*/,val:true},function(obj){
    
    var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
    
        if (cstatus === 0){
    
            setState("harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,1)
            log("starten");
        }
        else{
    
        }
    
    });
    
    on({id:"Homekit_Netflix.Schalter"/*Schalter*/,val:false},function(obj){
    
        var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
    
        if (cstatus === 2){
            setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3)
            log("aus"); 
        }
        else{
    
        }
    
    });
    
    

    Script: Play Spotify

    on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:1},function(obj){
    
    var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
    
    if (psstatus === true){
        log("sofort");
        setTimeout(function(obj){
                setState("spotify-premium.0.getDevices"/*refresh device list*/,true);
                log("Geräteliste aktualisieren");
    
                    setTimeout(function(obj){    
                        setState("spotify-premium.0.devices.[b][i][u]DeviceID_Einfügen[/u][/i][/b].useForPlayback"/*press to use device for playback*/,true);
                        log("PS4 auswählen"); 
                    },5000);
    
                    setTimeout(function(obj){        
                        setState("spotify-premium.0.player.play"/*play*/,true);
                        log("Play"); 
                    },7000);
        },15000);
    
    } else {
        log("verspätet");
        setTimeout(function(obj){
                   setState("spotify-premium.0.getDevices"/*refresh device list*/,true);
                   log("Geräteliste aktualisieren"); 
    
                   setTimeout(function(obj){
                       setState("spotify-premium.0.devices.[b][i][u]DeviceID_Einfügen[/u][/i][/b].useForPlayback"/*press to use device for playback*/,true);
                   log("PS4 auswählen"); 
                   },5000);
    
                     setTimeout(function(obj){
                   setState("spotify-premium.0.player.play"/*play*/,true);
                   log("Play"); 
                     },7000);
                },55000);
    }
    
    });
    

    Wenn ihr fragen habt fragt einfach. Ich versuch so gut wie möglich zu helfen.

    ioBroker auf einem Raspberry 3
    Adapters: Harmony, Hue, Javascript, MyStrom, Parser, Telegram, Spotify und Yhaka

    K 1 Antwort Letzte Antwort
    0
    • F Offline
      F Offline
      Fonzo
      schrieb am zuletzt editiert von
      #2

      Hast Du es irgendwie geschaftt über den https://www.harmony-remote-forum.de/viewtopic.php?f=49&t=14600&sid=742c7155bf898a1e0258cf114efa9a82&p=115861#p109673 wenn eine Passwort Abfrage besteht? Ansonsten ist das ja schlecht zu automatisieren wenn man nach dem Einschalten dann doch wieder den PS4 Controller braucht. Bei mir wird zwar die PS4 eingeschaltet, ich muss dann aber danach auf den PS4 Controler wechseln um den Passcode zu bestätigen. In sofern ist es bei mir nicht möglich eine APP wie Netflix automatisch zu starten mit der Harmony Remote, da ich so oder so am Anmeldebildschirm hänge und dann den PS4 Controller nutzten muss.

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        noaboa
        schrieb am zuletzt editiert von
        #3

        Ich habe kein Passwort auf meinem Konto. Hatte nie eines und hat deshalb immer funktioniert. Aber kann es mal testen.

        Einfach die nummern senden kann ps4-waker nicht. Du könntest höchstens mit den befehlen den die richtigen Tasten auf der Tastatur drücken lassen.

        ioBroker auf einem Raspberry 3
        Adapters: Harmony, Hue, Javascript, MyStrom, Parser, Telegram, Spotify und Yhaka

        1 Antwort Letzte Antwort
        0
        • F Offline
          F Offline
          Fonzo
          schrieb am zuletzt editiert von
          #4

          @noaboa:

          Ich habe kein Passwort auf meinem Konto. Hatte nie eines und hat deshalb immer funktioniert. Aber kann es mal testen. `
          Das wäre nett falls Du die Zeit findest. Dass es ohne Passwort Schutz funtioniert weis ich, das ist aber bei mir keine Option, da mehrere Profile auf der PS4 laufen und auch Kinder im Haus die PS4 nutzten. Daher kann ich nur die PS4 aufwecken und muss dann mit dem Controller das Passwort eingeben.

          @noaboa:

          Einfach die nummern senden kann ps4-waker nicht. Du könntest höchstens mit den befehlen den die richtigen Tasten auf der Tastatur drücken lassen. `
          Ich selber nutzte zwar kein ps4-waker aber das mit Befehlen senden habe ich schon probiert eine Reaktion habe ich aber erst hinbekommen nachdem die Passwort Eingabe über den Controller abgeschlossen ist. Macht auf der einen Seite wohl auch Sinn, dass man die Sicherheit nicht über das Netzwerk aushebeln kann, ist aber etwas einschränkend, weil man eben nicht direkt durchstarten kann und eine App starten ohne zwischendurch mit einem Controller das Passwort zu übergeben. So richtig funktioniert das also mit dem Starten von Apps aus dem Standby bei mir zur Zeit nur wenn man die PS4 alleine nutzt ohne Passwort Abfrage.

          1 Antwort Letzte Antwort
          0
          • N Offline
            N Offline
            noaboa
            schrieb am zuletzt editiert von
            #5

            Kein porblem.

            was nutzt du denn?

            Ich wusste hab mal was gelesen mit pin oder passwort das es evtl geht.

            Hier schau:

            –pin <pin-code>Manual pin-code registration

            --pass <passcode>Provide passcode for login, if needed

            Dass steht auf der NPM sowie der Github seite von ps4-waker.

            Wie schaltest du denn deine PS4 ein?</passcode></pin-code>

            ioBroker auf einem Raspberry 3
            Adapters: Harmony, Hue, Javascript, MyStrom, Parser, Telegram, Spotify und Yhaka

            1 Antwort Letzte Antwort
            0
            • solo99S Offline
              solo99S Offline
              solo99
              schrieb am zuletzt editiert von
              #6

              Hallo,

              ich möchte meine Ps4 auch mit Harmony/Amazon einschalten.

              Weiß aber nicht genau wie ich vorgehen soll, da ich da eher ein Anfänger bin.

              Im ioBroker habe ich harmony.0 , javascript.0 und yahka.0 installiert.

              Wo und wie kann ich jetzt das NPM Modul ps4-waker installieren?

              Danke für die Hilfe.

              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                denjo
                schrieb am zuletzt editiert von
                #7

                ich würde auch gern ps4 waker nutzen da ich aber auch nicht der profi bin wäre eine genauere Anleitung echt nett, ich verstehe das mit den npm modul schon nicht.

                mfg

                1 Antwort Letzte Antwort
                0
                • N noaboa

                  Hallo zusammen

                  Seit längerem verfolge ich das Ziel mein Heimkino zu automatisieren. Nun ist mir dies gelungen und möchte hier grob Dokumentieren wie ich dies auf die Beine gestellt habe. Schritte um die Adapter zu konfigurieren sind bereits vorhanden deshalb werde ich auf dies grösstenteils verzichten.

                  Anregungen oder Verbesserungen vom Code sind sehr willkommen, da ich kein Programmierer bin.

                  Mein Ziel:

                  Mit der Harmony Companion Fernbedienung sowie HomeKit mein TV und Samsung Soundsystem sowie die Playstation einzuschalten und zu bedienen.

                  Aktivitäten auf dem Harmony Hub

                  Heimkino

                  Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User.

                  Netflix

                  Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User dazu noch Netflix starten.

                  Spotify

                  Diese Aktivität soll mein Sony TV, Samsung Soundsystem sowie die Playstation 4 einschalten und sich einloggen mit dem zuletzt verwendetem User dazu noch Spotify starten und den aktuellen Titel wiedergeben.

                  Die Aktivitäten sollen über die Aktionstasten auf der Fernbedienung als auch über HomeKit ein und aus geschaltet werden können.

                  Benötigte Adapter:

                  • Logitech Harmony Adapter

                  • JavaScript Adapter + NPM Modul ps4-waker

                  • Yahka

                  • Spotify-premium Adapter

                  PS4 mit Harmony Aktivität starten/über HomeKit starten

                  Da das Harmony Hub die PlayStation 4 nicht einschalten kann sondern nur per Bluetooth steuern, kommt hier das NPM Modul „ps4-waker“ zum Einsatz. Dieses NPM Modul muss auf dem Raspberry installiert. Danach in den JavaScript Adapter eingetragen.

                  Somit kann mit dem Befehl über die Konsole ps4-waker konfigurieren (mit der PlayStation verbinden).

                  Und danach in einem Script mit

                  exec("ps4-waker");
                  

                  ausgeführt werden.

                  Danach habe ich ein State erstellt welcher PS4.Schalter heisst und folgendes Script.

                  Script: PS4

                  /*Wenn PS4.Schalter ein*/
                  on({id:"PS4.Schalter"/*Schalter*/, val:true},function(obj){
                  
                      //Log eintrag
                      log("einschalten");
                  
                      //Befehl PS4 Starten über ps4-waker
                      exec("ps4-waker");
                  
                  });
                  
                  /*Wenn PS4.Schalter aus*/
                  on({id:"PS4.Schalter"/*Schalter*/, val:false},function(obj){
                  
                      //Log eintrag
                      log("ausschalten");
                  
                      //Befehl PS4 Standby über ps4-waker
                      exec("ps4-waker standby");
                  
                  })
                  

                  Es hört auf den Schalter und wenn dieser ein oder aus geschaltet wird sendet es den Befehl um die PS4 ein zuschalten resp. in Standby Modus zu versetzen.

                  Nun erstellen wir den Schalter im Yahka:

                  Name: PS4

                  Kategorie: Switch

                  Fügen einen Service hinzu.

                  Service-Type: Switch

                  ON

                  1: InOutFunktion ioBroker.State

                  2: Umwandlungsfunktion passthrough

                  1: InOutParams PS4.Schalter

                  2: Umwandlungsparameter PS4.Schalter

                  Jetzt können wir bereits die PS4 mit HomeKit ein/ausschalten.

                  Um die PS4 über eine Harmony Aktivität zu starten habe ich ein weiteres Script geschrieben.

                  Script: Heimkino_v0.1

                  on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:1},function(obj){
                  //Log eintrag
                  log("starten");
                  //Triggert PS Script um PS4 einzuschalten
                  setState("PS4.Schalter"/*Schalter*/,true);
                   /*Befehl wird erneut ausgeführt, da das Login triggert sonst bleibt es hängen bei der User Auswahl*/       
                          setTimeout(function(obj){
                                  exec("ps4-waker");
                              },40000);     
                      }    
                  on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:3},function(obj){
                  //Log eintrag
                      log("aus");   
                  //Triggert PS Script um PS4 auszuschalten
                      setState("PS4.Schalter"/*Schalter*/,false);
                  });
                  

                  Um Nun die Aktivität über HomeKit ein und aus zu schalten, müssen wir erneut einen State anlegen welcher Homekit Steuern kann, da HomeKit nicht die korrekten Befehle an Hamrony senden kann.

                  Ich habe ihn „Homekit_Heimkino.Schalter“ genannt. Und hier dazu das Script

                  Script: Heimkino_Homekit_v0.1

                  on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:true},function(obj){
                  //Aktueller Status von der Harmony Aktivität
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
                     //Wenn keine Aktivität gestartet ist 
                      if (cstatus === 0){
                          //Dann Starte die Aktivität Heimkino
                          setState("harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,1);
                          log("starten");
                      }
                      else{
                          //wenn sie gestartet ist muss sie nicht nochmals gestartet werden sonst gibt es eine schlaufe.
                      }
                  });
                  
                  on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:false},function(obj){
                  //Aktueller Status von der Harmony Aktivität
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
                     //Wenn eine Aktivität gestartet ist 
                      if (cstatus === 2){.
                  //Dann Schalte Sie aus
                          setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3);
                          log("aus"); 
                      }
                      else{
                  //wenn sie gestartet ist muss sie nicht nochmals gestartet werden sonst gibt es eine schlaufe.
                      }
                  });
                  

                  Damit der HomeKit State auch aktuell bleibt müssen wir das vorherige Script ergänzen mit:

                  Dieser

                  setState("Homekit_Heimkino.Schalter"/*Schalter*/,true);
                  

                  direkt nach

                  setState("PS4.Schalter"/*Schalter*/,true);
                  

                  Und dieser

                  setState("Homekit_Heimkino.Schalter"/*Schalter*/,false);
                  

                  direkt nach

                  setState("PS4.Schalter"/*Schalter*/,false);
                  

                  Nun haben wir das grundlegende mal durch.

                  Ich habe die Script noch weiter angepasst, damit ich Netflix oder Youtube öffnen kann mit der Fernbedienung über die Aktionstasten von der Harmony Fernbedienung. Und beim Drucken der Heimkino taste kann ich das aktuelle Spiel oder die Anwendung schliessen.

                  Wenn ich Spotify Öffne habe ich noch ein weitere Script erstellt welches dann direkt den aktuellen Song von Spotify abspielt.

                  Hier alle meine Scripts aktuellen Scripts. Evtl sind noch anpassungen nötig. z.B. ID's anpassen oder setTimeout länger oder kürzer setzen und natürlich muss man auch noch weitere States anlegen wenn man mehr als ein Script resp Aktivität hat sowie auch im Yahka die Devices anlegen damit sie über HomeKit steuerbar sind.

                  Script: Heimkino_v1.0

                  on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:1},function(obj){
                  
                      //schreibt den Status des Schalters in die Varibale
                      var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
                  
                      //Wenn PS4 an 
                      if (psstatus === true){
                  
                          //Dann PS4 Anwendung schliessen
                          log("zurücksetzen");
                          exec("ps4-waker remote ps:1000 up up  up up up up up up enter down down enter");
                  
                      } else {
                  
                          //Sonst PS4 einschalten und Schalter aktualisieren
                          log("starten");
                          setState("PS4.Schalter"/*Schalter*/,true);
                          setState("Homekit_Heimkino.Schalter"/*Schalter*/,true);
                  
                          //PS4 Login
                          setTimeout(function(obj){
                                  exec("ps4-waker");
                              },40000);
                  
                      }    
                  
                  });
                  
                  on({id:"harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,val:3},function(obj){
                      log("aus");   
                      //Schaltet PS4 und State Heimkino aus
                      setState("PS4.Schalter"/*Schalter*/,false);
                      setState("Homekit_Heimkino.Schalter"/*Schalter*/,false);
                  });
                  

                  Script: Homekit_Heimkino_v1.0

                  on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:true},function(obj){
                  
                  //Aktueller Status von der Harmony Aktivität
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
                  
                     //Wenn keine Aktivität gestartet ist 
                      if (cstatus === 0){
                  
                          //Dann Starte die Aktivität Heimkino
                          setState("harmony.0.Harmony_Hub.activities.Heimkino"/*activity:Heimkino*/,1);
                          log("starten");
                      }
                      else{
                          //Sonst nichts machen
                  
                      }
                  
                  });
                  
                  on({id:"Homekit_Heimkino.Schalter"/*Schalter*/,val:false},function(obj){
                  
                  //Aktueller Status von der Harmony Aktivität    
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val;
                  
                      //Wenn eine Aktivität gestartet ist
                      if (cstatus === 2){
                  
                          //Dann Schalte die aktuelle Aktivität aus
                          setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3);
                          log("aus"); 
                      }
                      else{
                           //Sonst nichts machen
                      }
                  });
                  

                  Script: Musik hören_v1.0

                  on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:1},function(obj){
                  
                      //schreibt den Status des Schalters in die Varibale
                      var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
                  
                       //Wenn PS4 an 
                      if (psstatus === true){
                  
                          //Dann Starte nur Spotify
                          log("only Spotify");
                          exec("ps4-waker start CUSA01780");
                  
                      } else {
                              //Sonst PS4 einschalten und Schalter aktualisieren
                              log("an"); 
                              setState("PS4.Schalter"/*Schalter*/,true);
                              setState("Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,true);
                  
                              //Nachdem die PS4 eingeschaltet ist Spotify starten
                              setTimeout(function(obj){
                                  exec("ps4-waker start CUSA01780");
                              },40000);
                  
                      }
                  
                  });
                  
                  on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:3},function(obj){
                      log("aus");   
                      //Schaltet PS4 und State Musik hören aus
                      setState("PS4.Schalter"/*Schalter*/,false);
                      setState("Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,false);
                  });
                  

                  Script: Musik hören_Homekit_v1.0

                  on({id:"Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,val:true},function(obj){
                  
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
                  
                      if (cstatus === 0){
                          setState("harmony.0.Harmony_Hub.activities.Musik"/*activity:Heimkino*/,1)
                          log("starten");
                      }
                      else{
                  
                      }
                  
                  });
                  
                  on({id:"Homekit_Musik-hören.Schalter"/*Homekit_Musik-hören.Schalter*/,val:false},function(obj){
                  
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
                  
                       if (cstatus === 2){
                          setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3)
                          log("aus"); 
                   }
                      else{
                  
                      }
                  });
                  

                  Script: Netflix_v1.0

                  on({id:"harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,val:1},function(obj){
                  
                     var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val
                  
                      if (psstatus === true){
                  
                          log("only Netflix");
                          exec("ps4-waker start CUSA00127");
                  
                      } else {
                  
                              log("an");   
                              setState("PS4.Schalter"/*Schalter*/,true);
                              setState("Homekit_Netflix.Schalter"/*Homekit_Netflix.Schalter*/,true);
                  
                              setTimeout(function(obj){
                                  exec("ps4-waker start CUSA00127");
                              },40000);
                  
                      }
                  
                  });
                  
                  on({id:"harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,val:3},function(obj){
                      log("aus");   
                      setState("PS4.Schalter"/*Schalter*/,false);
                      setState("Homekit_Netflix.Schalter"/*Homekit_Netflix.Schalter*/,false);
                  });
                  

                  Script: Netlfix_Homekit_v1.0

                  on({id:"Homekit_Netflix.Schalter"/*Schalter*/,val:true},function(obj){
                  
                  var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
                  
                      if (cstatus === 0){
                  
                          setState("harmony.0.Harmony_Hub.activities.Netflix"/*activity:Netflix*/,1)
                          log("starten");
                      }
                      else{
                  
                      }
                  
                  });
                  
                  on({id:"Homekit_Netflix.Schalter"/*Schalter*/,val:false},function(obj){
                  
                      var cstatus = getState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/).val
                  
                      if (cstatus === 2){
                          setState("harmony.0.Harmony_Hub.activities.currentStatus"/*activity:currentStatus*/,3)
                          log("aus"); 
                      }
                      else{
                  
                      }
                  
                  });
                  
                  

                  Script: Play Spotify

                  on({id:"harmony.0.Harmony_Hub.activities.Musik"/*activity:Musik*/,val:1},function(obj){
                  
                  var psstatus = getState("PS4.Schalter"/*PS4.Schalter*/).val;
                  
                  if (psstatus === true){
                      log("sofort");
                      setTimeout(function(obj){
                              setState("spotify-premium.0.getDevices"/*refresh device list*/,true);
                              log("Geräteliste aktualisieren");
                  
                                  setTimeout(function(obj){    
                                      setState("spotify-premium.0.devices.[b][i][u]DeviceID_Einfügen[/u][/i][/b].useForPlayback"/*press to use device for playback*/,true);
                                      log("PS4 auswählen"); 
                                  },5000);
                  
                                  setTimeout(function(obj){        
                                      setState("spotify-premium.0.player.play"/*play*/,true);
                                      log("Play"); 
                                  },7000);
                      },15000);
                  
                  } else {
                      log("verspätet");
                      setTimeout(function(obj){
                                 setState("spotify-premium.0.getDevices"/*refresh device list*/,true);
                                 log("Geräteliste aktualisieren"); 
                  
                                 setTimeout(function(obj){
                                     setState("spotify-premium.0.devices.[b][i][u]DeviceID_Einfügen[/u][/i][/b].useForPlayback"/*press to use device for playback*/,true);
                                 log("PS4 auswählen"); 
                                 },5000);
                  
                                   setTimeout(function(obj){
                                 setState("spotify-premium.0.player.play"/*play*/,true);
                                 log("Play"); 
                                   },7000);
                              },55000);
                  }
                  
                  });
                  

                  Wenn ihr fragen habt fragt einfach. Ich versuch so gut wie möglich zu helfen.

                  K Offline
                  K Offline
                  kimbel55
                  schrieb am zuletzt editiert von
                  #8

                  @noaboa

                  Könntest du Netterweise den Teil mit dem NPM Adapter (PS4-Waker) genauer ausführen? Ich kriege den zum verrecken nicht ans laufen. In der Rootebene meines Debian funktioniert es ohne Probleme, aber im Iobroker kriege ich ihn nicht ans laufen. Übersehe ich irgendwo etwas? Was meinst du mit im Javascript Adapter eintragen?

                  Ich hoffe Du kannst/willst helfen.

                  Danke

                  N 1 Antwort Letzte Antwort
                  0
                  • K kimbel55

                    @noaboa

                    Könntest du Netterweise den Teil mit dem NPM Adapter (PS4-Waker) genauer ausführen? Ich kriege den zum verrecken nicht ans laufen. In der Rootebene meines Debian funktioniert es ohne Probleme, aber im Iobroker kriege ich ihn nicht ans laufen. Übersehe ich irgendwo etwas? Was meinst du mit im Javascript Adapter eintragen?

                    Ich hoffe Du kannst/willst helfen.

                    Danke

                    N Offline
                    N Offline
                    noaboa
                    schrieb am zuletzt editiert von
                    #9

                    Guten Morgen @kimbel55 und @denjo

                    @denjo Leider habe ich deine Beitrag nicht gesehen.

                    Wo versuchst du den PS4-Waker zum laufen zu kriegen?

                    Ich hab den Javascript Adapter installiert und im Tab "Instanzen" diesen geöffnet nun sollter dort eine Titel mit Feld stehen "Zusätzliche NPM-Module" dort einfach "ps4-waker" eintragen und der Adapter kann per Javascript angesprochen werden unter dem Tab "Script" kannst du neue Scripte anlegen und laufen lassen. Meine Scripts habe ich oben gepostet, diese müsst ihr allerdings noch auf eure Szenen im Harmony anpassen(Button: "ID Einfügen" wenn ein Skript geöffnet ist. Die Scripte laufen, sind aber nicht perfekt allerdings mit meinem Wissenstand damals für mich Zufriedenstellen.

                    Mittlerweile denke ich würde einiges anderst machen wenn ich sie nochmals schreiben müsst aber da ich Home Assistant am testen bin, werde ich diese wahrscheinlich nicht umschreiben ausser Home Assistant kann dies nicht oder ist nicht so zuverlässig wie ioBroker. Aber bisher schaut es sehr gut aus und da ich auch noch meinen eigenen Voice Assistant (Mycroft.ai) bauen möchte, muss ich fast zu Home Assistant wechseln.

                    Gruss

                    Noah

                    ioBroker auf einem Raspberry 3
                    Adapters: Harmony, Hue, Javascript, MyStrom, Parser, Telegram, Spotify und Yhaka

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      kimbel55
                      schrieb am zuletzt editiert von
                      #10

                      @noaboa

                      also ich habe den PS4-Waker unter root mit

                      npm install ps4-waker -g
                      

                      installiert.
                      Dort funktioniert es auch die PS4 zu verbinden und zu Wecken. Dann habe ich genauso wie Du schreibst den PS4-Waker im Javascript Adapter eingetragen. Bildschirmfoto 2020-01-10 um 15.38.37.png

                      Wenn ich dann im Terminaladapter versuche ps4-waker zu starten kommt folgende Meldung:

                      /opt/iobroker$ ps4-waker
                      
                      No credentials; Use the PS4 Second Screen App and try to connect to "PS4-Waker"
                      Root permissions required to start PS4 Dummy
                      Attempting to request root permissions now (we will relinquish them as soon as possible):
                        sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                      
                      We trust you have received the usual lecture from the local System
                      Administrator. It usually boils down to these three things:
                      
                          #1) Respect the privacy of others.
                          #2) Think before you type.
                          #3) With great power comes great responsibility.
                      
                      sudo: no tty present and no askpass program specified
                      /opt/iobroker$  
                      

                      Wenn ich wie angegeben den Code ausführe:

                      sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                      

                      kriege ich als Antwort:

                      /opt/iobroker$ sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                      
                      
                      We trust you have received the usual lecture from the local System
                      Administrator. It usually boils down to these three things:
                      
                          #1) Respect the privacy of others.
                          #2) Think before you type.
                          #3) With great power comes great responsibility.
                      
                      sudo: no tty present and no askpass program specified
                      /opt/iobroker$  
                      

                      Ich weiß nicht mehr weiter.. :cry:

                      N 1 Antwort Letzte Antwort
                      0
                      • K kimbel55

                        @noaboa

                        also ich habe den PS4-Waker unter root mit

                        npm install ps4-waker -g
                        

                        installiert.
                        Dort funktioniert es auch die PS4 zu verbinden und zu Wecken. Dann habe ich genauso wie Du schreibst den PS4-Waker im Javascript Adapter eingetragen. Bildschirmfoto 2020-01-10 um 15.38.37.png

                        Wenn ich dann im Terminaladapter versuche ps4-waker zu starten kommt folgende Meldung:

                        /opt/iobroker$ ps4-waker
                        
                        No credentials; Use the PS4 Second Screen App and try to connect to "PS4-Waker"
                        Root permissions required to start PS4 Dummy
                        Attempting to request root permissions now (we will relinquish them as soon as possible):
                          sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                        
                        We trust you have received the usual lecture from the local System
                        Administrator. It usually boils down to these three things:
                        
                            #1) Respect the privacy of others.
                            #2) Think before you type.
                            #3) With great power comes great responsibility.
                        
                        sudo: no tty present and no askpass program specified
                        /opt/iobroker$  
                        

                        Wenn ich wie angegeben den Code ausführe:

                        sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                        

                        kriege ich als Antwort:

                        /opt/iobroker$ sudo /usr/bin/node /usr/bin/ps4-waker --user-id 1001 -c /home/iobroker/.ps4-wake.credentials.json
                        
                        
                        We trust you have received the usual lecture from the local System
                        Administrator. It usually boils down to these three things:
                        
                            #1) Respect the privacy of others.
                            #2) Think before you type.
                            #3) With great power comes great responsibility.
                        
                        sudo: no tty present and no askpass program specified
                        /opt/iobroker$  
                        

                        Ich weiß nicht mehr weiter.. :cry:

                        N Offline
                        N Offline
                        noaboa
                        schrieb am zuletzt editiert von
                        #11

                        @kimbel55

                        Also ich hab nie den Terminaladapter verwendet.
                        Soweit ich mich erinnern kann habe ich ps4-waker installiert und ausgeführt wie es auf der NPM resp. Github Seite beschrieben ist. Danach immer direkt auf dem Raspi die Konsole geöffnet und dort getestet und die erste Konfiguration gemacht. Dann habe ich die Scripts begonnen zu schreiben. Hatte leider zum Glück nie grosse Probleme. Musste nur einmal die Konfig von ps4-waker löschen da ich die PS4 neu installiert hab.

                        Ich denke wenn du Probleme mit dem ps4-waker hast, bist du ein wenig am falschen Ort. Schau doch mal auf Github.

                        Leider kann ich dir nicht helfen.

                        Gruss

                        Noah

                        ioBroker auf einem Raspberry 3
                        Adapters: Harmony, Hue, Javascript, MyStrom, Parser, Telegram, Spotify und Yhaka

                        1 Antwort Letzte Antwort
                        0
                        • K Offline
                          K Offline
                          kimbel55
                          schrieb am zuletzt editiert von
                          #12

                          @noaboa Ich habe es für mich nun lösen können.. nach etlichen Rollbacks und diversen Versuchen.
                          Also ich hatte verschiedene Herangehensweisen versucht, die alle zu Fehlern führten. Wenn ich in meinem LXC Container in der Konsole

                          npm install ps4-waker -g
                          

                          ausgeführt habe, konnte ich anschließend auch über die Konsole mit dem Befehl

                          ps4-waker
                          

                          die Bindung einleiten.
                          Aber es klappte nicht im IoBroker, weder via Javascript noch per Konsole. Auch der Versuch das Modul über den Javascript Adapter unter Instanzen zu laden funktionierte nicht.
                          Nun läuft es jedoch, ich habe folgendes gemacht, zuerst den IoBroker gestoppt, dann im LXC Container in der Konsole folgenden Befehl ausgeführt

                          setcap cap_net_raw,cap_net_admin=eip /usr/bin/node
                          

                          (dieser scheint die Berechtigungsprobleme aufzuheben), anschließend den IoBroker wieder gestartet und dort über den Terminaladapter folgenden Befehl ausgefüht

                          npm install ps4-waker -g
                          

                          diesmal habe ich auch keine Fehlermeldungen wegen Rootrechten erhalten. Anschließend aus dem Terminaladapter

                          ps4-waker
                          

                          ausgeführt und den Bindungsprozess gestartet.
                          Nun lässt sich die Konsole mit ps4-waker aus dem Ruhezustand wecken und mit
                          ps4-waker standby wieder in den Ruhezustand versetzen lassen.
                          Auch die Exec Befehle im Javascript funktionieren nun.

                          1 Antwort Letzte Antwort
                          0
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          346

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe