Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Favoriten Harmony Adapter

    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

    [gelöst] Favoriten Harmony Adapter

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

      Hallo Zusammen,

      ich bin neu hier Forum. Ich habe ioBroker auf einem RasPi2 laufen.

      Kompliment an die Entwickler. Ich bin begeistert was hier entstanden ist.

      Ich habe folgendes Problem und hoffe von Euch auf eine Lösung.

      Ich habe ein Harmony Hub und möchte gerne die Favoriten vom Harmony Hub

      Zur Verfügung haben. Lässt sich das realisieren?

      Oder wie kann ich bei meinem TV eine dreistellige Senderwahl

      Realisieren?

      Gruß und einen guten Rutsch ins neue Jahr

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo und willkomen im Forum,

        ich kann nur einen Schubs in die richtige Richtung geben, sitze im Hotel. VPN gerade nicht möglich.

        Es geht beim Harmony um das sequentielle Absenden von Befehlen. Jede Taste lässt sich über den Harmony Adapter drücken.

        In einem Javascript zB

        setState(harmony.0.RadioXY.TasteZ, 250)
        

        bedeutet, dass die Taste Z des RadiosXY für 250ms gedrückt wird (bitte Harmony Readme lesen).

        In Kombination mit https://github.com/ioBroker/ioBroker.javascript#setstatedelayed kannst du dir eine Kette von Befehlen zusammenbasteln (fiktives Beispiel):

        // Radio einschalten, Kanal 12 wählen
        setState(harmony.0.RadioXY.TasteToggleONOFF, 250); // nach 0s (kein Delay, nur setState) für 250ms lang Toggle onoff drücken
        setStateDelayed(harmony.0.RadioXY.Taste1, 250, 500); // nach 500ms für 250ms Taste 1 drücken
        setStateDelayed(harmony.0.RadioXY.Taste2, 250, 800); // nach weiteren 300ms für weitere 250ms Taste 2 drücken
        

        Das kann natürlich auch der sequence-Adapter (dafür ist er ja da). Oder eigentlich auch der Scenes-Adapter. Man muss halt die "Drückdauer" im Auge behalten und möglichst realistische Intervalle setzen (mit der Hand auf der Fernbedienung drückt man eher im Sekunden als im 200ms-Bereich).

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Hi pix,

          ich kennen den > sequence-Adapter gar nicht und hab den auch nirgends gefunden. Kannst du mir sagen welcher Adapter das ist.

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Findest du hier direkt beim fleißigen Entwickler hometm

            http://forum.iobroker.net/viewtopic.php … nce#p12361

            Gruß,

            Pix
            9308_raspi_led.jpg

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              Danke pix.

              1 Reply Last reply Reply Quote 0
              • H
                hofmannha last edited by

                Hi Pix,

                vielen Dank für die Antwort. Leider komme ich mit dem Script

                nicht klar. Egal welches Script ich ausführe, ich bekomme im Log

                immer eine Fehlermeldung: "Invalid regular expression: missing /".

                Ich habe versucht einfach nur eine Lampe einzuschalten, da kommt diese

                Meldung. Was kann das sein?

                MfG

                1 Reply Last reply Reply Quote 0
                • Jey Cee
                  Jey Cee Developer last edited by

                  Hofmannha häng doch mal einen Screenshot der Fehlermeldung an auf der man sieht welcher Adapter die Fehlermeldung aus spuckt und dein(e) scripte.

                  Die Fehlermeldung sagt es fehlt ein "/", aber wo kann man so nicht sagen.

                  Gesendet von meinem Tab2A7-10F mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • H
                    hofmannha last edited by

                    Hi pix,

                    ich habe es gefunden, woran es liegt. Ich hatte in der Konfiguration des javascript-Adapters

                    vergessen die Länge und Breite einzutragen. Dann kommt diese Fehlermeldung.

                    Gruß
                    7572_unbenannt.jpg

                    1 Reply Last reply Reply Quote 0
                    • H
                      hofmannha last edited by

                      Hallo pix,

                      ich brauche noch mal deine Hilfe.

                      Ich habe ein Script erstellt nach deinem Schema und es funktioniert.

                      Danke dafür.

                      Taste_101

                      setState("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250); // nach 0s (kein Delay, nur setState) für 250ms lang Taste 1 drücken

                      setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number0", 250, 500); // nach 500ms für 250ms Taste 0 drücken

                      setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250, 800); // nach weiteren 300ms für weitere 250ms Taste 1 drücken

                      Ich möchte nun dieses Script "Taste_101" mit einem Button starten.

                      Es funktioniert nicht.

                      Wenn ich auf "Script neu starten" in dem Tab Scripte drücke funktioniert es, aber mit einem

                      Button mit der entsprechenden Object ID nicht.

                      Zudem ist mir aufgefallen, dass wenn ich das Script neu erstelle, es unter der Object-ID im Object-Browser nicht sichtbar ist.

                      Erst wenn ich noch mal das Script editiere, und erneut speichere, erst dann ist es unter der Object-ID im Object-Browser sichtbar.

                      Gruß

                      1 Reply Last reply Reply Quote 0
                      • P
                        pix last edited by

                        Hallo hofmannha,

                        die Skripte sind nur im Skriptreiter sichtbar, nicht unter Objekte.
                        @hofmannha:

                        Erst wenn ich noch mal das Script editiere, und erneut speichere, erst dann ist es unter der Object-ID im Object-Browser sichtbar. ` Nicht das Skript ist sichtbar, sondern die mit createState erstellten Objekte.

                        @hofmannha:

                        Wenn ich auf "Script neu starten" in dem Tab Scripte drücke funktioniert es, aber mit einem

                        Button mit der entsprechenden Object ID nicht. ` Was meinst du mit "Button der entsprechenden Object ID"?

                        Womit möchtest du das Skript starten? Mit einem Tastendruck auf einem Homematic-Gerät? Ein VIS Widget? Zeitgesteuert?

                        Ich muss da genau nachfragen, sonst reden wir aneinander vorbei.

                        Pix

                        1 Reply Last reply Reply Quote 0
                        • H
                          hofmannha last edited by

                          Hallo Pix,

                          vielleicht nerve ich.

                          Ich möchte ganz einfach obiges Script über einen Button starten.

                          Der Hintergrund ist, dass ich meine TV-Favoriten über eine View mit

                          Widgets (Senderlogos) erstellen möchte und über den Harmony-Hub

                          Mein TV auf das entsprechende Programm zu schalten.

                          Das Obige Script von Dir funktioniert aber wie kann ich mit einem Widget starten?

                          Gruß

                          1 Reply Last reply Reply Quote 0
                          • P
                            pix last edited by

                            Hallo,

                            nein, du nervst nicht. Jetzt weiß ich, dass du einen Button in VIS meinst.

                            Bluefox hat dafür hier mal ein Skript geschrieben.

                            http://forum.iobroker.net/viewtopic.php … tien#p8035

                            Ist daraus nur ein kleiner Ausschnitt.

                            Ich würde das so machen:

                            // Variable zum Triggern anlegen
                            createState('harmony.101', false, {
                               name:'Harmony Aktion Tasten 101 drücken',
                               type: 'boolean',
                               read: true,
                               write: true
                            });
                            
                            // in ID packen
                            var id101 =' javascript.0.harmony.101'; // bitte prüfen, ob das Skript auch in Instanz 0 läuft, sonst anpassen
                            
                            // Aktion in Funktion gepackt
                            function 101_druecken () {
                                setState("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250); // nach 0s (kein Delay, nur setState) für 250ms lang Taste 1 drücken
                                setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number0", 250, 500); // nach 500ms für 250ms Taste 0 drücken
                                setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250, 800); // nach weiteren 300ms für weitere 250ms Taste 1 drücken
                            }
                            
                            // Trigger (wenn Trigger-Variable true)
                            on(id101, function (obj) {
                                if (!obj.newState.ack && obj.newState.val) {
                                    log('VIS Button <harmony 101="">gedrückt');
                                    101_druecken(); // Aktion
                                    setState(id101, false); // zurücksetzen
                                }
                            });</harmony> 
                            

                            In VIS packst du dann in die Einstellungen des Buttons die OID javascript.0.harmony.101

                            Und natürlich kannst du für jede Harmony-Aktion eine weitere Variable und weitere Funktion anlegen. Du musst nur auf die Übersichtlichkeit achten.

                            Gruß

                            Pix

                            1 Reply Last reply Reply Quote 0
                            • H
                              hofmannha last edited by

                              Hallo Pix,

                              vielen Dank für deine Mühe.

                              Ich habe das Script von Dir eingefügt und etwas geändert. Eine Funktion darf nicht

                              mit einer Zahl beginnen. Ich habe mit javascript bisher nichts am Hut gehabt. Ich habe

                              in der Vergangenheit mit Visual Studio und tcl gearbeitet.

                              Ich habe es jetzt so geändert.

                              // Variable zum Triggern anlegen

                              createState('harmony.T101', false, {

                              name:'Harmony Aktion Tasten 101 drücken',

                              type: 'boolean',

                              read: true,

                              write: true

                              });

                              // in ID packen

                              var id101 =' javascript.0.harmony.T101'; // bitte prüfen, ob das Skript auch in Instanz 0 läuft, sonst anpassen

                              // Aktion in Funktion gepackt

                              function druecke_101 () {

                              setState("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250); // nach 0s (kein Delay, nur setState) für 250ms lang Taste 1 drücken

                              setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number0", 250, 500); // nach 500ms für 250ms Taste 0 drücken

                              setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250, 800); // nach weiteren 300ms für weitere 250ms Taste 1 drücken

                              }

                              // Trigger (wenn Trigger-Variable true)

                              on(id101, function (obj) {

                              if (!obj.newState.ack && obj.newState.val) {

                              log('VIS Button <harmony 101="">gedrückt');

                              druecke_101(); // Aktion

                              setState(id101, false); // zurücksetzen

                              }

                              });

                              Ich habe dann in den Eigenschaften des Button die OID "javascript.0.harmony.T101" zugewiesen.

                              Doch leider tut sich nichts nach dem Betätigen des Button.

                              Log:

                              javascript-0 2015-12-31 09:01:21 info script.js.T101: registered 1 subscription and 0 schedules

                              javascript-0 2015-12-31 09:01:21 info Start javascript script.js.T101

                              javascript-0 2015-12-31 09:01:21 info Stop script script.js.T101

                              Gruß</harmony>

                              1 Reply Last reply Reply Quote 0
                              • P
                                pix last edited by

                                Hallo,

                                kriegen wir hin, bei mir klappt es:

                                ! ````
                                // Variable zum Triggern anlegen
                                createState('harmony.T101', false, {
                                name:'Harmony Aktion Tasten 101 drücken',
                                type: 'boolean',
                                read: true,
                                write: true
                                });
                                ! // in ID packen
                                var id101 ="javascript.0.harmony.T101"/Harmony Aktion Tasten 101 drücken/; // bitte prüfen, ob das Skript auch in Instanz 0 läuft, sonst anpassen
                                setState(id101, false, true); // zurücksetzen bei skriptstart
                                ! // Aktion in Funktion gepackt
                                function druecke_101() {
                                setState("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250); // nach 0s (kein Delay, nur setState) für 250ms lang Taste 1 drücken
                                setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number0", 250, 500); // nach 500ms für 250ms Taste 0 drücken
                                setStateDelayed("harmony.0.Wohnzimmer.Philips-Fernseher.Number1", 250, 800); // nach weiteren 300ms für weitere 250ms Taste 1 drücken
                                ! setState(id101, false, true); // zurücksetzen
                                }
                                ! // Trigger (wenn Trigger-Variable true)
                                on(id101, function (obj) {
                                if (!obj.newState.ack && obj.newState.val) {
                                log('VIS Button <harmony 101=""> gedrückt');
                                druecke_101(); // Aktion
                                }
                                });</harmony>

                                
                                Dazu zB dieses Widget:
                                

                                [{"tpl":"tplJquiButtonState","data":{"oid":"javascript.0.harmony.T101","visibility-cond":"==","visibility-val":1,"buttontext":"101","name":"Taste 101","value":"true","no_style":false},"style":{"left":"267px","top":"23px","z-index":"20"},"widgetSet":"jqui"}]

                                Wichtig ist, dass die Javascript Variable immer auf 'false' steht. Deshalb die Rückstellung bei Skriptstart.
                                
                                Porbier mal!
                                
                                Gruß,
                                
                                Pix
                                
                                PS: Evtl. mal die javascript.0-Instanz neustarten. Kann es sein, dass die Variable nicht angelegt wurde?
                                1 Reply Last reply Reply Quote 0
                                • H
                                  hofmannha last edited by

                                  Hi Pix,

                                  es geht super und vielen Dank.

                                  Einen guten Rutsch ins Jahr 2015

                                  Gruß

                                  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

                                  906
                                  Online

                                  31.9k
                                  Users

                                  80.2k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  2525
                                  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