Skip to content

Add Smart Socket outlet service, test suite, and deployment tooling#33

Merged
EHylands merged 5 commits intoEHylands:mainfrom
dxdc:add-outlet-service-tests-deployment
Apr 13, 2026
Merged

Add Smart Socket outlet service, test suite, and deployment tooling#33
EHylands merged 5 commits intoEHylands:mainfrom
dxdc:add-outlet-service-tests-deployment

Conversation

@dxdc
Copy link
Copy Markdown
Contributor

@dxdc dxdc commented Apr 13, 2026

  • Implement OutletService / OutletServiceZwave for Smart Socket devices (the only unimplemented device type)
  • Add the project's first test suite (18 tests covering zones, partitions, and the outlet service)
  • Fix a few bugs found during development
  • Add deployment guide and systemd service unit
  • Add missing runtime dependencies to pyproject.toml

@EHylands
Copy link
Copy Markdown
Owner

Tnx for your work @dxdc !
I'm glad someone with actual z-wave sockets could report back. Every devices I bought were reporting as dimmers ...

Are you using qolsys-controller in a standalone mode or through home assistant ?

I will look at everything tomorrow. My only concern is with the amqtt import. Just found out after finishing mqtt bridge in v0.5.3 that home assistant can't import any versions of amqtt... I did a few changes in MqttBridge to do some lazy import of amqtt only when bridge is enabled.

Bridge can be disabled for home assistant and I'll to see if it's worth it to use another python broker or switch to an external broker.

@dxdc dxdc force-pushed the add-outlet-service-tests-deployment branch 15 times, most recently from 55fc1b8 to 4834f95 Compare April 13, 2026 06:39
@dxdc dxdc force-pushed the add-outlet-service-tests-deployment branch from 4834f95 to 663afa9 Compare April 13, 2026 06:41
@dxdc
Copy link
Copy Markdown
Contributor Author

dxdc commented Apr 13, 2026

thx for the quick response @EHylands! I'm using it standalone (no Home Assistant). Running 0.5.3 with the MQTT bridge enabled.

I'm glad someone with actual z-wave sockets could report back.

I don't have a physical Z-Wave outlet to test against, but the command is standard Z-Wave SwitchBinary SET - same as lights and sirens.

My only concern is with the amqtt import.

I modified the behavior to make amqtt optional, and instructions amended to use pip install "qolsys-controller[bridge]" when installing for mqtt.

Bug fixes found during real-world testing:

  • zone.py - int("") crash in to_dict_event when zones have empty partition_id
  • zone.py - ZoneStatus and ZoneSensorGroup crashes on values not in the enum (High Temp Alert, Temperature, Temperature CMS, shockawayonly, Siren, translator). Added missing enum members and a fallback with warning for future unknown values.
  • panel.py - device dedup break didn't actually skip device creation (fell through to the next line). Also skips devices with empty node_id.
  • broker.py - cert paths included in broker config even when TLS disabled, causing crash. Also deferred broker creation to _run() so certs are generated before config is built.
  • controller.py - notifiy_panel_status_update typo
  • client.py - missing f-string prefix on error message, private attribute access instead of properties
  • bridge.py - private attribute access instead of properties
  • Test suite - 18 tests covering zones, partitions, and the outlet service.

@EHylands
Copy link
Copy Markdown
Owner

@dxdc
Thanks for the updates. I’ve gone through all the changes and everything looks good.

I’m not currently using a Linux systemd-based OS, so I’m not able to provide feedback on the deployment procedure you described.

I also took a look at the optional import you suggested for enabling the bridge controller. This is what I was also considering.

@EHylands EHylands merged commit 5e4bcc6 into EHylands:main Apr 13, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants