Hallo,
ich habe in HA für das Öffnen und Schließen meines Garagenschwingtores eine Automation hinterlegt,
welche mir den Öffnungsgrad des Tores anzeigt.
Den passenden Code habe ich hier im Forum gefunden und entsprechend angepasst.
DANKE nochmals für die hilfreichen Infos in diesem Forum.
Auslöser sind die beiden Torendschalter.
Ändert sich der Status startet die Autmation.
Somit habe ich eine Anzeige, egal womit, das Tor betätigt wird. (Smartphone, HA, 433 MHz Sender, Taster in der Garage)
Der Öffnungsgrad wird auf Basis der Öffnungs (12s) - und Schließzeit (17s) ermittelt.
Öffnet sich das Tor, dann wird mittels Template “input.number” der Zähler hochgesetzt, bis 100% erreicht sind.
Beim Schließen entsprechend umgekehrt.
Aber, das ganze passt aber nur dann, wenn das Tor kpl. “AUF” oder “ZU” gefahren wird.
Wird der Taster dazwischen nochmals betätigt, bleibt das Tor stehen, der Zähler läuft aber weiter.
Nun habe ich überlegt,
ob man den Öffnungsgrad nicht auch mittels ESP Modul ESP8266 und dem Ultrasonic HC-SR04 Modul ermitteln kann.
Der Entfernungsmesser könnte an der Führungsschiene im Bereich des Antriebs platziert werden und die Entfernung zum Führungsschlitten messen.
Wird die Entfernung größer = Tor fährt zu, verkleinert sich die Entfernung = Tor fährt auf.
Bleibt das Tor stehen, ändert sich ja an dem Weg nichts mehr und die Anzeige zeigt den aktuellen Status.
Ich habe die Möglichkeit mittels 3D Druck ein passendes Gehäuse/Befestigung zu drucken.
Nun zu meiner Frage:
Hat sich schon jemand daran versucht oder einen Gedanken daran verschwendet bzw. Erfahrungen gemacht?
Ist der Ultraschallsensor dafür geeignet. Der soll ja bis zu 5m Entfernung können. ( Es muss zudem nicht auf den mm genau sein!)
Hallo,
ich habe nun einen Ultraschallsensor HC-SR04 erfolgreich mittels ESPHome und einem SP8266 Board in Home Assistant eingebunden bekommen.
Die Distanzmessung funktioniert am Schreibtisch erst einmal gut,
der richtige Einsatz am Garagentor folgt noch.
Bin daher zuversichtlich!
Sobald der Sensor aktiviert ist werden,
im Moment, alle 125ms Messungen durchgeführt.
Die Intervalzeit muss dann noch geminsam mit der fahrtzeit des Garagentores ermittelt werden, damit die Anzeige auch flüssig läuft!
Auf die Dauer wird mein Raspi damit ja erheblich belastet,
daher soll diese Intervallzeit 125ms nur beim Öffnen und Schließen des Tores erfolgen.
Als Auslöser für die Änderung des Intervalls soll dann einen Statusänderung eines meiner Senoren sein, die den “AUF” oder “ZU” Zustand des Tors anzeigen.
Das ganze kann dann ca. 20 sec mit 125ms erfolgen und danach nur noch jede Stunde!
Ich scheitere aber daran, das passende Script dazu zu erstellen,
weil ich sehr wenig YAML Kenntnisse habe.
Ich würde mich freuen, wenn mir bitte jemand helfen würde.
`Mein Script sieht derzeit so aus:
# configuration entry
sensor:
- platform: ultrasonic
id: distance_sensor
trigger_pin: GPIO5
echo_pin: GPIO4
name: "Ultrasonic_Sensor"
update_interval: 125ms
timeout: 2.5m
accuracy_decimals: 2
unit_of_measurement: 'm'
# filters:
filters:
- lambda: return x;
- filter_out: nan
- median:
window_size: 5
send_every: 5
send_first_at: 1
- calibrate_linear:
- 0.0 -> 0.0
- 200.0 -> 200.0
- platform: template
id: level
name: Status_Garagentor
#update_interval: 125ms
### Hier klemmt es mit der Umsetzung zum Update Intervall.
update_interval: |-
if (id(binary_sensor.shelly_garage_magnetschalter_switch_100_input).state) on;
update_interval: 125ms
} else {
update_interval: 6000s
}
unit_of_measurement: '%'
lambda: |-
auto r = (id(distance_sensor).state) * 50;
if (r > 100) return 100;
if (r < 0) return 0;
return r;
Nun ist der Ultraschallsensor in der Garage verbaut und funktioniert soweit.
Folgendes Script kommt zum Einsatz, falls dies jemandem nutzt:
# Ultraschallsensor HC-SR04
- platform: ultrasonic
id: distance_sensor
name: Ultrasonic_Sensor
trigger_pin: GPIO5 #Kabel blau
echo_pin: GPIO4 #Kabel weiß
update_interval: never
internal: true
timeout: 3m
accuracy_decimals: 1
unit_of_measurement: 'm'
# filters:
filters:
- lambda: return x;
- filter_out: nan
- quantile:
- calibrate_linear:
- 0.023 -> 2.04
- 2.00 -> 0.00
# Zeigt im Dashboard den Öffnungsgrads in % vom Garagentor
- platform: template
id: level
name: Status_Garagentor
update_interval: never
unit_of_measurement: '%'
accuracy_decimals: 0
lambda: |-
auto r = (id(distance_sensor).state) * 50;
if (r > 99.5) return 100;
if (r < 0.00) return 0;
return r;
# Binary Sensor aus Homeassistant. Hier werden beide Endschalter des Tores zu einem Sensor zusammengefasst.
binary_sensor:
- platform: homeassistant
name: "Schalter Garage"
id: schaltergarage
entity_id: binary_sensor.endschalter_garage
internal: true
# Wechselt das update_interval auf 125ms, wenn beide Endschalter in der Garage auf "on" sind, also nicht betätigt!
interval:
- id: dynamic_update_interval_fast
interval: 125ms
then:
- if:
condition:
- binary_sensor.is_on: schaltergarage
then:
- component.update: level
- delay: 120ms
- component.update: distance_sensor
- id: dynamic_update_interval_slow
interval: 900s
then:
- if:
condition:
- binary_sensor.is_off: schaltergarage
then:
- component.update: level
- delay: 300ms
- component.update: distance_sensor
Den Öffnungsstatus lasse ich in % mittels Gauge im Dashboard anzeigen.
Dies läuft nicht so smooth wie ich erhofft habe, zeigt mir aber an,
wie weit das Tor geffnet oder geschlossen ist und auch wenn es in einer Zwischenstellung steht.