====== Datenflusspläne ======
[[ha:raderbroich:start|← Übersicht]]
===== Gesamtsystem =====
%%raw
flowchart LR
subgraph Wohnung["Wohnung Raderbroich"]
DEV["Homematic-Geräte
Türkontakte, Bewegungsmelder,
Thermostate, Aktoren, Sirene, Steckdosen"]
HAP["Homematic IP
Access Point"]
CAM["Reolink E1 Pro
192.168.192.11"]
HA["Home Assistant"]
FB["FRITZ!Box"]
end
subgraph Internet
HCLOUD["Homematic IP Cloud
(eQ-3)"]
RCLOUD["Reolink Cloud"]
TG["Telegram"]
APNS["Apple Push"]
end
subgraph Handys
IPN["iPhone Norbert"]
IPU["iPhone Ute"]
end
DEV <-->|Funk 868 MHz| HAP
HAP <--> FB
FB <--> HCLOUD
HCLOUD <-->|Zustände + Befehle| HA
CAM <-->|lokal WLAN, Stream + Steuerung| HA
CAM --> RCLOUD --> IPN & IPU
HA -->|Bot-Nachrichten, Videos| TG --> IPN & IPU
TG -->|Button 'Alarm bestätigen'| HA
HA -->|kritische Push| APNS --> IPN & IPU
IPN & IPU -->|Standort, App| HA
Wichtig: Die Steuerung von Homematic läuft **über die Cloud**. Fällt das Internet aus, sieht HA keine Homematic-Zustände mehr; die Alarmanlage selbst arbeitet aber im Access Point weiter.
===== Alarmstatus: wer bestimmt was? =====
Die **führende Quelle** ist immer das Homematic-Alarm-Panel. Der Dashboard-Status ''input_select.alarmstatus'' ist nur eine Anzeige-Kopie.
%%raw
flowchart LR
APP["Homematic-App / Wandtaster"] --> PANEL
SKRIPT["script.alarm_schalten
(Dashboard, Automatik)"] -->|arm_away / arm_home / disarm| PANEL["alarm_control_panel
(Homematic) – FÜHREND"]
PANEL -->|Automation 'übernehmen'| SEL["input_select.alarmstatus
(Dashboard-Anzeige)"]
PANEL -->|Watchdog alle 5 Min.| SEL
PANEL -->|nach HA-Start| SEL
SKRIPT -->|Ergebnis| SEL
SKRIPT -->|bei Fehlschlag| ERR["input_text.alarm_letzter_fehler"]
SKRIPT <-->|während Schaltvorgang| FLAG["input_boolean.alarm_vorgang_laeuft"]
FLAG -.->|blockiert| WD["Watchdog"]
SEL --> DASH["Dashboard-Kachel"]
ERR --> DASH
FLAG --> DASH
===== Anwesenheit =====
%%raw
flowchart LR
GPSN["iPhone Norbert
Standort"] --> DTN["device_tracker.iphone_von_norbert"] --> PN["person.norbert"]
GPSU["iPhone Ute
Standort"] --> DTU["device_tracker.iphone_13_ute"] --> PU["person.ute"]
PN & PU --> AUTO["Automation
Alarm bei Abwesenheit"]
AUTO --> SK["script.alarm_schalten"]
PU --> TEST["Test-Automation
Push an Norbert"]
===== Kamera und Medien =====
%%raw
flowchart LR
SEL["Alarmstatus / Testmodus"] --> AUT["Automation Kamera-Steckdose"] --> DOSE["switch.hmip_raderbroich_dose_tv"]
DOSE -->|Strom| CAM["Reolink E1 Pro"]
CAM -->|Hauptstream| HQ["camera.ko_wohnzimmer_hochauflosung"]
CAM -->|Substream| SQ["camera.ko_wohnzimmer_standardauflosung"]
HQ -->|Livebild| DASH["Dashboard Kamera"]
HQ -->|Clip 10 s| M1["/media/reolink/*.mp4"]
SQ -->|Vorschaubild| M1J["/media/reolink/*.jpg"]
M1 & M1J --> GAL["Camera Gallery Card"]
SQ -->|Alarm-Video 20 s| M2["/media/alarm_videos/*.mp4"]
M2 --> TG["Telegram an Norbert + Ute"]
PTZ["Dashboard-Pfeile"] --> SPTZ["script.reolink_ptz_schritt"] --> BTN["button.ko_wohnzimmer_ptz_*"] --> CAM
===== Benachrichtigungen =====
%%raw
flowchart LR
subgraph Quellen
Q1["Alarmstatus geändert"]
Q2["Alarm ausgelöst"]
Q3["Schaltfehler"]
Q4["HA-Start"]
Q5["Abwesenheit / Rückkehr"]
Q6["Alarm-Video"]
end
Q1 --> TU["script.telegram_universal_versand"]
Q2 --> TU
Q3 --> TU
Q4 --> TU
Q5 --> TU
Q2 --> PUSH["notify.mobile_app_* (kritisch)"]
Q3 --> PT["script.push_an_alle_handys
(kritisch)"]
Q6 --> SV["script.alarm_video_senden"]
TU -->|Chat-IDs aus input_text.telegram_chat_ids_alle| TG["Telegram-Bot HA-Raderbroich"]
SV -->|notify.norbert_bruchmann / notify.ute_heister| TG
PT --> IOS["iPhones"]
PUSH --> IOS
STB["input_boolean.system_startphase"] -.->|unterdrückt in ersten 2 Min.| Q1
===== Heizung =====
%%raw
flowchart LR
WTH["Wandthermostate (4)"] <--> GRP["Heizgruppen Homematic
climate.*"]
GRP --> ACT["Fußbodenheizungs-Aktoren
Steuerung oben / unten"]
ACT --> VENT["Heizkreis-Stellwerte
sensor.*_heizkreislauf_*"]
GRP <--> HA["Home Assistant
Thermostat-Kacheln"]
VENT --> HA
IN["input_datetime.heizung_urlaub_ende
input_number.heizung_urlaub_temperatur"] --> SK["script.heizung_urlaub_aktivieren"] --> CLOUD["Homematic IP Cloud
activate_vacation"] --> GRP
CLOUD -->|Diagnosedaten| CARD["hmip-urlaub-card"]
GRP -->|preset away| TS["binary_sensor.heizung_urlaubsmodus
sensor.heizung_urlaubsmodus_ende"]