No description
- Python 100%
| .gitignore | ||
| docker-compose.yml | ||
| dockerfile | ||
| notify_check.txt | ||
| notify_main.txt | ||
| notify_simple.txt | ||
| python_veml7700.py | ||
| README.md | ||
| start | ||
FHEM MQTT VEML7700 - Einfache Lösung
Frischer Start mit einer einfachen, zuverlässigen Notify-Lösung
📋 Übersicht
Diese Dokumentation enthält eine einfache, getestete Lösung für dein FHEM-System mit:
- VEML7700 Lichtsensor über MQTT
- Dauerlicht-Modus mit Display-Steuerung
- Bewegungslogik für Display
- Lux-Logik für Lichtsteuerung
- KEINE komplexen Verzögerungen oder Check-Notify-Blöcke
🚀 Einfache Notify-Lösung
define n_HausgangLicht_Einfach notify (IT_1527x2d936|IT_1527x62f30|HausgangDauerlicht) {
# Sensorwerte auslesen
my $MelderBalkon = Value("IT_1527x2d936");;
my $MelderHausgang = Value("IT_1527x62f30");;
my $Dauerlicht = Value("HausgangDauerlicht");;
my $RaspDispStatus = Value("Raspberry_Display");;
# Robustere Wertauslesung mit Fehlerbehandlung
my $Lux = ReadingsNum("Hausgang_Lux_VEML7700","lux",9999);;
my $Suppressed = ReadingsVal("Hausgang_Lux_VEML7700","suppressed","true");;
# Falls Lux-Wert 9999 ist, versuche last_valid_lux
if ($Lux == 9999) {
$Lux = ReadingsNum("Hausgang_Lux_VEML7700","last_valid_lux",9999);;
Log 3, "HausgangLicht: Lux-Wert war 9999, verwende last_valid_lux=$Lux";
}
# Debug-Ausgabe für Fehlersuche
Log 3, "HausgangLicht: Lux=$Lux, Suppressed=$Suppressed, MelderBalkon=$MelderBalkon, MelderHausgang=$MelderHausgang";
my $Bewegung = ($MelderBalkon eq "on" || $MelderHausgang eq "on");;
my $LuxGrenze = 80;; # Viel niedriger als deine 800!
my $hm = sprintf("%02d:%02d", $hour, $min);;
my $Tagbetrieb = ($hm gt "06:30" && $hm lt "22:00");;
if ($Dauerlicht eq "on")
{
Log 3, "HausgangLicht: Dauerlicht aktiv - Licht an, Display an";
fhem('delete at_HausgangDisplayOff');;
fhem('set HUEGroup2 pct 100');;
fhem('set HUEGroup2 on');;
if ($RaspDispStatus eq "off")
{
fhem('set Raspberry_Display on');;
}
return;;
}
if ($Bewegung)
{
Log 3, "HausgangLicht: Bewegung erkannt - Display an, Timer setzen";
fhem('delete at_HausgangDisplayOff');;
if ($RaspDispStatus eq "off")
{
fhem('set Raspberry_Display on');;
}
fhem('define at_HausgangDisplayOff at +00:01:35 set Raspberry_Display off');;
}
# DIE WICHTIGE LUX-LOGIK - NUR WENN NICHT SUPPRESSED UND LUX VERFÜGBAR!
if ($Bewegung && $Suppressed eq "false" && $Lux < $LuxGrenze && $Lux != 9999)
{
Log 3, "HausgangLicht: Lux-Bedingung erfüllt ($Lux < $LuxGrenze) - Licht einschalten";
if ($Tagbetrieb)
{
fhem('set HUEGroup2 pct 100');;
fhem('set HUEGroup2 on-for-timer 90');;
}
else
{
fhem('set HUEGroup2 pct 10');;
fhem('set HUEGroup2 on-for-timer 90');;
}
}
else
{
Log 3, "HausgangLicht: Lux-Bedingung NICHT erfüllt (Suppressed=$Suppressed, Lux=$Lux, Grenze=$LuxGrenze)";
}
}
🎯 Funktionsweise
1. Dauerlicht-Modus (EIN)
- Licht: 100% Helligkeit
- Display: Bleibt AN (wird nicht ausgeschaltet)
- Timer: Alle Timer werden gelöscht
- Lux-Erfassung: Deaktiviert (durch
return)
2. Dauerlicht-Ausschalten
- Display: Wird AUSgeschaltet
- Lux-Erfassung: Wird wieder aktiv
3. Normalbetrieb (kein Dauerlicht)
- Bewegung erkannt: Display AN + Timer für Ausschalten (95s)
- Bewegung + dunkel: Licht EIN (tags 100%, nachts 10%)
- Lux-Grenze: 80 (optimal für Innenräume)
⚡ SO GEHST DU VOR:
- Ersetze dein aktuelles Notify mit dieser Version
- Schau in das FHEM-Log (Level 3), um zu sehen, welche Werte tatsächlich ausgelesen werden
- Du wirst sehen, ob der Lux-Wert korrekt ist und warum die Bedingung nicht auslöst
🔧 PROBLEMLÖSUNG: Lux-Wert zeigt 9999 an
Falls der Lux-Wert 9999 anzeigt, obwohl er eigentlich anders sein sollte:
1. Überprüfe das MQTT2_DEVICE:
get Hausgang_Lux_VEML7700 readings
Falls das "lux"-Reading fehlt, ist das Device nicht richtig konfiguriert.
2. Überprüfe die MQTT-Verbindung:
get Hausgang_Lux_VEML7700 debug
Schau ob MQTT-Nachrichten ankommen.
3. Alternative Notify-Version mit besserer Fehlerbehandlung:
Die oben gezeigte Version enthält bereits:
- Robustere Wertauslesung mit
ReadingsNum() - Automatischen Fallback auf
last_valid_luxwenn Lux-Wert 9999 ist - Debug-Logausgaben für Fehlersuche
- Prüfung
$Lux != 9999in der Lux-Logik
📊 Empfohlene Einstellungen
| Parameter | Wert | Beschreibung |
|---|---|---|
| LuxGrenze | 80 | Optimal für Innenräume |
| Tag-Helligkeit | 100% | Volle Helligkeit am Tag |
| Nacht-Helligkeit | 10% | Gedimmtes Licht in der Nacht |
| Display-Timeout | 95s | Display bleibt 95s an |
✅ Checkliste für die Inbetriebnahme
- Notify
n_HausgangLicht_Einfachin FHEM definieren - Test: Dauerlicht EIN/AUS
- Test: Bewegungserkennung
- Test: Lux-Erfassung
- Logs prüfen (Log-Level 3)
🎉 Fertig! Einfache, zuverlässige Lösung ohne Komplexität!
Bei Fragen: Die Dokumentation enthält alle notwendigen Informationen für Fehlersuche und Anpassungen.