Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Node.js Script in iobroker integrieren

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Node.js Script in iobroker integrieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • UncleSam
      UncleSam Developer @rettroo last edited by

      @rettroo Hast du denn digest-fetch bei den benötigten Node Modulen im JavaScript Adapter angegeben?

      R 1 Reply Last reply Reply Quote 0
      • R
        rettroo @UncleSam last edited by

        @unclesam
        ist das so korrekt?
        01d92ec4-06fa-4d12-ac41-0ffbf11bc1ac-image.png

        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
        
        UncleSam 1 Reply Last reply Reply Quote 0
        • UncleSam
          UncleSam Developer @rettroo last edited by

          @rettroo Jawohl, alles richtig. Das einzige was du wohl noch anpassen musst: alles was console.<irgendwas>()ist musst du umschreiben nach log(). Denn Konsolen-Logging gibt es keines im JavaScript Adapter.

          R 1 Reply Last reply Reply Quote 0
          • R
            rettroo @UncleSam last edited by rettroo

            @unclesam
            Danke, das Script läuft!

            1 Reply Last reply Reply Quote 0
            • R
              rettroo last edited by

              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

              R 1 Reply Last reply Reply Quote 0
              • R
                rettroo @rettroo last edited by rettroo

                @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?

                UncleSam 1 Reply Last reply Reply Quote 0
                • UncleSam
                  UncleSam Developer @rettroo last edited by

                  @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

                  R 1 Reply Last reply Reply Quote 1
                  • pseudoreal
                    pseudoreal last edited by

                    könntest Du bitte eine Anleitung für "Dummies" erstellen? Was genau muss zu erst installiert werden? Danke

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      rettroo @pseudoreal last edited by

                      @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 😉

                      pseudoreal 1 Reply Last reply Reply Quote 1
                      • R
                        rettroo @UncleSam last edited by

                        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'
                        
                        UncleSam 1 Reply Last reply Reply Quote 0
                        • UncleSam
                          UncleSam Developer @rettroo last edited by

                          @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?

                          1 Reply Last reply Reply Quote 0
                          • pseudoreal
                            pseudoreal @rettroo last edited by

                            @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 certificate

                            Unter 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.

                            UncleSam R 2 Replies Last reply Reply Quote 0
                            • UncleSam
                              UncleSam Developer @pseudoreal last edited by

                              @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).

                              1 Reply Last reply Reply Quote 0
                              • R
                                rettroo @pseudoreal last edited by

                                @pseudoreal

                                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

                                pseudoreal 1 Reply Last reply Reply Quote 0
                                • pseudoreal
                                  pseudoreal @rettroo last edited by

                                  @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?

                                  UncleSam 1 Reply Last reply Reply Quote 0
                                  • UncleSam
                                    UncleSam Developer @pseudoreal last edited by

                                    @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 1 Reply Last reply Reply Quote 0
                                    • pseudoreal
                                      pseudoreal @UncleSam last edited by

                                      @unclesam @rettroo
                                      Danke - das stimmt. Ich habe das via blockly hinbekommen. Habe aber noch folgendes Problem, wie kann ich aus MQTT einen speziellen String aus dem Wert in den Objekten rauslesen und in Blockly verarbeiten?

                                      UncleSam 1 Reply Last reply Reply Quote 0
                                      • UncleSam
                                        UncleSam Developer @pseudoreal last edited by

                                        @pseudoreal was meinst du damit? Kannst du mal in einem Screenshot zeigen, was du wo hast und was du daraus haben willst?

                                        pseudoreal 1 Reply Last reply Reply Quote 0
                                        • pseudoreal
                                          pseudoreal @UncleSam last edited by

                                          @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

                                          UncleSam oldi-2000 2 Replies Last reply Reply Quote 0
                                          • UncleSam
                                            UncleSam Developer @pseudoreal last edited by

                                            @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.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            537
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            33
                                            4594
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo