Sensor-Template für Array der geöffneten Fenster

Hallo liebe Leute, ich bin der Neue! :wink:
Bin zwar nicht auf den Kopf gefallen, was Coding und blabla angeht, aber bei diesem Problem stehe ich absolut vor ner Wand und weiß nicht weiter.
Habe sogar schon openAI verwendet, um evtl. dadurch zum Erfolg zu kommen, aber auch damit klappts nicht. (der Ansatz war aber gut)

Es geht um folgendes:
Ich habe 6 Fenstersensoren von Aqara, die bei geöffnetem Fenster den Status ‘on‘ ausspucken und wenn zu, dann ‘off‘, logisch…Habe einen Regensensor, der via Automation und der notify Integration Alexa sagen lässt, dass noch nicht alle Fenster geschlossen sind. Fand das ne tolle Sache, als ich bis dato nur 3 Fenstersensoren hatte, da habe ich einfach ‘if/else‘ oder ‘switch/case‘ genutzt, um abzufragen, welche Fenster noch offen sind um diese mir dann ansagen zu lassen. Allerdings ist das bei 6 Sensoren nun nicht mehr -ich sag mal- schön. Daher möchte ich nun einen Weg finden, dass HA checkt, welche Fenster sind noch offen, die in nen Array klatscht und das dann Alexa ausplaudert.
Wie eingangs schon erwähnt hab ich ja openAI befragt und die gab mir eine Variante mit Sensor-Templates aus. Im Prinzip verstehe ich das auch, was da angeboten wurde, funktioniert leider trotzdem nicht.
Was bisher geschah:

Code in der configuration.yaml:

sensor:
platform: template
sensors:
fenster_offen:
friendly_name: “Fenster offen”
value_template: >-
{% set fenster = {
‘Arbeitszimmer’: is_state(‘binary_sensor.fenstersensor_arbeitszimmer_contact’, ‘on’),
‘Flur’: is_state(‘binary_sensor.0x00158d008b87bdf0_contact’, ‘on’),
‘Küche’: is_state(‘binary_sensor.0x00158d008b8094a1_contact’, ‘on’),
‘Wohnzimmer’: is_state(‘binary_sensor.fenstersensor_wohnzimmer_contact’, ‘on’),
‘Kinderzimmer’: is_state(‘binary_sensor.0x00158d008bbf6d41_contact’, ‘on’),
‘Schlafzimmer’: is_state(‘binary_sensor.fenster_schlafzimmer’, ‘on’)
} %}
{% set offen = [ ] %}
{% for name, offen_flag in fenster.items() %}
{% if offen_flag %}
{% set offen = offen + \[name\] %}
{% endif %}
{% endfor %}
{{ offen | join(', ') if offen else ‘keine’ }}

Frage ich nun in den Entwicklerwerkzeugen ab:

{{ states(‘binary_sensor.0x00158d008b87bdf0_contact’) }}
erhalte ich ‘on‘ - das Fenster ist offen, stimmt soweit…
Frage ich aber:
{{ states(‘sensor.fenster_offen’) }}

erhalte ich immer ‘keines‘
obwohl noch Fenster geöffnet sind….

Mit anderen Worten, ich weiß nicht mehr weiter…

Und ein dickes Sorry schonmal, wenn das jetzt mit der Formatierung etc. nicht klappt, wie gesagt, bin neu hier im Forum. :slight_smile: don´t hate me… :smiley:

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Es müsste ja eigentlich ein binary_sensor sein.
Warum legst du dir nicht einen Gruppen-Helfer für die Fenster über die UI an?

Und die Namen der Fenster auslesen, findest Du hier z. B. Notification .. Fenster offen mit Angabe welches - #5 von miami

Wenn man noch will, das auch eine korrekte Ansage kommt, wenn alle Fenster geschlossen sind:

{% set status = expand('binary_sensor.alle_fenster') | selectattr('state', 'eq', 'on') | map(attribute='name') | list | join(',') %}  
                {% if status == '' %} 
                  {{ status|replace("", "Alle Fenster sind geschlossen!") }} 
                {% else %}           
                  Folgende Fenster sind noch offen: {{status}}       
                {% endif %}

Ich hab noch einen … weil ich noch Urlaub hab und entspannt bin :slight_smile:

Sage aber gleich ich bin eher für die Gruppenlösung.

sensor:
  - platform: template
    sensors:
      fenster_offen:
        friendly_name: "Fenster offen"
        value_template: >-
          {% set ns = namespace(
            fenster = {
              'Arbeitszimmer': is_state('binary_sensor.fenstersensor_arbeitszimmer_contact', 'on'),
              'Flur': is_state('binary_sensor.0x00158d008b87bdf0_contact', 'on'),
              'Küche': is_state('binary_sensor.0x00158d008b8094a1_contact', 'on'),
              'Wohnzimmer': is_state('binary_sensor.fenstersensor_wohnzimmer_contact', 'on'),
              'Kinderzimmer': is_state('binary_sensor.0x00158d008bbf6d41_contact', 'on'),
              'Schlafzimmer': is_state('binary_sensor.fenster_schlafzimmer', 'on')
            },
            offen = []
          ) %}
          
          {% for name, offen_flag in ns.fenster.items() %}
            {% if offen_flag %}
              {% set ns.offen = ns.offen + [name] %}
            {% endif %}
          {% endfor %}
          {{ ns.offen | join(', ') if ns.offen else 'keine' }}

Unterschiede zu Deinem Code

  • Formatierung
  • Verwendung von echten ‘ und “
  • \[name]\ - wofür Backslash
  • ‘offen’ zu Namespace gemacht damit es die for-schleife überlebt

PS: Ein schönes Beispiel, daß es KI alleine nicht bringt. Die ersten 3 Punkte souverän gefunden/gelöst. Bei Namespace kam Erfahrung ins Spiel.

1 „Gefällt mir“

Vielen Dank schonmal für die Lösungsansätze! Werd mich daran heute abend mal weiter versuchen, sobald ich am Rechner bin.
Ja, mich hat es auch gewundert… Die hoch gepriesene AI spuckte mir den Code aus und irgendwann kam ich zu dem Entschluss, dass sich darin ein Fehler eingeschlichen haben muss. :slight_smile:
Mit Gruppenhelfer habe ich bisher noch keine Erfahrung gemacht, das schau ich mir dann aber auch mal an.

Du bist so geil! Darf ich dich daten? :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:
Es funktioniert! Mega dickes Dankeschön!!!

Ich komm halt aus der Ecke C++, aber da ich Yaml nicht wirklich verstehe, sehe ich es als kleinen Bruder von Sch***e an… :stuck_out_tongue: Kann sich aber noch ändern, muss mich nur noch mehr damit befassen.

Wenn ich Zeit finde, schau ich mir auch gerne mal die Variante mit den Gruppenhelfern an, dazu aber eine Frage:
Was ist der Vorteil von den Gruppenhelfern/Nachteil zu der Sensor-Variante in der conf…yaml ?

Wünsche auf jeden schonmal einen schönen Abend an alle Beteiligten hier! :wink:

Achso, eine Frage am Rande hätte ich da doch noch:
Wenn ich den Codeblock mit dem erstellten Sensor-Template in der configuration.yaml nehme und ihn in eine seperate Datei pflanze, den Aufruf dann mit blabla !include blabla.yaml einfüge, bekomme ich eine Fehlermeldung vonwegen “Integration blabla kann ich nicht gefunden werden”…. Wie ich es auch versuche, habe es noch nie geschafft, ein File via !include zu splitten etc…. Falls da wer ne Idee hat? Wollt jetzt dazu keinen neuen Thread aufmachen….

cheers

:crayon:by HarryP: Zusammenführung Mehrfachpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Ein paar lose Punkte aus meiner Sicht.

  • UI hilft Yaml Syntax Fehler zu vermeiden
  • UI braucht keinen HA Neustart
  • UI Hat eine Vorschau
  • Zukünftige Änderungen in HA werden werden mit aller Wahrscheinlichkeit keine Umstellung der UI Sensoren erfordern
  • Config ist hier und da noch flexibler (aber durch UI Template Sensoren weicht dieser einstige Vorteil)
  • Config Code läßt sich einfach komplett nach einem Wort durchsuchen
  • Off-topic: Trigger based template Sensoren Template - Home Assistant ist aus meiner heutigen Sicht das stärkste Argument für die Config Sensoren und die Behandlung von Vor- und Nachfolger Werten. Ich sah aber auch schon Anwender hier, die komplette Automatisationen lieber die config Variante bevorzugen.
  • Neben echten Argumenten ist es eine klassisch Geschmacksache, manche mögen den Code mehr und manche eine UI

PS: Für diese Diskussion wäre eigentlich ein eigener Post wert, da es hier ganz sicher auch andere Meinungen gibt.

Es wäre hilfreich, wenn Du dafür Deinen Code postest. Ich vermute, am Ende ein Pfad/Code Fehler. Aber dazu gibt es bereits Video Tutorials und auch Forenbeiträge.

Ein Beispiel von mir:
Configuration.yaml.
rest_command: !include rest_command.yaml

Dateistruktur:
\\192.168.x.x\config\rest_command.yaml

Hallo,

ich sage immer “best of both worlds”.

Meine ganzen Fenstersensoren (16 Stück) habe ich über UI in einen Gruppen-Helfer zusammengefasst.

Diesen Helfer kann ich dann als Trigger für beliebige Automationen benutzen.

Kommt ein weiterer Sensor hinzu, so muss ich ihn nur im Helfer ergänzen - fertig!

Für die Ausgabe (welche Fenster sind offen?) wechsle ich dann in Code.

Z.B.: gibt mir die Namen aller Elemente aus “Helfer” die den Status “on" haben.

Alles klar, da weiß ich Bescheid!
Wie gesagt, vielen Dank an alle hier und ich bin happy, dass dat Ding nu läuft :wink:

Super Community hier muss ich sagen, auch wenns grad mal mein erster Thread war… :slight_smile:

Grüße Leutz! :wink:
Dachte mir, ich mache jetzt keinen neuen Thread auf, weil meine Frage im Allgemeinen hiermit zutun hat.

Und zwar:
Läuft alles schick so far, kann mich nicht beklagen. Jedoch kam mir die Tage der Gedanke: ‘Hey, es ist bald Winter. Was mache ich mit der Automation, wenn es schneit, bzw. wenn der Regensensor vereist ist und/oder durch die kalte Außentemperatur beschlägt und auch triggert‘ ?

Quasi, hat jemand ne Idee, wie ich Schnee/Regen/Eis managen kann? Daran hab ich nämlich anfangs garnicht gedacht. :slight_smile:

Könnte die Automation ändern mit ‘mach nur wenn Temp. > 0‘ aber das sagt auch nicht aus, ob es schneit, oder das Teil ‘noch‘ vereist ist… Und ja, auch im Winter kann es ja mal regnen.
Irgendwelche Heizelemente kann ich an dem Sensor auch nicht anbringen, da ich keines gefunden habe, was rein batteriebetrieben läuft und Kabel deshalb durch die Außenwand ziehen möchte ich nicht zwingend.

Eventuell hat ja der ein oder die andere hier ne zündende Idee für mich?! :slight_smile:

Wünsche auf jedenfalls erstmal nen schönen Abend!

Grüße!

Nachtrag:

Bezüglich des alten Themas.

Und zwar:
Läuft alles schick so far, kann mich nicht beklagen. Jedoch kam mir die Tage der Gedanke: ‘Hey, es ist bald Winter. Was mache ich mit der Automation, wenn es schneit, bzw. wenn der Regensensor vereist ist und/oder durch die kalte Außentemperatur beschlägt und auch triggert‘ ?

Quasi, hat jemand ne Idee, wie ich Schnee/Regen/Eis managen kann? Daran hab ich nämlich anfangs garnicht gedacht. :slight_smile:

Könnte die Automation ändern mit ‘mach nur wenn Temp. > 0‘ aber das sagt auch nicht aus, ob es schneit, oder das Teil ‘noch‘ vereist ist… Und ja, auch im Winter kann es ja mal regnen.
Irgendwelche Heizelemente kann ich an dem Sensor auch nicht anbringen, da ich keines gefunden habe, was rein batteriebetrieben läuft und Kabel deshalb durch die Außenwand ziehen möchte ich nicht zwingend.

Eventuell hat ja der ein oder die andere hier ne zündende Idee für mich?! :slight_smile:

Danke schonmal im Voraus!

:crayon:by HarryP: Zusammenführung Doppel- /Crosspost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

Moin,

Schnee und Eis, ist auch Wasser, nur in einem anderen Aggregatzustand :wink:

Ich kenne Deinen Regensensor nicht, aber die, die oft in Wetterstationen eingebaut sind, haben eine Heizung, sodass sie immer etwas über dem Aggregatzustand Eis sind.

VG
Bernd

P.S.: Zudem hättest Du keinen zweiten Post aufmachen müssen, nur weil nicht sofort eine Reaktion kommt, die Personen, die Dir im alten Thread geantwortet haben, bekommen eine Nachricht, dass etwas Neues gekommen ist :wink:
Und Du hättest das Gelöst auch wieder Löschen können :thinking:

*:crayon:by HarryP: Hab die beiden Threads zusammengeführt. Danke für den Hinweis! :grinning: *

Also der Regensensor ist dieser hier: Link
Fand den halt toll wegen Zigbee und Solaraufladung.

Hätte auch nichts gegen eine “Wetterstation” etc.. Mein Problem ist eben nur, dass ich es an der Hauswand auf Fensterhöhe anbringen muss und ich da keine Möglichkeit habe, Strom bereitzustellen. Daher benötige ich entweder akkubetriebene, oder solarbetriebene Geräte.
LG

Ich habe den gleichen Regensensor und bei < 0.1 lasse ich den Sensor nur Frost anzeigen. Verlässliche Werte bekommst Du nur bei Heizung.

Nutzt du dafür einen seperaten Temperatursensor?

1 „Gefällt mir“