Probleme mit WeekdayTimer

Begonnen von Reinerlein, 06 November 2014, 21:18:33

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo zusammen,

ich versuche gerade das Modul WeekdayTimer für mich einzusetzen. Vom Grundsatz her ist das genau das Richtige für mich.
Ich habe nur zwei Probleme:
- Mein Device wird mit ganzen Zahlen (0, 1, 2, 3) geschaltet. Ganze Zahlen ohne Komma.
- Ich würde gerne einen Befehl wie "on-for-timer 100" setzen lassen.

Beim ersten Punkt wird vom Modul leider immer eine Nachkommastelle hinzugefügt. Alle Parameter werden also zu "0.0", "1.0", "2.0" oder "3.0". Damit schaltet mein Device aber nicht. Da darf keine Fließkommazahl kommen.

Beim zweiten Punkt ist das Problem, dass ein Leerzeichen zur Trennung der Definitionsanweisung führt, und somit nur der vordere Teil ankommt.

Kann ich das irgendwie umgehen, oder gibt es eine andere einfache Lösung dafür?

Danke schon mal im Voraus...

Grüße
Reinerlein

Reinerlein

Hallo zusammen,

Punkt 2 habe ich nun über das optionale Kommando gelöst:

{ fhem('set @ '.uri_unescape('%')) }


Damit kann ich den Parameter URL-Encoden:

Mo-Fr|08:00|on-for-timer%20100

setzt also das Kommando "on-for-timer 100" ab...

Grüße
Reinerlein

Reinerlein

Hallo zusammen,

auch das mit der Zahl, die er immer in ein Float-Value umwandelt, habe ich jetzt erstmal über ein Kommando gelöst:
{ fhem('set @ '.int('%')) }

Auch wenn es meiner Meinung nach dem Klasse-Modul nicht gerecht wird, löst es erstmal meine Probleme :-)

Grüße
Reinerlein

Dietmar63

Sende bitte deine ganze Definition. Dann kann ich vielleicht helfen
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Reinerlein

Hi Dietmar63,

folgendes habe ich ursprünglich definiert:

define Lueftung_Timer WeekdayTimer Lueftung Mo-Fr|16:00|2 Mo-Fr|19:30|1


In dieser Variante werden die Ganzzahlen in Kommazahlen umgewandelt, bevor sie in die Set-Anweisung für das Device geschrieben werden (das steht so auch explizit im Code von 98_Heating_Control.pm, in den Zeilen 496 und 500).
Auch die Readings für "nextValue" und "state" enthalten dann die Kommazahl (z.B. "1.0").

Mit meiner letzten Anmerkung habe ich dann ein Kommando definiert:

define Lueftung_Timer WeekdayTimer Lueftung Mo-Fr|16:00|2 Mo-Fr|19:30|1 { fhem('set @ '.int('%')) }

Damit wird aus der Kommazahl wieder eine Ganzzahl gemacht, die dann per Set an das Device gesetzt wird.

Bezogen auf Punkt 1 (eine andere Situation) habe ich einen Homematic-Aktor für eine bestimmte Zeit anschalten wollen, und muss dafür ein Leerzeichen im Set-Parameter unterbringen.
Hier war die ursprüngliche Definitionsidee wie folgt:

define Poolpumpe_Timer WeekdayTimer Poolpumpe Mo-So|08:00|on-for-timer 1800

Da wird dann die 1800 abgeschnitten, da es wegen des Leerzeichens als nächstes Profil interpretiert wird.

Hier hatte auch ein Kommando helfen können:

define Poolpumpe_Timer WeekdayTimer Poolpumpe Mo-So|08:00|on-for-timer%201800 { fhem('set @ '.uri_unescape('%')) }


Grüße
Reinerlein

Dietmar63

#5
zu1)
Vielleicht baue ich dieses Feature  demnächst aus - zumindest wenn Geräte geschaltet werden sollen, bei denen es sich nicht um eine Heizung handelt.

Die Motivation bestand darin an eine Heizungsanlage (FHT FS20) nur dann  Befehle zu senden wenn es wirklich notwendig ist. Jetzt wo alles fertig ist, bin ich der Überzeugung, dass das überflüssig ist. Eine Heizung wird vielleicht 10 mal am Tag verstellt. Für diese wenigen Funk-Pakete besteht nur dann ein Problem, wenn man mehr als 10 FHT betreiben gleichzeitig will. Dann ist FS20 nicht das richtige System.

zu 2)
define Poolpumpe_Timer WeekdayTimer Poolpumpe Mo-So|08:00|1800      set @ on-for-timer  %

Ich werde aber erst nach Auslieferung der Version 5.6 dazu kommen.
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

Zu 1)
Ich habe es schon geschafft. Gebe es heute im Tagesverlauf frei.
Dann könnt ihr euren Code wieder vereinfachen.
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

habe WD und HC eingecheckt.
jetzt funktioniert:
define Lueftung_Timer WeekdayTimer Lueftung Mo-Fr|16:00|2 Mo-Fr|19:30|1
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Puschel74

Hallo,

vergiss nicht
define Poolpumpe_Timer WeekdayTimer Poolpumpe Mo-So|08:00|1800      set @ on-for-timer  %
das klappt bei meinen Ladestationen auch
Ladestation_.* Mo|11:00|Laden Do|13:00|Laden set $NAME $EVENT
wunderbar - dank dir  ;)
Und @ und % sind eigentlich deprecated und sollten so irgendwann nichtmehr so einfach klappen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Dietmar63

Und @ und % sind...

Werden im Modul nicht mehr direkt ersetzt. Die Ersetzung erfolgt über eine Funktionen aus fhem.pl. Wenn diese Funktionen umgestellt wird, werden HC und WD auch automatisch umgestellt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm