Bisher konnte man Automatiken nur anlegen - ausgefuehrt hat sie niemand. restricted/autoActions/autoaction_runner.py holt das nach. Dauerlaeufer statt Cronjob, aus zwei Gruenden: Schwellwert-Ausloeser sollen greifen, wenn die MQTT-Nachricht hereinkommt, und actor_states.current_value wird sonst von niemandem fortgeschrieben - beim Discovery einmal gesetzt und danach nie wieder. Ein zustandsloser Lauf haette gar nichts, womit er vergleichen koennte. Der Runner pflegt den Wert nebenbei mit, wovon auch der Editor profitiert: er zeigt neben jedem Messwert den aktuellen Stand. Ausgeloest wird nur auf der steigenden Flanke (automations.cond_met), sonst wuerde "Temperatur ueber 22 Grad" bei jedem Takt erneut feuern. Aus demselben Grund heissen Zeit-Ausloeser jetzt "ab 16:30" statt "gleich 16:30": ein Gleichheitsvergleich waere nur in einer einzigen Minute wahr, und ein Ausfall in genau dieser Minute kostet den ganzen Tag. Dieselbe Ueberlegung steht hinter den breiten Zeitfenstern in auto_watering.py. Der Weg zum Geraet haengt an der URL des Aktors: mqtt:// abonniert und publiziert, http:// pollt und haengt Parameter an, io:// spricht mit der Tahoma-Box, Logic rechnet Uhrzeit, Datum und Sonnenzeiten. Alle vier stehen in transports.py; eine fuenfte Geraeteart ist eine weitere Klasse mit passt(), zustaende_lesen() und senden(). fetch_calendar.py fuellt calendar_days aus openholidaysapi.org, damit "in den Ferien" und "an Feiertagen" eine Grundlage haben. Einmal jaehrlich per Cron. Die Uebersicht blendet auf schmalen Schirmen Spalten aus, statt sie wegzuschieben - auf dem Handy waren die Knoepfe zum Pausieren und Loeschen sonst nur per Seitwaertsscrollen erreichbar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
76 lines
2.6 KiB
Plaintext
76 lines
2.6 KiB
Plaintext
# ============================================================================
|
|
# AutoAction-Runner - Konfiguration
|
|
# ============================================================================
|
|
# Kopieren nach config.ini und ausfuellen. config.ini ist nicht versioniert
|
|
# (siehe .gitignore), weil hier Zugangsdaten stehen.
|
|
|
|
# ============================================================================
|
|
# DATENBANK - Geraete und Automatiken (homeMesh)
|
|
# ============================================================================
|
|
[database]
|
|
host = nas.fritz.box
|
|
port = 3310
|
|
database = homeMesh
|
|
user = homeMesh
|
|
password =
|
|
|
|
# ============================================================================
|
|
# DATENBANK - Messwerte (solarLog)
|
|
# ============================================================================
|
|
# Nur fuer die Tabelle `daylight`, aus der Sonnenauf- und -untergang kommen.
|
|
# Leer lassen, wenn dieselben Zugangsdaten wie oben gelten.
|
|
[solar]
|
|
database = solarLog
|
|
user =
|
|
password =
|
|
|
|
# ============================================================================
|
|
# MQTT
|
|
# ============================================================================
|
|
[mqtt]
|
|
broker = nas.fritz.box
|
|
port = 1883
|
|
username =
|
|
password =
|
|
client_id = autoaction_runner
|
|
|
|
# ============================================================================
|
|
# TAHOMA
|
|
# ============================================================================
|
|
# Fuer Aktoren, deren URL mit io:// beginnt. Ohne Token bleiben sie stumm -
|
|
# der Runner protokolliert das dann als Fehler, statt still nichts zu tun.
|
|
[tahoma]
|
|
pin =
|
|
token =
|
|
timeout = 10
|
|
|
|
# ============================================================================
|
|
# KALENDER
|
|
# ============================================================================
|
|
# Fuer fetch_calendar.py, das Feiertage und Schulferien in calendar_days
|
|
# eintraegt. Regionscodes siehe openholidaysapi.org, Bayern ist DE-BY.
|
|
[calendar]
|
|
country = DE
|
|
subdivision = DE-BY
|
|
|
|
# ============================================================================
|
|
# LAUFZEIT
|
|
# ============================================================================
|
|
[runner]
|
|
# Abstand der Auswertung in Sekunden. MQTT-Nachrichten werden sofort
|
|
# verarbeitet; der Takt ist fuer die Zeit-Ausloeser und fuer das Pollen.
|
|
tick_seconds = 30
|
|
|
|
# Wie oft Geraete abgefragt werden, die nichts von sich aus melden
|
|
# (Shelly ueber HTTP, Tahoma). In Sekunden.
|
|
poll_seconds = 60
|
|
|
|
# Wie oft der Runner nachsieht, ob sich das Regelwerk geaendert hat.
|
|
reload_seconds = 30
|
|
|
|
# Nichts wirklich schalten, nur protokollieren. Zum Ausprobieren neuer Regeln.
|
|
dry_run = false
|
|
|
|
# DEBUG, INFO, WARNING, ERROR
|
|
log_level = INFO
|