Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    252

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    584

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

Iobroker JavaScript MQTT Fehler

Geplant Angeheftet Gesperrt Verschoben Error/Bug
7 Beiträge 4 Kommentatoren 234 Aufrufe 2 Watching
  • Ä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 Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          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 - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          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 :blush:

            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: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              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
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                981

                Online

                32.5k

                Benutzer

                81.9k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                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