"eigenständiger Prozess/Vorgang" - das übliche Sleep Problem

Begonnen von Kharim, 12 Oktober 2016, 07:57:02

Vorheriges Thema - Nächstes Thema

Kharim

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
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thyraz

Genau, und sleep + Befehl arbeiten intern wohl sehr ähnlich als eine Lösung mit at hat neulich irgendjemand (Rudi?) in einem anderen Thread geschrieben.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

marvin78

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.

justme1968

schau dir mal die version aus diesem thread hier an: 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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Ellert

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

Kharim

Ich danke euch für die Rückmeldungen.
Ich werde beide Wege mal ausprobieren - die sich wiederholende App und die Timer Funktion...
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)