Hallo,
Ich habe eine sehr knappe Lösung um die Daten zwischen FHEM und MQTT auszutauschen.
Vorraussetzung ist:
- FHEM hat die Telnet Konsole auf Localhost aktiv
- Die Daten gehen aus FHEM an MQTT als JSON, da ich es dann bequem mit Node-Red weiterverarbeite
- Die Daten von MQTT an FHEM sind FHEM Kommandos
- unbedingt muss der MQTT Server mit TLS verschlüsselt und mit Passwort geschützt werden, alles andere ist auch in einem LAN nicht ratsam IMHO
#!/bin/bash
USERNAME="..."
PASSWORD="..."
HOSTNAME="hostname.fritz.box"
# Sending Log from FHEM to MQTT
echo "inform on" | \
nc 127.0.0.1 7072 | \
xargs -d$'\n' -L1 sh -c 'echo $0 | sed -e "s/\([^ ]*\)[ ]*\([^ ]*\)[ ]*\(.*\)/{\"type\": \"\1\", \"name\": \"\2\", \"value\": \"\3\"}/"' | \
while true; \
do mosquitto_pub -h $HOSTNAME -p 8883 -t "fhem/output" --cafile ca.crt -u "$USERNAME" -P "$PASSWORD" -l -q 2; \
sleep 1; \
done &
#receiving command from MQTT to FHEM
while true; do \
mosquitto_sub -h $HOSTNAME -p 8883 -t "fhem/input" --cafile ca.crt -u "$USERNAME" -P "$PASSWORD"; \
sleep 1; \
done | nc 127.0.0.1 7072 &