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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Node.js Script in iobroker integrieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                                    • oldi-2000
                                      oldi-2000 @pseudoreal last edited by

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

                                      F 1 Reply Last reply Reply Quote 0
                                      • F
                                        fastfoot @oldi-2000 last edited by

                                        @oldi-2000 poste mal so ein json

                                        oldi-2000 1 Reply Last reply Reply Quote 0
                                        • oldi-2000
                                          oldi-2000 @fastfoot last edited by

                                          @fastfoot

                                          {
                                            "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. 😧

                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fastfoot @oldi-2000 last edited by

                                            @oldi-2000 so könnte es aussehen
                                            vto.PNG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            954
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            33
                                            4614
                                            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