Bin zu dumm für eine einfache IR-Lichtautomatik...

member1

Member
Mein Ziel: Ein Sonoff IR-Bewegungssensor außen unter dem Balkon geklebt soll mit mitteilen ob jemand auf dem Balkon sitzt oder nicht. Wenn die Sonne untergegangen ist soll er dann über den ZBMINI das Licht einschalten und wieder aus wenn der Balkon nicht mehr "belegt" ist. Damit er nicht ständig ein/ausschaltet weil man sich nicht genug bewegt, sollte es ein ausschalthysterese von 10 Minuten geben. Also 10 Minuten keine Bewegung vom Sensor schaltet das Licht wieder ab. Nach 01:00 Uhr soll es keine Automatik mehr geben, da müsste man das Licht per Hand einschalten. Ebenso soll es bei Sonnenschein nicht leuchten, klar.

Eigentlich ist diese Anforderung ja nicht all zu komplex, jede Nicht-Smarte-Außenleuchte mit IR-Sensor arbeitet so. Aber mit HA bekomme ich das einfach nicht hin! Entweder geht das Licht garnicht an, oder einmal und dann nicht mehr aus, oder einmal an und aus und dann nicht mehr an. Ich verzweifle...

YAML:
alias: Beleuchtung AN
description: ""
trigger:
  - platform: sun
    event: sunset
    offset: 0
condition:
  - type: is_occupied
    condition: device
    device_id: 62e419d878cde0267a223d29e95af0f8
    entity_id: cb8f27bac455a884e0d9513dda6cc4d7
    domain: binary_sensor
action:
  - type: turn_on
    device_id: 258e80a64df7057399bc97be02468819
    entity_id: e336836cad8755ca0258d84861159405
    domain: switch
mode: single

YAML:
alias: Beleuchtung AUS
description: ""
trigger:
  - type: not_occupied
    platform: device
    device_id: 62e419d878cde0267a223d29e95af0f8
    entity_id: cb8f27bac455a884e0d9513dda6cc4d7
    domain: binary_sensor
    for:
      hours: 0
      minutes: 10
      seconds: 0
condition:
  - condition: state
    entity_id: switch.light_ourdoor_markise
    state: "on"
action:
  - type: turn_off
    device_id: 258e80a64df7057399bc97be02468819
    entity_id: e336836cad8755ca0258d84861159405
    domain: switch
mode: single
 
Du solltest Di unbedingt erst mal diese Beiträge durchlesen.
https://forum.heimnetz.de/threads/w...rung-oftmals-nicht-so-geht-wie-man-will.5081/
https://forum.heimnetz.de/threads/automatisierung-entitaeten-anstatt-geraete-nutzen.4422/

Dein Code ist für einen Außenstehenden nicht zu Verstehen, da Du Geräte (Zahlencodes) anstelle von Entitäten (Namen) verwendest.

Dein erster Code macht offensichtlich in etwa folgendes.
Wenn eine Entität sagt, JETZT ist Sonnenuntergang, dann schauen wir mal, was irgendein binary_sensor sagt. Ist der zu diesem Zeitpunkt wie auch immer geschaltet, dann schalte das Licht ein.
Als Vermutung würde ich mal sagen, wenn die Sonne unter geht und sich dann einer auf der Terasse bewegt, geht das Licht an.
Bewegt sich aber gerade in dem Moment niemand, passiert auch nicht, aber später auch nicht, weil die Sonne nur einmal unter geht.
Also, falsche Trigger genutzt, wie ich in einem Beitrag mal Erklärt habe.

Die zweite Automatisierung sagt nun.
Wenn irgendein binary_sensor NICHTS Meldet und das 10 Minuten lang, dann prüfen wir, ob ein Schalter auf an ist und schalten dann das Licht aus.
Dieser Schalter findet oben aber offensichtlich keine Anwendung. Was ist das also für ein Schalter ?
Wenn es, wie ich Vermute, der generelle Lichtschalter ist, wird das so sowieso nicht funktionieren. Du scheinst diesen ja Einschalten zu müssen, damit auf der Terrasse überhaupt Licht angehen kann.
Soll dieser Schalter nun deine Automatisierung übersteuern ?

Ich würde als Einschalttrigger sowohl den Bewegungsmelder, als auch den Sonnenuntergang nehmen.
Grund ist folgender. Geht die Sonne unter, man sitzt auf der Terrasse, bewegt sich aber nicht, löst die Automatisierung trotzdem EINMAL aus. Da kann man dann z.B. weiter prüfen, ob dieser ominöse Schalter eingeschaltet ist und wenn ja, dann Licht einschalten.
Löst hingegen der Bewegungssensor aus, dann prüfen, ob bereits die Sonne unter gegangen ist und, ob ominöser Schalter eingeschaltet ist, wenn ja, dann Licht an.

Wie gesagt. Die Wahl der richtigen Auslöser (Trigger) ist enorm wichtig
 
Es muss doch möglich sein dauf den IR Sensor nur dann zu reagieren wenn die Sonne untergegangen ist? Wie fragt man die "Sun" denn auf den status ab?
 
Es muss doch möglich sein dauf den IR Sensor nur dann zu reagieren wenn die Sonne untergegangen ist? Wie fragt man die "Sun" denn auf den status ab?
Nennt sich Condition im YAML Code bzw. "Aber nur wenn" im Editor. Hast Du ja oben in deinem Code auch mit anderen Dingen schon gemacht. Nur die Logik in deinem Code ist halt falsch. Ich hatte Dir das zwar auch versucht, nahe zu bringen, scheint aber nicht angekommen zu sein.
Hier also der Code, mit dem man auf Sonnenuntergang prüfen könnte.
Code:
condition: state
entity_id: sun.sun
state: below_horizon
Aber ich Empfehle Dir wärmstens, erst mal die Beiträge hinter den Links zu lesen und zu Verstehen, die ich Dir oben geschickt habe, dann sollte so manches klarer werden.
 
Ich habe alles gelesen, bin aber trotzdem nicht viel schlauer. Es braucht ja immer einen Trigger und der löst ja nur bei Statuswechsel aus. Den verknüpft man dann UND mit einer Kondition, richtig? So, inzwischen habe ich mir mit einem Shelly Plus Addon am Analogeingang sowas wie einen Sonnenstandsensor gebaut (noch optimierungsbedürftig...). Der gibt einen % Wert aus. Jetzt kann ich eine Kondition bauen die sagt: Wenn der Lichtwert unter 30% fällt soll die Lampe eingeschaltet werden. Das könnte aber ja öfter passieren, also wert steigt wieder (bewölkung, wechselhafter Tag), dann müsste ich ja noch eine habe um sie bei überschreiten eines bestimmten Wertes wieder auszuschalten.
Das allein klappt auch wunderbar. Aber nun kommen zwei Komponenten hinzu, einmal der IR-Sensor und einmal die Uhrzeit. Also schalte Licht nur ein wenn es dunkel genug ist UND eine Bewegung detektiert wird UND wenn die Uhrzeit zwisch 8-0 Uhr liegt.
 
P.S. ich nutze ja den grafische Editor und dort bekomme ich bei Entity kaum etwas angezeigt. Wie versorge ich ein Device mit Entitäten?
 
Ich habe alles gelesen, bin aber trotzdem nicht viel schlauer.
Schade, aber das bekommen wir noch hin.
Es braucht ja immer einen Trigger und der löst ja nur bei Statuswechsel aus.
Vollkommen richtig.
Den verknüpft man dann UND mit einer Kondition, richtig?
Naja, fast. Wenn man eine Bedingung angibt, ist das automatisch ein UND, da muß man nichts extra machen.
So, inzwischen habe ich mir mit einem Shelly Plus Addon am Analogeingang sowas wie einen Sonnenstandsensor gebaut (noch optimierungsbedürftig...). Der gibt einen % Wert aus. Jetzt kann ich eine Kondition bauen die sagt: Wenn der Lichtwert unter 30% fällt soll die Lampe eingeschaltet werden. Das könnte aber ja öfter passieren, also wert steigt wieder (bewölkung, wechselhafter Tag), dann müsste ich ja noch eine habe um sie bei überschreiten eines bestimmten Wertes wieder auszuschalten.
Das allein klappt auch wunderbar. Aber nun kommen zwei Komponenten hinzu, einmal der IR-Sensor und einmal die Uhrzeit. Also schalte Licht nur ein wenn es dunkel genug ist UND eine Bewegung detektiert wird UND wenn die Uhrzeit zwisch 8-0 Uhr liegt.
Den richtigen Trigger zu finden kann manchmal schwierig sein.
Ich fasse mal zusammen.
Lampe soll einschalten, wenn
a) Wenn es NACH 20:00 Uhr und noch VOR 00:00 Uhr ist.
b) Wenn eine gewisse Dunkelheit herrscht.
c) Wenn eine Bewegung erkannt wurde.
Soweit richtig ? Oder habe ich was vergessen.

Das Die Zeit in diesem Fall kein guter Trigger, denke ich, ist klar. Oder man müßte periodisch auslösen, was ich aber nicht gut finden würde.
Dunkelheit ist auch kein guter Trigger, wie Du ja selbst schon erkannt hast, bei wechselnder Bewölkung würde die Automatisierung immer aus lösen.
Also bleibt nur die Bewegungserkennung. Eventuell gepaart mit einem weiteren Trigger, die dann ja ODER Verknüpft wären.
Problem daran. Wenn sich keiner bewegt, bleibt es dunkel.
Man müßte also sagen, wenn es dunkel wird, muß sich halt mal einer einmal bewegen, damit die Automatisierung einmal in Gang kommt.
Wenn die einmal gestartet wurde und das Licht eingeschaltet wurde, könnte man Versuchen, in etwa folgendes zu programmieren.
Licht Einschalten.
Delay 5 Minuten
Prüfen, ob in den letzten 5 Minuten eine Bewegung stattgefunden hat.
Wenn ja, Licht an lassen
Wenn nein, Licht ausschalten.
Wenn Helligkeit > xx%, dann Licht ausschalten
Wenn Zeit nach 00:00 Uhr, dann Licht ausschalten.

Trigger also der Bewegungsmelder.
Condition gerne die Helligkeit.
Und dann kommen einige "WENN DANN" im Action Zweig.

Das mit der Abfrage, ob in den letzten 5 Minuten eine Bewegung erkannt wurde, muß man eventuell mit einem Helfer machen. Da müßte ich mir mal Gedanken zu machen, wie man das machen kann.
Aber ich denke, so im groben sollte es doch das sein, was Du willst, oder ?
 
Ok, das mit dem Bewegungsmelder kann man hin bekommen.
Man erstellt einen Helfer "Zähler" mit Namen "Bewegung". Min Wert 0, Max Wert 1. Alles andere so lassen.
Dann braucht es eine Automatisierung, die immer dann, wenn der Bewegungsmelder eine Bewegung erkennt, diesen Helfer um eins hochzählt.
Das geht total einfach im DANN AMCHE Zweig. Aktion hinzufügen -> Helder -> Zähler. Hier kann man dann entweder "Erhöhen" oder auch "zurücksetzen" wählen. Wir wollen hier ja erhöhen.
In der Automatisierung die unser Licht schaltet, setzen wir diesen Helfer dann einmal zurück, kurz vor dem Delay.
Nach dem Delay fragen wir dann einfach, ob dieser Helfer noch 0 ist oder auf 1 gesprungen ist, also eine Bewegung seit dem letzten zurücksetzen erkannt wurde.
Wenn ja, dann bleibt das Licht an, wenn nein, dann Licht ausschalten.

So der grobe Ablauf, wie ich denke, das es funktionieren könnte.
 
Das Problem ist ja auch ein bischen wenn der Trigger nicht nochmal auslöst. Beispielsweise wenn es dunkel wird, also die Helligkeit unter einen gewissen Schwellwert geht und aufgrund von schlechtem Wetter nicht drüber kommt. Leider kann mein Sensor nicht wirklich zwischen wenig Licht und absoluter Dunkelheit unterscheiden, was sicher nich zu optimieren wäre. So könnte es sein das der Trigger nicht auslöst, weil er unter dem Schwellwert bleibt. Da müsste man eine Hilfsvariable haben welche man über Nacht zurücksetzt.
Oder eben die Kondition alle x-Minuten neu auswerten lässr. Bei manual run klappt das ja. Ich probiere mal ,it dem Helper etwas rum.
Oder könnte die Funktion nicht eher einem Thermostat/Threshold Sensor entsprechen? Also zwei Schwellwerte mit einer Hyserese?
Vielleicht könnte man anstelle mit der Uhrzeit auch mit einem Timer arbeiten, welcher um 8 Uhr losläuft für 16 Stunden? Dann müsste man doch abfragen können: IR-Bewegung und Timer aktiv? Dann noch den Lichtsensor mit Sensor-Helper rein, also IR + Timer-An + Hell
Aber gut das es nicht ganz so simpel ist, also bin ich nicht so dumm wie ich anfangs dachte, es ist schon ein stückchen komplex...
 
Zuletzt bearbeitet:
warum so kompliziert?
Wenn Bewegungsmelder NICHT "normal" seit 5 min.
Weil es nur ein FÜR xx:xx:xx und nicht seit xx:xx:xx gibt.
Ohne es explizit zu Testen kann ich das nicht Empfehlen, weil ich nicht weiß, ob das überhaupt funktioniert.

Das Problem ist ja auch ein bischen wenn der Trigger nicht nochmal auslöst. Beispielsweise wenn es dunkel wird, also die Helligkeit unter einen gewissen Schwellwert geht und aufgrund von schlechtem Wetter nicht drüber kommt.
???
Verstehe ich jetzt nicht. Wir haben EINEN Trigger. Der Bewegungssensor. Da ist die Helligkeit noch vollkommen nebensächlich.
Wenn der Bewegungssensor auslöst, DANN prüfen wir auf Helligkeit und Uhrzeit.
Und wenn es aufgrund von schlechtem Wetter draußen so dunkel ist, das der Schwellenwert nicht überschritten wird, ja dann ist es doch klasse, wenn es nach 20:00 Uhr ist und dann das Licht angeht.
So könnte es sein das der Trigger nicht auslöst, weil er unter dem Schwellwert bleibt. Da müsste man eine Hilfsvariable haben welche man über Nacht zurücksetzt.
Der Trigger löst ganz sicher aus, weil BEWEGUNG.
Und die Bedingung "Aber nur, wenn eine gewisse Dunkelheit ist", passt doch. Ich sehe da dein Problem nicht.
Oder eben die Kondition alle x-Minuten neu auswerten lässr. Bei manual run klappt das ja.
Ich denke, Du hast es leider nicht immer nicht Verstanden.
Trigger ist der Bewegungsmelder.
Bedingung ist Helligkeit UND Uhrzeit.
Action ist bei Bedarf Licht einschalten, 5 Minuten warten, Bewegungsmelderstatus über die letzten 5 Minuten prüfen. Wenn nich Bewegung war, dann Licht an lassen, wenn keine Bewegung mehr war, dann Licht ausschalten.

Da muß nix alle 5 Minuten nochmal getriggert werden.
 
Weil es nur ein FÜR xx:xx:xx und nicht seit xx:xx:xx gibt.
was soll der Unterschied sein? wenn für oder seit 5min niemand erkannt wurde ist keiner da - das ganze als NICHT, dann ist jemand da.

Sicher habe ich auch schon öfter erwähnt, dass man triggern ne ID geben kann (z.B. 2 Trigger mit an, 3 mit aus) und dann wenn "an" und xyz, mache dies und wenn aus und abc dann mache jenes.
Da kannst du dann auch wunderbar unterbringen, wenn Motion off seit/für 5 minuten (id aus), dann Licht aus.
 
was soll der Unterschied sein? wenn für oder seit 5min niemand erkannt wurde ist keiner da - das ganze als NICHT, dann ist jemand da.
Den Unterschied sehe ich in
FÜR 5 Minuten heißt, AB JETZT schauen wir mal, was in 5 Minuten so passiert
SEIT 5 Minuten heißt, hat in den VERGANGENEN 5 Minuten ein Ereignis stattgefunden.
 
Wer redet davon, das etwas triggern soll ?
Der Trigger ist doch weiter oben festgelegt auf "Bewegung erkannt".
Danach kommt nur noch die Frage, ob in den letzten 5 Minuten auch eine Bewegung erkannt wurde und das kann ich nach meinem dafürhalten mit deinem Weg nicht erreichen.
Ich habe es mal in eine Automatisierung eingegeben.
Code:
condition: state
entity_id: binary_sensor.bewegungssensor_bewegung
for:
  hours: 0
  minutes: 5
  seconds: 0
state: "on"
Oben drüber steht dann: "Bestätige, dass Bewegungssensor Bewegung ist Erkannt für 5:00 testen"
Für mich liest sich das wie "Der Bewegungssensor muß 5 Minuten lang das Signal anliegen haben, das sich etwas bewegt.
Und das wäre falsch. Ich will wissen, ob sich innerhalb der Vergangenen 5 Minuten etwas bewegt hat.

Und was dein "Ereignis in der Zukunft" angeht, wer hat des sowas gesagt ?
 
Egal ob Trigger oder Bedingung, du kannst nicht was prüfen, was noch nicht passiert ist.
Deshalb sollst du das mit nicht kombinieren: nicht -> Bewegung aus seit 5min (= jemand ist da)
Und was dein "Ereignis in der Zukunft" angeht, wer hat des sowas gesagt ?
FÜR 5 Minuten heißt, AB JETZT schauen wir mal, was in 5 Minuten so passiert
Dein yaml besagt, wenn der Zustand seit 5min besteht und nein, es wird da nicht 5min gewartet.

Mit dem Trigger Bewegung aus seit 10min kannst du das Licht wieder ausschalten.
 
Egal ob Trigger oder Bedingung, du kannst nicht was prüfen, was noch nicht passiert ist.
Das will auch niemand, steht auch nirgendwo geschrieben.
Dein yaml besagt, wenn der Zustand seit 5min besteht und nein, es wird da nicht 5min gewartet.
Das ist aber der Code, so wie Du ihn machen wolltest und ich sagte ja, das geht nicht. :D

Mit dem Trigger Bewegung aus seit 10min kannst du das Licht wieder ausschalten.
Ja, das wäre korrekt, nur kann man eben, wie oben schon gesagt, kein SEIT abfragen, sondern nur ein FÜR.
Wäre klasse, wenn Du das einfach mal selbst versuchen würdest und den Code postest.
 
englisch for bedeutet sowohl seit als auch für.
Nein, du kannst nicht prüfen, ob ein bisschen Bewegung in den letzten 5min war, aber du kannst prüfen ob in den letzten 5min keine Bewegung war und das negieren.
Ich habe diverse Automatisierungen mit "seit" Triggern (wenn Addon nicht läuft seit/für 5min, dann notify)

YAML:
alias: Licht an bei Präsenz (ungetestete Bearbeitung meiner Automation)
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.hlk_ld2410b_41f3_occupancy
    to: "on"
  - platform: sun
    event: sunset
    offset: "-00:30"
  - platform: numeric_state
    entity_id: sensor.obo_helligkeit
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 6
condition:
  - condition: sun
    before: sunrise
    after: sunset
    before_offset: "00:30"
    after_offset: "-00:30"
  - condition: numeric_state
    entity_id: sensor.obo_helligkeit
    below: 6
  - condition: not
    conditions:
      - condition: state
        entity_id: binary_sensor.moving_target
        state: "off"
        for:
          hours: 0
          minutes: 5
          seconds: 0
action:
  - action: light.turn_on
    target:
      entity_id: light.shelly_shdm_2_e0980695aa08
mode: single
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.283
Beiträge
52.555
Mitglieder
5.037
Neuestes Mitglied
galaxyaner
Zurück
Oben