Sooo Freunde der Sonne, durch tatkräftige Unterstützung von justone habe ich es schlussendlich zum laufen bekommen. Ohne seine Erkläreung hätte ich es nicht geschafft. Hat sich auch nur über 18 Tage gezogen
Für mich unklar waren dabei die Punkte die ich hier nochmal kurz erläutern möchte, evtl. hilft es auch anderen Leuten weiter die wie nicht so viel Plan von Computersachen haben.
- EnOcean Stick als Virtuellen Schalter anlegen
- Am Eltakobus die Virtuellen Schalter einzulernen mit der PCT14 Software von Eltako
- Installation der Custom Components
- Anlegen der Shutter Card
- dummy script
- virt_ar_unified script von justone was auch im ShutterCard post zu finden ist
Man braucht: Mosquitto broker

Home Assistant Addon for HA_enoceanmqtt

Aus dem HACS:
Shutter card
card-mod
cover_time_based
Was mit zu beginn nicht klar war, ist dass man die virtuellen Schalter die man anlegt so auch am Eltako bus einlernen muss.
Mein Stick hat z.B. die ID FFE5F980 wenn mann nun einen 2ten virtuellen schalter anlegen möchte so kann mann einfach am schluss aus der 80 ein 81 machen für den 3ten eine 83 und so weiter.
Diese Angelegten ID’s muss man dann am BUS einlernen, was kein Hexenwerk ist, wenn man in der OCT Software von eltako mal verstanden hat was was macht. Dazu habe ich mir die Erklärvideos angeschaut.
https://www.youtube.com/watch?v=j4kwVG0Ijc0
https://www.youtube.com/watch?v=oB1pYXPD8EE
Als die Nummern eingelernt waren muss ich nur noch herausfinden, welcher Kanal welchen Rolladenaktor steuert. Das war ein wirkliches ausprobieren und Aufschreiben. Hat aber geklappt.
Der rest war ein Versuchen, Lernen, Eine Nacht drüber schlafen und ausprobieren. Und natürlicht support von justone der mich wirklich hervoragend unterstützt hat. Vielen Dank an dieser Stelle nochmals. Ohne dich hätte das nicht geklappt.
Vielleicht ist es ja in ein paar Jahren nur noch 2 Mausklicks…

Beispielcode für einen Schalter aus enoceanmqtt.devices
#Virtuelle Schalter für Licht / Rollos [virtual_Funktion_Stock_Ort]
#USB Stick ID: FFE5F980
#1
[virtual_ar_eg_buero]
address = 0xFFFFFFFF
rorg = 0xF6
func = 0x02
type = 0x01
sender = 0xFFE5F981
virtual = 1
Beispielcode für ein cover aus der dateil covers.yaml
- platform: cover_time_based
devices:
ar_og_bad:
name: "Bad"
travelling_time_up: 15
travelling_time_down: 15
open_switch_entity_id: script.dummy
close_switch_entity_id: script.dummy
- platform: cover_time_based
devices:
ar_og_eltern:
name: "Eltern"
travelling_time_up: 8
travelling_time_down: 8
open_switch_entity_id: script.dummy
close_switch_entity_id: script.dummy
Beispielcode für eine ShutterCard:
type: vertical-stack
cards:
- type: custom:shutter-card
title: Küche
entities:
- entity: cover.bad
name: 'offen zu:'
buttons_position: none
title_position: bottom
style: |
ha-card {
font-size: 11px !IMPORTANT;
}
.sc-shutter-label {
font-size: 15px !IMPORTANT;
}
.sc-shutter-top {
text-align: left !IMPORTANT;
}
.card-header {
font-size: 10px !IMPORTANT;
}
.sc-shutter-selector-slide {
width: 129px !IMPORTANT;
}
.sc-shutter-selector-picture {
width: 147px !IMPORTANT;
background-size: 147px 100% !IMPORTANT;
background-repeat: no-repeat !IMPORTANT;
}
.sc-shutter-selector-picker {
width: 91.0% !IMPORTANT;
}
.sc-shutter-buttons {
width: 1px !IMPORTANT;
}
.sc-shutter-button {
width: 1000px !IMPORTANT;
}
- type: horizontal-stack
cards:
- type: custom:button-card
entity: cover.bad
tap_action:
action: call-service
service: script.virt_ar_unified
service_data:
select: select.e2m_virtual_ar_og_bad_action
what: AO
which: cover.bad
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)
- type: custom:button-card
entity: cover.bad
tap_action:
action: call-service
service: script.virt_ar_unified
service_data:
select: select.e2m_virtual_ar_og_bad_action
what: AI
which: cover.bad
aspect_ratio: 1/0.5
color_type: card
color: rgb(65, 109, 150)
state:
- value: opening
icon: mdi:stop
name: STOP
color: rgb(65, 109, 150)
- value: closing
icon: mdi:stop
name: STOP
color: rgb(65, 109, 150)
- operator: template
value: |
[[[
if (entity.attributes.current_position < 1)
return 'closed';
]]]
icon: mdi:file-excel-box-outline
name: n/a
color: rgb(100,100,100)
- operator: template
value: |
[[[
if (entity.attributes.current_position > 99
&& entity.state == 'open')
return 'open';
]]]
icon: mdi:transfer-down
name: CLOSE
color: rgb(65,109,150)
- operator: template
value: |
[[[
if (entity.attributes.current_position > 0
&& entity.attributes.current_position < 100
&& entity.state == 'open')
return 'tilt';
]]]
icon: mdi:transfer-down
name: CLOSE
color: rgb(65, 109, 150)
virt_ar_unified
Auszu aus scripts.yaml
dummy:
alias: dummy
sequence:
- delay:
hours: 0
minutes: 0
seconds: 0
mode: single
virt_ar_unified:
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:
- 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