Shutter Card

Hallo,

ich bin Neulinh und probiere mich gerade aus. Meine Rolladensteuerung zu Hause ist per Nodon Rolladen Shutter in Homee integriert. Homee ist per Integration im Home Assistant verfügbar. Nun geht es darum das, wenn ich meine Rolläden zu Hause phsysisch oder per Homee App steuere der Befehl ab das herunterfahren der Rollade bewirkt, erneuter ab Befehl stoppt die Rollade. Nur nicht im Home Assistant. Dort kann ich nur ganz runter oder rauf fahren. Ein erneuter ab bzw. auf Befehl bewirkt keine Veränderung. Kann ich das überhaupt wie im Homee realisieren?

Vielen Dank für Eure Hilfe im voraus.

Versuchen sie es mal mit der Shuttercard die sie über HACS laden können.

Er wollte bestimmt sowas realisieren.
Hab auch ein wenig gewerkelt um diese unnötigen 3 Buttons in der Shutter Card los zu werden, denn ich kennen gar keinen der heutzutage noch 3 Taster für einen Rollladen benutzt. (gibt’s vermutlich nur noch im englischsprachigen Raum)
Animation
Die Animation ist schon ein paar Wochen alt … mittlerweile 1.4.0 ist die shutter card ja noch hübscher geworden.

Gezeigte Lösung mit der Shutter Card, die original Buttons mit dem card mod hinter das Rollo verschoben, je 2 custom button cards pro Rollo und ein einziges script für alle Rollos, voila.
Ach so ja, funktioniert bei mir mit EnOcean sprich ein Druck auf die Buttons sendet das entsprechend EEP ans Rollo bzw. an eine Eltako FAM14/BSB14 Kombination (muss dort eingelernt werden) und bewegt halt das Rollo der Shutter Card. Ach so ja und natürlich mit dem enoceanmqqt addon und nicht etwa mit der offiziellen Enocean Implementierung von HA die irgendwie auf dem Niveau einer Alpharelease stecken geblieben ist.

Am verzweifeln bin ich allerdings aktuell noch mit dem ziehen der Rollos mit der Maus in der Card.Da muss ich noch etwas drüber grübeln und mich mal ins Thema Trigger einlesen.

1 „Gefällt mir“

Hast du dazu auch einen Code ?

nein hab ich in Powerpoint so hingemalt :grin:

Das was du im GIF siehst ist natürlich kaum 100% kompatibel, aber ich versuch mal die wichtigen Schritte aufzuzeigen oder zu beschreiben.

Ich habe die shutter-card genommen wie sie nun mal ist. Die original Buttons mit dem card-mod sozusagen durch verschieben hinter das Rollo gelegt, denn die brauche ich ja nicht. Wie das geht findest du im englischsprachigen Forum, einfach nach shutter card suchen. Da haben andere Dinge hin und her geschoben, ich hab solange getrickst bis die Buttons weg waren.

Sprich in meiner Shutter-Card steht nur folgendes:

type: custom:shutter-card
title: Esszimmer
entities:
  - entity: cover.ar_esszimmer
    name: 'offen zu:'
    buttons_position: none
    title_position: bottom
# und danach halt die style iIformationen wie in card mod beschrieben um die buttons zu killen.
Einzig wichtige Info ... das cover entity um das es geht.

darunter die Buttons also open/stop/close sind custom:button-cards hier mal eine als Beispiel

type: custom:button-card
entity: cover.ar_esszimmer
tap_action:
  action: call-service
  service: script.virt_ar_unified
  service_data:
    select: select.e2m_virt_ar_esszimmer_action
    what: AO
    which: cover.ar_esszimmer
aspect_ratio: 1/0.5
color_type: card
color: rgb(65, 109, 150)
state:
  - operator: template
    value: |
      [[[
        if (entity.attributes.current_position > 99
        )
        return 'open';
      ]]]
    icon: mdi:file-excel-box-outline
    name: n/a
    color: rgb(100,100,100)
  - operator: template
    value: |
      [[[
        if (entity.attributes.current_position > 0
        && entity.attributes.current_position < 100
        && entity.state == 'open'
        )
        return 'tilt';
      ]]]
    icon: mdi:transfer-up
    name: OPEN
    color: rgb(65, 109, 150)
  - value: closed
    icon: mdi:transfer-up
    name: OPEN
    color: rgb(65, 109, 150)
  - value: opening
    icon: mdi:stop
    name: STOP
    color: rgb(65, 109, 150)
  - value: closing
    icon: mdi:stop
    name: STOP
    color: rgb(65, 109, 150)

da sind eigentlich alle relevanten Informationen im Abschnitt entity: bzw. tap_action: der Rest ist mehr oder weniger Kosmetik, also wann soll der button Open, Close oder n/a zeigen.
Das entity ist ein mein Rollo, also ein cover eintrag aus eine covers.yaml auf die ich in der configuration.yaml mittels ‘cover: !include covers.yaml’ referenziere.

da ich die covers_time_based benutze sieht ein cover als Beispiel dort bei mir wie folgt aus:

- platform: cover_time_based
  devices:
    ar_esszimmer:
      name: "AR Esszimmer" # AR == Aussenrollo weil ich gerne alle entities der cover in Reihe wollte
      travelling_time_up: 15
      travelling_time_down: 11
      open_switch_entity_id: script.dummy
      close_switch_entity_id: script.dummy

Die Scripte hier habe ich absichtlich mit nem Dummyscript belegt das einfach nur ein delay 00:00:00 macht weil was soll ich mit 2 scripten für 2 Einzelfunktionen wenn ich ja jeder Funktion 2 Unterfunktionen zuweisen will. STOP falls sich das Rollo bewegt oder halt hoch oder runter falls es sich gerade nicht bewegt. Sprich die 2 sind mehr-als-flüssig. Denn ich arbeite ja mit der tap_action der buttons.

Also kurz zurück zur tap_action: in der custom:button.card
Ich rufe einen service auf und zwar soll ein script ausgeführt werden welches ich mal virt_ar_unified benamst habe weil es halt ein virtueller button ist, ein AR == aussenrollo bedient und unified weil es halt für egal wieviele meiner Rolläden gilt.
Interessanter Punkt hier alles was sich unter serivce_data: befindet.
Frei nach dem Motto was wie wo (ein-ge-englischt dann select what which)
Also mit select wähle ich den entsprechneden selector aus (das ist ein am ende das entity welches mir das enoceanmqtt addon liefert (ab version 0.1.24 glaube ich) sprich das ist ein virtueller EnOcean F6-02-02 button mit den 4 Einzelbuttons gemäß EnOcean Spezifikation AO, AI, BO und BI oder eben ‘None’ wenn man den jeweiligen Button loslässt. (wie bei einem physikalischen Button)
Bei what: trage ich dann ein welchen einzelbutton ich mit dem custom-button drücken möchte im Beispiel oben halt den AO button.
Und bei which: habe ich den Rollo eingetragen den der custom-button steuern soll. Mein Esszimmerrollo.
Wichtig, für das “unifed script” ich übergebe also an das script sowohl das virutellen EnOcean entity als auch den gewünschten Tastendruck sowie das zugehörige Rollo.
Ach so ja der andere custom-button unterscheidet sich primär durch ein AI anstelle AO beim what:
Und halt etwas Kosmetik im state: Bereich da bei Home Assistant Rollos ja nicht den Zustand “mittendrin” kennen sondern immer nur Opened oder Closed als Status zurückmelden. Sprich alles was nicht Closed ist, ist Opened, bedeutet 1% Opened ist identisch mit 100% Opened.

Im Script passiert nun folgendes:
Beim Auswählen einer select.select_option feuert das enoceanmqtt addon das entsprechende EEP telegram über den EnOcean stick raus. Und der Eltako FAM14/FSB14 macht das was er soll (so du den virtuellen Button dort eingelernt hast was äusserst praktisch wäre.) odr im Nodon oder wo auch immer. Sprich der Virtuelle Button ist nix andere wie ein weiterer Taster an der Wand nur halt im HA virtuell. Sprich ohne Shutter-Card wärst du jetzt fertig. das Rollo tut was es soll wenn du auf den button der custom:button-card drückst. Also fast zumindest. Was noch fehlt ist die STOP Funktion bei Bewegung.
Damit es aber auch gleich hübsch wird ist das script nun länger.
Es prüft nun zuerst ob der Rolladen in Bewegung war oder nicht. War er gerade in Bewegung bewirkt ein Tastendruck den STOP der shutter card, falls er schon stand dann halt Kommando auf falls AO oder BO oder eben runter falls AI oder BI
Und am Ende, egal was vorher war löst er nochmal den slector des Virtuellen Tasters aus mit dem Wert ‘None’ der sozusagen einem physikalischen Button-release eines EnOcean Tasters entspricht.

alias: virt_ar_unified
sequence:
  - service: select.select_option
    data:
      option: "{{ what }}"
    target:
      entity_id: "{{ select }}"
  - if:
      - condition: template
        value_template: "{{ is_state(which, \"opening\") or is_state(which, \"closing\") }}"
    then:
      - service: cover.stop_cover
        data: {}
        target:
          entity_id: "{{ which }}"
    else: # sonst
      - choose:
          - conditions:
              - condition: template
                value_template: "{{  (what == \"AO\") or (what == \"BO\") }}"
            sequence:
              - service: cover.open_cover
                data: {}
                target:
                  entity_id: "{{ which }}"
          - conditions:
              - condition: template
                value_template: "{{  (what == \"AI\") or (what == \"BI\") }}"
            sequence:
              - service: cover.close_cover
                data: {}
                target:
                  entity_id: "{{ which }}"
  - service: select.select_option
    data:
      option: None
    target:
      entity_id: "{{ select }}"
mode: single
icon: mdi:window-shutter-auto

Also die wirkliche Glanzleistung war eher die Frage wie bekomme ich es hin das ein Klick auf ein custom:button-card element a) ein EEP telegram über den EnOcean Stick rausschickt, was dank dem AddOn wirklich einfach ist, und dann halt diese konfuse Situation das HA meint das alles was nicht Closed ist bei einem Rolladen offen ist. Ein Glas Bier ist ja nun auch nicht halb leer oder halb voll wenn es nicht mehr komplett voll ist. Auf so ne Idee können wirklich nur die HA Jungs kommen.

Ich hoffe ich hab keinen Schritt vergessen, mal abgesehen wie das enoceanmqtt addon funktioniert und wie man es einrichtet.

Wenn du Fragen dazu hast oder sonst noch was fehlt oder unklar ist, gerne.
Ich hatte vorhin glatt schon überlegt ob ich das Beispiel nicht in der Thread mit den Automatisierungen packe zu denen @simon42 ein Video angekündigt hat. Denn bis ich das mit der Parameterübergabe kapiert hatte wie man die an ein Script übergibt und sie darin nutzt habe ich nicht nur Stunden verbraten.
Ich wollte aber unbedingt halt 1 Script für egal wie viele Rolläden und nicht 16 Scripte oder Automatisierungen, für jedes Rollo jeweils ein eigenes. Da steigt sonst hinterher keiner mehr durch.
Und am Ende fand ich die Script Variante sogar schöner als eine Automatisierung, wobei letztendlich beides nahezu identisch funktioniert.

1 „Gefällt mir“

Danke mir reicht die Karte habe Homematic IP. Habe versucht die Shutterkarte und dann die Mushroom Cover darunter zu setzen bringe aber die Bedienelemente und das mdi icon nicht weg sonst hätte das schon geklappt.

Wie bekomme ich diese laufende Animation nach anwählen des Auf- & Abfahrens hin?
Finde ich sehr schön.

Das macht die shutter card doch von sich aus, guckst du hier.

Bei mir offenbar nicht.
Eventuell habe ich eine Codezeile vergessen?

type: custom:shutter-card
title: Eingangsbereich
entities:
  - entity: cover.shellyplus2pm_c4d8d5563484
    name: "Status:"
    buttons_position: left
    title_position: bottom

Händisch kann ich das Rollo bedienen, wenn ich aber auf den Hochfahren oder runterfahren button klicken, bewegt sich das Rollo nicht.

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

schon mal hier durchgewühlt?`

Hallo, deine Ausführungen sind sehr verständlich und ich konnte das so konfigurieren.
Leider sind brauchen meine Rollos einen mind. 2s langen Tastendruck, um in die
entsprechende Richtung zu fahren (das ist eigentlich für Lamellenrollos gedacht, aber
ich habe im ganzen Haus die Aktoren so konfiguriert).
Wie kann ich denn bitte einen langen Tastendruck konfigurieren?
Bei einem langen Tastendruck passiert nix, bis ich loslasse, dann kommt nur ein kurzer Impuls.
Besten Dank im Voraus, Harry

Länger halten bedeutet ja nicht das du mit der Taste sozusagen getastet hast sondern das du die Taste gedrückt hälst.

Hmm … .gute Frage, hab ich mich noch nie mit beschäftigt, sorry.