NEWS
Befehle von Neeo nach ioBroker senden
-
@UncleSam das habe ich mir eben auch gedacht und beim zweiten Versuch getestet, aber dann kommt folgender Fehler:
pi@raspberrypi:~ $ node /home/pi/node_modules/neeo_driver-test /home/pi/node_modules/neeo_driver-test/index.js:29 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:47So sieht es jetzt komplett aus:
"use strict"; const neeoapi = require("neeo-sdk"); const http = require("http.min"); let actualDriverObject; actualDriverObject = neeoapi.buildDevice("ioBroker"); // 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 actualDriverObject.addButton({ name: "button-e", label: "Button E" }); // This makes a new button named button-d, on the remote its shown as Button E actualDriverObject.addButton({ name: "button-f", label: "Button F" }); // This makes a new button named button-d, on the remote its shown as Button F actualDriverObject.addButton({ name: "button-g", label: "Button G" }); // This makes a new button named button-d, on the remote its shown as Button G actualDriverObject.addButton({ name: "button-h", label: "Button H" }); // This makes a new button named button-d, on the remote its shown as Button H 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") } }, // 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://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=A"); //Just sneds a http get, use this to controll devices that supports a http get } if (buttonName == "button-b") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=B"); } if (buttonName == "button-c") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=C"); } if (buttonName == "button-d") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=D"); } if (buttonName == "button-e") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=E"); } if (buttonName == "button-f") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=F"); } if (buttonName == "button-g") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=G"); } if (buttonName == "button-h") { http("http://192.168.1.15:8087/set/javascript.0.Eigene_Datenpunkte.Neeo-Button?value=H"); } }); // 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); }); -
@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,})@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=" + newValue); }, getter: (deviceId) => switchState,})Das hier geht, oder? Wenn du etwas änderst, musst du immer schauen, dass die öffnenden und schliessenden Klammern (rund, geschweift, eckig) übereinstimmen.
Ergo sollte es IMHO heissen:
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" } }, getter: (deviceId) => switchState,}) -
@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=" + newValue); }, getter: (deviceId) => switchState,})Das hier geht, oder? Wenn du etwas änderst, musst du immer schauen, dass die öffnenden und schliessenden Klammern (rund, geschweift, eckig) übereinstimmen.
Ergo sollte es IMHO heissen:
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" } }, getter: (deviceId) => switchState,})@UncleSam Gemäss Fehler beim vorherigen Laden des Treibers liegt der Fehler vermutlich an einem anderen Ort?
Zeilen 28 und 29 von index.js
// Here is the code that gets executed when a button is pressed. actualDriverObject.addButtonHandler((buttonName, deviceId) => { -
@UncleSam Gemäss Fehler beim vorherigen Laden des Treibers liegt der Fehler vermutlich an einem anderen Ort?
Zeilen 28 und 29 von index.js
// Here is the code that gets executed when a button is pressed. actualDriverObject.addButtonHandler((buttonName, deviceId) => { -
@Kusi Wenn Zeichen fehlen auf den vorherigen Zeilen, kann es sehr gut sein, dass der Fehler erst auf der nächsten Code-Zeile "zum Vorschein" kommt.
-
@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=" + newValue); }, getter: (deviceId) => switchState,})Das hier geht, oder? Wenn du etwas änderst, musst du immer schauen, dass die öffnenden und schliessenden Klammern (rund, geschweift, eckig) übereinstimmen.
Ergo sollte es IMHO heissen:
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" } }, getter: (deviceId) => switchState,})@UncleSam sagte in Befehle von Neeo nach ioBroker senden:
Ergo sollte es IMHO heissen:
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" } }, getter: (deviceId) => switchState,})Genau. Zeile 10.
-
@UncleSam sagte in Befehle von Neeo nach ioBroker senden:
Ergo sollte es IMHO heissen:
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" } }, getter: (deviceId) => switchState,})Genau. Zeile 10.
@UncleSam Das ist jetzt die Antwort beim Treiber-Start:
pi@raspberrypi:~ $ node /home/pi/node_modules/neeo_driver-test /home/pi/node_modules/neeo_driver-test/index.js:25 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:47Klammer fehlten!
-
@UncleSam Aus meiner Sicht fehlt irgendwo eine schliessende Klammer, denn die Öffnende ist bei
actualDriverObject.addSwitch(Woher weis die If-Schleife eigentlich, ob der Wert/Schalter true oder false isch?
@Kusi sagte in Befehle von Neeo nach ioBroker senden:
Woher weis die If-Schleife eigentlich, ob der Wert/Schalter true oder false isch?
if (newValue)überprüft den übergebenen neuen Wert, wenn dertrue(oder etwas ähnliches) ist, wird das erste ausgeführt, sonst das zweite. -
Sorry, falsches korrigiert:
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"); } }, getter: (deviceId) => switchState,}) -
Sorry, falsches korrigiert:
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"); } }, getter: (deviceId) => switchState,})@UncleSam Wie beende ich denn jetzt den Treiber, ohne dass ich den Raspi neu starten muss??
pi@raspberrypi:~ $ node /home/pi/node_modules/neeo_driver-test # 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 different device type. -
@UncleSam Wie beende ich denn jetzt den Treiber, ohne dass ich den Raspi neu starten muss??
pi@raspberrypi:~ $ node /home/pi/node_modules/neeo_driver-test # 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 different device type.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden