Shellies 2.5 announcement issue?

I have a couple of shellies which are 2.5 version, i think.

So, everything was working fine until latest HA upgrades last year and some of the FW upgrades for Shellies.

In short, the shellie gets commands and responds well on those, but periodical status reporting doesn’t seem to work.

I noticed that i can control devices directly via mqtt but HA doesn’t get the status and shellies are constantly in “unavailable” state.

Digging deeper, i realised that /info and /announce topics get message only before reboot and just after the boot, changing the mqtt_update_period doesn’t seem to change anything.

Here is how the mqtt looks just before reboot and just after the reboot. There is no sign of announce message ever except than. Here is also settings.

$ mosquitto_sub -h 192.168.1.234 -p 1883 -t “shellies/shellyswitch25-AFAFAF/#” -v -u “user” -P ‘pass’

shellies/shellyswitch25-AFAFAF/online true

shellies/shellyswitch25-AFAFAF/announce {
“id”: “shellyswitch25-AFAFAF”,
“model”: “SHSW-25”,
“mac”: “4FC4FFAFAFAF”,
“ip”: “192.168.1.123”,
“new_fw”: false,
“fw_ver”: “20231107-163214/v1.14.1-rc1-g0617c15”,
“mode”: “roller”
}

shellies/shellyswitch25-AFAFAF/info {
“wifi_sta”:
{
“connected”: true,
“ssid”: “ssid”,
“ip”: “192.168.1.123”,
“rssi”: -58
},
“cloud”:
{
“enabled”: false,
“connected”: false
},
“mqtt”:
{
“connected”: true
},
“time”: “”,
“unixtime”: 0,
“serial”: 1,
“has_update”: false,
“mac”: “2CF432AFAFAF”,
“cfg_changed_cnt”: 0,
“actions_stats”:
{
“skipped”: 0
},
“rollers”:
[
{
“state”: “stop”,
“source”: “input”,
“power”: 0.00,
“is_valid”: true,
“safety_switch”: false,
“overtemperature”: false,
“stop_reason”: “normal”,
“last_direction”: “close”,
“current_pos”: 0,
“calibrating”: false,
“positioning”: true
}
],
“meters”:
[
{
“power”: 0.00,
“overpower”: 0.00,
“is_valid”: true,
“timestamp”: 0,
“counters”:
[
0.000,
0.000,
0.000
],
“total”: 0
},
{
“power”: 0.00,
“overpower”: 0.00,
“is_valid”: true,
“timestamp”: 0,
“counters”:
[
0.000,
0.000,
0.000
],
“total”: 0
}
],
“inputs”:
[
{
“input”: 1,
“event”: “”,
“event_cnt”: 0
},
{
“input”: 1,
“event”: “”,
“event_cnt”: 0
}
],
“temperature”: 41.31,
“overtemperature”: false,
“tmp”:
{
“tC”: 41.31,
“tF”: 106.36,
“is_valid”: true
},
“temperature_status”: “Normal”,
“update”:
{
“status”: “unknown”,
“has_update”: false,
“new_version”: “”,
“old_version”: “20231107-163214/v1.14.1-rc1-g0617c15”
},
“ram_total”: 50728,
“ram_free”: 37516,
“fs_size”: 233681,
“fs_free”: 144325,
“voltage”: 239.76,
“uptime”: 1
}

shellies/shellyswitch25-AFAFAF/roller/0 stop
shellies/shellyswitch25-AFAFAF/roller/0/pos 0
shellies/shellyswitch25-AFAFAF/roller/0/stop_reason normal
shellies/shellyswitch25-AFAFAF/roller/0/power 0.00
shellies/shellyswitch25-AFAFAF/relay/power 0.00
shellies/shellyswitch25-AFAFAF/roller/0/energy 0
shellies/shellyswitch25-AFAFAF/relay/energy 0
shellies/shellyswitch25-AFAFAF/input/1 1
shellies/shellyswitch25-AFAFAF/input/0 1
shellies/shellyswitch25-AFAFAF/temperature 41.31
shellies/shellyswitch25-AFAFAF/temperature_f 106.36
shellies/shellyswitch25-AFAFAF/overtemperature 0
shellies/shellyswitch25-AFAFAF/temperature_status Normal
shellies/shellyswitch25-AFAFAF/voltage 239.76

shellies/shellyswitch25-AFAFAF/announce {
“id”: “shellyswitch25-AFAFAF”,
“model”: “SHSW-25”,
“mac”: “2CF432AFAFAF”,
“ip”: “192.168.1.123”,
“new_fw”: true,
“fw_ver”: “20231107-163214/v1.14.1-rc1-g0617c15”,
“mode”: “roller”
}

shellies/shellyswitch25-AFAFAF/roller/0 stop
shellies/shellyswitch25-AFAFAF/roller/0/pos 0
shellies/shellyswitch25-AFAFAF/roller/0/stop_reason normal
shellies/shellyswitch25-AFAFAF/roller/0/power 0.00
shellies/shellyswitch25-AFAFAF/relay/power 0.00
shellies/shellyswitch25-AFAFAF/roller/0/energy 0
shellies/shellyswitch25-AFAFAF/relay/energy 0
shellies/shellyswitch25-AFAFAF/input/1 1
shellies/shellyswitch25-AFAFAF/input/0 1
shellies/shellyswitch25-AFAFAF/temperature 41.45
shellies/shellyswitch25-AFAFAF/temperature_f 106.61
shellies/shellyswitch25-AFAFAF/overtemperature 0
shellies/shellyswitch25-AFAFAF/temperature_status Normal
shellies/shellyswitch25-AFAFAF/voltage 239.76

Also, i have been trying to set the cover with it in HA but it’s always marked as unavailable button.

Here is the config for HA:

mqtt:
cover:
name: “Some Cover”
unique_id: some_cover
state_topic: “shellies/shellyswitch25-FFBBAA/roller/0”
command_topic: “shellies/shellyswitch25-FFBBAA/roller/0/command”
position_topic: “shellies/shellyswitch25-FFBBAA/roller/0/pos”
set_position_topic: “shellies/shellyswitch25-FFBBAA/roller/0/command/pos”
availability:
- topic: “shellies/shellyswitch25-FFBBAA/announce”
payload_available: “true”
payload_not_available: “false”
qos: 2
retain: true
payload_open: “open”
payload_close: “close”
payload_stop: “stop”
position_open: 0
position_closed: 100
optimistic: false

Any clue, any suggestion?

Just in case, here is the device’s settings:

{“device”:{“type”:“SHSW-25”,“mac”:“2CF432686E0E”,“hostname”:“shellyswitch25-686E0E”,“num_outputs”:2,“num_meters”:2,“num_rollers”:1,“mode”:“roller”},“wifi_ap”:{“enabled”:false,“ssid”:“shellyswitch25-AAFFCC”,“key”:“”},“wifi_sta”:{“enabled”:true,“ssid”:“busillis”,“ipv4_method”:“static”,“ip”:“192.168.1.123”,“gw”:“192.168.1.1”,“mask”:“255.255.255.0”,“dns”:“192.168.1.1”},“wifi_sta1”:{“enabled”:false,“ssid”:null,“ipv4_method”:“dhcp”,“ip”:null,“gw”:null,“mask”:null,“dns”:null},“ap_roaming”:{“enabled”:false,“threshold”:-70},“mqtt”:{“enable”:true,“server”:“192.168.1.321:1883”,“user”:“space”,“id”:“shellyswitch25-AAFFCC”,“reconnect_timeout_max”:60.000000,“reconnect_timeout_min”:2.000000,“clean_session”:true,“keep_alive”:60,“max_qos”:0,“retain”:false,“update_period”:30},“coiot”:{“enabled”:true,“update_period”:15,“peer”:“192.168.1.321:5683”},“sntp”:{“server”:“time.google.com”,“enabled”:true},“login”:{“enabled”:true,“unprotected”:false,“username”:“space”},“pin_code”:“”,“name”:null,“fw”:“20231107-163214/v1.14.1-rc1-g0617c15”,“factory_reset_from_switch”:true,“pon_wifi_reset”:false,“discoverable”:true,“build_info”:{“build_id”:“20231107-163214/v1.14.1-rc1-g0617c15”,“build_timestamp”:“2023-11-07T16:32:14Z”,“build_version”:“1.0”},“cloud”:{“enabled”:false,“connected”:false},“timezone”:“Europe/Zagreb”,“lat”:42.845333,“lng”:11.359555,“tzautodetect”:true,“tz_utc_offset”:3600,“tz_dst”:true,“tz_dst_auto”:true,“time”:“19:39”,“unixtime”:169444555,“led_status_disable”:false,“debug_enable”:false,“allow_cross_origin”:true,“actions”:{“active”:false,“names”:[“btn_on_url”,“btn_off_url”,“longpush_url”,“shortpush_url”,“out_on_url”,“out_off_url”,“btn_on_url”,“btn_off_url”,“longpush_url”,“shortpush_url”,“out_on_url”,“out_off_url”,“roller_open_url”,“roller_close_url”,“roller_stop_url”]},“hwinfo”:{“hw_revision”:“prod-2019-03”,“batch_id”:1},“mode”:“roller”,“max_power”:1840,“longpush_time”:800,“relays”:[{“name”:null,“appliance_type”:“General”,“ison”:false,“has_timer”:false,“default_state”:“off”,“btn_type”:“toggle”,“btn_reverse”:0,“auto_on”:0.00,“auto_off”:0.00,“max_power”:0,“schedule”:false,“schedule_rules”:},{“name”:null,“appliance_type”:“General”,“ison”:false,“has_timer”:false,“default_state”:“off”,“btn_type”:“toggle”,“btn_reverse”:0,“auto_on”:0.00,“auto_off”:0.00,“max_power”:0,“schedule”:false,“schedule_rules”:}],“rollers”:[{“maxtime”:20.00,“maxtime_open”:37.00,“maxtime_close”:37.00,“default_state”:“stop”,“swap”:true,“swap_inputs”:false,“input_mode”:“openclose”,“button_type”:“toggle”,“btn_reverse”:1,“state”:“stop”,“power”:0.00,“is_valid”:true,“safety_switch”:false,“schedule”:false,“schedule_rules”:,“obstacle_mode”:“disabled”,“obstacle_action”:“stop”,“obstacle_power”:200,“obstacle_delay”:1,“ends_delay”:2500,“safety_mode”:“while_opening”,“safety_action”:“stop”,“safety_allowed_on_trigger”:“none”,“off_power”:2,“positioning”:true}],“favorites_enabled”:true,“favorites”:[{“name”:“Position 1”,“pos”:0},{“name”:“Position 2”,“pos”:0},{“name”:“Position 3”,“pos”:0},{“name”:“Position 4”,“pos”:0}],“eco_mode_enabled”:false}

Shellie’s support esphome which is kind of the gold standard when it comes to HA (both are under the hood from nabu casa).

You can install esphome on your Shelly via web ui and use the native api which is kind of a zero setup solution and works for me since I swapped all my compatible devices to esphome without a single failure.

Beside the native api is more efficent than mqtt which can be seen as a bonus too.

Thank you, i didn’t know that.

Though, i don’t know who would use this after me so i don’t want to change it drastically. Some time late i might want to just use shellie app.