systant/README.md
ryan 9d8306a64b Initial commit: Elixir MQTT system stats daemon
- MQTT client with configurable broker connection
- Periodic system stats publishing (30s interval)
- Command listening on MQTT topic with logging
- Systemd service configuration
- NixOS module for declarative deployment

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-02 16:56:10 -07:00

61 lines
1.3 KiB
Markdown

# System Stats Daemon
An Elixir application that runs as a systemd daemon to:
1. Publish system stats to MQTT every 30 seconds
2. Listen for commands over MQTT and log them to syslog
## Configuration
Edit `config/config.exs` to configure MQTT connection:
```elixir
config :system_stats_daemon, SystemStatsDaemon.MqttClient,
host: "localhost",
port: 1883,
client_id: "system_stats_daemon",
username: nil,
password: nil,
stats_topic: "system/stats",
command_topic: "system/commands",
publish_interval: 30_000
```
## Building
```bash
mix deps.get
mix compile
```
## Running
```bash
# Development
mix run --no-halt
# Production release
MIX_ENV=prod mix release
_build/prod/rel/system_stats_daemon/bin/system_stats_daemon start
```
## Systemd Installation
1. Build production release
2. Copy binary to `/usr/local/bin/`
3. Copy `system_stats_daemon.service` to `/etc/systemd/system/`
4. Enable and start:
```bash
sudo systemctl enable system_stats_daemon
sudo systemctl start system_stats_daemon
```
## Features
- Publishes "Hello world" stats every 30 seconds to `system/stats` topic
- Listens on `system/commands` topic and logs received messages
- Configurable MQTT connection settings
- Runs as systemd daemon with auto-restart
- Logs to system journal