Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Problem mit ioBroker Sma-em Adapter nach node update

    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

    Problem mit ioBroker Sma-em Adapter nach node update

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      C1500 last edited by

      Servus
      Bei mir das gleiche Problem nach dem node Update.
      Hoffentlich findet er bald das Problem.
      Gruß Peer

      1 Reply Last reply Reply Quote 0
      • A
        aftershowman last edited by

        Hatte das selbe Problem.

        Das Problem wurde ja schon "Gefunden/beschrieben".
        Die verwendete Methode "buf.readUIntBE(offset, byteLength)" kann in node10 nur noch 6 Bytes lesen.
        Ich hab auch keine andere Methode gefunden, die 8 Bit direkt in ein "int" einliest.
        Ich hab keine Ahnung von Github.
        Bin auch kein Java-Skript Guro.
        Hab deshalb den Code direkt in der main.js angepasst.
        Bei einer IObroker Linux Installation liegt die main.js hier:
        /opt/iobroker/node_modules/iobroker.sma-em

        Funktioniert bei mir.
        Bekomme jetzt den Momentanverbrauch und den Bezugzähler alle 30s
        Objekte.PNG
        Hier die original und die geänderte Datei:
        main.js main - org.js

        Ich hab den Code jetzt so angepasst; dass wenn 8 Bytes gelesen werden sollen, werden diese als "string" gelesen und anschließend zu "int" konvertiert.
        Weiterhin habe ich einen Timer eingebaut, der "nur" alle 30s das Multicast Paket abgreift.

        Alle Änderungen wurden in der Funktion"read Data" gemacht.
        Eingefügter Code ist "fett" markiert.

        function readData() {
        var client = dgram.createSocket('udp4');
        var timer;

        client.on('listening', function () {
            client.setBroadcast(true);
        });
        
        client.on('message', function (message, rinfo) {
        	**if (!timer) {
            timer = setTimeout(function () {
                timer = null;
            }, 30000);**
        
        	var ser = message.readUIntBE(points['SMASerial'].offset, points['SMASerial'].length) * points['SMASerial'].factor;
        	 adapter.setObjectNotExists(ser, {
           		 type: 'channel',
         		 common: {
             	 name: ser,
            	 type: 'channel'
           		 },
            native: {}
        });
            
        if (!connected) {
                connected = true;
                adapter.setState('info.connection', true, true);
            }
        
            for (var point in points) {
                if (points.hasOwnProperty(point)) {
                    //adapter.log.info('Name: ' + point + 'offset: ' + points[point].offset + 'length: ' + points[point].length + 'factor: ' + points[point].factor);
        			**if (points[point].length == 8) {
        				var val1 = message.toString('hex', points[point].offset, points[point].offset + 8);
        				//adapter.log.info('val1 : ' + val1);
        				var val = parseInt(val1, 16);
        				//adapter.log.info('val nach toInt : ' + val);
        				val = val * points[point].factor;
        				//adapter.log.info('val nach Multi: ' + val);
        			} else {**
        				var val = message.readUIntBE(points[point].offset, points[point].length) * points[point].factor;
        			**}**
                    if (points[point].val === undefined || points[point].val !== val) {
                        points[point].val = val;
                        adapter.setObjectNotExists (adapter.namespace + '.' + ser + '.' + point, {
        				type: 'state',
        				role: 'value',
        				common: {
        					name: point,
        					type: 'state',
        					role: 'value'
        					},
        				native: {}
        		});
        		adapter.setState (ser + '.' + point, val,true);
                    }
                }
            }
        	**}**
        });
        apollon77 1 Reply Last reply Reply Quote 0
        • Heimerdinger
          Heimerdinger last edited by

          Wie überschreibe ich eigentlich die main.js?
          Stoppen des Adapters und/oder des iobrokers reicht wohl nicht.

          Danke

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 @aftershowman last edited by

            @aftershowman mach doch mal einen pull request auf GitHub beim Adapter.

            1 Reply Last reply Reply Quote 0
            • Winni
              Winni last edited by

              Hallo in die Runde, der Entwickler hat angekündigt, dass er den Adapter an die Community Adapter Crew übergeben möchte. Ich denke das dies bedeutet, dass es mit dem Adapter weiter geht, was mich natürlich sehr freut. 👍

              1 Reply Last reply Reply Quote 0
              • A
                andiling last edited by

                Hallo, bin zwar nicht der Entwickler des Adapters aber ich habe eine Lösung für Node 8 - einschliesslich 12 erarbeitet. Ich muss die Daten noch verifizieren aber der Adapter scheint jetzt für Node 10 auch zu laufen. Warten wir mal noch paar Tage ab auf den Transfer zu Community Adapter dann werde ich relativ zeitnah den Adapter updaten!

                Wer Lust hat kann ja mal für Node 10 testen! Hier die Datei einfach ersetzen und Adapter neu starten!
                Feedback wäre super!
                Gruß

                Andi

                main.js

                Winni 2 Replies Last reply Reply Quote 2
                • Winni
                  Winni @andiling last edited by

                  @andiling Super, vielen Dank dafür 🙂

                  1 Reply Last reply Reply Quote 0
                  • S
                    stephane last edited by

                    Ist e denn schon absehbar wann der Bug im normalen Updateprozess behoben sind?
                    Ich hab das mit dem Manuellen Fix mal versucht, der Adapter startet aber leider immer noch nicht 😞

                    1 Reply Last reply Reply Quote 0
                    • Winni
                      Winni @andiling last edited by

                      @andiling sagte in Problem mit ioBroker Sma-em Adapter nach node update:

                      Hallo, bin zwar nicht der Entwickler des Adapters aber ich habe eine Lösung für Node 8 - einschliesslich 12 erarbeitet. Ich muss die Daten noch verifizieren aber der Adapter scheint jetzt für Node 10 auch zu laufen. Warten wir mal noch paar Tage ab auf den Transfer zu Community Adapter dann werde ich relativ zeitnah den Adapter updaten!

                      Wer Lust hat kann ja mal für Node 10 testen! Hier die Datei einfach ersetzen und Adapter neu starten!
                      Feedback wäre super!
                      Gruß

                      Andi

                      main.js

                      Hallo, ich wollte mal nachfragen, wie hier der Stand der Dinge ist.
                      Wenn ichdie main.js mit der der Version aus deinem post ersetze bleibt der Adapter rot und im Log sind diese Fehler:

                      host.winni-NUC6CAYH	2020-01-05 12:37:58.844	error	instance system.adapter.sma-em.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.844	error	Caught by controller[0]: at bootstrap_node.js:625:3
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.844	error	Caught by controller[0]: at startup (bootstrap_node.js:204:16)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.844	error	Caught by controller[0]: at Function.Module.runMain (module.js:694:10)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.844	error	Caught by controller[0]: at Function.Module._load (module.js:498:3)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.843	error	Caught by controller[0]: at tryModuleLoad (module.js:506:12)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.843	error	Caught by controller[0]: at Module.load (module.js:566:32)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.843	error	Caught by controller[0]: at Object.Module._extensions..js (module.js:664:10)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.843	error	Caught by controller[0]: at Module._compile (module.js:617:28)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.842	error	Caught by controller[0]: at Object.runInThisContext (vm.js:139:10)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.842	error	Caught by controller[0]: at createScript (vm.js:80:10)
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.842	error	Caught by controller[0]: SyntaxError: Invalid or unexpected token
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.841	error	Caught by controller[0]: ^^
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.841	error	Caught by controller[0]: var val = Number(((highbyte << 32n) + lowbyte));
                      host.winni-NUC6CAYH	2020-01-05 12:37:58.840	error	Caught by controller[0]: /opt/iobroker/node_modules/iobroker.sma-em/main.js:76
                      

                      Zurück auf die orginal main.js läufts wieder, aber klar, nicht auf der 10.x. 😉
                      Bin für jede Hilfestellung dankbar 🙂

                      apollon77 1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 @Winni last edited by

                        @Winni da ist ein „n“ Zuviel nach der 32

                        Winni 1 Reply Last reply Reply Quote 0
                        • Winni
                          Winni @apollon77 last edited by

                          @apollon77 vielen Dank für die schnelle Hilfe, nach der Korrektur läuft es unter 8.17 aber leider nicht unter 10.18 😞
                          da bleibt der Adapter rot und der Log schaut es so aus:

                          host.winni-NUC6CAYH	2020-01-05 13:42:03.970	error	Caught by controller[0]: at UDP.onMessage [as onmessage] (dgram.js:628:8)
                          host.winni-NUC6CAYH	2020-01-05 13:42:03.970	error	Caught by controller[0]: at Socket.emit (events.js:198:13)
                          host.winni-NUC6CAYH	2020-01-05 13:42:03.969	error	Caught by controller[0]: at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.sma-em/main.js:76:53)
                          host.winni-NUC6CAYH	2020-01-05 13:42:03.969	error	Caught by controller[0]: TypeError: Cannot mix BigInt and other types, use explicit conversions
                          sma-em.0	2020-01-05 13:42:03.444	info	(4206) Terminated (NO_ERROR): Without reason
                          sma-em.0	2020-01-05 13:42:03.443	info	(4206) terminating
                          sma-em.0	2020-01-05 13:42:03.395	info	(4206) cleaned everything up...
                          sma-em.0	2020-01-05 13:42:03.394	error	(4206) TypeError: Cannot mix BigInt and other types, use explicit conversions at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.sma-em/main.js:76:53) at Socket.emit (events.js:198:13)
                          sma-em.0	2020-01-05 13:42:03.394	error	(4206) uncaught exception: Cannot mix BigInt and other types, use explicit conversions
                          sma-em.0	2020-01-05 13:42:02.553	info	(4206) Details L1 false Details L2 false Details L3 false
                          sma-em.0	2020-01-05 13:42:02.553	info	(4206) Listen via UDP on Port 9522 for Multicast IP 239.12.255.254
                          sma-em.0	2020-01-05 13:42:02.510	info	(4206) starting. Version 0.5.3 in /opt/iobroker/node_modules/iobroker.sma-em, node: v10.18.0
                          host.winni-NUC6CAYH	2020-01-05 13:42:02.555	info	instance system.adapter.sma-speedwire.1 terminated with code 0 (NO_ERROR)
                          sma-speedwire.1	2020-01-05 13:42:01.474	info	(4193) starting. Version 0.6.6 in /opt/iobroker/node_modules/iobroker.sma-speedwire, node: v10.18.0
                          host.winni-NUC6CAYH	2020-01-05 13:42:00.956	info	instance system.adapter.sma-em.0 started with pid 4206
                          host.winni-NUC6CAYH	2020-01-05 13:42:00.022	info	instance system.adapter.sma-speedwire.1 started with pid 4193
                          host.winni-NUC6CAYH	2020-01-05 13:41:36.554	info	instance system.adapter.sma-speedwire.1 terminated with code 0 (NO_ERROR)
                          sma-speedwire.1	2020-01-05 13:41:35.487	info	(4177) starting. Version 0.6.6 in /opt/iobroker/node_modules/iobroker.sma-speedwire, node: v10.18.0
                          host.winni-NUC6CAYH	2020-01-05 13:41:34.040	info	instance system.adapter.sma-speedwire.1 started with pid 4177
                          host.winni-NUC6CAYH	2020-01-05 13:41:32.557	info	instance system.adapter.sma-speedwire.0 terminated with code 0 (NO_ERROR)
                          sma-speedwire.0	2020-01-05 13:41:31.469	info	(4162) starting. Version 0.6.6 in /opt/iobroker/node_modules/iobroker.sma-speedwire, node: v10.18.0
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.941	info	Restart adapter system.adapter.sma-em.0 because enabled
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.941	info	instance system.adapter.sma-em.0 terminated with code 0 (NO_ERROR)
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.941	error	Caught by controller[0]: at UDP.onMessage [as onmessage] (dgram.js:628:8)
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.941	error	Caught by controller[0]: at Socket.emit (events.js:198:13)
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.941	error	Caught by controller[0]: at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.sma-em/main.js:76:53)
                          host.winni-NUC6CAYH	2020-01-05 13:41:30.940	error	Caught by controller[0]: TypeError: Cannot mix BigInt and other types, use explicit conversions
                          sma-em.0	2020-01-05 13:41:30.411	info	(4147) Terminated (NO_ERROR): Without reason
                          sma-em.0	2020-01-05 13:41:30.410	info	(4147) terminating
                          sma-em.0	2020-01-05 13:41:30.400	info	(4147) cleaned everything up...
                          sma-em.0	2020-01-05 13:41:30.399	error	(4147) TypeError: Cannot mix BigInt and other types, use explicit conversions at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.sma-em/main.js:76:53) at Socket.emit (events.js:198:13)
                          sma-em.0	2020-01-05 13:41:30.398	error	(4147) uncaught exception: Cannot mix BigInt and other types, use explicit conversions
                          

                          zurück auf die 8.17 und es läuft wieder, ohne die main.js nochmal mit der orginalen ersetzt zu haben, also mit der Version von @andiling

                          apollon77 1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 @Winni last edited by

                            @Winni Also ist das "n" wohl doch nötig gewesen ...

                            Winni 1 Reply Last reply Reply Quote 0
                            • Winni
                              Winni @apollon77 last edited by

                              Sorry da hab ich mich falsch ausgedrückt, es ist die Version von @andiling, aber ohne n, die jetzt unter 8.17 läuft.

                              1 Reply Last reply Reply Quote 0
                              • Winni
                                Winni last edited by

                                Hallo in die Runde, möchte mich hier bei allen bedanken, die an der "Rettung" dieses Adapters mitgewirkt haben. Ich habe mir heute ein neues Ubuntu 19.10 installiert und natürlich iobroker, übernommen hatte ich den iobroker-data Ordner. Zum Schluss dann den Adapter in der Version 0.5.6 installiert und läuft seit ein paar Stunden ohne Probleme. Neben der Steuerung der Heizung ist die Überwachung der PV und Stromverbrauch das wichtigste Feld meines Smathome. Also nochmals vielen Dank an andiling, Dutchman, Apollon77, GermanBluefox und wervsonst noch mitgewirkt hat.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                487
                                Online

                                31.9k
                                Users

                                80.1k
                                Topics

                                1.3m
                                Posts

                                problem mit node 10.16
                                8
                                23
                                2047
                                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