RandomTimer - neues Modul

Begonnen von Dietmar63, 28 Juli 2013, 15:52:40

Vorheriges Thema - Nächstes Thema

Olly

Hallo,

ich würde gerne das Modul RandomTimer nutzen um Funksteckdosen zu schalten, dabei möchte ich aber für Wochenenden eine andere Abschaltzeit verwenden.
Wie muss ich denn die Abfrage if($we) mit dem RandomTimer-define verknüpfen, damit das klappt?

Für einen Stups in die richtige Richtung wäre ich dankbar

Gruß

     Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

Dietmar63

fhem.cfg


define ZufallsTimerTisch      RandomTimer  *{sunset_abs()} StehlampeTisch  {abschaltZeit($we)} 480


99_utils

sub abschaltZeit ($) {
  my ($we) = @_;

  if ($we) {
    return "22:00:00";
  } else {
    return "23:00:00";
  }
}


Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Olly

Hallo Dietmar,

vielen Dank für die schnelle Antwort.
Werde das mal in meine Config einfügen und dann dieses Wochenende ausprobieren.

Gruß

    Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Olly

Ups, fast vergessen.

Ja, funktioniert prima. Werde jetzt mal ein paar Geräte "randomisieren".
Und dann kann der Urlaub kommen ;-)

nochmal Danke und Gruß

    Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

Matthias

Nur zur Info: Es gibt auch ein HOL-Modul in Contrib (http://sourceforge.net/p/fhem/code/3706/tree/trunk/fhem/contrib/98_HOL.pm), das Geräte zufällig schaltet.

Viele Grüße,
Matthias

klaus.schauer

Die Option switchmode scheint bei mir nicht zu funktionieren. Mit

attr random_timer_test switchmode 500/500

wird trotzdem bei Internals

SIGMAOFF 800
SIGMAON 200
SWITCHMODE 800/200

angezeigt.

Nachtrag: Die Werte scheinen erst nach Aktivierung der Routine gesetzt zu werden. Jedenfalls sind sie jetzt bei einer Routine in Ordnung, die augenblicklich aktiv ist.

Dietmar63

ZitatNachtrag: Die Werte scheinen erst nach Aktivierung der Routine gesetzt zu werden. Jedenfalls sind sie jetzt bei einer Routine in Ordnung, die augenblicklich aktiv ist.
so ist es.
Immer erst dann, wenn die Entscheidung an/aus getroffen werden muss, wird das Attribut gelesen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

RandomTimer um disable erweitert - eingecheckt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Schnup

Hallo,
ich versuche den RandomTimer einzusetzen, habe aber ein paar Probleme mit der englischen Beschreibung.

1. Unter "Deskrition" steht: "Every (timeToSwitch seconds +-10%) it trys to switch device on/off."
Das habe ich für mich so übersetzt: "Die Dauer wird mit einer zufälligen Abweichung von +-10% eingehalten.
Wenn ich die Funktion richtig verstehe variiert doch das Attribut "switchmode" mit seinen beiden Parametern die EIN/AUS-Schaltdauer.
Was bedeutet die Angabe +-10% in diesem Zusammenhang?

2. Attribut "disableCond"
"In the disableCond-Attibute a condition can be specified, that must be true to have the Randomtimer work.
The Condition must be put into round brackets. The best way is to define a function in 99_utils."
Das klingt für mich widersprüchlich, wenn ich eine DisableCondition auf TRUE setze, um den Timer zu aktivieren.
Kann ich das Attribut nicht auch direkt setzen, z.B.: "attr disableCond true"?

Schnup

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Zitat1. Unter "Deskrition" steht: "Every (timeToSwitch seconds +-10%) it trys to switch device on/off."
Das habe ich für mich so übersetzt: "Die Dauer wird mit einer zufälligen Abweichung von +-10% eingehalten.
Wenn ich die Funktion richtig verstehe variiert doch das Attribut "switchmode" mit seinen beiden Parametern die EIN/AUS-Schaltdauer.
Was bedeutet die Angabe +-10% in diesem Zusammenhang?

timeToSwitch definiert die Zeit zwischen zwei Schaltvorgängen. Sie wird mit einer zufälligen Abweichung von 10% eingehalten.

switchmode verändert die Wahrscheinlichkeit mit der ein- bzw. ausgeschaltet wird. 800/200 bedeutet, dass mit 80%er Wahrscheinlichkeit eingeschaltet wird, wenn das Gerät ausgeschaltet ist, und dass mit 20%er Wahrscheinlichkeit ausgeschaltet wird, wenn das Gerät eingeschaltet ist. Dahinter steckt die Überlegung, dass ich nur selten auschalten will. Das Verhalten kann mit switchmode angepasst werden.

Zitat2. Attribut "disableCond"
"In the disableCond-Attibute a condition can be specified, that must be true to have the Randomtimer work.
The Condition must be put into round brackets. The best way is to define a function in 99_utils."
Das klingt für mich widersprüchlich, wenn ich eine DisableCondition auf TRUE setze, um den Timer zu aktivieren.
Kann ich das Attribut nicht auch direkt setzen, z.B.: "attr disableCond true"?

Da ist in der Beschreibung wohl ein kleiner Fehler unterlaufen. Sollte wohl heißen: ... must be true to set the Randomtimer out of work. ...

disableCond muss ein gültiger Perlausdruck in () folgen. Wenn er zu true evaluiert, ist der Timer abgeschaltet.
http://www.perlmonks.org/?node=what%20is%20true%20and%20false%20in%20Perl%3F


attr disableCond ("true")
attr disableCond (0)
attr disableCond (1)

sollte gehen
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Harald

#27
Hallo zusammen,

gibt es ein Wiki oder sonst etwas, wo ich genauere Infos über das Modul und dessen Verwendung (möglichst in Deutsch) finden kann?
Ich habe z.B. immer noch nicht verstanden, was "timeToSwitch" genau bewirkt. Außerdem verstehe ich die Beschreibung so, dass man ein "Dummy" verwenden soll. Hier steht aber in einem Beitrag, dass kein Dummy erforderlich ist.
ZitatDie Definition enthält neuerdings kein dummy mehr.
Man muss, wenn man den RT über dummy an-/abschalten will, eine disableCondition per attr setzen.

Viele Grüße und alles Gute für 2014

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Dietmar63

Es gibt kein wiki und keine Doku auf Deutsch.

timeToSwitch definiert die Zeit die wiederholt vergeht, bis eine neue Ein-/Ausschaltung   durchgeführt wird. Wenn du 900 angibst, wird alle 15 Minuten (+-10%) geprüft, ob geschaltet werden muss.

RT hat eine längere Geschichte hinter sich. Ursprüglich konnte man in der Definition ein dummy angeben, das auf ja/nein geprüft wurde. Dieses Vorgehen ist aber nicht so flexibel wie die Definition einer Funktion, die true/false  liefern muss. In der Funktion kannst du dann alles mögliche prüfen.

Probier einfach mal verschiedene timeToSwitch aus und setze für die RT das verbose Attribut auf 5, dann bekommst du im fhem-Log debug Informationen, die dir  die Funktionsweise näherbringen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Schnup

Hallo Dietmar,

herzlichen Dank für Deine Antwort und alles Gute für 2014.

Den Zusammenhang zwischen der "zufälligen Abweichung" bei timeToSwitch und der "Wahrscheinlichkeit" bei switchmode habe ich allerdings noch nicht richtig verstanden.

Um das Licht im Treppenraum bei Abwesenheit zu steuern setze ich: timeToSwitch 20 Sek. und switchmode 100/800
Damit bleibt das Licht immer nur kurz eingeschaltet und sollte über einen wesentlich größeren Zeitraum ausgeschaltet bleiben.

Bisher habe das Attribut switchmode 100/800  so ausgelegt:
-> 100  bestimmt die zufällige Abweichung der Einschaltzeit, variiert also timeToSwitch um 10%
-> 800  bestimmt die zufällige Abweichung der Auszeit, variiert also timeToSwitch um 80%


Schnup