SetTempList HM-CC-TC

Begonnen von AbeamStart, 13 Oktober 2013, 12:50:59

Vorheriges Thema - Nächstes Thema

martinp876

Hi Marac,

du bist sicher, dass dein Kommando korrekt ist? Hast du auch immer paarweise temp und Zeit eingegeben? kannst du auch dein ganzes Kommando schicken? erraten kann ich es nicht
Erst einmal kommt diese Meldung nicht, wenn ALLE parameter stimmen

Gruss Martin

marac

Moin Martin,

nach der Beschreibung im CommandRef
tempListFri [prep|exec] HH:MM temp ... 24:00 temp

wäre ich jetzt schon davon ausgegangen, dass das so passt:

set OG.Kinderzimmer.Heizung.Thermostat_Climate tempListFri prep 06:00 17.0 08:30 21.0 13:00 19.0 19:00 21.0 24:00 17.0

Ohne prep funktioniert das Absetzen des Befehls ja auch, nur ist die Ausführung eben unzuverlässig, weshalb ich dann nach den Anregungen, die ich hier gefunden habe, die prep/exec-Variante nutzen wollte.

Ich hab gerade mal noch versucht, den Code in der 10_CUL_HM.pm nachzuvollziehen, nachdem meine PERL-Zeiten doch schon etwas länger her sind, ist das nicht so ganz einfach, aber Folgendes glaube ich verstanden zu haben:

Die Meldung kommt, wenn die Anzahl der Argumente ungerade ist (wobei in diesem Array alles ab dem Device steckt). Zuvor sollte aber - sofern vorhanden - das "prep" bzw. "exec" aus der Argument-Liste entfernt und separat gespeichert werden, weshalb die Meldung, wenn sie ohne prep nicht kommt, auch mit prep nicht kommen dürfte, korrekt?
Wenn die Meldung dennoch kommt, muss dann wohl entweder die Erkennung oder die Entfernung von prep bzw. exec schief gehen, oder hab ich da was übersehen?

Gruß,
  marac

martinp876

Hallo Marac,

hast du so richtig gesehen. Ich habe dein Kommando einmal mit und ohne prep gesendet - funktioniert beides bei mir.

Es darf natürlich kein weiterer Parameter drin sein... also kein komma oder sonst etwas.

Gruss Martin

marac

Hmmm, jetzt bin ich noch verwirrter... Ich hab das Kommando so 1:1 in mein Eingabefeld kopiert und bekomme den genannten Fehler... Hab ich irgendwie 'ne Möglichkeit, mir Debug-Ausgaben irgendwo hin zu schreiben (z.B. den Inhalt des @a-Arrays vor und nach der Prüfung auf den prep-Parameter)? Das ist wie bei Fremdsprachen, das lesen und verstehen klappt noch halbwegs, aber beim Schreiben hapert es dann...

martinp876

Hallo Marac,

war mein fehler - falsch codiert.
Ist in Version 4115 gelöst
Gruss Martin

marac

Hallo Martin,

auch die Version 4115 hat bei mir leider keine Besserung gebracht.
Ich kann aber im Abschnitt, der für die tempList beim TC zuständig ist, auch keine Änderung erkennen.
Im Bereich PartyMode gab es eine Änderung, die mit prep/exec in Zusammenhang steht, aber nicht bei der tempList.

Gruß,
  marac

martinp876

#21
Hallo Marac,

es wurde etwas am partyMode geändert.

bei deinem Problem habe ich den Faden verloren. wenn ich dein Kommando eingebe wird es exact ausgeführt.

kannst du noch einmal beschreiben, was dein Problem ist (sorry, dass ich so langsam bin)
a) wird die Eingabe deines Kommandos zurückgewiesen oder werden die Kommanods akzeptiert?
b) werden die Kommandos nicht korrekt übertragen?

in beiden fällen bitte alle Kommandos, die du schickst
im fall b) bitte ein roh-message-log dazu

Danke
Martin

nachtrag: habe noch ein Problem entdeckt - scheinbar disconnected der HMLAN nach einer gewissen sequenc messages... muss ich untersuchen.. Falls du dennoch deine Infos schicken kannst...

marac

Hallo Martin,

wenn ich diesen Befehl eingebe

set OG.Kinderzimmer.Heizung.Thermostat_Climate tempListFri prep 06:00 17.0 08:30 21.0 13:00 19.0 19:00 21.0 24:00 17.0

bekomme ich die Rückmeldung "Bad format, use HH:MM TEMP ... "

Gebe ich den Befehl ohne "prep" ein, also

set OG.Kinderzimmer.Heizung.Thermostat_Climate tempListFri 06:00 17.0 08:30 21.0 13:00 19.0 19:00 21.0 24:00 17.0

geht es ohne Fehlermeldung durch.

Wenn du sagst, dass der Befehl bei dir mit und ohne prep sauber funktioniert, muss es ja irgendeine Eigenart an meinem System sein, daher hatte ich überlegt, den Inhalt des @a-Arrays in einer Debug-Ausgabe vor und nach der Bearbeitung des "prep" auszugeben, aber so weit reichen meine Perl-Kenntnisse leider nicht mehr. Vielleicht kannst du mir da ja einen Tipp geben...

Gruß,
  marac

martinp876

habe es gerade nich einmal getestet, keine Probleme bei mir.
bau dir diesen log ein.
    return "To many arguments, max 24 pairs" if(@a > (($md =~ m/HM-CC-RT-DN/)?28:50));
   Log 1,"my templist:".join(";",@a);
    return "Bad format, use HH:MM TEMP ..."  if(@a % 2);

Kritisch wäre es, wenn dein Perl die Punkte im Namen als Trenner sieht.
zum test kannst du auch ein
rename OG.Kinderzimmer.Heizung.Thermostat_Climate th_Climate
set th_Climate tempListFri prep 06:00 17.0 08:30 21.0 13:00 19.0 19:00 21.0 24:00 17.0
rename  th_Climate OG.Kinderzimmer.Heizung.Thermostat_Climate


probieren

marac

Moin Martin!

Der Versuch mit der Umbenennung in ein Device ohne Punkte im Namen hat schon mal nichts gebracht. Bei dem Versuch, die Logging-Funktion einzubauen, hat sich mein FHEM aufgehängt (vielleicht hat mein Editor DOS-Zeilenumbrüche eingebaut?), und als ich die Fritz!Box-Oberfläche geöffnet habe, um einen Neustart zu veranlassen, fiel mir auf, dass ein empfohlenes Firmware-Update für die Box bereit steht. Dieses Update zu starten, war dann leider mein Verderben, jetzt ist meine Box tot (siehe Fritz!-Unterforum). Weitere Tests werden also wohl noch eine Weile auf sich warten lassen...

Gruß,
  marac

matriedel

Hallo

Ich versuche eine Temperaturliste in meinen neuen HM-CC-RT-DN zu übertragen (mit oder ohne die Option ,prep / exec')

Set CUL_HM_HM_CC_RT_DN_221024_ClimRT_tr  tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0

Das Problem ist, dass ich am Thermostat keinen Effekt sehe. Auf dem FHEM Webinterface sehe ich nur die Info "... set_ ..."
Der Parameter "desired temperature" bleibt über die Zeit konstant bei 17.0°C.

Habt Ihr eine Idee warum der Befehl nicht vom HM-CC-RT-DN verarbeitet wird?

Matthias

Readings
R-boostPeriod   5 min   2013-10-28 17:33:58
R-boostPos   80 %   2013-10-28 17:33:58
R-btnNoBckLight   off   2013-10-28 19:37:17
R-dayTemp   21 C   2013-10-28 17:33:58
R-daylightSaveTime   on   2013-10-28 19:37:17
R-decalcTime   11:00   2013-10-28 19:37:17
R-decalcWeekday   Sat   2013-10-28 19:37:17
R-modePrioManu   all   2013-10-28 19:37:17
R-modePrioParty   all   2013-10-28 19:37:17
R-nightTemp   17 C   2013-10-28 17:33:58
R-noMinMax4Manu   off   2013-10-28 19:37:17
R-regAdaptive   on   2013-10-28 19:37:17
R-reguExtI   15   2013-10-28 19:37:17
R-reguExtP   30   2013-10-28 19:37:17
R-reguExtPstart   30   2013-10-28 19:37:17
R-reguIntI   15   2013-10-28 19:37:17
R-reguIntP   30   2013-10-28 19:37:17
R-reguIntPstart   30   2013-10-28 19:37:17
R-showInfo   time   2013-10-28 19:37:17
R-showWeekday   off   2013-10-28 19:37:17
R-sign   off   2013-10-28 19:47:54
R-tempMax   30.5 C   2013-10-28 17:33:58
R-tempMin   4.5 C   2013-10-28 17:33:58
R-tempOffset   0.0K   2013-10-28 19:37:17
R-valveErrPos   15 %   2013-10-28 17:33:58
R-valveMaxPos   100 %   2013-10-28 17:33:58
R-valveOffset   0 %   2013-10-28 17:33:58
R-winOpnBoost   off   2013-10-28 19:37:17
R-winOpnDetFall   1.4 K   2013-10-28 17:33:58
R-winOpnMode   on   2013-10-28 19:37:17
R-winOpnPeriod   15 min   2013-10-28 17:33:58
R-winOpnTemp   12 C   2013-10-28 17:33:58
ValvePosition   0 %   2013-10-29 09:05:50
desired-temp   17   2013-10-29 09:05:50
measured-temp   23.1   2013-10-29 09:05:50
mode   auto   2013-10-29 09:05:50
motorErr   ok   2013-10-29 09:05:50
state   T: 23.1 desired: 17 valve: 0 %   2013-10-29 09:03:46
tempListFri   06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 06:52:48
tempListMon   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0   2013-10-29 06:52:48
tempListSat   06:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 06:52:48
tempListSun   06:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 06:52:48
tempListThu   08:00 17.0 08:00 21.0 21:00 17.0 24:00 17.0   2013-10-29 06:52:48
tempListTue   set_ 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 06:52:48
tempListWed   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0   2013-10-29 06:52:48
tempList_State   set   2013-10-29 06:52:48
unknown0   24   2013-10-29 09:05:50


Logfile
2013.10.29 06:50:03 2: CUL_HM set Heizung_sSW_Matthias_ClimRT_tr tempListTue prep 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
2013.10.29 06:52:48 2: CUL_HM set Heizung_sSW_Matthias_ClimRT_tr tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0

martinp876

Hi,

da gibt es einige Möglichkeiten:
- übertragen wird nur, wenn es eine Änderung gibt
- übertragen wird je nach mode a) wenn das Device aufwacht, also nach 2,5min b) sofort wenn du burst anstösst und es enabled ist.
- wenn übertragen wurde bleibt alles auf "set" bis du aus dem Device rückgelesen hast.
- rücklesen passiert manuell mit getConfig oder automatisch mit autoReadReg
- auch rücklesen passiert entsprechend burst oder wakeup.

=> das "set" verschwindet IMMER nach erfolgreichem Rücklesen

was heisst "nichts sehen"? in FHEM oder am Thermstat?

Gruss Martin

matriedel

Hi

Ich habe das Rücklesen mit getConfig angesossen und autoReadReg auf "onChange" gesetzt.

Jetz verschwindet das "set"
tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0

Aber auf der FHEM Temperaturkurve oder besser Zieltemperaturkurve und auf den Thermostat sehe ich die Zieltemperatur konstant auf 17°C.
Ab 9:00Uhr sollte die Zieltemperatur aber auf 21.0°C eingestellt sein.

Woran kann das liegen?


desired-temp   17   2013-10-29 10:42:35
measured-temp   23.5   2013-10-29 10:42:35
mode   auto   2013-10-29 10:42:35
motorErr   ok   2013-10-29 10:42:35
state   T: 23.5 desired: 17 valve: 0 %   2013-10-29 10:42:35
tempListFri   06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 10:37:21
tempListMon   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0   2013-10-29 10:37:21
tempListSat   06:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 10:37:21
tempListSun   06:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 10:37:21
tempListThu   08:00 17.0 08:00 21.0 21:00 17.0 24:00 17.0   2013-10-29 10:37:21
tempListTue   06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0   2013-10-29 10:37:21
tempListWed   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0   2013-10-29 10:37:21

CQuadrat

Zitat von: matriedel am 29 Oktober 2013, 10:51:00
tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0

Aber auf der FHEM Temperaturkurve oder besser Zieltemperaturkurve und auf den Thermostat sehe ich die Zieltemperatur konstant auf 17°C.
Ab 9:00Uhr sollte die Zieltemperatur aber auf 21.0°C eingestellt sein.


Du interpretierst das falsch.
Deine Einstellung der Temperaturliste bewirkt folgendes:

  • von 00:00 bis 06:00 ist die Temperatur auf 17°C gesetzt
  • von 06:00 bis 09:00 ist die Temperatur auf 21°C gesetzt
  • von 09:00 bis 17:00 ist die Temperatur auf 17°C gestzt
  • und so weiter

Wenn ab 09:00 (bis 17:00) die Zieltemperatur 21°C sein soll, muss es heißen:
tempListTue 09:00 17.0 17:00 21.0 24:00 17.0
Ab 17:00 ist dann bis 24:00 wieder eine Zieltemperatur von 17°C eingestellt.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

matriedel

Oh vielen Dank für die Klarstellung