Hallo,
seit heute unterstützt das HACL Script https://github.com/bieniu/ha-shellies-discovery auch value_templates.
Dadurch kann man die Laufzeiten bei den Shelly 2.5 so korrigieren, dass die Position bei 50% auch der optischen Position entspricht.
Hier einmal eine Beispielkonfiguration:
action:
service: python_script.shellies_discovery
data_template:
id: '{{ trigger.payload_json.id }}'
mac: '{{ trigger.payload_json.mac }}'
fw_ver: '{{ trigger.payload_json.fw_ver }}'
model: '{{ trigger.payload_json.model }}'
shellyswitch25-xyz:
mode: "roller"
roller-0-name: "Rollo.OG.Schlafzimmer"
roller-0-class: "shutter"
position_template: "{{ '{%if value is none %}{{ null }}{%elif value | float < 0 %}{{ null }}{%elif value | float >= 65 %}{{ (value | float / (100-65)*(100-50) - 65/(100-65)*(100-50) + 50) | int }}{%elif value | float >= 16 %}{{ (value | float / (64-16)*(49-5) - 16/(64-16)*(49-5) + 5) | int }}{%elif value | float >= 6 %}{{ (value | float / (15-6)*(4-1) - 6/(15-6)*(4-1) + 1) | int }}{% else %}{{ 0 }}{% endif %}' }}"
set_position_template: "{{ '{%if position | float >= 50 %}{{ (position | float / (100-50)*(100-65) - 50/(100-50)*(100-65) + 65) | int }}{%elif position | float >= 5 %}{{ (position | float / (49-5)*(64-16) - 5/(49-5)*(64-16) + 16) | int }}{%elif position | float >= 1 %}{{ (position | float / (4-1)*(15-6) - 1/(4-1)*(15-6) + 6) | int }}{% else %}{{ 0 }}{% endif %}' }}"
Alles anzeigen
Die Zahlen sind so zu verstehen (Lineare Algebra -> Gradenfunktion y = x*m +b)
50 optisch entspricht einer Position von 65 im Shelly
Position 5 entspricht einer Position von 16 im Shelly --> Hier soll das Rolle gerade so unten angekommen sein, so dass die Position 4-1 noch zum Steuern der "Schlitze" bleiben...
6 ist der unterste Wert, wo die Rollos noch ein Stückchen geöffnet sind. Darunter ist nur Leerlauf, der Motor läuft zwar, aber das Rollo bewegt sich nicht mehr.
Die anderen Werte sind dann 49 (50-1) und 15 (16-1)
position_Template wandelt die Werte in die eine Richtung um, set_position_Template in die andere. Daher sind dort die Werte quasi "vertauscht".
Viel Spaß beim Ausprobieren!
Gruß
Sebastian