NEWS
Node.js Script in iobroker integrieren
-
@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?
-
@unclesam
im Objekt von MQTT habe ich eines der VTO, welches FingerPrintCheck heißt. Das dazugehörige Event hat unter Wert, den folgenden Eintrag:
{"Data":{"FingerPrintID":6,"LocaleTime":"2021-05-03 08:17:42","UTC":1620026262},"deviceType":"VTO4202F","serialNumber":"xxxxxxxxxx"}Ich bräuchte nun den Datenpunkt FingerPrintID im Blockly, da ich gerne nur bei nicht erfolgreichen Fingerabdruckscans eine Aktion auslösen möchte. In einem anderen Thread wurde mir diese Seite empfohlen - https://www.machs-smart.de/json-blockly-einlesen-parsen-verarbeiten/
Ich schau mir das mal an.Danke
-
@pseudoreal Genau, ich würde einfach in einem Blockly oder JavaScript das JSON parsen und dann in einen Datenpunkt abfüllen. Das sollte recht einfach sein. Mit Blockly kann ich aber leider nicht weiterhelfen, das verwende ich nie.
-
@pseudoreal Hallo ich hänge gerade genau an dem Thema Json parsen und hab leider null Ahnung davon ich habe ein Vto 4202 habe das Skript und den mqtt Adapter am laufen und bräuchte jetzt aber normale Datenpunkte z. B. für die einen Gong aber auch wenn möglich für den Türoffner usw. Hast du mir vielleicht ein Skript das funktioniert?
-
@oldi-2000 poste mal so ein json
-
{ "Data": { "LocaleTime": "2021-11-20 20:12:39", "State": 9, "UTC": 1637439159 }, "deviceType": "VTO4202F-P-S2", "serialNumber": "7H05F88PAJ18009" }
Das ist was Mqtt als Datenpunkt raushaut, ich benötige aber möglichst einen Datenpunkt der einfach true bei State = 1 bzw. false bei allen anderen States ist.
Ich hab aber leider null Ahnung vom skripten.