Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. Iobroker JavaScript MQTT Fehler

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    9
    1
    762

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    3.2k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    3.1k

Iobroker JavaScript MQTT Fehler

Geplant Angeheftet Gesperrt Verschoben Error/Bug
7 Beiträge 4 Kommentatoren 308 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    karloslb
    schrieb am zuletzt editiert von karloslb
    #1
    Systemdata Bitte Ausfüllen
    Hardwaresystem: Windows 10
    Betriebssystem: Ubuntu als Subsystem
    Node-Version: 14.21.1
    NPM-Version: 6.14.17

    Hallo zusammen,

    ich habe ein Script, das im Visual Studio Code funktioniert.

    code_tvar dgram = require("dgram");
    var CronJob = require('cron').CronJob;
    const mqtt = require('mqtt');
    
    var client = dgram.createSocket("udp4");
    var PORT = process.env.UDP_PORT||"4000";
    var IPadress = process.env.UDP_IP ||"192.168.178.90";
    var ID = process.env.RL_ID||"002D001E47435719";
    var IDSZ = "002D001E47435719";
    var PWD = "1111"
    var MQTTserver = process.env.MQTT_IP ||"192.168.178.54";
    var MQTTPort = process.env.MQTT_PORT ||"1883";
    
    var mqtt_temp_message = "";
    var header  = Buffer.from(
            [ 0xFD, 0xFD,   // Beginn des Pakets
             0x02,          // Protokolltyp
             0x10,          // ID Blockgroesse
             ]
            );
    var IDbuf = Buffer.from(ID);
    var PWDsizebuf = Buffer.from([0x04]);
    var PWDbuf = Buffer.from(PWD);
    var writeFlevelbuf = Buffer.from('init');
    var writeModebuf = Buffer.from('init');
    
    const clientId = `mqtt_${Math.random().toString(16).slice(3)}`;
    
    var mqtt_url = 'mqtt://${MQTTServer}:${MQTTport}';
    //console.log(mqtt_url);
    const mqtt_client  = mqtt.connect(mqtt_url, clientId);
    
    mqtt_client.on('connect', function(){
    	console.log("connected to mqtt");
    	mqtt_client.subscribe('rl/Bathroom/cmnd/fan_level');
    	mqtt_client.subscribe('rl/Bathroom/cmnd/mode');
    	}
    );
    
    
    mqtt_client.on('message', function(topic, message){
    	//message ist Buffer
    	//console.log(topic);
    	if(topic.includes("fan_level")){
    		// construct fan_level write message
    		var dataarr = new Uint8Array(1);
    		dataarr[0] = parseInt(message.toString());
    		var writeFlevelDatabuf = Buffer.from([0x02, 0x02]);
    		writeFlevelbuf = Buffer.concat([header, IDbuf, PWDsizebuf, PWDbuf, writeFlevelDatabuf, Buffer.from(dataarr.buffer)]);
    		var checksum_writeFlevel = calcchecksum(writeFlevelbuf);
    		writeFlevelbuf = Buffer.concat([writeFlevelbuf,checksum2buffer(checksum_writeFlevel)]);
    		console.log(writeFlevelbuf);
    		client.send(writeFlevelbuf, PORT, IPadress);
    		console.log("fan level case");
    	}
    	else if(topic.includes("mode")){
    		// construct Mode write message
    		var error = 0;
    		var modedataarr = new Uint8Array(1);
                    if(message.toString() == "ventilation"){modedataarr[0] = 0;}
                    else if(message.toString() == "regeneration"){modedataarr[0] = 1;}
                    else if(message.toString() == "supplyair"){modedataarr[0] = 2;}
    		else {
    			console.log("bad mode command", message.toString());
    			error = 1;
    			}
    		if(error == 0){
    			var writeModeDatabuf = Buffer.from([0x02, 0xB7]);
    			writeModebuf = Buffer.concat([header, IDbuf, PWDsizebuf, PWDbuf, writeModeDatabuf, Buffer.from(modedataarr.buffer)]);
    			var checksum_writeMode = calcchecksum(writeModebuf);
    			writeModebuf = Buffer.concat([writeModebuf,checksum2buffer(checksum_writeMode)]);
    			console.log(writeModebuf);
    			client.send(writeModebuf, PORT, IPadress);
    			}
    		console.log("mode case");
    	}
    	else{
    		console.log(message.toString())
    	}
    });
    
    
    
    // UDP
    client.on("message", function(message, rinfo) {
        	console.log("received: ", message, rinfo);
    	datalen = rinfo.size - 24 - message.readInt8(20);
    	databuf = message.subarray(20+message.readInt8(20)+2, -2) //20 byte upfront, pwd length, pwd, func
    	for (let i=0; i < datalen; i+=2){
    		console.log("data = ", databuf[i]);
    		switch(databuf[i]){
    			case(1):
    				console.log("RL ist  ", databuf[i+1]?"an":"aus");
    				mqtt_client.publish('/rl/Bathroom/status', databuf[i+1]?"on":"off", { qos: 0, retain: true });
    				break;
    			case(2):
    				console.log("Lueftungsstufe ist ", databuf[i+1]);
    				mqtt_client.publish('/rl/Bathroom/fan_level', databuf[i-1]?databuf[i+1].toString():"0", { qos: 0, retain: true });
    				break;
    			case(37): //0x25
    				console.log("Feuchtigkeit Bad ist ", databuf[i+1]);
    				mqtt_client.publish('/rl/Bathroom/humidity', databuf[i+1].toString(), { qos: 0, retain: true });
    				break;
    			case(183): //0xB7
    				if(databuf[i+1].toString() == "0"){mqtt_temp_message = "ventilation";}
    				else if(databuf[i+1].toString() == "1"){mqtt_temp_message = "regeneration";}
    				else if(databuf[i+1].toString() == "2"){mqtt_temp_message = "supplyair";}
    				else {mqtt_temp_message = "error"+ databuf[i+1].toString();} 
    				mqtt_client.publish('/rl/Bathroom/mode', mqtt_temp_message, { qos: 0, retain: true });
                                    break;
    			default:
    				console.log("unknown ID");
    				console.log(message, rinfo)
    		}
    	}
    
    });
    
    client.bind(PORT);
    
    function calcchecksum(intbuff){
    	let checksum = 0;
    	for (let i = 2; i < intbuff.length; i++) {
      		// console.log(newbuff[i]);
      		checksum+=intbuff[i];
    	}
    	//console.log("checksum = " , checksum);
    	return checksum;
    }
    
    function checksum2buffer(checksum){
    	const arr = new Uint8Array(2);
    	arr[0] = checksum%256;
    	arr[1] = checksum/256;
    	return Buffer.from(arr.buffer);
    }
    
    
    // setup UDP messages
    //var Databuf = Buffer.from([0x01, 0xb9, 0x92, 0xa3]);
    var Databuf = Buffer.from([0x01, 0x01, 0x02, 0x25, 0xB7]);
    
    var list = [header, IDbuf, PWDsizebuf, PWDbuf, Databuf];
    var intbuff = Buffer.concat(list);
    
    //calculate checksum
    let checksum = calcchecksum(intbuff);
    const arr = new Uint8Array(2);
    arr[0] = checksum%256;
    arr[1] = checksum/256;
    const checksumbuff = Buffer.from(arr.buffer);
    
    var list2 = [intbuff,checksum2buffer(checksum)];
    var getbuff = Buffer.concat(list2);
    console.log(getbuff);
    
    
    // <Buffer fd fd 02 10 30 30 34 41 30 30 32 45 34 33 35 33 35 33 30 42 04 31 31 31 31 01 01 02 de 00>
    var job = new CronJob('*/10 * * * * *', function() {
    	client.send(getbuff, PORT, IPadress);
     	console.log('You will see this message every second');
    }, null, true, 'Europe/Berlin');
    job.start();
    
    
    //from App
    //fd fd 02 10 30 30 34 45 30 30 33 35 34 33 35 33 35 33 30 42 04 31 31 31 31 01 b9 92 a3 13 06
    //fd fd 02 10 30 30 34 41 30 30 32 45 34 33 35 33 35 33 30 42 04 31 31 31 31 01 b9 92 a3 1e 06
    
    ext
    

    Ich habe versucht das Script mit dem JS Adpater von Iobroker zu starten.

    Leider funktioniert es nicht.

    Das Problem ist folgendes: in der Zeile 31

    25f18aea-50a1-4d43-b17f-a9e65090f8be-grafik.png
    bekomme ich folgende Meldung:
    Property 'connect' does not exist on type 'typeof import("mqtt")'

    Kann mir jemand bitte weiter helfen?

    paul53P 1 Antwort Letzte Antwort
    0
    • CinimodC Offline
      CinimodC Offline
      Cinimod
      Most Active
      schrieb am zuletzt editiert von
      #2

      @karloslb

      Bisschen mehr Infos währen hilfreich um dir zu helfen

      Synology DS918+, Fritzbox 6690 Cable, #Docker #Blockly #Vis2 #Deconz #Tasmota

      K 1 Antwort Letzte Antwort
      0
      • CinimodC Cinimod

        @karloslb

        Bisschen mehr Infos währen hilfreich um dir zu helfen

        K Offline
        K Offline
        karloslb
        schrieb am zuletzt editiert von
        #3

        @cinimod sorry, bin neu im Forum. Es hat ein wenig gedauert.

        HomoranH CinimodC 2 Antworten Letzte Antwort
        0
        • K karloslb

          @cinimod sorry, bin neu im Forum. Es hat ein wenig gedauert.

          HomoranH Offline
          HomoranH Offline
          Homoran
          schrieb am zuletzt editiert von
          #4

          @karloslb hilft das?

          https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

          kein Support per PN! - Fragen im Forum stellen -
          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          K 1 Antwort Letzte Antwort
          0
          • K karloslb

            @cinimod sorry, bin neu im Forum. Es hat ein wenig gedauert.

            CinimodC Offline
            CinimodC Offline
            Cinimod
            Most Active
            schrieb am zuletzt editiert von
            #5

            @karloslb

            Alles gut, war nicht bös gemeint. Es war nur nichts zum auswerten da 😊

            Ich bin da leider raus.

            Synology DS918+, Fritzbox 6690 Cable, #Docker #Blockly #Vis2 #Deconz #Tasmota

            1 Antwort Letzte Antwort
            0
            • K karloslb
              Systemdata Bitte Ausfüllen
              Hardwaresystem: Windows 10
              Betriebssystem: Ubuntu als Subsystem
              Node-Version: 14.21.1
              NPM-Version: 6.14.17

              Hallo zusammen,

              ich habe ein Script, das im Visual Studio Code funktioniert.

              code_tvar dgram = require("dgram");
              var CronJob = require('cron').CronJob;
              const mqtt = require('mqtt');
              
              var client = dgram.createSocket("udp4");
              var PORT = process.env.UDP_PORT||"4000";
              var IPadress = process.env.UDP_IP ||"192.168.178.90";
              var ID = process.env.RL_ID||"002D001E47435719";
              var IDSZ = "002D001E47435719";
              var PWD = "1111"
              var MQTTserver = process.env.MQTT_IP ||"192.168.178.54";
              var MQTTPort = process.env.MQTT_PORT ||"1883";
              
              var mqtt_temp_message = "";
              var header  = Buffer.from(
                      [ 0xFD, 0xFD,   // Beginn des Pakets
                       0x02,          // Protokolltyp
                       0x10,          // ID Blockgroesse
                       ]
                      );
              var IDbuf = Buffer.from(ID);
              var PWDsizebuf = Buffer.from([0x04]);
              var PWDbuf = Buffer.from(PWD);
              var writeFlevelbuf = Buffer.from('init');
              var writeModebuf = Buffer.from('init');
              
              const clientId = `mqtt_${Math.random().toString(16).slice(3)}`;
              
              var mqtt_url = 'mqtt://${MQTTServer}:${MQTTport}';
              //console.log(mqtt_url);
              const mqtt_client  = mqtt.connect(mqtt_url, clientId);
              
              mqtt_client.on('connect', function(){
              	console.log("connected to mqtt");
              	mqtt_client.subscribe('rl/Bathroom/cmnd/fan_level');
              	mqtt_client.subscribe('rl/Bathroom/cmnd/mode');
              	}
              );
              
              
              mqtt_client.on('message', function(topic, message){
              	//message ist Buffer
              	//console.log(topic);
              	if(topic.includes("fan_level")){
              		// construct fan_level write message
              		var dataarr = new Uint8Array(1);
              		dataarr[0] = parseInt(message.toString());
              		var writeFlevelDatabuf = Buffer.from([0x02, 0x02]);
              		writeFlevelbuf = Buffer.concat([header, IDbuf, PWDsizebuf, PWDbuf, writeFlevelDatabuf, Buffer.from(dataarr.buffer)]);
              		var checksum_writeFlevel = calcchecksum(writeFlevelbuf);
              		writeFlevelbuf = Buffer.concat([writeFlevelbuf,checksum2buffer(checksum_writeFlevel)]);
              		console.log(writeFlevelbuf);
              		client.send(writeFlevelbuf, PORT, IPadress);
              		console.log("fan level case");
              	}
              	else if(topic.includes("mode")){
              		// construct Mode write message
              		var error = 0;
              		var modedataarr = new Uint8Array(1);
                              if(message.toString() == "ventilation"){modedataarr[0] = 0;}
                              else if(message.toString() == "regeneration"){modedataarr[0] = 1;}
                              else if(message.toString() == "supplyair"){modedataarr[0] = 2;}
              		else {
              			console.log("bad mode command", message.toString());
              			error = 1;
              			}
              		if(error == 0){
              			var writeModeDatabuf = Buffer.from([0x02, 0xB7]);
              			writeModebuf = Buffer.concat([header, IDbuf, PWDsizebuf, PWDbuf, writeModeDatabuf, Buffer.from(modedataarr.buffer)]);
              			var checksum_writeMode = calcchecksum(writeModebuf);
              			writeModebuf = Buffer.concat([writeModebuf,checksum2buffer(checksum_writeMode)]);
              			console.log(writeModebuf);
              			client.send(writeModebuf, PORT, IPadress);
              			}
              		console.log("mode case");
              	}
              	else{
              		console.log(message.toString())
              	}
              });
              
              
              
              // UDP
              client.on("message", function(message, rinfo) {
                  	console.log("received: ", message, rinfo);
              	datalen = rinfo.size - 24 - message.readInt8(20);
              	databuf = message.subarray(20+message.readInt8(20)+2, -2) //20 byte upfront, pwd length, pwd, func
              	for (let i=0; i < datalen; i+=2){
              		console.log("data = ", databuf[i]);
              		switch(databuf[i]){
              			case(1):
              				console.log("RL ist  ", databuf[i+1]?"an":"aus");
              				mqtt_client.publish('/rl/Bathroom/status', databuf[i+1]?"on":"off", { qos: 0, retain: true });
              				break;
              			case(2):
              				console.log("Lueftungsstufe ist ", databuf[i+1]);
              				mqtt_client.publish('/rl/Bathroom/fan_level', databuf[i-1]?databuf[i+1].toString():"0", { qos: 0, retain: true });
              				break;
              			case(37): //0x25
              				console.log("Feuchtigkeit Bad ist ", databuf[i+1]);
              				mqtt_client.publish('/rl/Bathroom/humidity', databuf[i+1].toString(), { qos: 0, retain: true });
              				break;
              			case(183): //0xB7
              				if(databuf[i+1].toString() == "0"){mqtt_temp_message = "ventilation";}
              				else if(databuf[i+1].toString() == "1"){mqtt_temp_message = "regeneration";}
              				else if(databuf[i+1].toString() == "2"){mqtt_temp_message = "supplyair";}
              				else {mqtt_temp_message = "error"+ databuf[i+1].toString();} 
              				mqtt_client.publish('/rl/Bathroom/mode', mqtt_temp_message, { qos: 0, retain: true });
                                              break;
              			default:
              				console.log("unknown ID");
              				console.log(message, rinfo)
              		}
              	}
              
              });
              
              client.bind(PORT);
              
              function calcchecksum(intbuff){
              	let checksum = 0;
              	for (let i = 2; i < intbuff.length; i++) {
                		// console.log(newbuff[i]);
                		checksum+=intbuff[i];
              	}
              	//console.log("checksum = " , checksum);
              	return checksum;
              }
              
              function checksum2buffer(checksum){
              	const arr = new Uint8Array(2);
              	arr[0] = checksum%256;
              	arr[1] = checksum/256;
              	return Buffer.from(arr.buffer);
              }
              
              
              // setup UDP messages
              //var Databuf = Buffer.from([0x01, 0xb9, 0x92, 0xa3]);
              var Databuf = Buffer.from([0x01, 0x01, 0x02, 0x25, 0xB7]);
              
              var list = [header, IDbuf, PWDsizebuf, PWDbuf, Databuf];
              var intbuff = Buffer.concat(list);
              
              //calculate checksum
              let checksum = calcchecksum(intbuff);
              const arr = new Uint8Array(2);
              arr[0] = checksum%256;
              arr[1] = checksum/256;
              const checksumbuff = Buffer.from(arr.buffer);
              
              var list2 = [intbuff,checksum2buffer(checksum)];
              var getbuff = Buffer.concat(list2);
              console.log(getbuff);
              
              
              // <Buffer fd fd 02 10 30 30 34 41 30 30 32 45 34 33 35 33 35 33 30 42 04 31 31 31 31 01 01 02 de 00>
              var job = new CronJob('*/10 * * * * *', function() {
              	client.send(getbuff, PORT, IPadress);
               	console.log('You will see this message every second');
              }, null, true, 'Europe/Berlin');
              job.start();
              
              
              //from App
              //fd fd 02 10 30 30 34 45 30 30 33 35 34 33 35 33 35 33 30 42 04 31 31 31 31 01 b9 92 a3 13 06
              //fd fd 02 10 30 30 34 41 30 30 32 45 34 33 35 33 35 33 30 42 04 31 31 31 31 01 b9 92 a3 1e 06
              
              ext
              

              Ich habe versucht das Script mit dem JS Adpater von Iobroker zu starten.

              Leider funktioniert es nicht.

              Das Problem ist folgendes: in der Zeile 31

              25f18aea-50a1-4d43-b17f-a9e65090f8be-grafik.png
              bekomme ich folgende Meldung:
              Property 'connect' does not exist on type 'typeof import("mqtt")'

              Kann mir jemand bitte weiter helfen?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @karloslb sagt: Das Problem ist folgendes: in der Zeile 31

              Ignorieren! Der Javascript-Editor meckert bei Attributen, die er nicht kennt.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              1 Antwort Letzte Antwort
              0
              • HomoranH Homoran

                @karloslb hilft das?

                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

                K Offline
                K Offline
                karloslb
                schrieb am zuletzt editiert von
                #7

                @homoran sagte in Iobroker JavaScript MQTT Fehler:

                @karloslb hilft das?

                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md

                Nein, leider nicht. Ich bin nicht so fortgeschritten.

                1 Antwort Letzte Antwort
                0

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                517

                Online

                33.0k

                Benutzer

                83.3k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2026
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe