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. Skripten / Logik
  4. JavaScript
  5. Hilfe für Javascript nicht Versteher

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Hilfe für Javascript nicht Versteher

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 5 Kommentatoren 472 Aufrufe 3 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.
  • N Offline
    N Offline
    nape1
    schrieb am zuletzt editiert von
    #1

    Hallo habe Problem mit einem Javascript für meine WP von Dimplex,
    das script holt sich von mqtt daten in Jason ab und sollte diese für mich verständlich aufbereiten,lt Dimplex wiki

    on({id: "mqtt.0.gateway.iothub.twin_reported_state", change: "any"}, function (obj) { ParseTwinReportedState(obj); });
    CreateOrSetState('mqtt.0.input.modbus_set_state', 'modbus_set_state', '', true);
    on({id: "javascript.0.mqtt.0.input.modbus_set_state", change: "any"}, function (obj) { HandleModbusSetStateInput(obj); });
    CreateOrSetState('mqtt.0.input.modbus_get_state', 'modbus_get_state', '', true);
    on({id: "javascript.0.mqtt.0.input.modbus_get_state", change: "any"}, funktion (obj) { HandleModbusGetStateInput(obj); });
    
    function ParseTwinReportedState(obj) {
      try {
        var rootJson = JSON.parse(obj.state.val);
        var jsonTable = [];
        Object.keys(rootJson).forEach(function(outerKey) {
          var innerJson = rootJson[outerKey];
          Object.keys(innerJson).forEach(function(innerKey) {
            CreateOrSetState('mqtt.0.parsed.twin_reported_state.' + outerKey + '.' + innerKey, innerKey, innerJson[innerKey]);
            jsonTable.push({Name: innerKey, Value: innerJson[innerKey]});
          });
        });
        CreateOrSetState('mqtt.0.parsed.twin_reported_state_table', 'twin_reported_state_table', JSON.stringify(jsonTable));
      } catch (e) {console.error("Error in ParseTwinReportedState(): " + e);}
    }
    
    function HandleModbusSetStateInput(obj) {
      try{
        var inputSplit = obj.state.val.split(" ");
        if(inputSplit.length < 2) return;
        var modbusIdx = inputSplit[0];
        var valArray = [];
        for(var i=1; i<inputSplit.length; i++){valArray.push(inputSplit[i]);}
        var modbusSetJSON = {
          name: modbusIdx,
          value: valArray,
          mqtt_msg_properties: {response_topic: "extern/iobroker/set_value_reply", correlation_data: 0}
        }
        sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/set_value/' + modbusIdx, message: JSON.stringify(modbusSetJSON)});
      }
      catch (e) {console.error("Error in ParseModbusSetState(): " + e);}
    }
    
    function HandleModbusGetStateInput(obj) {
      try{
        var modbusIdx = obj.state.val;
        if(modbusIdx.length < 1) return;
        var modbusGetJSON = {
          name: modbusIdx,
          mqtt_msg_properties: {response_topic: "extern/iobroker/get_value_reply", correlation_data: 0}
        }
        sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/get_value/' + modbusIdx, message: JSON.stringify(modbusGetJSON)});
      } catch (e) {console.error("Error in ParseModbusGetState(): " + e);}
    }
    
    function CreateOrSetState(objectId, objectName, objectValue, onlyCreate = false){
      if(!existsState(objectId)) createState(objectId, objectValue,{name: objectName, type: 'string', role: 'value'}, function () {});
      else if(!onlyCreate) setState(objectId, objectValue);
    }  
    

    und bekomme eine Fehlermeldung welche ich leider nicht deuten kann,

    Script.js.WP2024.Skrite_Haus compile failed: at script.js.Displays.Skrite_test:6
    

    vielleicht kann mir einer der script/javascript Profis helfen ?
    möchte gewisse Daten , zb Temp Brauchwasserspeicher meiner Besseren hälfte in einer einfachen Vis anzeigen lassen,
    mfg
    Nape
    @Mikewolf

    CodierknechtC F A 3 Antworten Letzte Antwort
    0
    • N nape1

      Hallo habe Problem mit einem Javascript für meine WP von Dimplex,
      das script holt sich von mqtt daten in Jason ab und sollte diese für mich verständlich aufbereiten,lt Dimplex wiki

      on({id: "mqtt.0.gateway.iothub.twin_reported_state", change: "any"}, function (obj) { ParseTwinReportedState(obj); });
      CreateOrSetState('mqtt.0.input.modbus_set_state', 'modbus_set_state', '', true);
      on({id: "javascript.0.mqtt.0.input.modbus_set_state", change: "any"}, function (obj) { HandleModbusSetStateInput(obj); });
      CreateOrSetState('mqtt.0.input.modbus_get_state', 'modbus_get_state', '', true);
      on({id: "javascript.0.mqtt.0.input.modbus_get_state", change: "any"}, funktion (obj) { HandleModbusGetStateInput(obj); });
      
      function ParseTwinReportedState(obj) {
        try {
          var rootJson = JSON.parse(obj.state.val);
          var jsonTable = [];
          Object.keys(rootJson).forEach(function(outerKey) {
            var innerJson = rootJson[outerKey];
            Object.keys(innerJson).forEach(function(innerKey) {
              CreateOrSetState('mqtt.0.parsed.twin_reported_state.' + outerKey + '.' + innerKey, innerKey, innerJson[innerKey]);
              jsonTable.push({Name: innerKey, Value: innerJson[innerKey]});
            });
          });
          CreateOrSetState('mqtt.0.parsed.twin_reported_state_table', 'twin_reported_state_table', JSON.stringify(jsonTable));
        } catch (e) {console.error("Error in ParseTwinReportedState(): " + e);}
      }
      
      function HandleModbusSetStateInput(obj) {
        try{
          var inputSplit = obj.state.val.split(" ");
          if(inputSplit.length < 2) return;
          var modbusIdx = inputSplit[0];
          var valArray = [];
          for(var i=1; i<inputSplit.length; i++){valArray.push(inputSplit[i]);}
          var modbusSetJSON = {
            name: modbusIdx,
            value: valArray,
            mqtt_msg_properties: {response_topic: "extern/iobroker/set_value_reply", correlation_data: 0}
          }
          sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/set_value/' + modbusIdx, message: JSON.stringify(modbusSetJSON)});
        }
        catch (e) {console.error("Error in ParseModbusSetState(): " + e);}
      }
      
      function HandleModbusGetStateInput(obj) {
        try{
          var modbusIdx = obj.state.val;
          if(modbusIdx.length < 1) return;
          var modbusGetJSON = {
            name: modbusIdx,
            mqtt_msg_properties: {response_topic: "extern/iobroker/get_value_reply", correlation_data: 0}
          }
          sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/get_value/' + modbusIdx, message: JSON.stringify(modbusGetJSON)});
        } catch (e) {console.error("Error in ParseModbusGetState(): " + e);}
      }
      
      function CreateOrSetState(objectId, objectName, objectValue, onlyCreate = false){
        if(!existsState(objectId)) createState(objectId, objectValue,{name: objectName, type: 'string', role: 'value'}, function () {});
        else if(!onlyCreate) setState(objectId, objectValue);
      }  
      

      und bekomme eine Fehlermeldung welche ich leider nicht deuten kann,

      Script.js.WP2024.Skrite_Haus compile failed: at script.js.Displays.Skrite_test:6
      

      vielleicht kann mir einer der script/javascript Profis helfen ?
      möchte gewisse Daten , zb Temp Brauchwasserspeicher meiner Besseren hälfte in einer einfachen Vis anzeigen lassen,
      mfg
      Nape
      @Mikewolf

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @nape1 sagte in Hilfe für Javascript nicht Versteher:

      das script holt sich von mqtt daten in Jason ab

      Wo kommt dieses Script her?
      Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von 0_userdata.0 liegen und nicht mehr unter javascript.0.
      Außerdem sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen. Da hat der Adapter die Hoheit - und sonst niemand.

      und sollte diese für mich verständlich aufbereiten

      Die Daten liegen bereits als JSON vor und sollen nur "auseinandergedröselt" werden?
      Das geht auch völlig ohne Script mit Aliasen.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      HomoranH 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @nape1 sagte in Hilfe für Javascript nicht Versteher:

        das script holt sich von mqtt daten in Jason ab

        Wo kommt dieses Script her?
        Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von 0_userdata.0 liegen und nicht mehr unter javascript.0.
        Außerdem sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen. Da hat der Adapter die Hoheit - und sonst niemand.

        und sollte diese für mich verständlich aufbereiten

        Die Daten liegen bereits als JSON vor und sollen nur "auseinandergedröselt" werden?
        Das geht auch völlig ohne Script mit Aliasen.

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #3

        @codierknecht sagte in Hilfe für Javascript nicht Versteher:

        Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von 0_userdata.0 liegen und nicht mehr unter javascript.0.

        Das wurde so nie gesagt, allerdings

        @codierknecht sagte in Hilfe für Javascript nicht Versteher:

        sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen.

        ist MQTT da genauso eine Ausnahme.

        Für alle anderen Adapter stimmt das.

        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 -

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • N nape1

          Hallo habe Problem mit einem Javascript für meine WP von Dimplex,
          das script holt sich von mqtt daten in Jason ab und sollte diese für mich verständlich aufbereiten,lt Dimplex wiki

          on({id: "mqtt.0.gateway.iothub.twin_reported_state", change: "any"}, function (obj) { ParseTwinReportedState(obj); });
          CreateOrSetState('mqtt.0.input.modbus_set_state', 'modbus_set_state', '', true);
          on({id: "javascript.0.mqtt.0.input.modbus_set_state", change: "any"}, function (obj) { HandleModbusSetStateInput(obj); });
          CreateOrSetState('mqtt.0.input.modbus_get_state', 'modbus_get_state', '', true);
          on({id: "javascript.0.mqtt.0.input.modbus_get_state", change: "any"}, funktion (obj) { HandleModbusGetStateInput(obj); });
          
          function ParseTwinReportedState(obj) {
            try {
              var rootJson = JSON.parse(obj.state.val);
              var jsonTable = [];
              Object.keys(rootJson).forEach(function(outerKey) {
                var innerJson = rootJson[outerKey];
                Object.keys(innerJson).forEach(function(innerKey) {
                  CreateOrSetState('mqtt.0.parsed.twin_reported_state.' + outerKey + '.' + innerKey, innerKey, innerJson[innerKey]);
                  jsonTable.push({Name: innerKey, Value: innerJson[innerKey]});
                });
              });
              CreateOrSetState('mqtt.0.parsed.twin_reported_state_table', 'twin_reported_state_table', JSON.stringify(jsonTable));
            } catch (e) {console.error("Error in ParseTwinReportedState(): " + e);}
          }
          
          function HandleModbusSetStateInput(obj) {
            try{
              var inputSplit = obj.state.val.split(" ");
              if(inputSplit.length < 2) return;
              var modbusIdx = inputSplit[0];
              var valArray = [];
              for(var i=1; i<inputSplit.length; i++){valArray.push(inputSplit[i]);}
              var modbusSetJSON = {
                name: modbusIdx,
                value: valArray,
                mqtt_msg_properties: {response_topic: "extern/iobroker/set_value_reply", correlation_data: 0}
              }
              sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/set_value/' + modbusIdx, message: JSON.stringify(modbusSetJSON)});
            }
            catch (e) {console.error("Error in ParseModbusSetState(): " + e);}
          }
          
          function HandleModbusGetStateInput(obj) {
            try{
              var modbusIdx = obj.state.val;
              if(modbusIdx.length < 1) return;
              var modbusGetJSON = {
                name: modbusIdx,
                mqtt_msg_properties: {response_topic: "extern/iobroker/get_value_reply", correlation_data: 0}
              }
              sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/get_value/' + modbusIdx, message: JSON.stringify(modbusGetJSON)});
            } catch (e) {console.error("Error in ParseModbusGetState(): " + e);}
          }
          
          function CreateOrSetState(objectId, objectName, objectValue, onlyCreate = false){
            if(!existsState(objectId)) createState(objectId, objectValue,{name: objectName, type: 'string', role: 'value'}, function () {});
            else if(!onlyCreate) setState(objectId, objectValue);
          }  
          

          und bekomme eine Fehlermeldung welche ich leider nicht deuten kann,

          Script.js.WP2024.Skrite_Haus compile failed: at script.js.Displays.Skrite_test:6
          

          vielleicht kann mir einer der script/javascript Profis helfen ?
          möchte gewisse Daten , zb Temp Brauchwasserspeicher meiner Besseren hälfte in einer einfachen Vis anzeigen lassen,
          mfg
          Nape
          @Mikewolf

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #4

          @nape1 fun**c**tion (obj) schreibt sich mit 'c', nicht mit 'k'

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          1 Antwort Letzte Antwort
          1
          • HomoranH Homoran

            @codierknecht sagte in Hilfe für Javascript nicht Versteher:

            Scheint schon recht alt zu sein, denn eigene DP sollten schon lange unterhalb von 0_userdata.0 liegen und nicht mehr unter javascript.0.

            Das wurde so nie gesagt, allerdings

            @codierknecht sagte in Hilfe für Javascript nicht Versteher:

            sollten Scripte keine Datenpunkte im Namespace eines Adapters anlegen.

            ist MQTT da genauso eine Ausnahme.

            Für alle anderen Adapter stimmt das.

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @homoran sagte in Hilfe für Javascript nicht Versteher:

            wurde so nie gesagt

            Ist aber solange ich dabei bin so ziemlich allgemeiner Konsens. Hat natürlich mit der Funktion des Scripts nix zu tun.

            ist MQTT da genauso eine Ausnahme

            Muss einem ja auch gesagt werden :grinning:

            Adlerauge @fastfoot hat ja vermutlich die Ursache entdeckt.

            @nape1
            Zeig doch mal das JSON und was Du daraus extrahiert haben möchtest. Vielleicht kriegen wir das ja auch ohne Script hin.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            1 Antwort Letzte Antwort
            0
            • N nape1

              Hallo habe Problem mit einem Javascript für meine WP von Dimplex,
              das script holt sich von mqtt daten in Jason ab und sollte diese für mich verständlich aufbereiten,lt Dimplex wiki

              on({id: "mqtt.0.gateway.iothub.twin_reported_state", change: "any"}, function (obj) { ParseTwinReportedState(obj); });
              CreateOrSetState('mqtt.0.input.modbus_set_state', 'modbus_set_state', '', true);
              on({id: "javascript.0.mqtt.0.input.modbus_set_state", change: "any"}, function (obj) { HandleModbusSetStateInput(obj); });
              CreateOrSetState('mqtt.0.input.modbus_get_state', 'modbus_get_state', '', true);
              on({id: "javascript.0.mqtt.0.input.modbus_get_state", change: "any"}, funktion (obj) { HandleModbusGetStateInput(obj); });
              
              function ParseTwinReportedState(obj) {
                try {
                  var rootJson = JSON.parse(obj.state.val);
                  var jsonTable = [];
                  Object.keys(rootJson).forEach(function(outerKey) {
                    var innerJson = rootJson[outerKey];
                    Object.keys(innerJson).forEach(function(innerKey) {
                      CreateOrSetState('mqtt.0.parsed.twin_reported_state.' + outerKey + '.' + innerKey, innerKey, innerJson[innerKey]);
                      jsonTable.push({Name: innerKey, Value: innerJson[innerKey]});
                    });
                  });
                  CreateOrSetState('mqtt.0.parsed.twin_reported_state_table', 'twin_reported_state_table', JSON.stringify(jsonTable));
                } catch (e) {console.error("Error in ParseTwinReportedState(): " + e);}
              }
              
              function HandleModbusSetStateInput(obj) {
                try{
                  var inputSplit = obj.state.val.split(" ");
                  if(inputSplit.length < 2) return;
                  var modbusIdx = inputSplit[0];
                  var valArray = [];
                  for(var i=1; i<inputSplit.length; i++){valArray.push(inputSplit[i]);}
                  var modbusSetJSON = {
                    name: modbusIdx,
                    value: valArray,
                    mqtt_msg_properties: {response_topic: "extern/iobroker/set_value_reply", correlation_data: 0}
                  }
                  sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/set_value/' + modbusIdx, message: JSON.stringify(modbusSetJSON)});
                }
                catch (e) {console.error("Error in ParseModbusSetState(): " + e);}
              }
              
              function HandleModbusGetStateInput(obj) {
                try{
                  var modbusIdx = obj.state.val;
                  if(modbusIdx.length < 1) return;
                  var modbusGetJSON = {
                    name: modbusIdx,
                    mqtt_msg_properties: {response_topic: "extern/iobroker/get_value_reply", correlation_data: 0}
                  }
                  sendTo('mqtt.0', 'sendMessage2Client', {topic: 'gateway/modbus/get_value/' + modbusIdx, message: JSON.stringify(modbusGetJSON)});
                } catch (e) {console.error("Error in ParseModbusGetState(): " + e);}
              }
              
              function CreateOrSetState(objectId, objectName, objectValue, onlyCreate = false){
                if(!existsState(objectId)) createState(objectId, objectValue,{name: objectName, type: 'string', role: 'value'}, function () {});
                else if(!onlyCreate) setState(objectId, objectValue);
              }  
              

              und bekomme eine Fehlermeldung welche ich leider nicht deuten kann,

              Script.js.WP2024.Skrite_Haus compile failed: at script.js.Displays.Skrite_test:6
              

              vielleicht kann mir einer der script/javascript Profis helfen ?
              möchte gewisse Daten , zb Temp Brauchwasserspeicher meiner Besseren hälfte in einer einfachen Vis anzeigen lassen,
              mfg
              Nape
              @Mikewolf

              A Offline
              A Offline
              andreaslampl
              schrieb am zuletzt editiert von
              #6

              @nape1

              Hallo

              Ich habe das gleiche Problem das das script nicht lauft.
              Habe es dann hir gelesen mit dem c.
              Bekommst du mittlerweile Daten aus der WP ich bin zwar verbunden aber so wie Beschrieben mit einzelne Daten bekomme ich nichts laut Bespreibung auf der Wiki Seite.
              Villeicht kannst mir helfen fals du es hinbekommen hast.

              mfg
              Andi

              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

              863

              Online

              32.4k

              Benutzer

              81.5k

              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