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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    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 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
                                        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            786
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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