DOIF mit mehreren Bedingungen

Begonnen von rbs, 02 Dezember 2017, 21:15:30

Vorheriges Thema - Nächstes Thema

rbs

Guten Abend zusammen,
ich versuche vergeblich eine DOIF Bedingung zu erstellen, welche mehrere BEdingungen (Uhrzeit, dummy und einen Temperaturwert erfüllen muss, um dann eine Steckdose einzuschalten.
Mit dem Syntax klappt es nicht sowie ich die Bedingung mit der Aussentemperatur mit formulieren tue. Ich habe mittlweile mehrere Kombinationen auspropiert, aber immer wenn ich das reading in fhem anzeige, zeigt er mir einen error:

define timer_HeizungMorgensFROST_Start_Woche DOIF ([04:30] and [HCAutomatik] eq "timed" && ReadingsVal("Temperatur.Aussen","temperature",99) < 1 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500;;)


-> Fehler: perl error in condition: DOIF_time_once($hash,0,$wday) and InternalDoIf($hash,'HCAutomatik','STATE') eq "timed" and Temperatur.Aussen < 0 : Bareword "Temperatur" not allowed while "strict subs" in use at (eval 63266) line 1. Bareword "Aussen" not allowed while "strict subs" in use at (eval 63266) line 1.

Folgender Versuch bringt mir ebenfalls einen Fehler:
define timer_HeizungMorgensVormittagFROST_Start_Woche DOIF ([10:30] and [HCAutomatik] eq "timed" and Temperatur.Aussen < 0 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500;;)


Ich hatte mich schon mal vergeblich rumgeplagt, um in die Bedingung zusätzliche weekday Bedingungen mit einzufügen, damit ich die Schaltung der Steckdose zusätzlich an einen Wochentag knüpfen kann. Könnt Ihr mir da ein wenig unter die Arme greifen?

Frank_Huber

and [Temperatur.Aussen:temperature] < 0

und btw:
(set Steckdose.Pufferspeicher_Sw on-for-timer 1500)
wozu sollten die Semikolon dienen?

rbs

hmm,
hab's jetzt so versucht:

([04:30] and [HCAutomatik] eq "timed" and [Temperatur.Aussen:temperature] < 0 ) (set Steckdose.Pufferspeicher_Sw on-for-timer 1500)


Die Meldung in der Readings Anzeige sieht wie folgt aus:
perl error in condition: DOIF_time_once($hash,0,$wday) and InternalDoIf($hash,'HCAutomatik','STATE') eq "timed" and Temperatur.Aussen < 0 : Bareword "Temperatur" not allowed while "strict subs" in use at (eval 63266) line 1. Bareword "Aussen" not allowed while "strict subs" in use at (eval 63266) line 1.

Ellert

Die Definition ist o.k.

shutdown restart nach Update vergessen
Andere Fehler im Log
stacktrace setzen

rbs

Hallo Ellert und Frank_Huber,
danke für Eure Tipps :-)

Nach einem shutdown restart und auch Click auf jeweils "set timer_HeizungXXXWoche" cmd_1 werden keine Fehlermeldungen mehr in der Übersicht wie zuvor angezeigt. Denke und hoffe, dass die Anwesungen dann greifen werden und die Steckdose.Pufferspeicher dann zu den gegebenen Zeiten eingeschaltet werden, wenn die Variable HCAutomatick auf timed steht und die TEmperatur < 0 Grad ist.

Das Ganze soll eine Zeitgesteuerte Schaltung der Heizung Pumpe werden zu verschiedenen Tageszeiten und zusätzliche Heizphasen, wenn die Aussentemperatur niedrig ist. Zuvor hatte ich eine andere Schaltung ausgedacht, indem ich imemr die Temperatur eines Raumthermostat gemessen habe und tagsüber verschedene Solltemperaturen gesetzt hatte. Da das Raumthermostat aber nur in einen Raum steht und im Haus das Heizverhalten unterschiedlich durch das Mischen von Fussbodenheizungen und Wandheizköper ist(und ich leider nicht so viele Thermostate(Temperatursensoren besitze, um einen Wueerschnitt zu errechnen), versuche ich nun einfach Pauschal Heizphasen festzulegen und die Aussentemperatur etwas mit einfliessen zu lassen.
Hier meine Anweisungen zum Schalten der Pumpe am Pufferspeicher die dann das gesamte Haus mit warmen Heizungswasser versorgt:


#TIMER Modus
#Heizung je Tageszeit unabhängig der eingestellten Temperatur ein/ausschalten

define timer_HeizungMorgensFROST_Start_Woche DOIF ([04:30] and [HCAutomatik] eq "timed" and [Temperatur.Aussen:temperature] < 0 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500)
attr timer_HeizungMorgensFROST_Start_Woche do always
attr timer_HeizungMorgensFROST_Start_Woche room Heizung

define timer_HeizungMorgens_Start_Woche DOIF ([05:00] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw on;;)
attr timer_HeizungMorgens_Start_Woche do always
define timer_HeizungMorgens_Stop_Woche DOIF ([07:15] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw off;;)
attr timer_HeizungMorgens_Stop_Woche do always
attr timer_HeizungMorgens_Stop_Woche room Heizung

define timer_HeizungMorgensVormittagFROST_Start_Woche DOIF ([10:30] and [HCAutomatik] eq "timed" and [Temperatur.Aussen:temperature] < 0 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500)
attr timer_HeizungMorgensVormittagFROST_Start_Woche do always

define timer_HeizungMorgensVormittag_Start_Woche DOIF ([11:20] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw on)
attr timer_HeizungMorgensVormittag_Start_Woche do always
attr timer_HeizungMorgensVormittag_Start_Woche room Heizung
define timer_HeizungMorgensVormittag_Stop_Woche DOIF ([12:00] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw off)
attr timer_HeizungMorgensVormittag_Stop_Woche do always
attr timer_HeizungMorgensVormittag_Stop_Woche room Heizung

define timer_HeizungNachmittags_Start_Woche DOIF ([15:45] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw on)
attr timer_HeizungNachmittags_Start_Woche do always
attr timer_HeizungNachmittags_Start_Woche room Heizung
define timer_HeizungNachmittags_Stop_Woche DOIF ([16:30] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw off)
attr timer_HeizungNachmittags_Stop_Woche do always
attr timer_HeizungNachmittags_Stop_Woche room Heizung

define timer_HeizungAbendsFROST_Start_Woche DOIF ([19:30] and [HCAutomatik] eq "timed" and [Temperatur.Aussen:temperature] < 0 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500)
attr timer_HeizungAbendsFROST_Start_Woche do always
attr timer_HeizungAbendsFROST_Start_Woche room Heizung

define timer_HeizungAbends_Start_Woche DOIF ([20:00] and [HCAutomatik] eq "timed")   (set Steckdose.Pufferspeicher_Sw on)
attr timer_HeizungAbends_Start_Woche do always
define timer_HeizungAbends_Stop_Woche DOIF ([20:30] and [HCAutomatik] eq "timed")    (set Steckdose.Pufferspeicher_Sw off)
attr timer_HeizungAbends_Stop_Woche do always
attr timer_HeizungAbends_Stop_Woche room Heizung

define timer_HeizungNachtsFROST_Start_Woche DOIF ([22:30] and [HCAutomatik] eq "timed" and [Temperatur.Aussen:temperature] < 0 )    (set Steckdose.Pufferspeicher_Sw on-for-timer 1500)
attr timer_HeizungNachtsFROST_Start_Woche do always
attr timer_HeizungNachtsFROST_Start_Woche room Heizung


Kann man daran eventuell noch etwas optimieren und ist eigentlich das do always unbedingt notwendig bzw. beeinträchtigt das vielleicht die Leistung von Fhem, oder ist das ok so?

Vielen lieben Dank für Eure Hilfe