on-for-timer funktioniert nicht

Begonnen von simonela80, 29 April 2015, 21:20:44

Vorheriges Thema - Nächstes Thema

simonela80

Hallo an alle,

habe wieder mal ein Problem.
Ich möchte gerne ein Magnetventil über ein GPIO schalten. Das Schalten an sich funktioniert mit einem einfachen Dummy.
Nun würde ich das ganze gerne mit einem Timer versehen, leider scheitere ich daran.

hoffe ihr könnt mir helfen.

hier mal der Code den ich geschrieben habe

#################
#  Bewässerung  #
#################
define GPIO18 dummy
attr GPIO18 room Bewässerung
attr GPIO18 setList on off
define off_GPIO18 notify GPIO18:off {system("sudo gpio export 18 in &")}
define on_GPIO18 notify GPIO18:on {system("sudo gpio export 18 out &")}

define Timer1_GPIO18 at *00:00:00 trigger on_GPIO18
attr Timer1_GPIO18 room Bewässerung

define GPIO18On_for10sec notify on_GPIO18 { \
      fhem ("set GPIO18 on-for-timer 5") ;; \
      fhem ("set on_GPIO18 at +00:00:05")}



vielen Dank
Peter

justme1968

schau dir mal readingsProxy statt dem dummy an. wenn du on und off einbaust bekommst du on-for-timer automatisch dazu.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

simonela80

Hallo Andre,

danke für die Antwort, aber wie meinst du das? Da habe ich mich noch nicht versucht.
Kannst du mir da mal weiterhelfen?

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Zrrronggg!

Oder sag mal genauer was du mit einem Timer meinst.

Zitatdefine GPIO18On_for10sec notify on_GPIO18

Also soll das Teil nach dem Einschalten nach 10 Sekunden wieder ausgehen?

Wie wärs denn schlicht mit sowas wie:

define GPIO18On_for10sec notify GPIO18:on defmod meinTimer at +00:00:10 set GPIO18 off

Schaltet GPIO18 10 Sekunden nach dem letzten Einschalten auf off.


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

simonela80

Hallo,

Hintergrund von der ganzen Sache ist, dass ich ein Magnetventil damit schalten will.
Dabei will ich die Anfangszeiten ganz einfach über die fhem Oberfläche auswählen. Die Dauer kann ich dann in der cfg machen, die wird immer gleich bleiben.

Jetzt bin ich schon so durcheinander dass gar nichts mehr funktioniert, davor hat wenigstens der GPIO eingeschaltet aber nicht mehr aus nach der definierten Zeit.

Hoffe dass mir jemand helfen kann

lg
Peter

Zrrronggg!

#6
Das Ausschalten ist keine Problem, siehe mein vorheriger Post. Das Auswählen der Anfangszeiten über die Weboberfläche ist schwieriger.

Aber vielleicht tauch nur, weil ich vielleicht nicht genau verstehe, was du damit meinst.

Wenn du einfach irgendwann auf "jetzt an" drücken willst und dann soll es eben 30 Minuten später ausgehen, dann nimmst du deinen eingangspost:

define GPIO18 dummy
attr GPIO18 room Bewässerung
attr GPIO18 webCmd on:off
define off_GPIO18 notify GPIO18:off {system("sudo gpio export 18 in &")}
define on_GPIO18 notify GPIO18:on {system("sudo gpio export 18 out &")}



und meine Zeile (hier mal auf 30 min geändert)

define GPIO18On_for30min notify GPIO18:on defmod meinTimer at +00:30:00 set GPIO18 off

und bis mehr oder weniger fertig. Wenn du GPIO18 auf on schaltest geht es an und 30 min später wieder aus.

Beachte, dass "defmod" eine realtiv neues Kommando ist und nur funktioniert, wenn du in den letzten 2 Wochen oder so ein Update gemacht hast.

Zu {system("sudo gpio export 18 in &")} und so kann ich nix sagen. Ich gehe einfach davon aus, dass das richtig ist.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

simonela80

Hallo,

nein leider nicht ganz so.
Ich will die Zeit wann es selbständig einschaltet definieren und nach einer bestimmten Zeit soll das Relais wieder ausschalten.

Habe mich mal an diesem Code rangemacht.

define Bewaesserung_Minuten dummy
attr Bewaesserung_Minuten setList state
attr Bewaesserung_Minuten webCmd 90:80:70:60:50:40:30:20:10:0

define Start_Bewässerung at *07:05 {my $hm =Value("Bewaesserung_Minuten")*60;;fhem("set GPIO18 on-for-timer $hm")}


aber der funktioniert leider auch nicht, das Relais wird eingeschaltet aber schaltet nicht wieder aus nach der abgelaufenen Zeit.


Damian

Zitat von: simonela80 am 01 Mai 2015, 08:30:18
Hallo,

nein leider nicht ganz so.
Ich will die Zeit wann es selbständig einschaltet definieren und nach einer bestimmten Zeit soll das Relais wieder ausschalten.

Habe mich mal an diesem Code rangemacht.

define Bewaesserung_Minuten dummy
attr Bewaesserung_Minuten setList state
attr Bewaesserung_Minuten webCmd 90:80:70:60:50:40:30:20:10:0

define Start_Bewässerung at *07:05 {my $hm =Value("Bewaesserung_Minuten")*60;;fhem("set GPIO18 on-for-timer $hm")}


aber der funktioniert leider auch nicht, das Relais wird eingeschaltet aber schaltet nicht wieder aus nach der abgelaufenen Zeit.
Dann probiere mal:

define Zeit dummy

define di_gpio18 DOIF ([[Zeit]]) (set GPIO18 on) DOELSEIF (GPIO18 eq "on")(set GPIO18 off)
attr di_gpio18 wait 0:600


Mit

set Zeit 12:00

kannst du bestimmen, wann eingeschaltet werden soll, hier um 12:00 Uhr, ausgeschaltet wird hier 600 Sekunden später.

Wenn du auch die Dauer über WEB einstellbar haben willst, dann kannst du es auch so definieren:

define Zeit dummy
define Dauer dummy
set Zeit 12:00
set Dauer 600

define di_gpio18 DOIF ([[Zeit]]) (set GPIO18 on) DOELSEIF ([([Zeit]+[Dauer])]) (set GPIO18 off)



Suche dir was aus ;)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF