Subroutine / Perl: Schleife bis zum manuellen Ausschalten.

Begonnen von ocbraun, 22 Dezember 2020, 19:55:47

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: amenomade am 23 Dezember 2020, 20:13:10
Na dann... bleibt nur übrig, dem TE eine fertige Lösung mit 'Bordmittel' zu liefern ;)
Jein.

Der TE wollte Hilfe zur Selbsthilfe, oder ;) ?

Das war die vorrangige Aufgabe des Forums, oder habe ich die Doku missverstanden :) ?

(Sonst fange ich noch an, Farbangaben in Hashes umzuwandeln und so ::) ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

amenomade

Zitat von: Beta-User am 23 Dezember 2020, 20:18:06
Jein.

Der TE wollte Hilfe zur Selbsthilfe, oder ;) ?

Das war die vorrangige Aufgabe des Forums, oder habe ich die Doku missverstanden :) ?

(Sonst fange ich noch an, Farbangaben in Hashes umzuwandeln und so ::) ).

Ja, Hilfe zur Selbshilfe hab ich schon geliefert. Aber es ist schwierig für diesen Anwendungsfall es umzusetzen. Die DOIF Lösung finde ich besser (aber ok, das ist meine persönliche Meinung - und somit bin ich weg von diesem Thread :) zumindest was DOIF Vorteile/Nachteile angeht)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

Na ja, "eigentlich" sollte man dann bei der InternalTimer-Lösung auch noch eventuell vorhandene "alte Timer" löschen, wenn sich rekursive Aufrufe und ein "getriggerter" Aufruf in die Quere kommen könnten.
Aber ansonsten muss man halt einfach nur verstanden haben, wie InternalTimer "tickt"; und dazu muss man eigentlich nur mal in den Quelltext in fhem.pl schauen und da mal nach den Funktionen für sleep und cancel fahnden ;) .
(Hilft ggf. auch für das Verständnis von DOIF, btw. ;) )
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

#18
Ich würde es mit einem Einzeiler machen:

defmod di_rgb DOIF {["button:on"];;@{$_rgb}=("FF0000","00FF00","FFFF00","0000FF");;set_Exec("timer",120,'fhem_set"lamp rgb  ".$_rgb[$count%4]','ReadingsVal("button","state","") eq "on"')}

Die Farben kannst du im RGB-Array definieren, button ist dein Schalter, lamp ist deine Lampe, mehr Boardmittel braucht man dafür nicht ;)

Doku dazu mit Beispielen siehe: https://fhem.de/commandref_DE.html#DOIF_set_Exec
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF