Dummy für Jahreszeit soll täglich Thermostate richtig einstellen

Begonnen von AbeamStart, 23 Juli 2017, 18:44:13

Vorheriges Thema - Nächstes Thema

AbeamStart

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!
FHEM auf Debian (VM)

Ellert

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


rabehd

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.

Auch funktionierende Lösungen kann man hinterfragen.

AbeamStart

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.
FHEM auf Debian (VM)

Ellert

Du könntest im Yahoo-Gerät ein userReadings anlegen, das den Durchschnitt berechnet oder die Aggregationsfunktion des DOIF nutzen.


Per

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 arbeiten, ansonten Gruppe und dann FILTER.

Morgennebel


([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
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

rabehd

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.
Auch funktionierende Lösungen kann man hinterfragen.

Frank_Huber

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