Integracja sterowników IBSystem z Home Assistant przez MQTT.
IBSystem RS485 → ibsystem2mqtt_v5.py → Mosquitto MQTT → Home Assistant
↓ ↓
192.168.50.243 MQTT Discovery
Lokalizacja: /ibsystem/ibsystem2mqtt_v5.py na 192.168.50.243
Funkcje:
Plik: /ibsystem/config.yaml
mqtt:
host: 192.168.50.151
port: 1883
username: mqtt_user
password: mqtt_password
ibsystem:
host: 127.0.0.1
port: 9761
modules:
- rs: 0
id: 35
name: "ID35"
homeassistant/switch/ibsystem_rs0_id35_doX/config homeassistant/sensor/ibsystem_rs0_id35_tempX/config
ibsystem/rs0/id35/state # JSON ze stanami wszystkich wyjść ibsystem/rs0/id35/doX # Stan pojedynczego wyjścia (ON/OFF)
ibsystem/rs0/id35/set/doX # Payload: ON lub OFF
set(rs.0.id.35.setting.light.1=1;); # Włącz DO1 set(rs.0.id.35.setting.light.1=0;); # Wyłącz DO1
# NIE UŻYWAĆ - to jest read-only! set(rs.0.id.35.output.do.1=1;);
switch.ibsystem_rs0_id35_rs0_id35_output_do_1 switch.ibsystem_rs0_id35_rs0_id35_output_do_2 ...
switch.sterownik_35_do1 # Brak command_topic switch.sterownik_35_do2
Plik: /config/dashboards/id35_dashboard.yaml
Encje muszą używać prawidłowych MQTT entity IDs:
entities:
- entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_1
name: "Wyjście DO1"
Skrypt: /tmp/watchdog.sh (kopia w repo: ibsystem/ibsystem2mqtt_watchdog.sh)
#!/bin/bash
# Sprawdza health endpoint co minutę
# Restartuje po 3 nieudanych próbach
HEALTH_URL="http://127.0.0.1:8080/health"
FAILURE_FILE="/tmp/ibsystem2mqtt_failures"
MAX_FAILURES=3
# Check health
if curl -s --max-time 5 "$HEALTH_URL" > /dev/null; then
echo 0 > "$FAILURE_FILE"
else
FAILURES=$(cat "$FAILURE_FILE" 2>/dev/null || echo 0)
FAILURES=$((FAILURES + 1))
echo $FAILURES > "$FAILURE_FILE"
if [ $FAILURES -ge $MAX_FAILURES ]; then
systemctl restart ibsystem2mqtt
echo 0 > "$FAILURE_FILE"
fi
fi
* * * * * /tmp/watchdog.sh
# Na 192.168.50.243 mosquitto_sub -h 192.168.50.151 -t "ibsystem/#" -v # Wyślij komendę testową mosquitto_pub -h 192.168.50.151 -t "ibsystem/rs0/id35/set/do1" -m "ON"
journalctl -u ibsystem2mqtt -f
systemctl restart ibsystem2mqtt
ssh wk@192.168.50.243 # Password: QWer1234 cd /ibsystem