FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kharim am 12 Oktober 2016, 07:57:02

Titel: "eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: Kharim am 12 Oktober 2016, 07:57:02
Hallo Zusammen,

warscheinlich stehe ich mal wieder voll auf dem Schlauch  :-\
Ich weiß gar nicht so recht, wie ich mein "Problem" beschreiben soll.

Ich möchte einen Prozess erstellen, der alle paar Sekunden einen Befehl sendet, selbst aber abbrechbar ist.

Es handelt sich hierbei um einen Dimmer.
Mein aktueller Entwurf sieht wie folgt aus (Inhalt einer "Wecker"-at):
for(my $i=1; $i < 101; $i++)
{
my $wait = $i * 6;
fhem("sleep $wait; set LichtweckerDimmer dim $i");
}
fhem("sleep 610; set LichtweckerDimmer dim 100");
fhem("sleep 720; set LichtweckerDimmer off");
}

Damit werden zum Ausführungszeitpunkt 101 Dimmbefehle generiert, die dann aber eben nicht mehr unterbrechbar sind.
Spontan hätte ich an ein fhem("sleep"); fhem("set ...") usw gedacht....das unterbricht aber bekannter Weise ja dann das gesamte FHEM.

Ich suche nun also eine Möglichkeit ein "Objekt" (at oder was auch immer) zu erstellen, was wirklich alle x Sekunden einen Befehl abgibt und selbst unterbrechbar ist.
(Ich will den Dimmer sozusagen zu einem beliebigen Zeitpunkt unterbrechen können.)


"Blöde Idee", gerade beim Schreiben gekommen:
Mit der "Wecker"-at eine weitere at starten die sich alle x Sekunden wiederholt und den Dimmer hochdreht?
Diese könnte man beliebig unterbrechen.....

Vielleicht habt ihr ja noch eine bessere Idee?

Grüße,
Kharim
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: CoolTux am 12 Oktober 2016, 08:45:26
Vielleicht hift Dir die Aussage das ein FHEM sleep nicht blockierend arbeitet


fhem ("sleep 60; set DEVICE on");


blockiert also nicht für 60s FHEM. Schau Dir mal sleep in der FHEM Doku an, den kann man auch noch einen weiteren Parameter mitgeben über diesen man dann das sleep auch abbrechen kann.
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: Thyraz am 12 Oktober 2016, 08:55:35
Genau, und sleep + Befehl arbeiten intern wohl sehr ähnlich als eine Lösung mit at hat neulich irgendjemand (Rudi?) in einem anderen Thread geschrieben.
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: marvin78 am 12 Oktober 2016, 08:58:46
Das ist ihm wohl bewusst (und es steht ja auch klar in der Doku). Es geht ihm ums unterbrechen. Da könnte ihm der 2. Parameter helfen, ich würde es mit einem sich wiederholenden at machen.
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: justme1968 am 12 Oktober 2016, 09:17:01
schau dir mal die version aus diesem thread hier an: https://forum.fhem.de/index.php/topic,51906.msg436451.html#msg436451 (https://forum.fhem.de/index.php/topic,51906.msg436451.html#msg436451).

du musst deine version so umbauen das nicht alle sleep in einer schleife erzeugt werden sondern häppchenweise bei jedem aufruf nur der nächste noch eingeplant wird.

wenn du dann noch den optionalen zweiten parameter verwendest den sleep hat kannst du das ganze mit cancel wieder abbrechen.

gruss
  andre
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: Ellert am 12 Oktober 2016, 09:31:09
Mit DOIF geht das natürlich auch, als Rohentwurf:

([DimmerTrigger] eq "up") (set LichtweckerDimmer dim {([LichtweckerDimmer:dim] +1)})
DOELSEIF ([DimmerTrigger] eq "stop")

Attribute
repeatcmd 6
repeatsame 100
Titel: Antw:"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem
Beitrag von: Kharim am 12 Oktober 2016, 20:01:04
Ich danke euch für die Rückmeldungen.
Ich werde beide Wege mal ausprobieren - die sich wiederholende App und die Timer Funktion...