AVR NET IO classdef modifizieren als Tastersimulation, kurzen stromimpuls

Begonnen von tgermer, 23 Dezember 2015, 14:42:20

Vorheriges Thema - Nächstes Thema

tgermer

Hallo,

ich habe FHEM auf einem RasPi laufen und das Tutorial avr net io + Erweiterungsplatine erfolgreich umgesetzt. Das heißt in der Standart Konfiguration mit der relais.classdef wie folgt kann ich alle 8 Relais, auch vom Handy aus, wunderbar ein und auschalten.

# Uebergabeparameter HEX Adresse Port
params RelaisPort
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten
set on cmd {"io set ddr 2 ff\n\000io set port 2 %RelaisPort %RelaisPort\n"}
set on expect "OK\n"
set on postproc {s/([OK\n|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
set off cmd {"io set ddr 2 ff\n\000io set port 2 00 %RelaisPort\n"}
set off expect "OK\n"
set off postproc {s/([OK\n|;]*)/success/; "$_" eq "success" ? "ok" : "error";}


Mein Ziel ist es aber nun Stromstossschalter (bzw. Eltakos) vom Handy zu schalten. Dafür brauche ich einen kurzen Impuls auf einem Relais (z.b. 2 Sekunden). Ich habe also versucht die relais.classdef wie folgt zu modifizieren mit dem Ziel das das Relais nach der wait zeit automatisch wieder abgeschaltet wird.

Nur Zeile 4 von oben ist modifiziert

set on cmd {"io set ddr 2 ff\n\000io set port 2 %RelaisPort %RelaisPort\nwait 50\nio set port 2 00 %RelaisPort\n"}


Ich habe auch verschiedene waits wie wait 5, wait 5000 ausprobiert aber der Effekt war immer das Relais geht nur ganz kurz an (zu kurz um einen Stromstosschalter zu schalten).
Hat jemand eine Idee wo der Fehler ist?

vielen Danke schonmal für Eure Hilfe und ich hoffe ich habe alle Informationen die wichtig sind hier mit reingeschrieben

mfg
tgermer

franky08

Mach das doch ausserhalb der classdef zB mit einem notify und einem dummy, habe bei mir zur Ansteuerung eines Stosstromrelais folgendes

Stosstromsch_dummy:on set 4_Kanal_Platine_Kanal_2 on-for-timer 0.5

Die Platine unterstützt on-for-timer, sonst
Stosstromsch_dummy:on set 4_Kanal_Platine_Kanal_2 on; sleep 1; set 4_Kanal_Platine_Kanal_2 off

Geschaltet wird über das dummy device, dass must du nur nach dem schalten wieder auf "off" zurücksetzen

VG
Frank

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

tgermer

Ja Code 2 funktioniert soweit.

Ich habe aber jetzt noch ein zweites Problem was ich eigentlich auch über die relais.classdef lösen wollte:

Ich habe auch Multifunktions-Universal-dimmschalter (Eltako EUD12D-UC) im Einsatz die ich ebenfalls über FHEM steuern möchte.

Um die zu steuern müßte ich beim drücken eines Tasters ein Relais auf 1 setzen welches solange auf 1 bleibt bis der Taster losgelassen wird, um dann nach loslassen des Tasters das Relais wieder auf 0 zu setzen. Oder einfacher:
Tastergedrückt -> Relais auf 1
Taster losgelassen -> Relais auf 0
Und das ganze am liebsten auch wieder übers Smartphone.

Gibt es da auch eine FHEM interne Methode die ich nicht gefunden habe?

mfg
tgermer