<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sia-server, branch main</title>
<subtitle>IoT backend server</subtitle>
<id>https://cgit.xengineering.eu/sia-server/atom</id>
<link rel='self' href='https://cgit.xengineering.eu/sia-server/atom'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/'/>
<updated>2026-03-27T14:03:06Z</updated>
<entry>
<title>Add -dev version suffix again</title>
<updated>2026-03-27T14:03:06Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T14:03:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=0fe8bd71dd571e5fd91c395d7e10a09a2520d35c'/>
<id>urn:sha1:0fe8bd71dd571e5fd91c395d7e10a09a2520d35c</id>
<content type='text'>
This makes sure only releases have version string without this suffix.
</content>
</entry>
<entry>
<title>Release version 0.2.0</title>
<updated>2026-03-27T14:02:35Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T14:02:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=1c87b32b0cb48abeeb5d6f9dd0e75b20c08ab4ea'/>
<id>urn:sha1:1c87b32b0cb48abeeb5d6f9dd0e75b20c08ab4ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update CHANGELOG.md</title>
<updated>2026-03-27T14:01:56Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T14:01:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=35a434338c9430bfa0f18e409b35db881b21d1d6'/>
<id>urn:sha1:35a434338c9430bfa0f18e409b35db881b21d1d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'server-version'</title>
<updated>2026-03-27T13:46:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T13:46:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=ea47c2fd4eb17cc9ce0dc9fbe6f7d325e8be77b2'/>
<id>urn:sha1:ea47c2fd4eb17cc9ce0dc9fbe6f7d325e8be77b2</id>
<content type='text'>
This is required to let the client identify the server version.
</content>
</entry>
<entry>
<title>Add server version publishing</title>
<updated>2026-03-27T13:43:56Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T13:39:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=3158a0a132d6af4de78c9be90e45834350cfd414'/>
<id>urn:sha1:3158a0a132d6af4de78c9be90e45834350cfd414</id>
<content type='text'>
This makes it possible that the client adapts it's behaviour easily to
the server version making support of breaking API changes during early
development and debugging easier.
</content>
</entry>
<entry>
<title>Add version to start / stop log messages</title>
<updated>2026-03-27T13:30:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T13:30:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=5b64946098839d3df679bdc7ef1c4cc4e692323a'/>
<id>urn:sha1:5b64946098839d3df679bdc7ef1c4cc4e692323a</id>
<content type='text'>
This makes it more transparent which version is executed.
</content>
</entry>
<entry>
<title>Move version string to VERSION.txt</title>
<updated>2026-03-27T13:28:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-27T13:28:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=6c920f59a20849deb882f60a3eab42b069914a7e'/>
<id>urn:sha1:6c920f59a20849deb882f60a3eab42b069914a7e</id>
<content type='text'>
This new files can easily be included into Meson and Go. Passing it from
Meson to Go or vice versa is not that easy.

Thus the version string is now maintained in a dedicated file.
</content>
</entry>
<entry>
<title>Merge branch 'discovery'</title>
<updated>2026-03-26T20:35:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T20:35:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=0fb9d297871e57372c469c6e8ca2b43813ed1f52'/>
<id>urn:sha1:0fb9d297871e57372c469c6e8ca2b43813ed1f52</id>
<content type='text'>
This allows the client to discover the existence of Shelly and TP-Link
devices.
</content>
</entry>
<entry>
<title>Add Shelly / TP-Link device discovery</title>
<updated>2026-03-26T20:34:16Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T20:02:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=0ec5e0034891075ca0c70c6d29e20442c8ddb46e'/>
<id>urn:sha1:0ec5e0034891075ca0c70c6d29e20442c8ddb46e</id>
<content type='text'>
This announces Shelly and TP-Link devices with an empty MQTT message.
This makes it possible that a client can display the available devices.
</content>
</entry>
<entry>
<title>Add `Retain` attribute to MQTTMessage</title>
<updated>2026-03-26T19:57:22Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T19:57:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=443ba52ab3f49a28e8874ebcb5476e36c3defb4c'/>
<id>urn:sha1:443ba52ab3f49a28e8874ebcb5476e36c3defb4c</id>
<content type='text'>
This allows the sending part of the code to decide about the retain
flag. The MQTT go routine will set it accordingly.
</content>
</entry>
<entry>
<title>Merge branch 'tp-link'</title>
<updated>2026-03-26T16:48:09Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T16:48:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=a965777d436f3bd68686e3b33066459c7ed5a01c'/>
<id>urn:sha1:a965777d436f3bd68686e3b33066459c7ed5a01c</id>
<content type='text'>
This adds support for the TP-Link HS100 Wi-Fi plugs.
</content>
</entry>
<entry>
<title>Add TP-Link HS100 support</title>
<updated>2026-03-26T16:46:54Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T16:46:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=5c7284640a6f0ddc0aa80178d5a3b91a5123b6c8'/>
<id>urn:sha1:5c7284640a6f0ddc0aa80178d5a3b91a5123b6c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add TP-Link config parsing</title>
<updated>2026-03-26T16:31:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T16:25:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=aecc47c3f558dc3f0548d4c8e69f20ed893f5196'/>
<id>urn:sha1:aecc47c3f558dc3f0548d4c8e69f20ed893f5196</id>
<content type='text'>
This is required to assign IDs and IP addresses.
</content>
</entry>
<entry>
<title>Document support and API for TP-Link HS100</title>
<updated>2026-03-26T16:08:21Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-26T16:08:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=5bfb53eb9bb16eebc9bc2751d8c9c5baea6a6b37'/>
<id>urn:sha1:5bfb53eb9bb16eebc9bc2751d8c9c5baea6a6b37</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'shelly'</title>
<updated>2026-03-25T20:37:20Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-25T20:37:20Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=4bc67b734dc8c90dd4679877e8825da32e67b7eb'/>
<id>urn:sha1:4bc67b734dc8c90dd4679877e8825da32e67b7eb</id>
<content type='text'>
This adds basic support for Shelly 2PM Gen3 devices.
</content>
</entry>
<entry>
<title>Add Shelly command sending</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-25T20:00:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=6001997a66c4c4b12e9d8b0853fef0fc0ff14768'/>
<id>urn:sha1:6001997a66c4c4b12e9d8b0853fef0fc0ff14768</id>
<content type='text'>
This allows basic control of Covers connected to Shelly devices.
</content>
</entry>
<entry>
<title>Refactor and add routing concept</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-25T19:33:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=476db7047a9c650057c034c647ea66f3c38e8a53'/>
<id>urn:sha1:476db7047a9c650057c034c647ea66f3c38e8a53</id>
<content type='text'>
This scales better when additional receiving routes will be added.
</content>
</entry>
<entry>
<title>Add Shelly cover message parsing</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T20:34:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=bfd840bfd843f95183568f7ef6a9880a810ce049'/>
<id>urn:sha1:bfd840bfd843f95183568f7ef6a9880a810ce049</id>
<content type='text'>
This results in the information of which command is to issue and which
IP address the command has to be sent to.

This is what is needed to deliver the message with Websockets. This
delivery is the last step to implement basic Shelly cover support.
</content>
</entry>
<entry>
<title>Add MQTT subscription for /cover/&lt;id&gt;/movement</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T19:53:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=1bd2833f81379f25b29ab5d929f14e51700fa471'/>
<id>urn:sha1:1bd2833f81379f25b29ab5d929f14e51700fa471</id>
<content type='text'>
This let's the Sia server receive cover movement commands. For now they
are simply logged.
</content>
</entry>
<entry>
<title>Add MQTTMessage.String()</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T19:46:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=64f8cf0630ce51349b94aca2f91617d373ee800d'/>
<id>urn:sha1:64f8cf0630ce51349b94aca2f91617d373ee800d</id>
<content type='text'>
This simplifies debugging.
</content>
</entry>
<entry>
<title>Document /cover/&lt;id&gt;/movement MQTT topic</title>
<updated>2026-03-25T20:09:11Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T19:10:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=ece5ee8e002d7025eb2ed82f58c94f8a028f3b91'/>
<id>urn:sha1:ece5ee8e002d7025eb2ed82f58c94f8a028f3b91</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add shelly configuration parsing</title>
<updated>2026-03-25T20:09:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T16:59:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=776e6fdd8415edd0daa5743c35cbee029a89c6a7'/>
<id>urn:sha1:776e6fdd8415edd0daa5743c35cbee029a89c6a7</id>
<content type='text'>
This allows to specify Shelly cover devices to be added to the
configuration file with all information required by the Sia server.
</content>
</entry>
<entry>
<title>Add test mqtt-topic-prefix-max-characters.json</title>
<updated>2026-03-23T18:56:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T16:41:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=91844eb24c16d7ba768f913597702f8075fe8af2'/>
<id>urn:sha1:91844eb24c16d7ba768f913597702f8075fe8af2</id>
<content type='text'>
This makes sure the maximum `mqtt/topic-prefix` string length is
accepted.
</content>
</entry>
<entry>
<title>Test everything in configs/valid</title>
<updated>2026-03-23T18:56:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T16:40:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=14c0c7fa79f599ddab8fa0b2fd2ee7853fa617fe'/>
<id>urn:sha1:14c0c7fa79f599ddab8fa0b2fd2ee7853fa617fe</id>
<content type='text'>
This allows easily to add JSON configuration files testing certain
aspects.
</content>
</entry>
<entry>
<title>Move default.json to configs/valid</title>
<updated>2026-03-23T18:56:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T16:25:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=04e6d681f04731c67b9b65fb6a55a21184fd4baa'/>
<id>urn:sha1:04e6d681f04731c67b9b65fb6a55a21184fd4baa</id>
<content type='text'>
Since the default configuration is a valid configuration it should
belong to this new directory. This allows to continue with extending
automated tests to test all configurations in this directory.
</content>
</entry>
<entry>
<title>Simplify TestDefaultConfig</title>
<updated>2026-03-23T16:07:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-23T16:07:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=1337229d4a202099d9847778507faa0f0f207f82'/>
<id>urn:sha1:1337229d4a202099d9847778507faa0f0f207f82</id>
<content type='text'>
The validation step is always called in .FromJSON().
</content>
</entry>
<entry>
<title>go.mod: Make MQTT and Websocket dependencies explicit</title>
<updated>2026-03-23T15:55:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-21T15:34:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=7afbc98e6d715eef8809beb9793ccf5096104e26'/>
<id>urn:sha1:7afbc98e6d715eef8809beb9793ccf5096104e26</id>
<content type='text'>
This was forgotten so far and fixed with `go mod tidy`.
</content>
</entry>
<entry>
<title>Document MQTT interface</title>
<updated>2026-03-23T15:55:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-22T10:32:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=793f50953241d151745642d238ac5fe13aee4692'/>
<id>urn:sha1:793f50953241d151745642d238ac5fe13aee4692</id>
<content type='text'>
It is even quite late to document the main application programming
interface (API) of the Sia server. This is now fixed.
</content>
</entry>
<entry>
<title>Fix warning about OS signal listener</title>
<updated>2026-03-23T15:55:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-22T09:49:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=730907f34002ded0bbb3e1b57b48a8168fddcfdb'/>
<id>urn:sha1:730907f34002ded0bbb3e1b57b48a8168fddcfdb</id>
<content type='text'>
An unbuffered channel triggers a warning here. This can easily be fixed
by switching to a buffered channel with buffer length 1.
</content>
</entry>
<entry>
<title>Document Shelly 2PM Gen3 support</title>
<updated>2026-03-23T15:55:47Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-03-21T14:45:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/sia-server/commit/?id=52d5d96fb3389ffb415756d0a806bb321227303a'/>
<id>urn:sha1:52d5d96fb3389ffb415756d0a806bb321227303a</id>
<content type='text'>
This advertises the support for this and documents links to
documentation and the vendor home page.
</content>
</entry>
</feed>
