Shelly reporting frequency

Hi, all.
I have multiple shelly pro 3EM devices all over the place.
I am looking for a solution to decrease the reporting interval from 15s to something like 2-3 seconds.
Does anyone have any tips how to do it?
Is there a way how to tell the device from HA to “do the update”? I know there is RPC call for it, but even when I trigger it, the HA does not seem to read the MQTT update for some reason.
I guess the HA Shelly integration does not use MQTT for data transfer…

Standard Shelly integration uses Shelly API to connect directly to devices. From what I can observe on my 3EM updates are seen by HA as soon as something changes, sometimes every second. Not sure where you got 15 secs from… perhaps you are using old HACS integration?

That might be true for 3EM, but for PRO 3EM the update is set to 15 seconds apparently.
Source: Changelog | Shelly Technical Documentation (look at Changed part). Confirmed by shelly support.
They recommended some sort of local device script. I can trigger EM.GetStatus to see the new data, but I have no idea how to “send” them to HA :frowning:

Hi after the update to the newest FW i and others hat the same problem, the update rate is very slow even in the web interface. Before it was every 1-3s wich worked perfect for my solar management and zero export script but this update crashed everything. I downgraded to version 0.14.1 and it worked again.
Link to the old version https://shelly-infra1-eu.shelly.cloud/stable-firmware/Pro3EM/fw-signed.zip
Others now use a script ad MQTT to push the data more often to HA

See also the German forum

Add a Script in the Pro 3EM that send EM data via MQTT or use Modbus.

// Schicke die die Leistungsdaten per MQTT alle X Sekunden weil die aktuelle FW das nur alle 15 sek macht.

let SHELLY_ID = undefined;
Shelly.call("Mqtt.GetConfig", "", function (res, err_code, err_msg, ud) {
  SHELLY_ID = res["topic_prefix"];
});

function timerHandler(user_data)
{
  let em = Shelly.getComponentStatus("em", 0);
         MQTT.publish(SHELLY_ID + "/status/em:0",JSON.stringify(em),0,false);
 }
Timer.set(3000, true, timerHandler, null);

This Script send EM data via MQTT all 3 seconds, but any Intervall is possible, Timer.set(3000, true, timerHandler, null); Change 3000 to the desired interval in ms. minimum is 1000ms.

1 Like

I apologize, for some reason I did not receive email about your response.
Thanks for the code - it works, of course, but it does not update the HA status.
However, I’ve created custom MQTT sensor, reading the JSON generated by your script and that works OK for me - now I have much faster update from power and much smoother update of my go-e EV charger.
THANKS!

Next FW come to fix this issue

Support Shelly Write:
Thank you for your patience!
Now live is version 1.0.5, where this problem is addressed.
You can make an update to solve your issue.“