Kaum an Komplexität zu überbieten ist mein neuer Kühlschrank-offen-Warner bestehend aus den folgenden Elementen:
- WLAN Steckdose Nous A1T mit Tasmota OSS Firmware (vorinstalliert)
- MQTT Broker (Mosquitto)
- Monitoring, Graphing, Alarmierung (CheckMK)
- Datenlogging (PHP-Script als systemd-Service)
- Datenspeicher (SQLite-DB)
- VServer im Internet
Die WLAN-Steckdose meldet sich direkt am MQTT-Broker auf meinem privaten VServer an, da lokal kein geeignetes Gerät läuft, dass die Daten entgegennehmen kann. (OK. Der OpenWRT-Router könnte das bestimmt schon, aber in der sehr spartanischen Umgebung wäre das vermutlich etwas aufwändiger.) Das PHP-Script dort fragt alle 10 Sekunden über den Broker den aktuellen Stromverbrauch ab und schreibt den in die SQLite-DB. Ein CheckMK Plugin liest/generiert minütlich den Stromverbrauch aus der DB in mehreren Werten (aktuell, stündlich, täglich) und gibt das an CheckMK weiter, was die Graphen generiert und die Alarmierung durchführt, wenn der Stundendurchschnitt über 60W klettert - Maximum im Normalzustand sind 25W. Maximalleistung bei Dauerkühlung sind 80W.
Die normalen Kühlschrankwarner basieren meistens auf Kontaktsensoren oder Photosensoren. Wenn der Kühlschrank aber nur ganz knapp offen ist, schlagen die nicht an oder zu früh an.
Das PHP-Script hat mich etwas genervt, weil es manchmal hing, wenn aus irgend einem Grund keine Daten kamen. Musste ich mir noch eine Lösung mit Timeout-Read suchen.
Die Alarmierung gibt's auch noch nicht. Mal schauen, wie ich die umsetze... (MQTT-Client auf dem Smartphone?). Hmmm. Ich könnte die LED der WLAN-Steckdose blinken lassen, ungefähr so:
Code: Alles auswählen
state=1
while :;do
mosquitto_pub -h $mqtt_host -u $myuser -P $mypass -t cmnd/tasmota_B72C46/LEDState -m "$state"
((state=1-state))
sleep 0.5
done
Ansonsten, als ich vom Tasmota-Projekt erfahren habe, habe ich mich sehr gefreut. Endlich mal eine einfach unbefristet nutzbare Alternative zum proprietären Wegwerf-Cloud-Scheiß.
P. S.: Wer Verschlüsselung (TLS) will, muss Tasmota selber neu bauen und flashen.
Nachtrag
Hier die Scripte dazu:
https://codeberg.org/megabert/script-pa ... dge-warner
Nachtrag 2
Screenshot von den ausgewerteten Daten.
Nachtrag 3
Alarmierung habe ich jetzt auch über MQTT erledigt - natürlich über den gleichen MQTT-Broker, der schon von der Steckdose die Daten annimmt. Auf dem Smartphone habe ich die App MQTT Push Client von Helios verwendet.
Das erledigt dieses kleine Script, dass alle 5 Minuten per Cron aufgerufen wird:
Code: Alles auswählen
#!/bin/bash
#
# fridge alarm script
#
# if power usage average for the last 30 minutes is over 60W send an alarm
# (maximum value of 30 min avg in normal operation is ~40W)
#
export PATH=/bin:/usr/bin:/usr/local/bin
export DB=/home/someuser/mqtt/fridge_power_usage.sqlite
export ALARM_THRESHOLD=60
min30=$( sqlite3 --cmd ".open --readonly $DB" \
<<<'select printf("%.0f",sum(power)/count(1)) from usagelog where (timestamp+1800) > cast(strftime("%s") as float);')
if [ $min30 -gt $ALARM_THRESHOLD ]; then
mosquitto_pub -h my.mqttserver.de -u myuser -P mypassword -t fridge-warn-alert \
-m "KÜHLSCHRANK Stromverbrauch zu hoch: $min30 W / 30 Min"
fi
Nachtrag 4
Für Durcheinander sorgt es, wenn die WLAN-Verbindung abbricht und gelegentliche keine Daten reinkommen. Da gab's noch Fehllarme und im Monitoring auch unnötige Datenaussetzer. (Verbrauch gesamter letzer Tag - ist hier noch nicht gezeigt).