@wolfgangfb
Ich habe das ganze jetzt erfolgreich gelöst. Da es in der Vergangenheit schon andere gegeben hat, die über das gleiche Problem gestolprt sind hier die ausführliche Lösung:
Es ist in der Tat so, dass der Rolladen (oder was auch immer man damit steuern möchte) nicht direkt über die ESPHome Datenpunkte sondern über MQTT gesteuert und ausgewertet werden müssen.
Bei mir wird das ganze über mit einem ESP8266 (Wemos D1 Mini) und 2 Relais gesteuert wobei ich da gleich einen "Hardware" Interlock-Schutz eingebaut habe damit nicht gleichzeitig "Auf" und "Ab" aktiv sein können (man kann zwar in ESPHome ein Interlock aktivieren, das ist aber eben nur Software)..
Also einfach ein Relais für AnAus und eines für AufAb, damit kann immer nur eine Richtung geschaltet sein.
switch:
- platform: gpio
pin:
number: D3
mode: OUTPUT
inverted: true
id: on_rollo
name: "RelaisAnAus"
restore_mode: ALWAYS_OFF
- platform: gpio
pin:
number: D4
mode: OUTPUT
inverted: true
id: dir_rollo
name: "RelaisAufAb"
(Den Restore Mode habe ich eingeaut damit im Falle eines Neustartes nicht sofort der Rollo loslegt, Inverted weil es so zu meinen Relais passt, kommt ja immer darauf an,wie man das ganze anschließt).
Jetzt zur eigentlichen Steuerung:
cover:
- platform: time_based
name: "GastRollo"
device_class: shutter
id: gast_rollo
position_state_topic: "Rollo.Gast.position.ist"
position_command_topic: "Rollo.Gast.position.wunsch"
open_action:
- switch.turn_on: on_rollo
- switch.turn_on: dir_rollo
open_duration: 20sec
close_action:
- switch.turn_on: on_rollo
- switch.turn_off: dir_rollo
close_duration: 20sec
stop_action:
- switch.turn_off: on_rollo
Die "Actions" sind meiner Meinung nach einfach zu verstehen (Bei "Auf", "Ab" und "Stop" werrden eben die entsprechenden Relais geschaltet).
Was meiner Meinung nach nicht so gut in der Doku erklärt ist, sind die Eiknträge:
position_state_topic: "Rollo.Gast.position.ist"
position_command_topic: "Rollo.Gast.position.wunsch"
Damit definiert man, über welche MQTT Topics der Rollandenzustand gelesen und gesetzt werden kann. Das sind zwingend 2 verschiedene Punkte!
Um MQTT in ESPHome machen zu können muss noch die MQTT Plattform hinzugefügt werden:
mqtt:
broker: 192.168.1.203
(Bei mir wird kein Username und kein Password benötigt, wer eins gesetzt hat, muss es hier mit "username:" und "password:" angeben. Natürlich muss die IP Adresse noch angepasst werden)
Das verwirrende ist meiner Meinung nach, dass in den Objekten des ESPs selbst unter "Cover" ein Objekt "Position" auftaucht, dieses aber scheinbar nicht verwendet wird (bei mir dsteht da immer 0, wozu tilt gut sein soll weiß ich auch nicht, der Stop Button macht bei mir auch nichts.)
cover.jpg
In den Datenpunkten von MQTT tauchen aber jetzt die beiden Punkte "ist und "wunsch" auf
mqtt.jpg
Über "ist" kann man verfolgen, an welcher Stelle der Rollo gerade ist, wenn man "wunsch" ändert bewirkt das, dass der Rollo zu dieser Position gefahren wird.
Um das ganze z.B.in VIS z.B. über eine Shutter Komponente steuer zu können benötigt man aber einen gemeinsamen Datenpunkt zum Lesen und Schreiben. Deshalb erzeugt man einfach einen Alias bei dem man unterschiedliche Datenpunkte für Lesen und Schreiben angeben kann.
alias.jpg
Um unterschiedliche Datenpunkte einstellen zu können muss man auf den Reiter "Alias klicken.
Wer jetzt das ganze noch über einen einzelnen Taster steuern möcht (Wechsel "Auf" -> "Halt" -> "Ab" -> "Halt" etc.)
baut noch folgendes ein:
binary_sensor:
- platform: gpio
name: "RolloTaster"
pin:
number: D8
mode: INPUT_PULLUP
inverted: true
filters:
- delayed_on: 100ms
on_press:
then:
- cover.toggle: gast_rollo
(Ich weiß, dass D8 mit Vorsicht zu genießen ist, der "Filter" ist zum Entprellen des Tasters, da es für D8 keinen internen Pulldown gibt habe ich eben INPUT_PULLUP gewählt (damit ist der Pin ohne das der Taster gedrückt ist immer high, der Taster ist an GND und D8 angeschlossen und zieht den PIN dann eben auf Low, deshalb auch "Inverted")
Viel Spaß beim nachbauen.