Wochenprogrammierung Homematic

Begonnen von herrmie, 11 Februar 2014, 12:43:12

Vorheriges Thema - Nächstes Thema

herrmie

Hallo,

ich habe mir eine Datei angelegt mit folgender Funktion:

SetTempList_Bad()
{
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListMon prep 05:40 21.0 08:00 18.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListTue prep 05:40 21.0 08:00 18.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListWed prep 05:40 21.0 08:00 18.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListThu prep 05:40 21.0 08:00 18.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListFri prep 05:40 21.0 08:00 18.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListSat prep 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListSun exec 24:00 18.0")};
}


Meine Absicht ist, von 05:40 - 08:00 21.0° zu haben und ab 08:00 wieder 18.0°. Das sollte doch mit diesem Codeschnipsel passen, oder?
Am Wochenende soll immer nur 18.0° sein.

Grüße und Danke schonmal,
herrmie

Henno

Das ist so nicht richtig.
Jetzt machst du von 0.00 bis 05.40 21,0° dann bis 8.00 18°

die zeit ist immer bis xx.xx xx,x°

richtig für dich wäre z.b.

5:40 18.0 08:00 21.0 24:00 18.0

beispiel wie es bei mir ist
{ fhem ("set Bad_Clima tempListMon prep 05:00 10.0 06:30 20.0 16:00 10.0 21:00 20.0 24:00 10.0")};

Thorsten Pferdekaemper

Hi,
nein, das geht so nicht. So wäre es IMHO richtig:
fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListMon prep 05:40 18.0 08:00 21.0 24:00 18.0")
Die Uhrzeit ist die bis-Zeit vom jeweiligen Intervall. Das erste Intervall startet implizit immer um 00:00.
D.h. da Du irgendwo sagst "Bis 08:00 soll es 21:00 Grad haben", muss irgendwo "08:00 21.0" stehen.
Gruß,
   Thorsten
FUIP

herrmie

Hallo,

ahhh, nun verstehe ich das. Naja komische Schreibweise aber macht nun auch Sinn. Denn in meinem FileLog von heute Nacht, habe ich mich schon gewundert, dass er ~00.00 auf 21° geheizt hat.  ;D
Aber dann macht das Sinn. Somit müsste meine Funktion folgendermaßen aussehen:

SetTempList_Bad()
{
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListMon prep 05:40 18.0 08:00 21.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListTue prep 05:40 18.0 08:00 21.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListWed prep 05:40 18.0 08:00 21.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListThu prep 05:40 18.0 08:00 21.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListFri prep 05:40 18.0 08:00 21.0 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListSat prep 24:00 18.0")};
   { fhem ("set CUL_HM_HM_CC_RT_DN_22C0AA_Clima tempListSun exec 24:00 18.0")};
}



Grüße,
herrmie

betateilchen

Abgesehen davon, dass dieser Thread ja eigentlich in den Homematic Bereich gehört, frage ich mich, wieso sich jemand umständlich eine Funktion für etwas bastelt, das man genau einmal braucht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

martinp876

evtl nervt es ja -aber so ganz verstehe ich nicht, warum ihr nicht die templist Implementierung aus HMInfo nutzt. Da muss man keine Funktionen schreiben, kann fuer alle sensoren templisten ablegen und verwalten.

betateilchen

Zitat von: martinp876 am 11 Februar 2014, 14:53:39aber so ganz verstehe ich nicht, warum ihr nicht die templist Implementierung aus HMInfo nutzt

1. weil man das schon immer mit einer Funktion macht
2. weil die Verwendung von HMinfo für diesen Zweck nicht im Wiki zum RT zu finden ist
3. weil der Unfug mit der Funktion immer noch im fhemwiki steht und einfach gedankenlos kopiert wird
4. weil das fhemwiki bezüglich des RT-DN inzwischen ziemlich veraltet ist (da steht z.B. immer noch ClimRT_tr als Channel...)

(nein, ich habe keine Zeit, mich um das wiki zu kümmern!)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Jetzt mal ohne Sarkasmus:
...und weil für manche ein bisschen programmieren einfacher ist, als die "Sprache" eines neuen Befehls mitsamt einem neuen Dateiformat zu lernen.
...und weil man mit einer Funktion flexibler ist. Ich baue mir z.B. eine Templist-Funktion für jeden RT. Dann eine für jedes Stockwerk und eine für's ganze Haus. So kann ich gezielt nur das aufrufen, was ich ändern will.
...weil es einfacher ist, nur in einer Datei etwas zu ändern und das nur an einer Stelle. (Die tatsächliche tempList eines RT ist nur einmal als Variable definiert. So muss ich nur an einer einzigen Stelle was ändern, wenn ich für alle Tage einer Woche eine Temperatur ändern will.)
Vielleicht fällt mir noch mehr ein. Natürlich könnte man das alles auch in eine Funktion einer "höheren Sprache" implementieren, aber dann wird das mindestens so kompliziert wie eine einfache Perl-Routine.
Gruß,
    Thorsten
FUIP

martinp876

hm - ??? nun ja - muss ich nicht alles verstehen

Thorsten Pferdekaemper

@Martin: Versteh' mich nicht falsch, ich habe nichts gegen die HMInfo-Vorgehensweise. Vielleicht sollte ich auch damit mal ein bisschen herumspielen. Ich glaube nur, dass mein Weg zu mir besser passt.
Vielleicht finde ich mal ein bisschen Zeit, das RT-Wiki anzupassen, wenn niemand was dagegen hat. (Dann auch mit HMInfo tempList.)
FUIP

martinp876

Jeder hat seinen Weg - klar. Verbessern kann man sicher noch etwas an den templisten... beispielsweise mehrere Optionen für ein Device abspeichern - das geht gerade nicht
Nur mit ein paar der Argumente verstehe ich gerade nicht:
- warum mehrere Files?
- was ist an der Syntax schwer? Ist fast identisch
- Identische Programme für mehrere Regler sind möglich (etage/haus,...)

Store und verify Option sind vorhanden.
lade geht einfacher, den es muss nicht geladen werden

Was du betreibst ist eher die "template" vorgehensweise?

Aber gut jetzt - jeden das seine.

Thorsten Pferdekaemper

Hi,

Mehrere Files, damit man getrennt die Einstellungen zu einem bestimmten Device behandeln kann. Ok, ich habe nochmal nachgelesen, das geht auch mit <filter> (wahrscheinlich). Allerdings muss ich dann eine bestimmte Namensgebung einhalten.
Die Syntax ist nicht schwierig, aber das gilt für alle "Syntaxen". Es geht ja nicht nur um die Datei, sondern auch im die Befehle dazu, also wie man die Datei verwendet. Ich persönlich tue mir mit einer richtigen Programmiersprache einfacher. (Nicht jeder entwickelt aber Software seit 30 Jahren. Möglicherweise setzt auch der Altersstarrsinn ein.)
Identische Programme für mehrere Regler will ich gar nicht. Bei mir hat jeder RT ein anderes Programm, bis auf zwei, die haben dasselbe, aber die werden sowieso nach dem Taupunkt geführt, da in nicht wirklich genutzten Räumen.

Das ganze ist sowieso eher eine Frage des Geschmacks. Ich werde aber auch mal die HMInfo-Version ausprobieren, vielleicht gefällt sie mir dann sogar am Ende besser.

Gruß,
    Thorsten
FUIP

chris1284

Zitataber so ganz verstehe ich nicht, warum ihr nicht die templist Implementierung aus HMInfo nutzt

Mmmm, hät ich nicht interessehalber diesenBeitrag gelesen wüsst ich bis jetzt nicht das es HMInfo gibt.....
Geht denke ich vielen "Neuen" so

martinp876

Thorsten,

Ist Geschmackssache - korrekt. Daher nur zur Klarstellung (und nutzen musst du es immer noch nicht!)
- mit dem Filter filtert man Devices. Man kann also alle RT/TC in einem File speichern. Mit filter wählt man aus (regexp) welche devices man programmieren/speichern/prüfen will.
=> man kann keine unterschiedlichen Programme in einem File für einen RT/TC ablegen. Das ist auch eine gute Idee und sinnvolle ergänzung- und evtl baue ich dies nach. Generell entspricht dies eine "template" Ansatz, den es in HMINFO für treppenhausschaltern und andere Aktoren gibt -liegt eigentlich auf der Linie.

Wer lieber programmieren mag kann das natürlich.

@chris
HMInfo ist gedacht als ein layer über CUL_HM und soll die Überwachung und bedienung mehrerer/aller Devices sicherstellen. m.E. tut man sich schwer HM in FHEM ohne HMInfo zu überwachen - es sei den man schreibt sich etwas ähnliches selbst.

Gruss Martin

chris1284

#14
Kann es sein das set hmDevices tempList save nicht funktioniert wie es dokumentiert ist? Laut cmdref wird ein file wie folgt angelegt
Zitatfilename is the name of the file to be used. Default ist tempList.cfg
. Er legt bei mit nur ein File "save" im fhem-Ordner (/opt/fhem/save) an. Mach ich ein set hmDevices tempList save  tempList.cfg legt er auch nur das file save an.