Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Shelly 3EM Pro Datenpunkte

    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

    Shelly 3EM Pro Datenpunkte

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

      Hallo
      ich habe den Shelly 3EM Pro über MQQT angebunden.
      die Messwerte sind unter status emdata:
      a1c2ac45-2b88-49ea-bce6-03632a760ea6-image.png

      das Format ist zusammengewürfelt:
      1e29434b-ff01-426e-bf45-bb4e0d78098a-image.png

      Das ist insofern hinderlich, dass ich die Daten z.B. nicht Loggen kann.
      Gibt es da eine einfache Abhilfe?

      mfg

      Samson71 T 2 Replies Last reply Reply Quote 0
      • Samson71
        Samson71 Global Moderator @killroy2 last edited by

        @killroy2 sagte in Shelly 3EM Pro Datenpunkte:

        Gibt es da eine einfache Abhilfe?

        Shelly Adapter benutzen?

        1 Reply Last reply Reply Quote 1
        • K
          killroy2 last edited by

          @Samson71 Danke für den Tip. Einen zweiten MQTT Broker laufen zu lassen für den kleinen Vorteil der besseren Darstellung gefällt mir für mich persönlich nicht.
          Ich habe jetzt doch ein Skript gebastelt, was den Job macht. Es ist nur sehr grob getestet.

          //split shelly 3 pro em json
          
          const idShellyPro3EM = "shellypro3em-yourid";
          const idEmJson = "mqtt.0."+idShellyPro3EM + ".status.em:0";
          const idEmdataJson = "mqtt.0."+idShellyPro3EM + ".status.emdata:0";
          const userdataPath = "0_userdata.0.ShellyPro3EM.";
           
          on(idEmJson, function(dp) {
              let id = "a_current";
              let obj = JSON.parse(dp.state.val);
              let storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.current', unit: 'A'});
          
              id = "b_current";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.current', unit: 'A'});
          
              id = "c_current";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.current', unit: 'A'});
          
              id = "n_current";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.current', unit: 'A'});
          
              id = "total_current";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.current', unit: 'A'});
          
              id = "a_voltage";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.voltage', unit: 'V'});
          
              id = "b_voltage";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.voltage', unit: 'V'});
          
              id = "c_voltage";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.voltage', unit: 'V'});
          
              id = "a_act_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'W'});
          
              id = "b_act_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'W'});
          
              id = "c_act_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'W'});
          
              id = "total_act_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'W'});
          
              id = "a_aprt_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'VA'});
          
              id = "b_aprt_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'VA'});
          
              id = "c_aprt_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'VA'});
          
              id = "total_aprt_power";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power', unit: 'VA'});
          
              id = "a_pf";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value'});
          
              id = "b_pf";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value'});
          
              id = "c_pf";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value'});
          });
          
          on(idEmdataJson, function(dp) {
              let id = "a_total_act_energy";
              let obj = JSON.parse(dp.state.val);
              let storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "b_total_act_energy";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "c_total_act_energy";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "total_act";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "a_total_act_ret_energy";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "b_total_act_ret_energy";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "c_total_act_ret_energy";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});
          
              id = "total_act_ret";
              obj = JSON.parse(dp.state.val);
              storageId = userdataPath + id;
              if(existsState(storageId)) setState(storageId, obj[id], true);
              else createState(storageId, obj[id], {type: 'number', name: id, role: 'value.power.consumption', unit: 'Wh'});    
          });
          
          1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @killroy2 last edited by ticaki

            @killroy2
            Ich hab dazu ein Skript geschrieben. https://github.com/ticaki/iobroker-skript-sammlung/blob/main/mqtt-shellyplus.js

            EDIT: wenn ich mich recht entsinne konnte der shelly adapter nicht mit 3em pro

            K 1 Reply Last reply Reply Quote 0
            • K
              killroy2 @ticaki last edited by

              @ticaki
              Danke für den Link, dein Skript funktioniert für mich und ist universell.
              Der Shelly Adapter kann mittlerweile Pro 3 EM

              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

              492
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              3
              5
              1119
              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