Linearantrieb steuern?

Hallo in die Runde,

ich würde gern einen Linearantrieb über das relayboard steuern. Wichtig hierbei - der Antrieb sollte durch nur einen “Touchscreendruck” kurz ausfahren und automatisch wieder einfahren. Ist das über ein relay möglich?
Ich habe keine Ahnung vom Programmieren. Über Eure Hilfe würde ich mich freuen.
Danke

Hallo Überflieger.
Dafür würdest du 2 Relais benötigen.

Schau hier:

Hey Mikel,
vielen Dank! Wenn ich das korrekt verstehe muss ich so immer zwei Relays schalten? Oder kann man das irgendwie schick programmieren, so dass nur ein Tastendruck genügt?

Ich habe jetzt einen ganz ähnlichen Weg mit einem Elektronikprofi besprochen. Ich nehme hierzu ein Zeitrelais mit zwei Wechsler (https://www.amazon.de/dp/B08ZJ1CLLZ?psc=1&ref=ppx_yo2ov_dt_b_product_details).
Das benötigt allerdings auch ein Steuersignal. Könnte ich über einen einfachen Taster machen. Würde es aber gern über das Van-Pi Display steuern. Kann ich die VAN-Pi Schalter irgendwie in “Taster” umprogrammieren / umwandeln? So, dass sie nur einen kurzen Impuls senden?

Vielen Dank

Hey,

du meinst die Relays, oder? Das ist machbar.
Kurze Erklärung:

Es gibt ja im Webinterface unter Config > Switches > Switch Scheduler die “Auto turn off” Funktion. Dort kannst du ein Relay (oder Wifi-Relay oder Dimmer) auswählen, welches dann nach dem Anschalten nach einer bestimmten Zeit Ausgeschaltet wird. Das ist zum Beispiel für Pumpen gedacht, dass die automatisch abgeschaltet werden, falls man das mal vergisst. Allerdings kann man nur Minuten einstellen und auch nur in 5min Schritten.

Stellt man dort etwas ein, wird die Zahl (Minuten), die man mit dem Slider einstellt, in eine Variable geschrieben, z.B. für Relay 1 heißt die variable “oneautooff”).
Im Backend im Flow “Relay Controller” gibt es bei den Switches jeweils eine “auto off” Function Node. Dort wird überprüft ob die entsprechende Variable einen Wert enthält, der größer als 0 ist. Ist das der Fall, wird eine Verzögerung gestartet, die die angegebene Zahl abwartet und dann das Relay ausschaltet. Für die Verzögerung werden Millisekunden benötigt, deswegen wird in der “auto off” die Zahl mit 60.000 multipliziert (60.000 Millisekunden = 1 Minute).

Willst du jetzt diese Verzögerung verkürzen, um nur einen Impuls zu haben, musst du also in die Variable einen Wert schreiben, der multipliziert mit 60.000 die abzuwartende Verzögerung in Millisekunden angibt.

Beispiel:

  • 0,001666*60000 = 99,96 Millisekunden
  • 0,01666*60000 = 999,6 Millisekunden (ca. 1 Sekunde)

Um das umzusetzen brauchst du nur zwei neue Nodes anlegen. Zuerst erstellst du dir einen neuen Flow. Dann brauchst du eine Inject Node, diese stellst du so ein, dass das Häkchen bei “Einmal injizieren nach…” gesetzt ist, damit wird sichergestelt dass dieser Inject bei Systemneustart ausgeführt wird. Dann stellst du die WIederholung auf ein Intervall von z.B. einer Minute. Hinter diese Inject Node erstellst du dir eine Function Node, die du mit der Inject Node verbindest. Dort kommt eine einzige Zeile rein, und zwar

global.set(“oneoffauto”, 0.001666)

Dadurch wird jetzt also jede Minute der Werte der Variable “oneoffauto” auf 0,001666 gestellt (falls man das mal überschreiben sollte über den Switch Scheduler). Jedes mal wenn du jetzt das Relay 1 anschaltest, wird es nach 100 Millisekunden wieder ausgeschaltet.

Warum das Ganze in einem extra Flow und nicht hardgecodet? Jedes Mal wenn du ein Update durchführst werden alle deine Flows komplett überschrieben (Stand jetzt), also auch das, was du selber verändert oder hinzugefügt hast. Wenn du aber einen extra Flow hast reicht es nur diesen vor einem Update zu exportieren und nach dem Update wieder zu importieren. Alles was du in den vorhandenen Flows anpasst müsstest du manuell nochmal machen.