NEWS
Skript für Türöffner löst nicht aus
-
Hallo,
nach zwei Jahren versuche ich es nochmal.
Ich m
ö
chte meine Gartent
ü
r remote entriegeln.Was habe ich?
Ich habe ein Dahu Doorbell System VTO an der T
ü
r VTH im Haus. Das funktioniert als Stand-Alone perfekt.
F
ü
r meine iobroker-Umgebung habe ich diverse Tabletts an der Wand und eine HABPanel Visualisierung drauf.
Den Videostream greife ich mir
ü
ber Motion Eye ab, aber was bisher nicht l
ä
uft, ist ein Button, der mir die Gartent
ü
r entriegelt.
Im Browser kann ich per HTTP API die T
ü
r wie folgt manuell entriegeln.http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1Deshalb habe ich einen Datenpunkt erstellt der bei ausl
ö
sen des Buttons den Wert true setzt und ein JavaSkript f
ü
r den http request gebastelt (zun
ä
chst mit Blockly probiert), das auf den Datenpunkt reagiert:on({ id: [].concat(['0_userdata.0.Gartentuer.Trigger-Tueroeffner']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { require("request")('http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1').on("error", (e) => { console.error(e); }); setStateDelayed('0_userdata.0.Gartentuer.Trigger-Tueroeffner' /* Trigger-Tueroeffner */, false, true, 2000, false); } });Leider reagiert der T
ü
r
ö
ffner
ü
berhaupt nicht.
Was man in den Objekten sehen kann, ist das bei Dr
ü
cken des Buttons der Datenpunkt auf true wechselt und nach 2 Sekunden wieder auf false geht.Iobroker l
ä
uft auf einer virtuellen Debian 12 Installation, alle Adapter sind aktuell.
Architektur x64; Node.js v18.17.1; NPM 9.6.7; Aktive Instanzen 18Was
ü
bersehe ich?
Wer kann mir helfen? -
Hallo,
nach zwei Jahren versuche ich es nochmal.
Ich m
ö
chte meine Gartent
ü
r remote entriegeln.Was habe ich?
Ich habe ein Dahu Doorbell System VTO an der T
ü
r VTH im Haus. Das funktioniert als Stand-Alone perfekt.
F
ü
r meine iobroker-Umgebung habe ich diverse Tabletts an der Wand und eine HABPanel Visualisierung drauf.
Den Videostream greife ich mir
ü
ber Motion Eye ab, aber was bisher nicht l
ä
uft, ist ein Button, der mir die Gartent
ü
r entriegelt.
Im Browser kann ich per HTTP API die T
ü
r wie folgt manuell entriegeln.http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1Deshalb habe ich einen Datenpunkt erstellt der bei ausl
ö
sen des Buttons den Wert true setzt und ein JavaSkript f
ü
r den http request gebastelt (zun
ä
chst mit Blockly probiert), das auf den Datenpunkt reagiert:on({ id: [].concat(['0_userdata.0.Gartentuer.Trigger-Tueroeffner']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { require("request")('http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1').on("error", (e) => { console.error(e); }); setStateDelayed('0_userdata.0.Gartentuer.Trigger-Tueroeffner' /* Trigger-Tueroeffner */, false, true, 2000, false); } });Leider reagiert der T
ü
r
ö
ffner
ü
berhaupt nicht.
Was man in den Objekten sehen kann, ist das bei Dr
ü
cken des Buttons der Datenpunkt auf true wechselt und nach 2 Sekunden wieder auf false geht.Iobroker l
ä
uft auf einer virtuellen Debian 12 Installation, alle Adapter sind aktuell.
Architektur x64; Node.js v18.17.1; NPM 9.6.7; Aktive Instanzen 18Was
ü
bersehe ich?
Wer kann mir helfen?Dein Script sieht
ä
u
ß
erst komisch vor.Probier es so:
var request = require ('request'); on({id: "0_userdata.0.Gartentuer.Trigger-Tueroeffner'", val: true}, function() { request("http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1"); setTimeout(function() { setState('0_userdata.0.Gartentuer.Trigger-Tueroeffner', false); } , 2000); }); -
Dein Script sieht
ä
u
ß
erst komisch vor.Probier es so:
var request = require ('request'); on({id: "0_userdata.0.Gartentuer.Trigger-Tueroeffner'", val: true}, function() { request("http://user:password@192.168.178.60/cgi-bin/accessControl.cgi?action=openDoor&UserID=101&Type=Remote&channel=1"); setTimeout(function() { setState('0_userdata.0.Gartentuer.Trigger-Tueroeffner', false); } , 2000); });@bahnuhr Vielen Dank. Ich habe das so umgesetzt.
Inzwischen glaube ich, dass das Skript funktioniert.
Wenn man im Browser den http Aufruf macht, gibt es im Return ein "ok". An den Tabletts sind die Popup Fenster geblockt. Dort geht der http Aufrauf dann auch ins leere.Unter folgendem Link wird mit Java f
ü
r MQTT gelauscht. Dort habe ich in der DahuaVTO.js einen relevanten Abschnitt gefunden, soweit ich das
ü
berblicke.
link zu DahuaDoorbell2MQTT
in dem DahuaDoorbell2MQTT Projekt gibt es folgenden Abschnitt./** * Remotely triggers the relay 1 (e.g. to open an electric gate). * * In my VTO 2202 F this also triggers the voice announcing the the door has been opened. */ openDoor() { return this.digestClient .fetch( `http://${this.dahua_host}/cgi-bin/accessControl.cgi?action=openDoor&channel=1&UserID=101&Type=Remote` ) .then((r) => { if (r.ok) { console.info('Door relay triggered'); } else { console.error('Error triggering the door relay', e); } }) .catch(e => console.error('Connection error triggering the door relay')); }Ich komme mit dem Thema digestClient nicht zurecht. Das
ü
bersteigt meine Kenntnisse.
Hier wird aber irgendwie darauf reagiert, dass es ein "ok" als Return gibt.
Kann man das irgendwie in Iobroker mit dem Skript erg
ä
nzend umsetzten?Vielen Dank f
ü
r jegliche Hinweise. -
@bahnuhr Vielen Dank. Ich habe das so umgesetzt.
Inzwischen glaube ich, dass das Skript funktioniert.
Wenn man im Browser den http Aufruf macht, gibt es im Return ein "ok". An den Tabletts sind die Popup Fenster geblockt. Dort geht der http Aufrauf dann auch ins leere.Unter folgendem Link wird mit Java f
ü
r MQTT gelauscht. Dort habe ich in der DahuaVTO.js einen relevanten Abschnitt gefunden, soweit ich das
ü
berblicke.
link zu DahuaDoorbell2MQTT
in dem DahuaDoorbell2MQTT Projekt gibt es folgenden Abschnitt./** * Remotely triggers the relay 1 (e.g. to open an electric gate). * * In my VTO 2202 F this also triggers the voice announcing the the door has been opened. */ openDoor() { return this.digestClient .fetch( `http://${this.dahua_host}/cgi-bin/accessControl.cgi?action=openDoor&channel=1&UserID=101&Type=Remote` ) .then((r) => { if (r.ok) { console.info('Door relay triggered'); } else { console.error('Error triggering the door relay', e); } }) .catch(e => console.error('Connection error triggering the door relay')); }Ich komme mit dem Thema digestClient nicht zurecht. Das
ü
bersteigt meine Kenntnisse.
Hier wird aber irgendwie darauf reagiert, dass es ein "ok" als Return gibt.
Kann man das irgendwie in Iobroker mit dem Skript erg
ä
nzend umsetzten?Vielen Dank f
ü
r jegliche Hinweise.Ich wei
ß
nicht was du da machst.
Wenn der http Befehl per Browser geht, dann geht er auch mit request.Insofern bin ich jetzt raus.
Vielleicht kann jemand anders mit deinen
Ü
berlegungen etwas anfangen. -
Ich wei
ß
nicht was du da machst.
Wenn der http Befehl per Browser geht, dann geht er auch mit request.Insofern bin ich jetzt raus.
Vielleicht kann jemand anders mit deinen
Ü
berlegungen etwas anfangen.
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