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
probiere mal ohne 'if'
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
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.
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
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!
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.
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.
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.
Das probier ich aus. Danke!
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
Unterschiedliche Bedingungen sind nicht möglich
Hallo, Dietmar!
Ist eine Erweiterung der Syntax und Funktion des WDT in dieser Richtung für Dich denkbar?
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.
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
Hallo zusammen,
Problem ziemlich sicher gelöst.
Siehe hier: http://forum.fhem.de/index.php?topic=40846.new;topicseen#new
Viele Grüße
Andreas