NEWS
Shelly 3EM Pro Datenpunkte
-
-
Hallo
ich habe den Shelly 3EM Pro über MQQT angebunden.
die Messwerte sind unter status emdata:

das Format ist zusammengewürfelt:

Das ist insofern hinderlich, dass ich die Daten z.B. nicht Loggen kann.
Gibt es da eine einfache Abhilfe?mfg
@killroy2 sagte in Shelly 3EM Pro Datenpunkte:
Gibt es da eine einfache Abhilfe?
Shelly Adapter benutzen?
-
@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'}); }); -
Hallo
ich habe den Shelly 3EM Pro über MQQT angebunden.
die Messwerte sind unter status emdata:

das Format ist zusammengewürfelt:

Das ist insofern hinderlich, dass ich die Daten z.B. nicht Loggen kann.
Gibt es da eine einfache Abhilfe?mfg
@killroy2
Ich hab dazu ein Skript geschrieben. https://github.com/ticaki/iobroker-skript-sammlung/blob/main/mqtt-shellyplus.jsEDIT: wenn ich mich recht entsinne konnte der shelly adapter nicht mit 3em pro
-
@killroy2
Ich hab dazu ein Skript geschrieben. https://github.com/ticaki/iobroker-skript-sammlung/blob/main/mqtt-shellyplus.jsEDIT: wenn ich mich recht entsinne konnte der shelly adapter nicht mit 3em pro
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