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. Hardware
  4. Befehle von Neeo nach ioBroker senden

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Befehle von Neeo nach ioBroker senden

Geplant Angeheftet Gesperrt Verschoben Hardware
neeo
62 Beiträge 3 Kommentatoren 5.7k 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.
  • K Kusi

    @Kusi sagte in Befehle von Neeo nach ioBroker senden:

    @UncleSam sagte in Befehle von Neeo nach ioBroker senden:

    Etwas verwirren tut mich, dass du buttonName == "Switch" verwendest, oben den Schalter aber name: 'Schalter' nennst.

    Das ist mir gar nicht aufgefallen. Danke für den Hinweis.

    Du meinst damit Datenpunkt?

    UncleSamU Offline
    UncleSamU Offline
    UncleSam
    Developer
    schrieb am zuletzt editiert von
    #30

    @Kusi sagte in Befehle von Neeo nach ioBroker senden:

    Du meinst damit Datenpunkt?

    Sorry, ich bin auf Englisch unterwegs: genau, state = Datenpunkt.

    Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
    ♡-lichen Dank an meine Sponsoren

    K 1 Antwort Letzte Antwort
    0
    • UncleSamU UncleSam

      @Kusi sagte in Befehle von Neeo nach ioBroker senden:

      Du meinst damit Datenpunkt?

      Sorry, ich bin auf Englisch unterwegs: genau, state = Datenpunkt.

      K Offline
      K Offline
      Kusi
      schrieb am zuletzt editiert von Kusi
      #31

      @UncleSam Was ich allerdings noch nicht verstehe, wie ich einem Schalter (aus-ein) die Zuweisung gebe, dass er auf "ein" den Befehl sendet.

      actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{setter: (deviceId, newValue) => switchState = newValue,getter: (deviceId) => switchState,})
      

      Die Konfiguration ist mir ein Rätsel und weis ich nicht, wie dies gemacht werden muss.
      Und gerne hätte ich dann den Befehl in beide Richtungen (aus und ein), damit ich 2 Befehle absetzen kann.

      Ich weis nicht, welche Wörter ich durch was ersetzen muss.

      UncleSamU 1 Antwort Letzte Antwort
      0
      • K Kusi

        @UncleSam Was ich allerdings noch nicht verstehe, wie ich einem Schalter (aus-ein) die Zuweisung gebe, dass er auf "ein" den Befehl sendet.

        actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{setter: (deviceId, newValue) => switchState = newValue,getter: (deviceId) => switchState,})
        

        Die Konfiguration ist mir ein Rätsel und weis ich nicht, wie dies gemacht werden muss.
        Und gerne hätte ich dann den Befehl in beide Richtungen (aus und ein), damit ich 2 Befehle absetzen kann.

        Ich weis nicht, welche Wörter ich durch was ersetzen muss.

        UncleSamU Offline
        UncleSamU Offline
        UncleSam
        Developer
        schrieb am zuletzt editiert von
        #32

        @Kusi sagte in Befehle von Neeo nach ioBroker senden:

        Und gerne hätte ich dann den Befehl in beide Richtungen (aus und ein), damit ich 2 Befehle absetzen kann.

        Selber habe ich das noch nie getestet, aber den ganzen Code hast du ja bereits oben:

        actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{setter: (deviceId, newValue) => switchState = newValue,getter: (deviceId) => switchState,})
        

        setter und getter sind anonyme Javascript Funktionen. Anstatt nur die Variable zu speichern kannst du darin Code ausführen:

        actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
          setter: (deviceId, newValue) => {
            switchState = newValue;
            if (newValue == 'XXXX') {
              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=XXXX"
            } else {
              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=YYYY"
            }
          },
          getter: (deviceId) => switchState,})
        

        (XXXX und YYYY musst du natürlich noch durch die richten Werte ersetzen, die ich auch nicht kenne. Und wie gesagt: ungetestet!)

        Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
        ♡-lichen Dank an meine Sponsoren

        K 1 Antwort Letzte Antwort
        0
        • UncleSamU UncleSam

          @Kusi sagte in Befehle von Neeo nach ioBroker senden:

          Und gerne hätte ich dann den Befehl in beide Richtungen (aus und ein), damit ich 2 Befehle absetzen kann.

          Selber habe ich das noch nie getestet, aber den ganzen Code hast du ja bereits oben:

          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{setter: (deviceId, newValue) => switchState = newValue,getter: (deviceId) => switchState,})
          

          setter und getter sind anonyme Javascript Funktionen. Anstatt nur die Variable zu speichern kannst du darin Code ausführen:

          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
            setter: (deviceId, newValue) => {
              switchState = newValue;
              if (newValue == 'XXXX') {
                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=XXXX"
              } else {
                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=YYYY"
              }
            },
            getter: (deviceId) => switchState,})
          

          (XXXX und YYYY musst du natürlich noch durch die richten Werte ersetzen, die ich auch nicht kenne. Und wie gesagt: ungetestet!)

          K Offline
          K Offline
          Kusi
          schrieb am zuletzt editiert von Kusi
          #33

          @UncleSam sagte in Befehle von Neeo nach ioBroker senden:

          if (newValue == 'XXXX') {

          Mit "richtigen Wert" meinst du den Wert, welcher vom Schalter her kommt wenn dieser auf "ein" gestellt ist, also z.B. true?

          Könnte man diesen ausgegebenen Wert irgendwie auslesen?

          UncleSamU 1 Antwort Letzte Antwort
          0
          • K Kusi

            @UncleSam sagte in Befehle von Neeo nach ioBroker senden:

            if (newValue == 'XXXX') {

            Mit "richtigen Wert" meinst du den Wert, welcher vom Schalter her kommt wenn dieser auf "ein" gestellt ist, also z.B. true?

            Könnte man diesen ausgegebenen Wert irgendwie auslesen?

            UncleSamU Offline
            UncleSamU Offline
            UncleSam
            Developer
            schrieb am zuletzt editiert von
            #34

            @Kusi sagte in Befehle von Neeo nach ioBroker senden:

            Könnte man diesen ausgegebenen Wert irgendwie auslesen?

            Du könntest ihn ja direkt an den Datenpunkt schicken:

            http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
            

            Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
            ♡-lichen Dank an meine Sponsoren

            K 1 Antwort Letzte Antwort
            0
            • UncleSamU UncleSam

              @Kusi sagte in Befehle von Neeo nach ioBroker senden:

              Könnte man diesen ausgegebenen Wert irgendwie auslesen?

              Du könntest ihn ja direkt an den Datenpunkt schicken:

              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
              
              K Offline
              K Offline
              Kusi
              schrieb am zuletzt editiert von
              #35

              @UncleSam Als Antwort im Browser kommt

              {"id":"javascript.0.Eigene_Datenpunkte.Neeo-Switch","value":"\"   newValue","val":"\"   newValue"}
              

              Wert von Datenpunkt ist dann

              "   newValue
              

              Ist ein Zeichen falsch?

              mickymM 1 Antwort Letzte Antwort
              0
              • K Kusi

                @UncleSam Als Antwort im Browser kommt

                {"id":"javascript.0.Eigene_Datenpunkte.Neeo-Switch","value":"\"   newValue","val":"\"   newValue"}
                

                Wert von Datenpunkt ist dann

                "   newValue
                

                Ist ein Zeichen falsch?

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #36

                @Kusi Im Browser geht das auch nicht - da dort ja die Variable "newValue" nicht gesetzt wird.

                @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst - also so:

                actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                  setter: (deviceId, newValue) => {
                    switchState = newValue;
                    http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
                  },
                  getter: (deviceId) => switchState,})
                
                

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                UncleSamU K 3 Antworten Letzte Antwort
                0
                • mickymM mickym

                  @Kusi Im Browser geht das auch nicht - da dort ja die Variable "newValue" nicht gesetzt wird.

                  @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst - also so:

                  actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                    setter: (deviceId, newValue) => {
                      switchState = newValue;
                      http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
                    },
                    getter: (deviceId) => switchState,})
                  
                  
                  UncleSamU Offline
                  UncleSamU Offline
                  UncleSam
                  Developer
                  schrieb am zuletzt editiert von
                  #37

                  @mickym sagte in Befehle von Neeo nach ioBroker senden:

                  @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst

                  Genau.

                  Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                  ♡-lichen Dank an meine Sponsoren

                  1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @Kusi Im Browser geht das auch nicht - da dort ja die Variable "newValue" nicht gesetzt wird.

                    @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst - also so:

                    actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                      setter: (deviceId, newValue) => {
                        switchState = newValue;
                        http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
                      },
                      getter: (deviceId) => switchState,})
                    
                    
                    K Offline
                    K Offline
                    Kusi
                    schrieb am zuletzt editiert von
                    #38

                    @mickym sagte in Befehle von Neeo nach ioBroker senden:

                    @Kusi Im Browser geht das auch nicht - da dort ja die Variable "newValue" nicht gesetzt wird.

                    @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst - also so:

                    actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                      setter: (deviceId, newValue) => {
                        switchState = newValue;
                        http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
                      },
                      getter: (deviceId) => switchState,})
                    
                    

                    ioBroker aktualisiert den Datenpunkt nicht.

                    UncleSamU 1 Antwort Letzte Antwort
                    0
                    • K Kusi

                      @mickym sagte in Befehle von Neeo nach ioBroker senden:

                      @Kusi Im Browser geht das auch nicht - da dort ja die Variable "newValue" nicht gesetzt wird.

                      @UncleSam meint dass Du in dem Code des Treibers für den Switch direkt den Wert übergibst - also so:

                      actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                        setter: (deviceId, newValue) => {
                          switchState = newValue;
                          http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=" + newValue);
                        },
                        getter: (deviceId) => switchState,})
                      
                      

                      ioBroker aktualisiert den Datenpunkt nicht.

                      UncleSamU Offline
                      UncleSamU Offline
                      UncleSam
                      Developer
                      schrieb am zuletzt editiert von UncleSam
                      #39

                      @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                      ioBroker aktualisiert den Datenpunkt nicht.

                      Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                      console.log("Neuer Wert:", newValue);
                      

                      Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                      ♡-lichen Dank an meine Sponsoren

                      K mickymM 2 Antworten Letzte Antwort
                      0
                      • UncleSamU UncleSam

                        @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                        ioBroker aktualisiert den Datenpunkt nicht.

                        Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                        console.log("Neuer Wert:", newValue);
                        

                        Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                        K Offline
                        K Offline
                        Kusi
                        schrieb am zuletzt editiert von
                        #40

                        @UncleSam Ich starte nach jeder Änderung das Raspberry komplett neu, da ich den Dienst nicht stoppen kann.

                        In welchem Log sollte denn eine Änderung sichtbar sein?
                        Folgendes ist in der index.js erstellt von mir:

                        actualDriverObject.addSwitch({ name: 'Schalter2', label: 'Schalter2' },{
                          setter: (deviceId, newValue) => {
                            switchState = newValue;
                            console.log("Neuer Wert:", newValue);
                          },
                          getter: (deviceId) => switchState,})
                        

                        Und folgendes kommt bei jedem Start des Dienstes:

                        pi@raspberrypi:~ $ node /home/pi/node_modules/ioBroker
                        # READY! use the NEEO app to search for: ioBroker
                        
                          ACCESOIRE devices do not have their own recipy slides.
                          You need to add the buttons as shortcuts to an existing device slide,
                          add a dummy device (search for dummy) and add the buttons as shortcut there or
                          change the actualDriverObject.setType line to present this driver as a differe                                                nt device type.
                        
                        

                        Dies ändert auch nicht, wenn ich den Switch drücke...
                        Folgendes erscheint (ebenfalls in Putty), wenn ich einen Button drücke:

                        [CONTROLLER] button-h button pressed
                        [CONTROLLER] button-g button pressed
                        
                        1 Antwort Letzte Antwort
                        0
                        • UncleSamU UncleSam

                          @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                          ioBroker aktualisiert den Datenpunkt nicht.

                          Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                          console.log("Neuer Wert:", newValue);
                          

                          Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                          mickymM Offline
                          mickymM Offline
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #41

                          @UncleSam said in Befehle von Neeo nach ioBroker senden:

                          @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                          ioBroker aktualisiert den Datenpunkt nicht.

                          Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                          console.log("Neuer Wert:", newValue);
                          

                          Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                          Na ich glaube hier gehst Du von einem Missverständnis aus. Der Treiber läuft nicht im iobroker - der wird nur innerhalb des iobrokers gestartet, ist aber ein eigenständiger node.js Prozess.

                          @Kusi Um auszuschliessen, dass es sich einfach bei der Konvertierung um ein Problem handelt, könntest Du den ersten Code von @UncleSam als boolean probieren.

                          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                            setter: (deviceId, newValue) => {
                              switchState = newValue;
                              if (newValue) {
                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                              } else {
                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=falsch"
                              }
                            },
                          

                          Evtl. fehlt aber in dem Treiber was, der dieses newValue und deviceId setzt - aber da kann ich eben nicht helfen, da dies ein Neeo Kenner machen muss.
                          Der erste Schritte wäre dann nämlich tatsächlich, dass Du den letzten Code nochmal mit einem Wert nutzt und testest ob bei Bewegen des Schalters überhaupt was im DP ankommt:

                          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                            setter: (deviceId, newValue) => {
                              switchState = newValue;
                              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );
                            },
                            getter: (deviceId) => switchState,})
                          

                          Wenn da nun im DP nicht Test steht - dann wird die Funktion gar nicht aufgrufen.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          K 2 Antworten Letzte Antwort
                          0
                          • mickymM mickym

                            @UncleSam said in Befehle von Neeo nach ioBroker senden:

                            @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                            ioBroker aktualisiert den Datenpunkt nicht.

                            Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                            console.log("Neuer Wert:", newValue);
                            

                            Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                            Na ich glaube hier gehst Du von einem Missverständnis aus. Der Treiber läuft nicht im iobroker - der wird nur innerhalb des iobrokers gestartet, ist aber ein eigenständiger node.js Prozess.

                            @Kusi Um auszuschliessen, dass es sich einfach bei der Konvertierung um ein Problem handelt, könntest Du den ersten Code von @UncleSam als boolean probieren.

                            actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                              setter: (deviceId, newValue) => {
                                switchState = newValue;
                                if (newValue) {
                                  http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                                } else {
                                  http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=falsch"
                                }
                              },
                            

                            Evtl. fehlt aber in dem Treiber was, der dieses newValue und deviceId setzt - aber da kann ich eben nicht helfen, da dies ein Neeo Kenner machen muss.
                            Der erste Schritte wäre dann nämlich tatsächlich, dass Du den letzten Code nochmal mit einem Wert nutzt und testest ob bei Bewegen des Schalters überhaupt was im DP ankommt:

                            actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                              setter: (deviceId, newValue) => {
                                switchState = newValue;
                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );
                              },
                              getter: (deviceId) => switchState,})
                            

                            Wenn da nun im DP nicht Test steht - dann wird die Funktion gar nicht aufgrufen.

                            K Offline
                            K Offline
                            Kusi
                            schrieb am zuletzt editiert von Kusi
                            #42

                            @mickym
                            Dies erscheint nun beim Start des Treibers:

                            pi@raspberrypi:~ $ node /home/pi/node_modules/ioBroker
                            /home/pi/node_modules/ioBroker/index.js:21
                                  http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            
                            SyntaxError: missing ) after argument list
                                at wrapSafe (internal/modules/cjs/loader.js:1053:16)
                                at Module._compile (internal/modules/cjs/loader.js:1101:27)
                                at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
                                at Module.load (internal/modules/cjs/loader.js:985:32)
                                at Function.Module._load (internal/modules/cjs/loader.js:878:14)
                                at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
                                at internal/main/run_main_module.js:17:47
                            

                            Ich hätte gesagt dass nach dem wahr" noch eine Klammer ) gehört, die habe ich nach wahr" und falsch" eingefügt, dann kommt allerdings folgender Fehler:

                            pi@raspberrypi:~ $ node /home/pi/node_modules/ioBroker
                            /home/pi/node_modules/ioBroker/index.js:28
                            actualDriverObject.addButtonHandler((buttonName, deviceId) => {
                                              ^
                            
                            SyntaxError: Unexpected token '.'
                                at wrapSafe (internal/modules/cjs/loader.js:1053:16)
                                at Module._compile (internal/modules/cjs/loader.js:1101:27)
                                at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
                                at Module.load (internal/modules/cjs/loader.js:985:32)
                                at Function.Module._load (internal/modules/cjs/loader.js:878:14)
                                at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
                                at internal/main/run_main_module.js:17:47
                            
                            
                            1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @UncleSam said in Befehle von Neeo nach ioBroker senden:

                              @Kusi sagte in Befehle von Neeo nach ioBroker senden:

                              ioBroker aktualisiert den Datenpunkt nicht.

                              Dann versuch statt dem http() aufruf einfach mal auf die Konsole zu loggen:

                              console.log("Neuer Wert:", newValue);
                              

                              Selbstverständlich muss nach jeder Änderung der Service oder der Driver neu gestartet werden (nicht aber ioBroker)!

                              Na ich glaube hier gehst Du von einem Missverständnis aus. Der Treiber läuft nicht im iobroker - der wird nur innerhalb des iobrokers gestartet, ist aber ein eigenständiger node.js Prozess.

                              @Kusi Um auszuschliessen, dass es sich einfach bei der Konvertierung um ein Problem handelt, könntest Du den ersten Code von @UncleSam als boolean probieren.

                              actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                                setter: (deviceId, newValue) => {
                                  switchState = newValue;
                                  if (newValue) {
                                    http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                                  } else {
                                    http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=falsch"
                                  }
                                },
                              

                              Evtl. fehlt aber in dem Treiber was, der dieses newValue und deviceId setzt - aber da kann ich eben nicht helfen, da dies ein Neeo Kenner machen muss.
                              Der erste Schritte wäre dann nämlich tatsächlich, dass Du den letzten Code nochmal mit einem Wert nutzt und testest ob bei Bewegen des Schalters überhaupt was im DP ankommt:

                              actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                                setter: (deviceId, newValue) => {
                                  switchState = newValue;
                                  http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );
                                },
                                getter: (deviceId) => switchState,})
                              

                              Wenn da nun im DP nicht Test steht - dann wird die Funktion gar nicht aufgrufen.

                              K Offline
                              K Offline
                              Kusi
                              schrieb am zuletzt editiert von
                              #43

                              @mickym sagte in Befehle von Neeo nach ioBroker senden:

                                                                                                                                                          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{                                                                                                                                                                              setter: (deviceId, newValue) => {                                                                                                                                                                                switchState = newValue;                                                                                                                                                                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );                                                                                                                                                                              },                                                                                                                                                                              getter: (deviceId) => switchState,})
                              

                              Damit ändert sich der Datenpunkt nicht. Gebe ich

                              http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'
                              

                              im Browser ein, dann ändert sich der Datenpunkt auf 'Test'.

                              mickymM 2 Antworten Letzte Antwort
                              0
                              • K Kusi

                                @mickym sagte in Befehle von Neeo nach ioBroker senden:

                                                                                                                                                            actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{                                                                                                                                                                              setter: (deviceId, newValue) => {                                                                                                                                                                                switchState = newValue;                                                                                                                                                                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );                                                                                                                                                                              },                                                                                                                                                                              getter: (deviceId) => switchState,})
                                

                                Damit ändert sich der Datenpunkt nicht. Gebe ich

                                http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'
                                

                                im Browser ein, dann ändert sich der Datenpunkt auf 'Test'.

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von
                                #44

                                @Kusi das ist genau das, was ich befürchtet habe. Das es im Browser funktioniert das war relativ klar. Aber Dein Treiber Deiner Neeo ruft die Funktion gar nicht auf. Ein Pushbutton ist simpel da er keinen Status Kennt und einfach den Befehl rausschießt. Alles andere benötigt aber Kenntnisse in der Treiberprogrammierung. Ggf muss man diese Funktionsaufrufe alle selbst programmieren du musst die zur Laufzeit zugewiesene device id ermitteln usw.

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                1 Antwort Letzte Antwort
                                0
                                • K Kusi

                                  @mickym sagte in Befehle von Neeo nach ioBroker senden:

                                                                                                                                                              actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{                                                                                                                                                                              setter: (deviceId, newValue) => {                                                                                                                                                                                switchState = newValue;                                                                                                                                                                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'" );                                                                                                                                                                              },                                                                                                                                                                              getter: (deviceId) => switchState,})
                                  

                                  Damit ändert sich der Datenpunkt nicht. Gebe ich

                                  http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value='Test'
                                  

                                  im Browser ein, dann ändert sich der Datenpunkt auf 'Test'.

                                  mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #45

                                  @Kusi du kannst noch versuchen ob der HTTP Befehl unter getter ausgeführt - viel Hoffnung habe ich aber nicht

                                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                  1 Antwort Letzte Antwort
                                  0
                                  • K Kusi

                                    Anbei die Vorgehensweise, um von der Neeo-Fernbedienung Befehle an ioBroker zu senden.

                                    Voraussetzung ist Node.js, ioBroker läuft auf einem Raspberry Pi 4.

                                    Zuerst muss die Neeo-SDK installiert werden.

                                    npm install git+https://github.com/NEEOInc/neeo-sdk.git
                                    

                                    Optional können noch Beispiel SDK´s installiert werden, welche dann unter /home/pi/node_modules erscheinen.

                                    npm install git+https://github.com/NEEOInc/neeo-sdk-examples.git
                                    

                                    Danach muss ein Treiber installiert werden, um die Kommunikation von Neeo zu ioBroker zu ermöglichen.

                                    npm install git+https://github.com/nklerk/neeo_driver-simple.git
                                    

                                    Jetzt muss die Datei index.js im Ordner /home/pi/node_modules/neeo_driver-test geöffnet werden. Ich selber habe dafür die Remoteverbindung benutzt. Natürlich kann dies auch über Putty gemacht werden.

                                    "use strict";
                                    const neeoapi = require("neeo-sdk");
                                    const http = require("http.min");
                                    
                                    let actualDriverObject;
                                    actualDriverObject = neeoapi.buildDevice("My first driver"); // change "My first driver" to anything you like but keep the "" characters
                                    actualDriverObject.setType("ACCESSOIRE"); // can be changed to "ACCESSOIRE" or "AVRECEIVER" or "DVB" or "DVD" or "GAMECONSOLE" or "LIGHT" or "MEDIAPLAYER" or "MUSICPLAYER" or "PROJECTOR" or "TV" or "VOD"
                                    actualDriverObject.addButton({ name: "button-a", label: "Button A" }); // This makes a new button named button-a, on the remote its shown as Button A
                                    actualDriverObject.addButton({ name: "button-b", label: "Button B" }); // This makes a new button named button-b, on the remote its shown as Button B
                                    actualDriverObject.addButton({ name: "button-c", label: "Button C" }); // This makes a new button named button-c, on the remote its shown as Button C
                                    actualDriverObject.addButton({ name: "button-d", label: "Button D" }); // This makes a new button named button-d, on the remote its shown as Button D
                                    
                                    // Here is the code that gets executed when a button is pressed.
                                    actualDriverObject.addButtonHandler((buttonName, deviceId) => {
                                      console.log(`[CONTROLLER] ${buttonName} button pressed`);
                                      if (buttonName == "button-a") {
                                        http("http://www.google.com"); //Just sneds a http get, use this to controll devices that supports a http get
                                      }
                                      if (buttonName == "button-b") {
                                        http("http://www.google.com");
                                      }
                                      if (buttonName == "button-c") {
                                        http.post("https://httpbin.org/post", { data: "hello" }); //Sends a http post with json data {data: "hello"}
                                      }
                                      if (buttonName == "button-d") {
                                        http.post("https://httpbin.org/post", { data: "hello" });
                                      }
                                    });
                                    
                                    // change this to set your NEEO brain IP. change 10.2.1.64 to the IP address of your NEEO brain.
                                    const neeoSettings = {
                                      brain: "192.168.1.80",
                                      port: 1104,
                                      name: "eigeneTasten",
                                      devices: [actualDriverObject]
                                    };
                                    
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    // Do not change the code below this point. ///////////////////////////////////////////////////////
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    // Do not change the code below this point. ///////////////////////////////////////////////////////
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    // Do not change the code below this point. ///////////////////////////////////////////////////////
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    // Do not change the code below this point. ///////////////////////////////////////////////////////
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    neeoapi
                                      .startServer(neeoSettings)
                                      .then(() => {
                                        console.log("# READY! use the NEEO app to search for: " + actualDriverObject.devicename);
                                        if (actualDriverObject.type == "ACCESSOIRE") {
                                          console.log("\r\n  ACCESOIRE devices do not have their own recipy slides.");
                                          console.log("  You need to add the buttons as shortcuts to an existing device slide,");
                                          console.log("  add a dummy device (search for dummy) and add the buttons as shortcut there or");
                                          console.log("  change the actualDriverObject.setType line to present this driver as a different device type.");
                                        }
                                      })
                                      .catch(err => {
                                        console.error("ERROR!", err);
                                        process.exit(1);
                                      });
                                    
                                    

                                    In der Zeile 32 muss die IP-Adresse des Brains eingetragen/ersetzt werden.
                                    In der Zeile 17 muss ein *http get"-Befehl hinterlegt werden. Dieser wird dann gesendet, wenn die Taste "button-a" gedrückt wird. Meiner sieht hier wie folgt aus:

                                      if (buttonName == "button-a") {
                                        http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=A");
                                    

                                    Die IP-Adresse ist diese von ioBroker (Raspberry Pi), der Datenpunkt welcher der gesteuert werden soll. Dieser muss vorgängig erstellt werden. Bei mir schickt der Button A den Wert "A" an den Datenpunkt, Button B den Wert "B", usw.
                                    Ausserdem muss noch der Simple RESTful API-Adapter in ioBroker installiert werden.

                                    Wenn die index.js angepasst und gespeichert wurde, dann können wir wieder zurück zu Putty wechseln und starten dann den Treiber wie folgt:

                                    node /home/pi/node_modules/neeo_driver-test
                                    

                                    Der Treiber wird nun geladen und in der Neeo-App kann nach einem neuen Device nach "neeo_driver-test" suchen. Wurde dies gefunden und einem Raum zugeordnet, dann können im gewünschten Recipe die Buttons eingefügt werden. Werden diese gedrückt, dann ändert sich der Datenpunkt in ioBroker.

                                    Wird der Treiber im Putty beendet, dann funktionieren die Tasten auf der Neeo nicht mehr.
                                    Dies habe ich gelöst, indem ich mit Blockly eine Javascript-Funktion mit folgendem Befehl erstellt habe:

                                    exec('node /home/pi/node_modules/neeo_driver-test');
                                    

                                    Natürlich kann der Treiber auch per Autostart vom Raspberry Pi gestartet werden. Damit kenne ich mich aber noch zu wenig aus.

                                    In Blockly kann dann definiert werden, was bei der Änderung des Datenpunktes geschehen soll.
                                    Ich habe zu Testzwecken die Tasten den Shellys für auf/ab zugeordnet.

                                    UncleSamU Offline
                                    UncleSamU Offline
                                    UncleSam
                                    Developer
                                    schrieb am zuletzt editiert von UncleSam
                                    #46

                                    @Kusi Im SDK Quellcode habe ich gesehen, dass newValue tatsächlich ein boolean ist; damit wäre es true oder false wie @mickym geschrieben hat. Weshalb die Callbacks aber nicht aufgerufen werden, verstehe ich auch nicht. Gemäss allen Beschreibungen, die ich gefunden habe, müssen die genau so angegeben werden.

                                    Bist du sicher, dass alles sauber neu geladen wird im Neeo? Hast du mal versucht, einen Button umzubenennen und zu sehen, ob das auf der Fernbedienung auch geschieht?

                                    Ich glaube nämlich langsam, dass das Problem bei der Art liegt, wie du entwickelst. Es sollte wirklich nicht notwendig sein, den RasPi bei jeder Änderung neu zu starten und auch den Pfad /home/pi/node_modules/ioBroker finde ich sehr komisch. Wie bist du auf diesen gekommen? Grundsätzlich sollte man nämlich in einem node_modules-Ordner keine Änderungen machen.

                                    Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                                    ♡-lichen Dank an meine Sponsoren

                                    K 2 Antworten Letzte Antwort
                                    0
                                    • UncleSamU UncleSam

                                      @Kusi Im SDK Quellcode habe ich gesehen, dass newValue tatsächlich ein boolean ist; damit wäre es true oder false wie @mickym geschrieben hat. Weshalb die Callbacks aber nicht aufgerufen werden, verstehe ich auch nicht. Gemäss allen Beschreibungen, die ich gefunden habe, müssen die genau so angegeben werden.

                                      Bist du sicher, dass alles sauber neu geladen wird im Neeo? Hast du mal versucht, einen Button umzubenennen und zu sehen, ob das auf der Fernbedienung auch geschieht?

                                      Ich glaube nämlich langsam, dass das Problem bei der Art liegt, wie du entwickelst. Es sollte wirklich nicht notwendig sein, den RasPi bei jeder Änderung neu zu starten und auch den Pfad /home/pi/node_modules/ioBroker finde ich sehr komisch. Wie bist du auf diesen gekommen? Grundsätzlich sollte man nämlich in einem node_modules-Ordner keine Änderungen machen.

                                      K Offline
                                      K Offline
                                      Kusi
                                      schrieb am zuletzt editiert von
                                      #47

                                      @UncleSam Wenn ich den Treiber lade, kann ich ihn dann kein erneutes mal laden nach Änderungen. Ich kann ihn zwar pausieren, aber nicht stoppen, aus diesem Grund der Raspi-Neustart.

                                      Den Ordner /ioBroker habe ich erstellt, anstelle von /neeo_driver-test.
                                      Habe /ioBroker jetzt gelöscht und lasse den Standardordner.

                                      1 Antwort Letzte Antwort
                                      0
                                      • UncleSamU UncleSam

                                        @Kusi Im SDK Quellcode habe ich gesehen, dass newValue tatsächlich ein boolean ist; damit wäre es true oder false wie @mickym geschrieben hat. Weshalb die Callbacks aber nicht aufgerufen werden, verstehe ich auch nicht. Gemäss allen Beschreibungen, die ich gefunden habe, müssen die genau so angegeben werden.

                                        Bist du sicher, dass alles sauber neu geladen wird im Neeo? Hast du mal versucht, einen Button umzubenennen und zu sehen, ob das auf der Fernbedienung auch geschieht?

                                        Ich glaube nämlich langsam, dass das Problem bei der Art liegt, wie du entwickelst. Es sollte wirklich nicht notwendig sein, den RasPi bei jeder Änderung neu zu starten und auch den Pfad /home/pi/node_modules/ioBroker finde ich sehr komisch. Wie bist du auf diesen gekommen? Grundsätzlich sollte man nämlich in einem node_modules-Ordner keine Änderungen machen.

                                        K Offline
                                        K Offline
                                        Kusi
                                        schrieb am zuletzt editiert von Kusi
                                        #48

                                        @UncleSam sagte in Befehle von Neeo nach ioBroker senden:

                                        SDK Quellcode habe ich gesehen, dass newValue tatsächlich ein boolean ist; damit wäre es true oder false

                                        Wie muss es genau heissen?

                                        Wie folgt kann ich den Treiber nicht laden:

                                        actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                                          setter: (deviceId, newValue) => {
                                            switchState = newValue;
                                            if (newValue) {
                                              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                                            } else {
                                              http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=falsch"
                                            }
                                          },
                                        
                                        UncleSamU 1 Antwort Letzte Antwort
                                        0
                                        • K Kusi

                                          @UncleSam sagte in Befehle von Neeo nach ioBroker senden:

                                          SDK Quellcode habe ich gesehen, dass newValue tatsächlich ein boolean ist; damit wäre es true oder false

                                          Wie muss es genau heissen?

                                          Wie folgt kann ich den Treiber nicht laden:

                                          actualDriverObject.addSwitch({ name: 'Schalter', label: 'Schalter' },{
                                            setter: (deviceId, newValue) => {
                                              switchState = newValue;
                                              if (newValue) {
                                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=wahr"
                                              } else {
                                                http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Switch?value=falsch"
                                              }
                                            },
                                          
                                          UncleSamU Offline
                                          UncleSamU Offline
                                          UncleSam
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #49

                                          @Kusi Die schliessenden Klammern fehlen beim http(...)

                                          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                                          ♡-lichen Dank an meine Sponsoren

                                          K 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

                                          608

                                          Online

                                          32.7k

                                          Benutzer

                                          82.4k

                                          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