Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Skript per Alexa an Pioneer SC 2020 senden

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Skript per Alexa an Pioneer SC 2020 senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      Grumpycat9971 last edited by

      Hallo liebe Foren-Mitglieder,

      ich bin hier ganz neu und habe am Wochenende meine ersten Erfahrungen mit ioBroker gemacht. Bin ganz Stolz und kann nun meine Homematic (piVCCU3) mit der Alexa per Sprachbefehle ansteuern. piVCCU3 und ioBroker laufen auf einem Raspberry Pi4.

      Nun würde ich noch gerne meinen alten Pioneer SC2020 ebenfalls mit der Alexa ansprechen. Dazu würde es reichen, wenn ich zwei Befehle per Skript senden könnte. Einmal den Pioneer anzuschalten auf einen bestimmten Eingang setzen und der zweite Befehl, der ihn einfach wieder ausschaltet.
      Von meinem Win11-PC habe ich das schon per Telenet hinbekommen. Dazu sende ich folgendes um ihn einzuschalten und auf den EIngang zu setzen( siehe unten).

      Kann mir jemand sagen wie ich das Skript in iobRoker kopieren kann und dann mit einem Alexa-Befehl z.B. "Alexa, schalte Pioneer Ein" starte?

      Vielen dank euch schon mal und liebe Grüße Bettina

      P.S: Für andere Vorschläge bin ich natürlich auch dankbar, aber bitte so dass es gut beschrieben ist. 🙂

      Set cloner = CreateObject("WScript.Shell")
      cloner.run"cmd"
      WScript.Sleep 1500

      cloner.SendKeys"start telnet 192.168.1.26"
      cloner.SendKeys("{Enter}")
      WScript.Sleep 1500

      cloner.SendKeys"po"
      cloner.SendKeys("{Enter}")
      WScript.Sleep 1500

      cloner.SendKeys"05FN"
      cloner.SendKeys("{Enter}")
      WScript.Sleep 10000

      cloner.SendKeys("^({+})")
      WScript.Sleep 1500

      cloner.SendKeys"quit"
      cloner.SendKeys("{Enter}")
      WScript.Sleep 1500

      set WshShell = CreateObject("WScript.Shell")
      WshShell.AppActivate "c:\windows\system32\cmd.exe"
      WScript.Sleep 1500
      WshShell.SendKeys "%exit"
      WshShell.SendKeys("{Enter}")

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @Grumpycat9971 last edited by

        @grumpycat9971
        Habe selber kein Pioneer, kann es also nicht testen.

        Programm -> Ein- / Ausschalten

        const net = require('net');
        
        function sendToPioneer(commands) {
            const client = new net.Socket();
            client.connect(23, '192.168.1.26', () => {
                console.log('Verbunden mit Pioneer');
                let fullCommand = commands.join('\r');
                client.write(fullCommand + '\r');
            });
        
            client.on('data', (data) => {
                console.log('Antwort:', data.toString());
            });
        
            client.on('error', (err) => {
                console.error('Fehler:', err);
            });
        
            client.on('close', () => {
                console.log('Verbindung geschlossen');
            });
        }
        
        // Beispiel: Gerät einschalten und auf Eingang 05 schalten
        // sendToPioneer(['PO', '05FN']);
        
        // Ausschalten
        // sendToPioneer(['PF']); // "Power Off"
        
        

        DP erstellen

        let pioneerDP = '0_userdata.0.pioneer.on'
        createState( pioneerDP, false, {
            name: 'Pioneer einschalten',
            type: 'boolean',
            role: 'switch',
            def: false,
            read: true,
            write: true,
            smartName: {
                de: 'Pioneer' // So heißt das Gerät für Alexa
            }
        });
        
        on({id: pioneerDP, change: 'any'}, (obj) => {
            if (obj.state.val) {
                sendToPioneer(['PO', '05FN']);
            } else {
                sendToPioneer(['PF']);
            }
        });
        
        
        1 Reply Last reply Reply Quote 0
        • G
          Grumpycat9971 last edited by

          Hallo MCU,
          ich bin noch nicht ganz so fit in ioBroker und brauche daher nochmals deine Hilfe. Die beiden Skripte zu kopiern ist ja nicht so schwer, aber wo lege ich das Programm ein/ausschalten an?

          Habe nun mal den Adapter Javaskript geladen und dann bei Skripte "Pioneer ein" angelegt. Da kan die Frage mit Blocky oder Javaskript. Habe das Javaskript gewählt und da das von dir reinkopiert.
          Skripte.jpg

          Und DP heißt wahrscheinlich Datenpunkt. Den wollte ich bei Objekte anlegen, aber das Plus ist grau und bin ich da überhaupt richtig?
          Objekte.jpg

          Kann ich mit diesen beiden Skripten dann ein und ausschalten?
          Oder nur ein?
          Denn im zweiten Skript wird ja nur eingeschaltet und ein Eingang gewählt.
          Muss ich dann ein drittes Skript anlegen für das Ausschalten?

          M 1 Reply Last reply Reply Quote 0
          • M
            MCU @Grumpycat9971 last edited by MCU

            @grumpycat9971 Beide Skripte müssen in einem javascript sein.
            Habe das script nochmal angepasst, da es noch Fehler gab.

            438dcdaf-32ed-4914-a86f-453d0e09b8c6-image.png

            Bitte das Skript komplett in ein javascript kopieren und dann starten.
            -> DP (ja Datenpunkt) wird dann angelegt,

            Dann mal bei IOT-Adapter schauen, ob er unter Geräte den Pioneer angelegt hat.
            Wenn ja, -> Alexa, suche neue Geräte zur "Alexa" sagen.

            Danach solltest du zur Alexa sagen können -> Alexa, Pioneer an und Alexa, Pioneer aus

            let pioneerDP = '0_userdata.0.pioneer.on'
            createState( pioneerDP, false, {
                name: 'Pioneer einschalten',
                type: 'boolean',
                role: 'switch',
                def: false,
                read: true,
                write: true,
                smartName: {
                    de: 'Pioneer' // So heißt das Gerät für Alexa
                }
            });
             
            on({id: pioneerDP, change: 'any'}, (obj) => {
                if (obj.state.val) {
                    sendToPioneer(['PO', '05FN']);
                } else {
                    sendToPioneer(['PF']);
                }
            });
             
            
            
            const net = require('net');
            function sendToPioneer(commands) {
                const client = new net.Socket();
                client.connect(23, '192.168.1.26', () => {
                    console.log('Verbunden mit Pioneer');
                    let fullCommand = commands.join('\r');
                    client.write(fullCommand + '\r');
                });
             
                client.on('data', (data) => {
                    console.log('Antwort:'+ data.toString());
                });
             
                client.on('error', (err) => {
                    console.error('Fehler:'+ err);
                });
             
                client.on('close', () => {
                    console.log('Verbindung geschlossen');
                });
            }
             
            // Beispiel: Gerät einschalten und auf Eingang 05 schalten
            // sendToPioneer(['PO', '05FN']);
             
            // Ausschalten
            // sendToPioneer(['PF']); // "Power Off"
             
            
            

            Den wollte ich bei Objekte anlegen, aber das Plus ist grau und bin ich da überhaupt richtig?

            Der DP wird mit der Funktion createState angelegt.

            Muss ich dann ein drittes Skript anlegen für das Ausschalten?

            Ist der DP "pioneerDP" -> false -> wird ['PF']) gesendet und damit das Gerät ausgeschaltet?

            1 Reply Last reply Reply Quote 0
            • G
              Grumpycat9971 last edited by Grumpycat9971

              Also das Gerät "Pioneer" ist in der Alexa App nun sichtbar, darin gibt es auch den Button "An" und "Aus". Ich kann ihn weder an- noch ausschalten. Weder über die Buttons noch per Sprachbefehl.

              Auch muss zwingend in dem Skript nach den Senden des PO eine Zeitverzögerung mit 1,5 sec kommen, denn sonst wird nicht auf Eingang 05 geschaltet. Das Problem hatte ich damals mit dem Telnet-Skript.

              Screenshot 2025-04-24 144654.jpg

              M 1 Reply Last reply Reply Quote 0
              • M
                MCU @Grumpycat9971 last edited by MCU

                @grumpycat9971 ok, dann versuchen wir es schrittweise

                ! Pioneer ist ausgeschaltet

                Setze mal den Befehl in das Script, also am Ende hinzufügen und script speichern

                sendToPioneer(['PO']);
                

                Wird das Gerät eingeschaltet?

                Steht im ioBroker-LOG Verbunden mit Pioneer

                1 Reply Last reply Reply Quote 0
                • G
                  Grumpycat9971 last edited by Grumpycat9971

                  Das kommt im Log:
                  Screenshot 2025-04-24 164305.jpg

                  Und leider nein, er lässt sich nicht einschalten. Habe den Befehl wie folgt angehängt:
                  Screenshot 2025-04-24 164403.jpg

                  1 Reply Last reply Reply Quote 0
                  • M
                    MCU last edited by MCU

                    @grumpycat9971
                    Ich hab mal nach anderen Threads gesucht. Würde dieser passen?
                    https://forum.iobroker.net/topic/4024/pioneer-avr-skript/45?lang=en-GB

                    Hab auch dies gefunden über http?
                    https://github.com/rwifall/pioneer-receiver-notes

                    Gib mal in einem Browser dies ein

                    http://192.168.1.26/EventHandler.asp?WebToHostItem=PO
                    

                    Oder in dem vorhandenem Script mal andere Ports verwenden statt 23, Port 80

                    https://community.openhab.org/t/solved-pioneer-binding-fails-on-controling-an-vsx-s520-model-2016/69555

                    1 Reply Last reply Reply Quote 0
                    • G
                      Grumpycat9971 last edited by Grumpycat9971

                      Puh ich habe mir das mal nun durchgeksen und verstehe leider nur Bahnhof. Da gibt es wohl einen selbstgeschriebenen Adpater, ich weiß aber nicht wie man den installierten kann. Die beiden, die ich bis jetzt verwende sind Homematic und Alexa, die gabe es aber über die Suche zu finden und anschließend zu installieren.

                      Wenn ich das wie du geschrieben hast im Browser eingebe geht er an:
                      http://192.168.1.26/EventHandler.asp?WebToHostItem=PO

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        MCU @Grumpycat9971 last edited by MCU

                        @grumpycat9971 Dann machen wir es über http.

                        let pioneerDP = '0_userdata.0.pioneer.on'
                        createState( pioneerDP, false, {
                            name: 'Pioneer einschalten',
                            type: 'boolean',
                            role: 'switch',
                            def: false,
                            read: true,
                            write: true,
                            smartName: {
                                de: 'Pioneer' // So heißt das Gerät für Alexa
                            }
                        });
                         
                        on({id: pioneerDP, change: 'any'}, (obj) => {
                            if (obj.state.val) {
                                sendToPioneer(['PO', '05FN']);
                            } else {
                                sendToPioneer(['PF']);
                            }
                        });
                        
                        function sendToPioneer(commands) {
                            for(let i=0; i<commands.length; i++){
                                setTimeout(function(){
                                    httpGet('http://192.168.1.26/EventHandler.asp?WebToHostItem='+commands[i], function (error, response, body) {
                                        if (error) {
                                            console.error("❌ Fehler beim Einschalten:"+ error);
                                        } else {
                                            // console.log("✅ Pioneer eingeschaltet (PO)");
                                        }
                                    });
                                },1500*i)
                            }
                        }
                        
                        1 Reply Last reply Reply Quote 0
                        • G
                          Grumpycat9971 last edited by Grumpycat9971

                          Aber ausschalten mit ... konnte ich ihn jetzt nicht
                          http://192.168.1.26/EventHandler.asp?WebToHostItem=PF
                          und einschalten ging nur einmal, jetzt ein zweites Mal nicht.
                          Kann das sein, dass der seine Verbindung verliert, da habe ich was in den Links gelesen, die du mir geschickt hast.

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            MCU @Grumpycat9971 last edited by MCU

                            @grumpycat9971 Hatte jetzt gedacht und gehofft es funktioniert über http.

                            Kann das sein, dass der seine Verbindung verliert, da habe ich was in den Links gelesen, die du mir geschickt hast.

                            Hab ich nicht gelesen.

                            Du hast es mit telnet probiert auf dem PI, oder?
                            Welche Befehle hast du dort genutzt?
                            Die Befehle oben sind ja PowerShell-Befehle, oder?

                            Dann kann man es evtl über exec erreichen.

                            1 Reply Last reply Reply Quote 0
                            • G
                              Grumpycat9971 last edited by

                              So ich dachte schon jetzt geht gar nichts mehr, denn ich konnte den Pioneer gar nicht mehr über das Telnet-Skript von mir ansteuern. Dachte dass es evtl. einen Konflikt zwischen ioBroker und Telnet gibt, daher habe ich mal das Skript bei IoBroker und die Instanz gelöscht. Telnet ging immer noch nicht. Dann habe ich Telnet unter Win11 deaktiviert und wieder aktiviert. Immer noch nicht. Aber was etwas brachte war, den Netzstecker am Pioneer für 15 sec zu ziehen.

                              Jetzt geht Telnet wieder und ich kann die Http Befehle von dir über den Browser schicken und zwar alle. Kann ihn einschalten (PO), den Eingang (05FN) wählen und wieder ausschalten (PF).

                              Also wenn du mir mit den http Befehelen vielleicht eine Lösung hast, könnte ich das mal im ioBroker Skript probieren. In den Links von dir, haben die sich richtig ausgetobt. Die steuern damit auch die Lautstärke usw.

                              Das brauche ich alles nicht, denn das mache ich mit der Sonos. Hier hängt die Sonos Connect am Eingang 05FN angeschlossen ist. Ich sage dann einfach Alexa, lauter oder leiser im Wohnzimmer. Sonos läuft nicht über den ioBRoker, sondern direkt mit der Skill in der Alexa-App. Daher brauche ich nur diese 3 Befehle bei Pioneer und bis jetzt habe ich halt dazu immer die Pioneer App hierzu verwendet.

                              Ich wäre dir dankbar für weitere Hilfe, mache aber erst wieder morgen die nächsten Versuche. Vielen lieben Dank und Grüße Bettina

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                MCU @Grumpycat9971 last edited by

                                @grumpycat9971 Das script mit http hatte ich oben weiter schon gesetzt.
                                https://forum.iobroker.net/post/1267676

                                1 Reply Last reply Reply Quote 0
                                • G
                                  Grumpycat9971 last edited by

                                  Moin moin, so ich habe nun das http-Skript versucht und es wird keine Instanz angelegt, also nicht so wie bei dem einen Skript, da hatte ich den Pioneer ja gesehen. daher auch keine Funktion über Alexa Sprache.
                                  Aber Ansteuerung über den Browser geht anch wie vor, liegt also nicht am Pioneer selbt.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    MCU @Grumpycat9971 last edited by MCU

                                    @grumpycat9971
                                    Wenn du das Gerät nicht in IOT gelöscht hast, ist es doch noch vom anderen Script da?
                                    Der DP ist doch geblieben? Oder hattest du den gelöscht?

                                    Hier nochmal etwas mehr logging drin.
                                    -> Script kopieren und starten
                                    -> Alexa, suche neue Geräte
                                    -> Alexa, pioneer an
                                    -> ioBroker-LOG -> Pioneer soll eingeschaltet werden

                                    
                                    let pioneerDP = '0_userdata.0.pioneer.on'
                                    createState( pioneerDP, false, {
                                        name: 'Pioneer einschalten',
                                        type: 'boolean',
                                        role: 'switch',
                                        def: false,
                                        read: true,
                                        write: true,
                                        smartName: {
                                            de: 'Pioneer' // So heißt das Gerät für Alexa
                                        }
                                    });
                                     
                                    on({id: pioneerDP, change: 'any'}, (obj) => {
                                        if (obj.state.val) {
                                            console.log('Pioneer soll eingeschaltet werden');
                                            sendToPioneer(['PO', '05FN']);
                                        } else {
                                            console.log('Pioneer soll ausgeschaltet werden');
                                            sendToPioneer(['PF']);
                                        }
                                    });
                                     
                                    function sendToPioneer(commands) {
                                        for(let i=0; i<commands.length; i++){
                                            setTimeout(function(){
                                                httpGet('http://192.168.1.26/EventHandler.asp?WebToHostItem='+commands[i], function (error, response, body) {
                                                    if (error) {
                                                        console.error("❌ Fehler beim Einschalten:"+ error);
                                                    } else {
                                                        // console.log("✅ Pioneer eingeschaltet (PO)");
                                                    }
                                                });
                                            },1500*i)
                                        }
                                    }
                                    
                                    

                                    Hast du den alexa2-Adapter installiert?
                                    Dann schau mal unter dem DP:
                                    alexa2.0.History.summary
                                    ob dort auch pioneer an drin steht

                                    1 Reply Last reply Reply Quote 0
                                    • G
                                      Grumpycat9971 last edited by

                                      Ja alles gelöscht, weil ja das Telnet-Skript auch nicht mehr lief und ich dachte, dass es da einen Konflikt gab. Erst nach Ausstecken des Pioneer ging ja mein Skript wieder vom Win11 Rechner

                                      1 Reply Last reply Reply Quote 0
                                      • G
                                        Grumpycat9971 last edited by Grumpycat9971

                                        Ja Adapter Alexa2 ist installiert, den brauche ich ja für meine Homematic.
                                        Unter der History kommt nichts:
                                        Screenshot 2025-04-25 100443.jpg
                                        Es kommt auch folgende Fehlermeldung:
                                        Screenshot 2025-04-25 100314.jpg
                                        Aber in der Alexa App ist der Pioneer noch da:
                                        Screenshot_20250425_100124_Amazon Alexa.jpg
                                        Hier kann ich ihn aber auch nicht ein bzw. ausschalten:
                                        Screenshot_20250425_100130_Amazon Alexa.jpg
                                        Ist der immer noch von gestern da? Denn im ioBroker ist er ja nirgends zu sehen.

                                        Hier steht der Pioneer, habe das Skript so benannt:
                                        Screenshot 2025-04-25 100947.jpg

                                        M 1 Reply Last reply Reply Quote 0
                                        • M
                                          MCU @Grumpycat9971 last edited by MCU

                                          @grumpycat9971 Geh mal bitte in die iot-Instanz und schau dort nach, ob es dort ein Pioneer gibt.
                                          c8ce7a92-fbb6-4d8d-bd42-93102c6df62d-image.png

                                          Dies besagt nur, dass es ein script mit dem Namen Pioneer gibt und es gestartet wurde
                                          c6353f29-949a-427e-bc6d-e7802a300d09-image.png

                                          Der DP liegt unter 0_userdata.0.pioneer.on

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            Grumpycat9971 last edited by Grumpycat9971

                                            Ne da ist er ja komischerweise nicht dirin, gestern war es aber da mal drin
                                            Screenshot 2025-04-24 144654.jpg

                                            DB gibt es wohl:
                                            Screenshot 2025-04-25 101916.jpg

                                            M 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            844
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            26
                                            918
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo