summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-03-26Add `Retain` attribute to MQTTMessagexengineering
This allows the sending part of the code to decide about the retain flag. The MQTT go routine will set it accordingly.
2026-03-26Merge branch 'tp-link'xengineering
This adds support for the TP-Link HS100 Wi-Fi plugs.
2026-03-26Add TP-Link HS100 supportxengineering
2026-03-26Add TP-Link config parsingxengineering
This is required to assign IDs and IP addresses.
2026-03-26Document support and API for TP-Link HS100xengineering
2026-03-25Merge branch 'shelly'xengineering
This adds basic support for Shelly 2PM Gen3 devices.
2026-03-25Add Shelly command sendingxengineering
This allows basic control of Covers connected to Shelly devices.
2026-03-25Refactor and add routing conceptxengineering
This scales better when additional receiving routes will be added.
2026-03-25Add Shelly cover message parsingxengineering
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.
2026-03-25Add MQTT subscription for /cover/<id>/movementxengineering
This let's the Sia server receive cover movement commands. For now they are simply logged.
2026-03-25Add MQTTMessage.String()xengineering
This simplifies debugging.
2026-03-25Document /cover/<id>/movement MQTT topicxengineering
2026-03-25Add shelly configuration parsingxengineering
This allows to specify Shelly cover devices to be added to the configuration file with all information required by the Sia server.
2026-03-23Add test mqtt-topic-prefix-max-characters.jsonxengineering
This makes sure the maximum `mqtt/topic-prefix` string length is accepted.
2026-03-23Test everything in configs/validxengineering
This allows easily to add JSON configuration files testing certain aspects.
2026-03-23Move default.json to configs/validxengineering
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.
2026-03-23Simplify TestDefaultConfigxengineering
The validation step is always called in .FromJSON().
2026-03-23go.mod: Make MQTT and Websocket dependencies explicitxengineering
This was forgotten so far and fixed with `go mod tidy`.
2026-03-23Document MQTT interfacexengineering
It is even quite late to document the main application programming interface (API) of the Sia server. This is now fixed.
2026-03-23Fix warning about OS signal listenerxengineering
An unbuffered channel triggers a warning here. This can easily be fixed by switching to a buffered channel with buffer length 1.
2026-03-23Document Shelly 2PM Gen3 supportxengineering
This advertises the support for this and documents links to documentation and the vendor home page.
2026-03-23tools: websocket: Implement cover close / openxengineering
This implements the minimal functionality to control covers with the Sia server in the development tool. Based on that the actual Sia server software can be adapted.
2026-03-23tools: websocket: Add empty line before RX logxengineering
This makes it easier to distinguish the JSON messages visually.
2026-03-23tools: websocket: Quote and prettify RX JSONxengineering
This makes the responses from the Shelly device readable.
2026-03-23tools: websocket: Log pretty-printed TX JSONxengineering
This allows to more easily see what is sent to the Shelly device.
2026-03-23tools: websocket: Implement Sys.GenConfigxengineering
This is the first working command for the Shelly 2PM Gen3.
2026-03-23tools: websocket: Remove needless bracesxengineering
Programming in too many languages ... of course not needed in Go.
2026-03-23tools: websocket: Add wait for CTRL-Cxengineering
Now the connection is immediately established but just closed on SIGTERM and SIGINT. This allows to keep the connection for some time and lets the user decide when to stop.
2026-03-23tools: websocket: Add connection set up / tear downxengineering
This was validated by sniffing the communication with Wireshark. The following is executed: - TCP initial handshake - GET /rpc from tool - HTTP 101 Switching Protocols (to Websocket) from Shelly - ACK by tool - TCP connection close initiated by tool This shows that the tool is able to make Websocket connections.
2026-03-23tools: websocket: Add dummy and build integrationxengineering
Adding support for Shelly devices requires usage of the Websocket API. To make development easier a debug tool is created. Since it is not relevant for users it is not an artefact included into the deploy file archive. This also avoids later removing it which is by definition of the public API (see README.md) a breaking change.
2026-03-23Add `-dev` version suffixxengineering
This makes clear that the current version is not a clean release.
2025-12-20Release version 0.1.0v0.1.0xengineering
This is the first release of the Sia server. It is the Minimal Viable Product (MVP).
2025-12-20README.md: Adhere to Semver / define public APIxengineering
This project should use semantic versioning. This requires defining the public Application Programming Interface (API).
2025-12-20README.md: Add usage instructionsxengineering
2025-12-20Add CHANGELOG.mdxengineering
2025-12-20README.md: Add build instructionsxengineering
2025-12-20Deploy README.mdxengineering
This information is useful in the deploy tar archive. Thus it is copied there.
2025-12-20Add README with description and hardware supportxengineering
2025-12-20Do not print start banner on usagexengineering
Before this commit the start banner `+++ Started Sia server +++` was printed before the usage instructions. The stop banner was not printed. The intended behaviour is to print none of them. This is not implemented.
2025-12-20systemd: Add service and sysusers configuration filesxengineering
This makes it possible to run the Sia server executable on systemd-based Linux distributions with systemd making system administration easier. Maintaining these files in the source instead of packaging repository was decided since systemd is the dominant init system across Linux distributions and thus not every distribution-specific packaging repo needs to re-invent the wheel.
2025-12-20Deploy default configurationxengineering
The default configuration from the source tree is embedded into the executable with Go's embed package to assume the correct defaults. Furthermore it is now also part of the artifact tar archive to give users an idea how a configuration file should look like.
2025-12-20Add Meson-tracked project versionxengineering
This allows to use the version of the project in the build system independent from the version control system. Thus a source tar archive can be built the same and also changing the version control system does not change anything regarding the build process.
2025-12-20configs: .gitignore: Add `debug.json`xengineering
This is reserved foooooooooor local development.
2025-12-20Add tar archive generation for deploymentxengineering
Bundling all build artifacts into one tar archive is good practise to make deployment easier and underline which files in the build directory are important. zstd was picked for compression because of the very good compression ratio.
2025-12-20Make GOOS and GOARCH part of executable namexengineering
This renames `sia-server` to `sia-server-linux-amd64`. This makes clear for which target environment the executable is built and allows to later place additional executables for other environments too without name collisions.
2025-12-20Disable log timestampsxengineering
The primary target environment is a systemd-based Linux system. There the logging system of the operating system will timestamp the log messages.
2025-12-20Add startup config loggingxengineering
This is useful during early development to make possible misconfiguration visible. Later it might be dropped especially if the config gets larger.
2025-12-20Implement passing user configurationxengineering
This allows overwriting values of the default configuration with custom ones.
2025-12-20Add StartupConfiguration.Validate()xengineering
This method makes it easy to validate a configuration. A call of it is now embedded into the StartupConfiguration.FromJSON() method which should always be the lowest level function to parse configurations. Thus configurations can usually be trusted.
2025-12-20Use default configxengineering
The default config JSON is embedded as bytes into the executable. Instead of constants the default values are now parsed from these embedded bytes.