Schalter ausschalten wenn Rolladen manuell geschaltet

Hallo Zusammen,
ich habe meine Rolladen mit Homematic IP Smart gemacht. Ich habe aber weiterhin am manuellen Schalter die Möglichkeit die Rolladen zu steuern.

Jetzt such ich schon eine ganze Weile eine Möglichkeit einen Boolean Helper auszuschalten, wenn ich die Rolladen manuell bediene.

also ich schalte meine Rolladen mit einigen Automationen (hoch und runter). Jetzt würde ich aber gerne wenn die Rolladen nicht über eine Automation gefahren werden einen Boolean Helper ausschalten.

Aber ich habe bis jetzt noch keine Idee gefunden.

Hat hier jemand eine Idee, oder vielleicht sogar schon etwas umgesetzt?

Wenn es nicht am finanziellen oder am technischen Know-How mangelt, bau einen Shelly 2PM in den Rolladenschalter, dann kannst du triggern „wenn shelly ausgelöst, dann boolean off. Du kannst bei einem Shelly den Input lösen, so das das Relais nicht auslöst. Aber der Klick am Schalter kommt im HA an. Letztendlich kannst du auch die Homematic-Komponente damit ersetzen.

Aber, bekommt Homematic das nicht mit wenn du den Schalter antippst? Dann sollte sich dieses Event auch den HA übermitteln lassen.
Wenn Status Rollade geändert ohne Automation, dann Boolean off (mit einer anderen Automation :joy:)

Osorkon hatte hier mal was gepostet

vielen Dank das ist echt ein super Ansatz. Ich bekomme auch wie in dem Beispiel wenn ich die Rolladen manuell fahre mit dem Code eine Nachricht geschickt “wer” den Rolladen gefahren hat.

alias: Nachricht Rolladen Küche gefahren
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_kuche
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - service: notify.telegram
    metadata: {}
    data:
      message: |
        {% if ident == (true, false, false) %}
          Rolladen Küche manuell gefahren
        {% elif ident == (true, false, true) %}
          Rolladen Küche gefahren über Dashboard UI
        {% elif ident == (true, true, false) %}
          Rolladen Küche gefahren über Automatisierung
        {% else %}
          Rolladen Küche gefahren unknown
        {% endif %}
mode: single

Mein Problem ist jetzt gerade den Code so anzupassen, dass ich nicht eine Nachricht erhalten, sondern dass der Boolean ausgeschaltet wird.

Ich dachte es geht damit:

alias: Rolladenautomatik Küche ausschalten wenn manuell gefahren
description: " "
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_kuche
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - if:
      - condition: template
        value_template: if ident == (true, false, false)
    then:
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id:
            - input_boolean.rolladen_automatik_kuche
mode: single

Aber leider wird der Boolean nicht ausgeschaltet, wenn der Rolladen in der Küche manuell gefahren wird.

Hat hier jemand ein Tipp, was ich am Code ändern muss?

Teste es mal so

          - condition: template
            value_template: |-
              {% if ident == (true, false, false) %}
              true
              {% endif %}

Es braucht kein if, einfach nur:

value_template: "{{ ident == (true, false, false) }}"

Und den if / then Teil, kannst Du Dir auch sparen. Einfach als Bedingung verwenden.

alias: Rolladenautomatik Küche ausschalten wenn manuell gefahren
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_kuche
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition:
  - condition: template
    value_template: "{{ ident == (true, false, false) }}"
action:
  - service: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.rolladen_automatik_kuche
mode: single

Gruß
Osorkon

Danke @osorkon mit deinem Code hat es perfekt funktioniert.

Edit:
@Osorkon Hab mich da zu früh gefreut.
Bei den Homematic IP Aktoren scheint es so zu sein, dass Sie auch wenn ich die Rolladen über eine Automation fahre am Ende, wenn der Aktor abschaltet das Signal für manuell verschickt. Hatte vorhin nur manuell am Schalter und über Dashboard UI probiert. Jetzt als meine Automation geschaltet hat, wurde mein Boolean auch ausgeschaltet.

Also habe es jetzt dann noch einmal mit den Telegram Benachrichtigungen gemacht um es genauer zu sehen. Er schickt immer wieder die Meldung das es über die Automatisierung gefahren wird (solange der Rolladen fährt) und ganz zum Schluss kommt die Meldung, dass es manuell war (was es aber halt nicht war).

Rolladen Wohnzimmer gefahren über Automatisierung
Rolladen Wohnzimmer gefahren über Automatisierung
Rolladen Wohnzimmer gefahren über Automatisierung
Rolladen Wohnzimmer manuell gefahren

Gibt es da noch eine andere Möglichkeit?

1 „Gefällt mir“

Fasse die beiden Automatisierungen zusammen.
Und arbeite mit Trigger id‘s und als Aktion mit Auswahl.

Bei der Option wo der Rolladen über eine Automatisierung gesteuert wird als zusätzliche Aktion eine Verzögerung von X s.

Der Modus muss auf Single stehen. Dann löst die Automatisierung nicht aus, wenn der Aktor zum Schluss noch den Staus sendet, der als manuelle Betätigung interpretiert wird.

Gruß
Osorkon

Habe es jetzt mal mit dem folgenden Code versucht. Der schaltet aktuell noch nicht die Booleans sondern verschickt die verschiedenen Nachrichten damit ich sehen kann was er Triggert.

alias: Rolladenautomatik Wohnzimmer ausschalten wenn manuell gefahren
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_wohnzimmer
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - if:
      - condition: template
        value_template: "{{ ident == (true, true, false) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: Mit Automation gefahren
      - delay:
          hours: 0
          minutes: 1
          seconds: 0
          milliseconds: 0
        enabled: true
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, true) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: manuell in HA gefahren
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: false
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, false) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: manuell am Schalter gefahren
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: false
mode: single

Mein Problem ist jetzt, dass ich heute den Tag über immer mal wieder die Meldung erhalten habe, dass der Rolladen manuell gefahren wurde. Tatsächlich ist aber überhaupt nichts gefahren. Zu dem Zeitpunkt hat weder jemand manuell noch eine Automation den Rolladen bewegt.

Hat jemand eine Ahnung, was da los ist?

Mit dem aktuellen Trigger wird jede Änderung auch der vorhandenen Attribute verwendet.
Nimm mal als Auslöser das Attribut Position.

Gruß
Osorkon

dankeschön für den Tipp, werde ich jetzt mal ausprobieren.

Edit:
aktuell scheint es so zu funktionieren.

Hier mal mein aktueller Code:

alias: Rolladenautomatik Wohnzimmer ausschalten wenn manuell gefahren
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_wohnzimmer
    attribute: current_position
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - if:
      - condition: template
        value_template: "{{ ident == (true, true, false) }}"
    then:
      - delay:
          hours: 0
          minutes: 1
          seconds: 0
          milliseconds: 0
        enabled: true
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, true) }}"
    then:
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: true
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, false) }}"
    then:
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: true
mode: single

ich muss leider meine erste Einschätzung doch noch einmal revidieren :disappointed:

mit diesem Code:

alias: Rolladenautomatik Wohnzimmer ausschalten wenn manuell gefahren
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.homematicip_rollladen_wohnzimmer
    attribute: current_position
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - if:
      - condition: template
        value_template: "{{ ident == (true, true, false) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: Mit Automation gefahren
        enabled: true
      - delay:
          hours: 0
          minutes: 1
          seconds: 0
          milliseconds: 0
        enabled: true
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, true) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: manuell in HA gefahren
        enabled: true
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: true
  - if:
      - condition: template
        value_template: "{{ ident == (true, false, false) }}"
    then:
      - service: notify.telegram_manuel
        metadata: {}
        data:
          title: Rollladen Wohnzimmer
          message: manuell am Schalter gefahren
        enabled: true
      - service: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.rolladen_automatik_wohnzimmer
        enabled: true
mode: single

habe ich gerade als eine Automation den Rolladen hochgefahren hat die Meldung “manuell am Schalter gefahren” erhalten und damit wurde natürlich auch der Boolean ausgeschaltet.

Ich verstehe jetzt gerade nicht wirklich warum hier der Teil mit dem manuell greift.

Hat hier jemand noch eine Idee, habe ich hier einen Gedankenfehler oder klappt das einfach mit den Homematic IP Aktoren einfach nicht?