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.
    • 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
                                          • H
                                            h07d0q last edited by

                                            @rettroo @fastfoot
                                            Würde jemand von euch eine fertige, funktionierende Lösung hier veröffentlichen?
                                            Dann muss nicht jeder von neu beginnen 🙂
                                            Ich habe vor das ganze ohne den Schritt über MQTT direkt in Datenpunkte zu schreiben, sonst kann man es sich ja sparen das über iobroker laufen zu lassen.
                                            Am schönsten wäre natürlich ein Adapter, aber davon bin ich weit entfernt 😄

                                            I 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            967
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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