Weekdaytimer mit Bedingung if

Begonnen von Sonic, 15 Februar 2015, 21:14:34

Vorheriges Thema - Nächstes Thema

Sonic

Hallo Forum,
ich bin Anfänger und ich habe eine vermutlich einfache Frage, bekomme es aber einfach nicht hin.

Ich möchte den Weekdaytimer mit der Bedingung "Winter" in Betrieb nehmen

define WT_Zentralheizung WeekdayTimer WZ_Zentralheizung 12345|06:00|on 12345|08:30|off
if (Value("Jahreszeit") eq "Winter")

----------------------------------------------------

leider funktioniert da so nicht.

Ich wäre sehr dankbar wenn mir jemand helfen könnte

gruss
Sonic

Starkstrombastler

IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Sonic

Hallo und danke für die Antwort.
Das habe ich probiert und dann kommt:

Unknown command (Value("Jahreszeit"), try help

Hast du noch eine Idee ?

gruss
SONIC

Starkstrombastler

Unter der Voraussetzung dass ein Device "Jahreszeit" definiert ist, sollte
define WT WeekdayTimer WZ_Zentralheizung 12345|06:00|on 12345|08:30|off (Value("Jahreszeit") eq "Winter")
funktionieren.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Sonic

Vielen Dank an Starkstrombastler,
nun funktioniert alles.
Lösung war: Ich hatte nach dem define gleich das Device anstelle des WeekdayTimer stehen.

Nun funktioniert alles wie es soll.
Nochmal danke Starkstrombastler

 

bgewehr

Ist es mit dieser Methode auch möglich, die einzelne Regel mit einer Bedingung zu belegen? Oder muss ich da anstelle der einfache Werte ein {fhem if(a=b); set z=x} ausführen und in jedem profile den actionstring komplett selbst formulieren?

Ich möchte den rasensprenger nur anmachen, wenn es nicht regnet aber auf jeden Fall aus, auch wenn es inzwischen - nach dem Einschalten - begonnen hat zu regnen!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Dietmar63

Zitat von: bgewehr am 23 Juli 2015, 00:43:43
Ist es mit dieser Methode auch möglich, die einzelne Regel mit einer Bedingung zu belegen? Oder muss ich da anstelle der einfache Werte ein {fhem if(a=b); set z=x} ausführen und in jedem profile den actionstring komplett selbst formulieren?

Ich möchte den rasensprenger nur anmachen, wenn es nicht regnet aber auf jeden Fall aus, auch wenn es inzwischen - nach dem Einschalten - begonnen hat zu regnen!

Ehrlich, genau verstanden habe ich nicht wo das Problem liegt.
Du bekommst in @,% das device und den Parameter übergeben. Die kannst du an eine Perl Funktion in 99_Utils übergeben,und dort machen was du willst.

Wenn du allerdings {} eine Perl Funktion aufrufst must du das Gerät auch selbst schalten.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

bgewehr

Ich arbeite daran, im SmartVISU Frontend 'UZSU' eine Eingabe von Bedingungen für wdt Profile zu ermöglichen. Dabei soll man Device, komparator und Vergleichswert in einfache Textfelder im Frontend eingeben können. Um daraus möglichst einfach den entspr. WDT abzuleiten, suche ich nach einer in das Profile eingebetteten Möglichkeit für die Bedingung und hatte den Commandstring im Auge als Möglichkeit, um den Befehl und die Bedingung direkt dort unterzubringen.
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Dietmar63

müßte dann so aussehen:
{fhem("set @ desired-temp %") if(a==b)}
mit verbose 5 kannst du dann prüfen welcher Code erzeugt und an fhem geschickt wird.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

bgewehr

#9
Das probier ich aus. Danke!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Muk.s

Hallo Dietmar,

um mal das obige Beispiel von Bgewehr aufzugreifen:

Folgender WDT würde die Bewaesserung nur ein- bzw ausschalten wenn es zu den gesetzten Zeiten nicht regnet (Regen==0)

define wdt_dm.bewaesserung WeekdayTimer dm.bewaesserung en MO,TU,WE,TH,FR,SA,SU|17:00|on
MO,TU,WE,TH,FR,SA,SU|17:30|off { fhem("set @ %") if( Value("Regen") eq"0") }

Sollte es also um 17:00 nicht regnen, würde sich die Bewaesserung wie gewünscht eingeschaltet. Sollte es nun aber danach und über den Ausschaltzeitpunkt 17:30 regnen, würde sich die Bewaesserung aber nicht mehr ausschalten.

Damit die Bewasserung nur eingeschaltet wird wenn es nicht regnet und auf jeden Fall ausgeschaltet wird wenn sie denn vorher eingeschaltet wurde, müßte der WDT eigentlich in etwa so definiert werden:

define wdt_dm.bewaesserung WeekdayTimer dm.bewaesserung en MO,TU,WE,TH,FR,SA,SU|17:00|on { fhem("set @ %") if( Value("Regen") eq"0") }
MO,TU,WE,TH,FR,SA,SU|17:30|off { fhem("set @ %") if( Value("dm.bewasserung") eq"on") }
 
Man müßte also die einzelnen Regeln mit unterschiedlichen Bedingungen verbinden können. Dies ist aber mit dem derzeitigen WeekdayTimer nicht möglich, oder sehe ich das falsch?

Hintergrund der Fragestellung ist die Diskussion im "widgets, zeitschalturen und baukästen" thread - http://forum.fhem.de/index.php/topic,32660.msg316178.html#msg316178 - über die Erweiterung des SmartVisu UZSU widget für fronthem, das ja auf FHEM Seite den WeekdayTimer nutzt.

Gruss
Michael





Dietmar63

Unterschiedliche Bedingungen sind nicht möglich
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

bgewehr

Hallo, Dietmar!
Ist eine Erweiterung der Syntax und Funktion des WDT in dieser Richtung für Dich denkbar?
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

Dietmar63

Eher nicht!

Umfangreiche Bedingungen sind unübersichtlich und Fehleranfällig.
Wenn du dir Gedanken machst, wirst du sehen, dass es möglich ist die Bedingungen auf wenige WDT zu verteilen.

Bei mir reichen aktuell so ca. 10.

Mit Tricks könnte ich sie zusammen dampfen. Dann wäre aber wie gesagt mit Fehlern zu rechnen.

Wenn du hier deine komplette Vorstellung veröffentlichst kann ich dir einen Vorschlag machen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

schoizi

Hallo zusammen,

ich möchte mich mal mit meiner Detail-Frage hier anhängen.

Es geht um folgendes:
- ich möchte ein Rollo zeitgesteuert öffnen lassen
- abhängig vom Wochentag zu unterschiedlichen Zeiten

Bisher hierher klappt alles. Nun soll noch folgende Bedingung realisiert werden:
- wenn ich zu Hause bin (Über Dummy "Anwesenheit" geschaltet), soll das Rollo komplett öffnen
- wenn ich nicht zu Hause bin, soll es nur zu 60% öffnen

Ich bin nun soweit gekommen:
define Esszimmer_Rollo_hoch WeekdayTimer CUL_HM_HM_LC_Bl1PBU_FM_3B81DE 12345|{sunrise(+900,"07:45","08:30")}|100% (Value("Anwesenheit") eq "on")

Aber ich weiß nicht, wie ich sozusagen die "ELSE" Bedingung einbauen soll.
Ich habe commandref, Anfängeranleitungen, Wiki, Google, usw. schon mehr als 2 Tage bemüht und finde es nicht.
Ich hoffe bitte auf einen konkreten Code-Tipp!

Vielen Dank vorab.
Viele Grüße
Andreas