NEWS
Node.js Script in iobroker integrieren
-
@rettroo sagte in Node.js Script in iobroker integrieren:
this.dahua_host = 10.0.0.11; this.dahua_username = admin; this.dahua_password = admin123; this.mqtt_broker_host = 10.0.0.10;
Wie ich gesagt habe: dir fehlen Anführungszeichen. Strings müssen immer mit Anführungszeichen geschrieben werden. zB:
this.dahua_host = "10.0.0.11";
Und leere Strings natürlich auch! -
Danke für deine Hilfe. Habe die variablen nun in "" gesetzt. Jetzt bekomme ich folgenden Fehler:
javascript.0 2021-01-27 13:30:19.894 error (954) at Script.runInContext (vm.js:130:18) javascript.0 2021-01-27 13:30:19.894 error (954) at script.js.Dahua:517:1 javascript.0 2021-01-27 13:30:19.894 error (954) at new DahuaVTO (script.js.Dahua:88:26) javascript.0 2021-01-27 13:30:19.894 error (954) TypeError: DigestFetch is not a constructor javascript.0 2021-01-27 13:30:19.894 error (954) ^ javascript.0 2021-01-27 13:30:19.894 error (954) this.digestClient = new DigestFetch( javascript.0 2021-01-27 13:30:19.894 error (954) script.js.Dahua: script.js.Dahua:88 javascript.0 2021-01-27 13:30:19.893 error (954) at Script.runInContext (vm.js:130:18) javascript.0 2021-01-27 13:30:19.893 error (954) at script.js.Dahua:5:13 javascript.0 2021-01-27 13:30:19.893 error (954) at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:389:36) javascript.0 2021-01-27 13:30:19.892 error (954) at require (internal/modules/cjs/helpers.js:74:18) javascript.0 2021-01-27 13:30:19.892 error (954) at Module.require (internal/modules/cjs/loader.js:903:19) javascript.0 2021-01-27 13:30:19.892 error (954) script.js.Dahua: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../md5' javascript.0 2021-01-27 13:30:19.891 error (954) at Script.runInContext (vm.js:130:18) javascript.0 2021-01-27 13:30:19.891 error (954) at script.js.Dahua:1:21 javascript.0 2021-01-27 13:30:19.891 error (954) at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:389:36) javascript.0 2021-01-27 13:30:19.891 error (954) at require (internal/modules/cjs/helpers.js:74:18) javascript.0 2021-01-27 13:30:19.891 error (954) at Module.require (internal/modules/cjs/loader.js:903:19) javascript.0 2021-01-27 13:30:19.891 error (954) script.js.Dahua: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../digest-fetch' javascript.0 2021-01-27 13:30:19.883 info (954) Start javascript script.js.Dahua
-
@rettroo Hast du denn
digest-fetch
bei den benötigten Node Modulen im JavaScript Adapter angegeben? -
@unclesam
ist das so korrekt?
Ich komme der Sache näher, zumindest war MQTT schon kurz verbunden. nun geht aber die javascript Instanz auf Rot kurz nach dem Start des Scriptes.
host.debian 2021-01-27 14:43:01.777 info Restart adapter system.adapter.javascript.0 because enabled host.debian 2021-01-27 14:43:01.777 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:214:10) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at readableAddChunk (_stream_readable.js:273:9) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at addChunk (_stream_readable.js:298:12) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at Socket.emit (events.js:314:20) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at DahuaVTO.receive (script.js.Dahua:288:12) host.debian 2021-01-27 14:43:01.776 error Caught by controller[0]: at DahuaVTO.handleSecondLoginPayload (script.js.Dahua:358:15) host.debian 2021-01-27 14:43:01.775 error Caught by controller[0]: TypeError: console.info is not a function mqtt.0 2021-01-27 14:43:01.772 info (9477) Client [mqttjs_d9328b8b] connection closed: closed javascript.0 2021-01-27 14:43:01.751 error (9509) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.0 2021-01-27 14:43:01.751 error (9509) at Socket.Readable.push (_stream_readable.js:214:10) javascript.0 2021-01-27 14:43:01.751 error (9509) at readableAddChunk (_stream_readable.js:273:9) javascript.0 2021-01-27 14:43:01.751 error (9509) at addChunk (_stream_readable.js:298:12) javascript.0 2021-01-27 14:43:01.751 error (9509) at Socket.EventEmitter.emit (domain.js:483:12) javascript.0 2021-01-27 14:43:01.751 error (9509) at Socket.emit (events.js:314:20) javascript.0 2021-01-27 14:43:01.751 error (9509) at DahuaVTO.receive (script.js.Dahua:288:12) javascript.0 2021-01-27 14:43:01.751 error (9509) at DahuaVTO.handleSecondLoginPayload (script.js.Dahua:358:15) javascript.0 2021-01-27 14:43:01.750 error (9509) script.js.Dahua: TypeError: console.info is not a function mqtt.0 2021-01-27 14:43:01.717 info (9477) Client [mqttjs_d9328b8b] connected with secret 1611754981716_9127 javascript.0 2021-01-27 14:43:01.610 info (9509) script.js.Dahua: registered 0 subscriptions and 0 schedules javascript.0 2021-01-27 14:43:01.554 info (9509) Start javascript script.js.Dahua javascript.0 2021-01-27 14:43:01.554 info (9509) script.js.Test: registered 1 subscription and 0 schedules javascript.0 2021-01-27 14:43:01.552 info (9509) Start javascript script.js.Test javascript.0 2021-01-27 14:43:01.551 info (9509) script.js.Feueralarm: registered 1 subscription and 0 schedules javascript.0 2021-01-27 14:43:01.550 info (9509) Start javascript script.js.Feueralarm javascript.0 2021-01-27 14:43:01.548 info (9509) script.js.Magic: registered 5 subscriptions and 0 schedules javascript.0 2021-01-27 14:43:01.547 info (9509) Start javascript script.js.Magic javascript.0 2021-01-27 14:43:01.546 info (9509) script.js.Licht_WZ: registered 3 subscriptions and 0 schedules javascript.0 2021-01-27 14:43:01.540 info (9509) Start javascript script.js.Licht_WZ javascript.0 2021-01-27 14:43:01.540 info (9509) script.js.BWM: registered 1 subscription and 0 schedules javascript.0 2021-01-27 14:43:01.523 info (9509) Start javascript script.js.BWM javascript.0 2021-01-27 14:43:01.419 info (9509) received all states javascript.0 2021-01-27 14:43:01.395 info (9509) received all objects javascript.0 2021-01-27 14:43:00.835 info (9509) requesting all objects javascript.0 2021-01-27 14:43:00.834 info (9509) requesting all states javascript.0 2021-01-27 14:43:00.782 info (9509) starting. Version 4.8.4 in /opt/iobroker/node_modules/iobroker.javascript, node: v12.19.0, js-controller: 3.1.6 host.debian 2021-01-27 14:42:59.455 info instance system.adapter.javascript.0 started with pid 9509 host.debian 2021-01-27 14:42:29.445 info Restart adapter system.adapter.javascript.0 because enabled host.debian 2021-01-27 14:42:29.445 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.debian 2021-01-27 14:42:29.445 error Caught by controller[0]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23) host.debian 2021-01-27 14:42:29.445 error Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:214:10) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at readableAddChunk (_stream_readable.js:273:9) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at addChunk (_stream_readable.js:298:12) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at Socket.emit (events.js:314:20) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at DahuaVTO.receive (script.js.Dahua:288:12) host.debian 2021-01-27 14:42:29.444 error Caught by controller[0]: at DahuaVTO.handleSecondLoginPayload (script.js.Dahua:358:15) host.debian 2021-01-27 14:42:29.442 error Caught by controller[0]: TypeError: console.info is not a function mqtt.0 2021-01-27 14:42:29.442 info (9477) Client [mqttjs_d19a512b] connection closed: Error: read ECONNRESET mqtt.0 2021-01-27 14:42:29.378 info (9477) Client [mqttjs_d19a512b] connected with secret 1611754949376_714 javascript.0 2021-01-27 14:42:29.410 error (9494) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.0 2021-01-27 14:42:29.410 error (9494) at Socket.Readable.push (_stream_readable.js:214:10) javascript.0 2021-01-27 14:42:29.410 error (9494) at readableAddChunk (_stream_readable.js:273:9) javascript.0 2021-01-27 14:42:29.410 error (9494) at addChunk (_stream_readable.js:298:12) javascript.0 2021-01-27 14:42:29.409 error (9494) at Socket.EventEmitter.emit (domain.js:483:12) javascript.0 2021-01-27 14:42:29.409 error (9494) at Socket.emit (events.js:314:20) javascript.0 2021-01-27 14:42:29.409 error (9494) at DahuaVTO.receive (script.js.Dahua:288:12) javascript.0 2021-01-27 14:42:29.409 error (9494) at DahuaVTO.handleSecondLoginPayload (script.js.Dahua:358:15) javascript.0 2021-01-27 14:42:29.407 error (9494) script.js.Dahua: TypeError: console.info is not a function javascript.0 2021-01-27 14:42:29.270 info (9494) script.js.Dahua: registered 0 subscriptions and 0 schedules javascript.0 2021-01-27 14:42:29.206 info (9494) Start javascript script.js.Dahua
-
@rettroo Jawohl, alles richtig. Das einzige was du wohl noch anpassen musst: alles was
console.<irgendwas>()
ist musst du umschreiben nachlog()
. Denn Konsolen-Logging gibt es keines im JavaScript Adapter. -
@unclesam
Danke, das Script läuft! -
Ich benötige hier bitte noch Unterstützung. Ich bekomme in MQTT folgenden String
{"Data":{"CardNo":"b01xx636","CardType":null,"LocaleTime":"2021-01-28 15:47:08","Method":1,"Name":"OpenDoor","Password":"","ReaderID":"1","RecNo":96,"SnapURL":"","Status":1,"Type":"Entry","UTC":1611848828,"UserID":"2"},"deviceType":"VTO4202F","serialNumber":"6K0xxxxxxx20A0"}
Ich benötige in dem Fall nur die User ID in 0_userdata.0.DahuaUserID
-
@UncleSam
Ich habe mir nun was zusammengebastelt.
Der Datenpunkt "serialNumber" wird geschrieben, der "UserID" nicht. Wie gebe ich den richtig an, da er ja nochmal in "Data" verschachtelt ist.on({id: "mqtt.0.DahuaVTO.AccessControl.Event", change: "any"}, function (obj) { ParseCommand(obj); }); function ParseCommand(obj) { let value = obj.state.val; let serialNumber = ""; let UserID = ""; try { obj = JSON.parse(value); serialNumber = obj.serialNumber; UserID = obj.UserID; setState('0_userdata.0.serialNumber', (serialNumber)); setState('0_userdata.0.UserID', (UserID)); } catch (e) { return; } }
Sonst sauber programmiert?
-
@rettroo sagte in Node.js Script in iobroker integrieren:
Wie gebe ich den richtig an, da er ja nochmal in "Data" verschachtelt ist.
Einfach mit einem Punkt dazwischen:
obj.Data.UserID
-
könntest Du bitte eine Anleitung für "Dummies" erstellen? Was genau muss zu erst installiert werden? Danke
-
@pseudoreal
Hi, kann ich machen sobald ich alles fertig habe. Die Dahua hängt zur Zeit auch noch nicht an der Tür sondern in meinem Büro -
Hi @unclesam,
das Script hat soweit schon ganz gut funktioniert, nun startet es aber nicht mehr und ich bekomme folgenden Fehler.
Was hat es mit dem MD5 auf sich?host.debian 2021-03-10 14:02:45.431 info instance system.adapter.javascript.0 started with pid 2673 host.debian 2021-03-10 14:02:15.418 info Restart adapter system.adapter.javascript.0 because enabled host.debian 2021-03-10 14:02:15.418 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.debian 2021-03-10 14:02:15.418 error Caught by controller[0]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23) host.debian 2021-03-10 14:02:15.418 error Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:214:10) host.debian 2021-03-10 14:02:15.418 error Caught by controller[0]: at readableAddChunk (_stream_readable.js:273:9) host.debian 2021-03-10 14:02:15.418 error Caught by controller[0]: at addChunk (_stream_readable.js:298:12) host.debian 2021-03-10 14:02:15.418 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12) host.debian 2021-03-10 14:02:15.417 error Caught by controller[0]: at Socket.emit (events.js:314:20) host.debian 2021-03-10 14:02:15.417 error Caught by controller[0]: at DahuaVTO.receive (script.js.DAHUA.Dahua_Script:287:12) host.debian 2021-03-10 14:02:15.417 error Caught by controller[0]: at DahuaVTO.handleFirstLoginPayload (script.js.DAHUA.Dahua_Script:330:27) host.debian 2021-03-10 14:02:15.417 error Caught by controller[0]: at DahuaVTO.genMD5Hash (script.js.DAHUA.Dahua_Script:401:24) host.debian 2021-03-10 14:02:15.417 error Caught by controller[0]: TypeError: md5 is not a function mqtt.0 2021-03-10 14:02:15.400 info (1533) Client [mqttjs_09066ccf] connection closed: closed javascript.0 2021-03-10 14:02:15.386 error (2658) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.0 2021-03-10 14:02:15.385 error (2658) at Socket.Readable.push (_stream_readable.js:214:10) javascript.0 2021-03-10 14:02:15.385 error (2658) at readableAddChunk (_stream_readable.js:273:9) javascript.0 2021-03-10 14:02:15.385 error (2658) at addChunk (_stream_readable.js:298:12) javascript.0 2021-03-10 14:02:15.385 error (2658) at Socket.EventEmitter.emit (domain.js:483:12) javascript.0 2021-03-10 14:02:15.385 error (2658) at Socket.emit (events.js:314:20) javascript.0 2021-03-10 14:02:15.385 error (2658) at DahuaVTO.receive (script.js.DAHUA.Dahua_Script:286:12) javascript.0 2021-03-10 14:02:15.385 error (2658) at DahuaVTO.handleFirstLoginPayload (script.js.DAHUA.Dahua_Script:329:27) javascript.0 2021-03-10 14:02:15.385 error (2658) at DahuaVTO.genMD5Hash (script.js.DAHUA.Dahua_Script:400:24) javascript.0 2021-03-10 14:02:15.385 error (2658) script.js.DAHUA.Dahua_Script: TypeError: md5 is not a function mqtt.0 2021-03-10 14:02:15.356 info (1533) Client [mqttjs_09066ccf] connected with secret 1615381335356_7933 javascript.0 2021-03-10 14:02:15.292 info (2658) script.js.DAHUA.Dahua_Script: registered 0 subscriptions and 0 schedules javascript.0 2021-03-10 14:02:15.246 error (2658) at Script.runInContext (vm.js:130:18) javascript.0 2021-03-10 14:02:15.246 error (2658) at script.js.DAHUA.Dahua_Script:518:3 javascript.0 2021-03-10 14:02:15.246 error (2658) at script.js.DAHUA.Dahua_Script:5:13 javascript.0 2021-03-10 14:02:15.245 error (2658) at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:397:36) javascript.0 2021-03-10 14:02:15.245 error (2658) at require (internal/modules/cjs/helpers.js:74:18) javascript.0 2021-03-10 14:02:15.245 error (2658) at Module.require (internal/modules/cjs/loader.js:903:19) javascript.0 2021-03-10 14:02:15.245 error (2658) script.js.DAHUA.Dahua_Script: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../md5'
-
@rettroo Hast du das md5 Modul installiert?
const md5 = require('md5');
Sollte eigentlich schief gehen, wenn du md5 nicht installiert hast, was ich etwas komisch finde. Hast du das etwa aus dem Skript gelöscht?
-
@rettroo
also ich habe jetzt den MQTT server installiert. Das Script in Javascript erstellt und alle Instanzen gestartet. Ich bekomme den Fehler:
(20360) FetchError: request to https://192.168.178.10:443/cgi-bin/magicBox.cgi?action=getSystemInfo failed, reason: unable to verify the first certificateUnter Instanzen ist jedoch MQTT gelb und auch im Script sebst sind mir einige Zeilen als Fehler unterstrichen - zB const DigestFetch = require('digest-fetch');
md5 und digest-fetch sind aber in der JavaScript instanz aktiviert. -
@pseudoreal sagte in Node.js Script in iobroker integrieren:
request to https://192.168.178.10:443/cgi-bin/magicBox.cgi?action=getSystemInfo failed, reason: unable to verify the first certificate
Da steht ja die Fehlermeldung. Du machst HTTPS und das Zertifikat ist ungültig. Muss es denn HTTPS sein? Wie du die Zertifikatsüberprüfung ausschaltest, kann ich dir leider auch nicht sagen (ich kenne digest-fetch nicht).
-
Hi,
wie von @UncleSam angemerkt würde ich das "s" mal weglassen also "http://
MQTT sollte erst grün werden wenn sich das Script mit Dahua verbindet
-
@rettroo @UncleSam
ok, ich habe das https weggelassen uns nun klappt die Verbindung und ich sehe auch im Script log, wenn sich jemand bewegt (VideoEvent) oder jemand klingelt (Invite).Jetzt fehlt mir nur noch die Information wie ich diese in iobroker weiterverarbeite, damit mir zB eine WhatsApp geschickt wird. Habe hier schon gesucht, aber leider nichts gefunden - wahrscheinlich falsche Suchbegriffe. Habt ihr irgendwo ein gutes Tutorial, wie man nun mit den Werten in MQTT weiterarbeitet?
-
@pseudoreal sagte in Node.js Script in iobroker integrieren:
Jetzt fehlt mir nur noch die Information wie ich diese in iobroker weiterverarbeite, damit mir zB eine WhatsApp geschickt wird. Habe hier schon gesucht, aber leider nichts gefunden - wahrscheinlich falsche Suchbegriffe. Habt ihr irgendwo ein gutes Tutorial, wie man nun mit den Werten in MQTT weiterarbeitet?
@pseudoreal Du füllst Datenpunkte ab und schreibst Skripte, Blocklys oder machst Rules. Das hat dann nichts mehr mit deinem Skript zu tun sondern ist ganz gewöhnliches Skripting in ioBroker.
-
-
@pseudoreal was meinst du damit? Kannst du mal in einem Screenshot zeigen, was du wo hast und was du daraus haben willst?