Ich möchte abhängig vom dummy
define Jahreszeit dummy
attr Jahreszeit webCmd Sommer:Winter
täglich um 00:00 Uhr meine Thermostate wieder richtig einstellen
Mir ist es ega ob per notify
(mein erfolgloser Test)
define HeizungSteuerung DOIF ([00:00] and [Jahreszeit] eq "Sommer") (set Esszimmer_Heizung_Climate,Fernsehzimmer_Heizung_Climate,BAD_Heizung_Climate,Kinderzimmer_Heizung_Climate,Schlafzimmer_Heizung_Climate,Arbeitszimmer_Heizung_Climate,Gaestezimmer_Heizung_Climate,GaesteWC_Heizung_Climate,Kueche_Heizung_Climate controlMode manual;;set Esszimmer_Heizung_Climate,Fernsehzimmer_Heizung_Climate,BAD_Heizung_Climate,Kinderzimmer_Heizung_Climate,Schlafzimmer_Heizung_Climate,Arbeitszimmer_Heizung_Climate,Gaestezimmer_Heizung_Climate,GaesteWC_Heizung_Climate,Kueche_Heizung_Climate desired-temp off) DOELSE (set Esszimmer_Heizung_Climate,Fernsehzimmer_Heizung_Climate,BAD_Heizung_Climate,Kinderzimmer_Heizung_Climate,Schlafzimmer_Heizung_Climate,Arbeitszimmer_Heizung_Climate,Gaestezimmer_Heizung_Climate,GaesteWC_Heizung_Climate,Kueche_Heizung_Climate controlMode auto)
Im Log passiert folgendes:
2017.07.23 17:25:42 2: HeizungSteuerung: set Esszimmer_Heizung_Climate: no value specified
2017.07.23 17:25:42 2: HeizungSteuerung: Fernsehzimmer_Heizung_Climate: Unknown command Fernsehzimmer_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: BAD_Heizung_Climate: Unknown command BAD_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: Kinderzimmer_Heizung_Climate: Unknown command Kinderzimmer_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: Schlafzimmer_Heizung_Climate: Unknown command Schlafzimmer_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: Arbeitszimmer_Heizung_Climate: Unknown command Arbeitszimmer_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: Gaestezimmer_Heizung_Climate: Unknown command Gaestezimmer_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: GaesteWC_Heizung_Climate: Unknown command GaesteWC_Heizung_Climate, try help.
2017.07.23 17:25:42 2: HeizungSteuerung: Kueche_Heizung_Climate controlMode auto: Unknown command Kueche_Heizung_Climate, try help.
Hat jemand eine elegante Lösung? DOIF oder notify ist mir egal.
Gibt es eigtl. die Möglichkeit das ganze Variabler zu gestalten z.B. Ermittlung der täglich Durchschnittsaussentemperatur (evtl. via Wetterdienst oder S300TH) als Schwellenwert für einen Dummy Heiztag oder so?
Vielen Dank für euren Input!
Du hast die Hinweise zu den Befehlstrennzeichen nicht beachtet, daher die Meldungen im Log, siehe: https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil
ZitatHat jemand eine elegante Lösung?
Du könntest die Gerätenamen über einen regulären Ausdruck angeben, z.B.
(Ess|Fernseh|usw.)zimmer_Heizung_Climate
Du könntest auf den Dummy verzichten und direkt im DOIF ein Reading setzen über die Attribute readingList, setList und webCmd, siehe https://fhem.de/commandref_DE.html#DOIF_setList__readingList
ZitatGibt es eigtl. die Möglichkeit das ganze Variabler zu gestalten
Ja, die Aggregationsfunktion des DOIF bietet einige Möglichkeiten, siehe https://fhem.de/commandref_DE.html#DOIF_aggregation
Was machst Du mit Deinen Thermostaten? Technisch ist Deine Frage beantwortet, den Grund für Deinen DOIF würde ich gern erfahren. Bei mir gibt es einenm solchen Anwendungsfall nicht.
Ich nutze
Zitatweekprofile
Beschreibung im Wiki: http://www.fhemwiki.de/wiki/Weekprofile Mit dem Modul 'weekprofile' können mehrere Wochenprofile verwaltet und an unterschiedliche Geräte übertragen werden. Aktuell wird folgende Hardware unterstützt:
alle MAX Thermostate
andere weekprofile Module
Homatic (Kanal _Clima bzw. _Climate)
Im Standardfall wird das Modul mit einem Geräte = 'Master-Gerät' assoziiert, um das Wochenprofil vom Gerät grafisch bearbeiten zu können und andere Profile auf das Gerät zu übertragen. Wird kein 'Master-Gerät' angegeben, wird erstmalig ein Default-Profil angelegt.
Ein weiterer Anwendungsfall ist die Verwendung von Rubriken\Kategorien 'Topics'. Hier sollte kein 'Master-Gerät' angegeben werden. Dieses Feature muss erst über das Attribut 'useTopics' aktiviert werden. Topics sind z.B. Winter, Sommer, Urlaub, Party, etc. Innerhalb einer Topic kann es mehrere Wochenprofile geben. Sinnvollerweise sollten es soviele wie Thermostate sein. Über ein Userattribut 'weekprofile' im Thermostat wird ein Wochenprofile ohne Topicname angegeben. Mittels 'restore_topic' wird dann das angebene Wochenprofil der Topic an das Thermostat übertragen. Somit kann man einfach zwischen den Topics wechseln und die Thermostate bekommen das passende Wochenprofil.
Erstmal vielen Dank für den Input.
Habe es nun so gelöst:
define Jahreszeit dummy
attr Jahreszeit room 99.System
attr Jahreszeit webCmd Sommer:Winter
define HeizungSteuerung DOIF ([23:00] and [Jahreszeit] eq "Sommer") (set (Esszimmer|Fernsehzimmer|BAD|Kinderzimmer|Schlafzimmer|Arbeitszimmer|Gaestezimmer|GaesteWC|Kueche)_Heizung_Climate controlMode manual,set (Esszimmer|Fernsehzimmer|BAD|Kinderzimmer|Schlafzimmer|Arbeitszimmer|Gaestezimmer|GaesteWC|Kueche)_Heizung_Climate desired-temp off) DOELSEIF ([23:00] and [Jahreszeit] eq "Winter") (set (Esszimmer|Fernsehzimmer|BAD|Kinderzimmer|Schlafzimmer|Arbeitszimmer|Gaestezimmer|GaesteWC|Kueche)_Heizung_Climate controlMode auto)
attr HeizungSteuerung room 99.System
Ziel war es, wenn die Kinder oder Gäste an den Thermostaten rumspielen, dass täglich alles wieder in die richtige Einstellung gesetzt wird.
Check.
Anstatt des dummys Jahreszeit wäre es nun noch perfekt wenn die tägliche Durchschnittstemperatur ermittelt würde und einen dummy z.B. Heizperiode auf "an" bzw. "aus" stellt.
Am besten mit yahooweather, denn das habe ich bereits integriert.
Kann hierbei noch jemand helfen?
Danke nochmal für das Weekprofile Modul, das kannte ich noch gar nicht und habe es auch gleich mal für alle Thermostate hinzugefügt.
Du könntest im Yahoo-Gerät ein userReadings anlegen, das den Durchschnitt berechnet oder die Aggregationsfunktion des DOIF nutzen.
Zitat von: AbeamStart am 25 Juli 2017, 08:49:56Ziel war es, wenn die Kinder oder Gäste an den Thermostaten rumspielen, dass täglich alles wieder in die richtige Einstellung gesetzt wird.
Falls es alle Automaten betrifft, kannst du mit
FILTER=TYPE (https://fhem.de/commandref_DE.html#devspec) arbeiten, ansonten Gruppe und dann FILTER.
([15:00] and [?SH:tomorrow] eq "none" and [?D_LongAwayStatus] eq "off")
## CMD1: Setze Wochenprogram prog1 - Normaler Arbeits/Schultag
(set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 controlMode auto,
set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 regSet weekPrgSel prog1)
DOELSEIF ([15:00] and [?SH:tomorrow] ne "none" and [?D_LongAwayStatus] eq "off")
## CMD2: Setze Wochenprogram prog2 - Morgen ist Wochenende/Ferien
(set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 controlMode auto,
set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 regSet weekPrgSel prog2)
DOELSEIF ([D_LongAwayStatus] eq "off" and [?SH:tomorrow] eq "none")
## CMD3: Setze alle Wandthermostaten bei Anwesenheit in auto-Modus
(set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 controlMode auto,
set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 regSet weekPrgSel prog1)
DOELSEIF ([D_LongAwayStatus] eq "off"and [?SH:tomorrow] ne "none")
## CMD4: Setze alle Wandthermostaten bei Anwesenheit in auto-Modus
(set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 controlMode auto,
set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 regSet weekPrgSel prog2)
DOELSEIF ([D_LongAwayStatus] eq "on")
## CMD5: Setze alle Wandthermostaten bei Abwesenheit (Urlaub) auf 17.0 desired-temp
(set TYPE=CUL_HM:FILTER=model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 controlManu 16.7)
SH ist der gepflegte Kalendar für Schulferien und Feiertage. D_LongAway ein Dummy, der "verreisst" oder "abwesend" meldet.
Ciao, -MN
Ciao, -MN
ZitatZiel war es, wenn die Kinder oder Gäste an den Thermostaten rumspielen,
Läßt sich das Thermostat nicht dafür sperren? Ich glaube bei Homematic ging das.
Für Durchschnitt
my $avg = myAverage("604800", "logdb", "Wetterstation:temperature::");
fhem("setreading Wetterstation temperatureWeekAverage " . $avg);
und
sub myAverage($$$)
{
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time+2);
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 0;
my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
Log 3, "get " . $logfile ." - - " . $period_s . " " . $period_e . " " . $cspec;
$attr{global}{verbose} = $oll;
my ($cnt, $cum, $avg) = (0)x3;
foreach (@logdata)
{
my @line = split(" ", $_);
if(defined $line[1] && "$line[1]" ne ""){
$cnt += 1;
$cum += $line[1];
}
}
if("$cnt" > 0){$avg = sprintf("%0.1f", $cum/$cnt)};
Log 4, ("myAverage: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Count: $cnt, Cum: $cum, Average: $avg");
return $avg;
}
Hier irgendwo kopiert, vor langer Zeit.
Ich nutzt DBLog dafür.
Es gibt auch ein Modul "average"
https://fhem.de/commandref_DE.html#average
Das macht dash dann ganz alleine in neue readings.
Gesendet von meinem S3_32 mit Tapatalk