[APP][Pro] Homewizard πŸ§™β€β™‚οΈ

Thank you kindly for donations. Hard to match the names with the donation versus the usernames here but want to be sure it is most welcome. :folded_hands:

v3.9.15 (test)

  • Finetune: P1(apiv2) websocket + polling, capability updates
  • Finetune: energy_sockets (fetch / timeout) centralized

For the moment, this version seems to run stable for me :slight_smile:
The issues I had appear to be resolved

Thanks

Good to hear. I have one (alpha) version running locally which I will push to test (beta) later today and then make it stable. It’s a large update compared to current stable version.

test/beta

v3.9.17

  • New Plugin Battery mode support (zero_charge_only & zero_discharge_only)
  • Optional gas checkbox (default enabled) for P1 (apiv1 and apiv2). (User request)
  • Added 15min power datapoint for Belgium (average_power_15m_w) P1(apiv2) (user request)
  • Plugin Battery - Bugfix setMode for to_full (PUT)
  • Updated SDM230_v2 and SDM630_v2 drivers
  • Bugfix - Updated P1apiv2 check-battery-mode condition card
  • Backward compatibilty fix for the new battery mode applied to older P1 firmware.
  • Bugfix - Websocket payload battery mode adjustment
  • Fixed: rare crash when _handleBatteries() ran after a device was deleted, causing Not Found: Device with ID … errors during setStoreValue.
  • Phase overload notification setting added and a limiter to avoid notification flooding
  • New Feature: Baseload (sluipverbruik) detection (experimental)
  • Bugfix: energy_socket connection_error capability fix
  • Bugfix: energy_v2 (handleBatteries) - device_not_found crash
  • Bugfix: trigger cards for SDM230_v2
  • APIv2 change pairing: Modified the username that is used during pair made it unique per homey
  • Bugfix: APIv2 pairing β†’ local/homey_xxxxxx
  • Bugfix: SDM630v2 trigger cards removed (obsolete as these are default Homey)
  • Finetune: P1(apiv2) websocket + polling, capability updates
  • Finetune: energy_sockets (fetch / timeout) centralized
  • Refractor code update for P1apiv1, SDM230, SDM630, watermeter
  • Customizable phase overload warning + reset
  • Phase 1 /3 fix for P1(apiv1) after refractor code update

2 Likes

Nice job again! Thanks

However, I don’t see/get the fase overload % parts (on SHS) will try HP2023

Do i need to re-add the P1?

Currently only P1 APIv1. Haven’t touched the APIv2 code on this (yet) as I want to be sure it is fine.
It should work on SHS with a P1(APIv1).

I have auto update enabled - after this update applied, it looks like my P1 meter and KWH meter both went offline (both added via v2 api).

I had to power cycle them both before they reconnected (they remained online in HomeWizard app)
All other HomeWizard devices were still connected in Homey, its just P1 and KWH meter that were not.

If restart fixed that, its a mDNS problem.

That does not make sense to be fair, the other devices do reconnect fine. I do have a IoT vlan but mDNS is being broadcast to the vlan where homey SHS is running. I have other devices using mDNS and I have no issues there.

I had the same issue when I connected all my homewizard devices to Homey SHS (still running the stable app) where I had to restart every device before I could add it but once added, it works.

Could it be an issue on the device itself that it doesn’t advertise mDNS if its been running for a while and only triggers it after a restart? Perhaps Homewizard needs to fix something?

Drop me a diagnostics if you nit have restarted the app.
I had no problems with my devices both apiv1 and apiv2 during last few days code fixes.

Here you go: d8bddeb4-e7ba-4f0f-b8b0-209a439b39d2

I did restart the app earlier but that did not reconnect the devices. Then I restarted the p1 meter and it reconnected again. I did not restart the app afterwards.

Your log confirms my thoughts. Somehow mDNS did not announce your kwh in this log. Even my fallback code has no details to recover the old url.
But I do see 1 flaw in my code is storing the existing (working url) for fallback.


2025-12-24T15:26:19.684Z [log] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] Settings for SDM230 apiv2:  10
2025-12-24T15:26:19.701Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] Settings for P1 apiv2:  10
2025-12-24T15:26:19.701Z [log] [ManagerFlow] [FlowCardCondition][check-battery-mode] Warning: Run listener was already registered.
2025-12-24T15:26:19.701Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] βš™οΈ Polling enabled via settings
2025-12-24T15:26:19.702Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] ⏱️ Polling gestart met interval: 10s
2025-12-24T15:26:19.705Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] Settings for Plugin Battery:  10
2025-12-24T15:26:19.717Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] Settings for Plugin Battery:  10
2025-12-24T15:26:19.867Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:8a4c5fd2-76f9-4682-b5b0-8901f8ab2389] Restored URL from settings: http://172.31.25.51:80/api/v1
2025-12-24T15:26:20.554Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] πŸ”Œ WebSocket opened β€” waiting to authorize...
2025-12-24T15:26:20.554Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] πŸ” Sending WebSocket authorization
2025-12-24T15:26:20.636Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] πŸ”Œ WebSocket opened β€” waiting to authorize...
2025-12-24T15:26:20.636Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] πŸ” Sending WebSocket authorization
2025-12-24T15:26:21.082Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:8ece6cbc-ab48-41f5-bd64-33149e1534c0] Restored URL from settings: http://172.31.27.3:80/api/v1
2025-12-24T15:26:22.092Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:3cb72ad6-5cb3-4646-bb98-a74980b3182b] Restored URL from settings: http://172.31.25.35:80/api/v1
2025-12-24T15:26:22.180Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:cb8d40cb-2348-4899-8e3e-b476c74c6e63] Restored URL from settings: http://172.31.25.37:80/api/v1
2025-12-24T15:26:25.316Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:bd269014-d994-42eb-8768-a940851f2ab3] Restored URL from settings: http://172.31.25.52:80/api/v1
2025-12-24T15:26:27.703Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:f1638c1c-b021-455a-8e08-35f3f761883e] Restored URL from settings: http://172.31.27.4:80/api/v1
2025-12-24T15:26:28.149Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:a5f2f82d-dbf3-4efa-9c94-45afaa8bc6ed] Restored URL from settings: http://172.31.27.1:80/api/v1
2025-12-24T15:26:29.554Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:bbfabc47-aa3a-4a3a-ad4c-cb15dc9279c3] Restored URL from settings: http://172.31.27.6:80/api/v1
2025-12-24T18:24:26.690Z [log] [HomeWizardApp] HomeWizard app ready!
2025-12-24T18:24:26.917Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] Settings for P1 apiv2:  10
2025-12-24T18:24:26.917Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] βš™οΈ Polling enabled via settings
2025-12-24T18:24:26.918Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] ⏱️ Polling gestart met interval: 10s
2025-12-24T18:24:26.921Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] Settings for Plugin Battery:  10
2025-12-24T18:24:26.934Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] Settings for Plugin Battery:  10
2025-12-24T18:24:26.936Z [log] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] Settings for SDM230 apiv2:  10
2025-12-24T18:24:26.936Z [log] [ManagerFlow] [FlowCardCondition][check-battery-mode] Warning: Run listener was already registered.
2025-12-24T18:24:27.327Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:cb8d40cb-2348-4899-8e3e-b476c74c6e63] Restored URL from settings: http://172.31.25.37:80/api/v1
2025-12-24T18:24:27.637Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] πŸ”Œ WebSocket opened β€” waiting to authorize...
2025-12-24T18:24:27.637Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:1723bbaf-2580-496f-8d3d-40a3504e422c] πŸ” Sending WebSocket authorization
2025-12-24T18:24:27.700Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] πŸ”Œ WebSocket opened β€” waiting to authorize...
2025-12-24T18:24:27.700Z [log] [ManagerDrivers] [Driver:plugin_battery] [Device:cab34784-901c-434f-bfca-5e153584e50d] πŸ” Sending WebSocket authorization
2025-12-24T18:24:28.884Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:f1638c1c-b021-455a-8e08-35f3f761883e] Restored URL from settings: http://172.31.27.4:80/api/v1
2025-12-24T18:24:29.534Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:8a4c5fd2-76f9-4682-b5b0-8901f8ab2389] Restored URL from settings: http://172.31.25.51:80/api/v1
2025-12-24T18:24:30.227Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:a5f2f82d-dbf3-4efa-9c94-45afaa8bc6ed] Restored URL from settings: http://172.31.27.1:80/api/v1
2025-12-24T18:24:30.259Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:3cb72ad6-5cb3-4646-bb98-a74980b3182b] Restored URL from settings: http://172.31.25.35:80/api/v1
2025-12-24T18:24:31.586Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:8ece6cbc-ab48-41f5-bd64-33149e1534c0] Restored URL from settings: http://172.31.27.3:80/api/v1
2025-12-24T18:24:32.650Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:bbfabc47-aa3a-4a3a-ad4c-cb15dc9279c3] Restored URL from settings: http://172.31.27.6:80/api/v1
2025-12-24T18:24:33.350Z [log] [ManagerDrivers] [Driver:energy_socket] [Device:bd269014-d994-42eb-8768-a940851f2ab3] Restored URL from settings: http://172.31.25.52:80/api/v1
2025-12-24T18:32:50.709Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] 🌐 Discovery available β€” IP set to: 172.31.25.9
2025-12-24T18:32:51.215Z [log] [ManagerDrivers] [Driver:energy_v2] [Device:7af5d777-60e6-492d-98d7-94a3dc179b81] πŸ” Discovery: polling is active, skipping WebSocket reconnect

    stderr:
    2025-12-24T19:00:17.182Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:00:27.183Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:00:37.186Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:00:47.188Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:00:57.188Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:01:07.189Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:01:17.190Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:01:27.190Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll
2025-12-24T19:01:37.193Z [err] [ManagerDrivers] [Driver:SDM230_v2] [Device:a6a21a75-74f8-4832-9eff-16511ea8d973] ❌ this.url is empty and no fallback settings.url found β€” aborting poll

I did not restart my Kwh meter yet :sweat_smile:
Could the flaw be just for the P1 and KWH meter that the previous working url is not stored as the other devices do appear to restore the URL from settings?

I am not sure on the mDNS yet but I am doing some more tests. I do not see the Homewizard devices in the mDNS explorer from my normal vlan if they have been running for a while but I do see them for some time if I restart them but eventually after few hours they disappear again.

It could be my Fortigate doing something weird with mDNS but it does appear very specific to the HomeWizard devices as my other devices (nanoleaf, shelly and sonos) remain visible constantly. This part seems to be more on my end then your app so I will continue looking into it :smiley:

Yes flaw could be the cause but that still confirms my first answer, failure in your network to mDNS.
I will fix the fallback but it doesnt fix the missing url in the mDNS broadcast Homey should receive.
In unifi there is a setting that blocks multicast broadcasts and turns them into unicast. You can read more up in this topic for unifi example.

Should be fixed in v3.9.18…but…it still needs successful mDNS discovery first before it will load the url for backup.

Good morning, I am running version v3.9.18 and I have trouble adding devices. Whenever I select what type of device I want to add I get a β€˜New devices found’ screen, with an error on it.

This is my diagnostics ID: 59017e5c-6ca0-4054-93e4-ca15e01e3769

I am running this test version, as the non-test version had trouble finding my kWh Meters. It could find my P1 and watermeter tho :man_shrugging: . Running on self-hosted.

Diagnostic is not showing the error. I guess you restarted the app. Please do it again (find / pair) get the error and then sent diagnostic.

Further what device are you trying to add there?

I did that just now: 3d8292dd-8f1f-426b-b547-7aaa368989b1

I tried adding my kWh Meter 3-phase (I tried the normal and the APIv2 version) devices.

Strange, again no error. This needs more digging at my end.