HM-CC-TC im Cent Modus ohne hinterlegte Zeiten

Begonnen von ThorstenH, 07 Dezember 2013, 13:17:03

Vorheriges Thema - Nächstes Thema

martinp876

Zitatauf dem Stack (oder in der Queue?) denn in der richtigen reihenfolge abgearbeitet?
ein fifo. ja- reihenfolge ist korrekt. Auch NACKs erzeugen keine Probleme in der Reihenfolge.

Das Problem ist aber die Verzögerung:
> rad->temp 21.0 ->desired-temp trigger (Änderung)
> set desired-temp 21.0 -> Stack hat jetzt 1) 21.0 Grad
--> send 21.0 Grad -> NACK (warum auch immer, halt ein Fehler) - warten auf wiederholen
> rad->temp 21.5 ->desired-temp trigger (Änderung)
> set desired-temp 21.5 -> Stack hat jetzt 1) 21.0 Grad 2) 21.5 Grad

--> send 21.0 Grad (1. Wiederholung) -> ACK
> Ack 21.0 Grad ->temp 21.0 ->desired-temp trigger (Änderung)
> set desired-temp 21.0 -> Stack hat jetzt 1) 21.5 Grad 2) 21.0 Grad

--> send 21.5 Grad -> ACK
> Ack 21.5 Grad ->temp 21.5 ->desired-temp trigger (Änderung)
> set desired-temp 21.5 -> Stack hat jetzt 1) 21.0 Grad 2) 21.5 Grad

und schon hast du eine endlosschleife, da im fifo-stack nun 2 set desired-temp liegen.

das ist also nicht nur bei NACK ein Problem sondern immer, wenn du die temp 2-mal änderst bevor es gesendet ist. Und das kann oft vorkommen, da das Senden ja bis zu 2,5min dauert und ein 'nachregeln' einfach stattfinden kann. Das ist ganz klar eine schwachstelle, die du so nicht lassen kannst.


ZitatWenn ein neuer Wert für desired-temp kommt, spielt der alte keine Rolle mehr. Oder?

doch, doch. Im Stack werden messages gespeichert - der Inhalt ist wurscht. Es werden keine Kommandos gespeichert (set desired-temp) und sortiert werden sie schon garnicht. wenn du 10 mal set desired-temp machst innerhalb eines 2,5min zeitraums wird die temp eben 10 mal gesetzt. ggf auch auf den gleichen Wert. Alles andere wäre kompliziert - ein logisches parsing.

das Ganze aktuell aufzulösen ist nach jetzigem Stand kompliziert.
Es gibt aber eine Unterschied zwischen dem drehen am Rad und dem Setzen durch fhem. Das eine ist eine "Info" message vom device, das andere eine "ack-info" auf den Befehl. Das ist noch nicht abfragbar.
Ich werde also ein neues Reading einbauen
recentStateType [ack|info]
Das Reading wird keinen trigger auslösen -aber du kannst es abfragen. Du kannst also ein notify bauen
define nf notify .*_Climate:.desired-temp.* { if (ReadingsVal($NAME,"recentStateType","") eq "info"){\
fhem "set $NAME desiredTemp $EVTPART1"}}


tipfehler bitte selbständig beheben!
recentStateType erst in der nächsten Version

Gruss Martin





ThorstenH

Ok, habe ich verstanden. Super erklärt  :)
Freu mich schon auf das neue Reading...extra für mich!  :D

Danke
Thorsten

ThorstenH

#32
Ich habe ein paar Tests gemacht und: funktioniert.  :)


sub AcceptManualDesiredTempInCentMode($$)
{
    my ($tc_climate,$temp) = @_;
    my $controlMode = ReadingsVal($tc_climate, "R-controlMode", "");
    if ($controlMode !~ m/central/)
    {
        Log(1,"*** AcceptManualDesiredTempInCentMode: ".$tc_climate." is not in central mode [IGNORED]");
        return;
    }

    my ($recentStateType) = ReadingsVal($tc_climate, "recentStateType", "");
    if ($recentStateType ne "info")
    {
        Log(1,"*** AcceptManualDesiredTempInCentMode: ".$tc_climate." recentStateType is ".$recentStateType." [IGNORED]");
        return;
    }
   
    fhem("set ".$tc_climate." desired-temp ".$temp);
    Log (1, "*** set ".$tc_climate." desired-temp ".$temp);
}


Etwas verwirrend dabei war die Tatsache, dass die Anzeige des TCs am Gerät nicht aktualisiert wird, wenn ich per WebIf die desired-temp geändert habe (z.B. auf Komforttemperatur=>die Sonne erschien nicht). Aber das ist unabhängig von der Sub, testweise habe ich das notify nämlich auch mal ausgestellt. Erst wenn ich am Gerät auf OK drücke, dann erscheint auch die Sonne.

Funktioniert also genau wie geplant. Danke nochmal Martin!

Wenn jetzt noch jemand wüsste, ob es möglich ist, im Cent Modus einen Wochentagsprogramm vorzugeben, das keine Umschaltungen enthält... Wäre super.

martinp876

Hallo Thorsten

ZitatWenn jetzt noch jemand wüsste, ob es möglich ist, im Cent Modus einen Wochentagsprogramm vorzugeben, das keine Umschaltungen enthält...

verstehe ich nicht. der cent-modus hat kein Wochenprogramm, das hat der automode. Du kannst mit "at" aus FHEM immer die temp setzen/Ändern - da kannst du ein wocheprogramm basteln.
was bedeuten "keine Unschaltung"?
Gruss Martin

ThorstenH

 :o
Ich hatte irgendwie das Gefühl, mal was darüber gelesen zu haben, dass im cent Modus die Zentrale die Temperaturlisten schickt. Da habe ich mich wohl geirrt.

Zitat von: Bedienungsanleitung HM-CC-TC
7.2.4 Zentralengeführter Betrieb (Cent)
In dieser Betriebsart (Anzeige ,,Cent") wird der Temperatur-Soll- wert von der Zentrale vorgegeben und das Verhalten ist mit dem im Handbetrieb identisch.

Dann denke ich, aktiviere ich das ganze überall bei mir. Mal sehen, ob es was bringt.

Danke an alle, besonders an dich Martin!
Viele Grüße
Thorsten

ThorstenH

Hallo,

nach ein paar Tagen im Praxistest hat sich herausgestellt, dass es manchmal immer noch nicht funktioniert. Heute morgen habe ich z.B. im Wohnzimmer am TC Gerät auf "Komforttemperatur" geschaltet und nach ca. 1 Minute stand wieder die vorherige Temperatur drin. Das konnte ich danach sogar zum zweiten Mal wiederholen.  :'(

Log:

2013.12.21 11:07:03.232 0: HMLAN_Parse: HMLAN1 R:E1CE75F   stat:0000 t:2C2A9E45 d:FF r:FFCD     m:5E A258 1CE75F 1CED2A 0000
2013.12.21 11:07:03.365 0: HMLAN_Parse: HMLAN1 R:E1CED2A   stat:0000 t:2C2A9EC8 d:FF r:FFBB     m:5E 8202 1CED2A 1CE75F 010100003D
2013.12.21 11:07:22.097 0: HMLAN_Parse: HMLAN1 R:E1BF932   stat:0000 t:2C2AE7F9 d:FF r:FFC1     m:94 A258 1BF932 1C4DD3 0000
2013.12.21 11:07:22.229 0: HMLAN_Parse: HMLAN1 R:E1C4DD3   stat:0000 t:2C2AE87A d:FF r:FFC3     m:94 8202 1C4DD3 1BF932 010100002F
2013.12.21 11:07:26.380 0: HMLAN_Send:  HMLAN1 I:K
2013.12.21 11:07:26.383 0: HMLAN_Parse: HMLAN1 V:03C1 sNo:IEQ0061959 d:139779 O:DE7474 t:2C2AF8BD IDcnt:0011
2013.12.21 11:07:28.853 0: HMLAN_Parse: HMLAN1 R:E1BF932   stat:0000 t:2C2B025D d:FF r:FFC0     m:95 A410 1BF932 DE7474 06022C00000000
2013.12.21 11:07:28.866 1: *** set thermostat_wohnzimmer_climate desired-temp 22.0
2013.12.21 11:07:51.401 0: HMLAN_Send:  HMLAN1 I:K
2013.12.21 11:07:51.404 0: HMLAN_Parse: HMLAN1 V:03C1 sNo:IEQ0061959 d:139779 O:DE7474 t:2C2B5A7D IDcnt:0011
2013.12.21 11:08:07.446 0: HMLAN_Parse: HMLAN1 R:E1CDFBA   stat:0000 t:2C2B9924 d:FF r:FFCE     m:53 8670 1CDFBA 000000 00B438
2013.12.21 11:08:16.411 0: HMLAN_Send:  HMLAN1 I:K
2013.12.21 11:08:16.414 0: HMLAN_Parse: HMLAN1 V:03C1 sNo:IEQ0061959 d:139779 O:DE7474 t:2C2BBC33 IDcnt:0011
2013.12.21 11:08:27.446 0: HMLAN_Parse: HMLAN1 R:E1CDFBA   stat:0000 t:2C2BE747 d:FF r:FFCE     m:53 A258 1CDFBA 1CF1FC 0000
2013.12.21 11:08:27.579 0: HMLAN_Parse: HMLAN1 R:E1CF1FC   stat:0000 t:2C2BE7CA d:FF r:FFC7     m:53 8202 1CF1FC 1CDFBA 0101000039
2013.12.21 11:08:29.303 0: HMLAN_Parse: HMLAN1 R:E1CE123   stat:0000 t:2C2BEE89 d:FF r:FFBA     m:0A 8670 1CE123 000000 00AE3F
2013.12.21 11:08:41.423 0: HMLAN_Send:  HMLAN1 I:K
2013.12.21 11:08:41.426 0: HMLAN_Parse: HMLAN1 V:03C1 sNo:IEQ0061959 d:139779 O:DE7474 t:2C2C1DEB IDcnt:0011
2013.12.21 11:08:42.355 0: HMLAN_Parse: HMLAN1 R:E1BF932   stat:0000 t:2C2C2187 d:FF r:FFC2     m:96 A410 1BF932 DE7474 06020C00000000
2013.12.21 11:08:42.368 1: *** set thermostat_wohnzimmer_climate desired-temp 6.0
2013.12.21 11:08:49.303 0: HMLAN_Parse: HMLAN1 R:E1CE123   stat:0000 t:2C2C3CAB d:FF r:FFBA     m:0A A258 1CE123 1CF1E3 00C0
2013.12.21 11:08:49.436 0: HMLAN_Parse: HMLAN1 R:E1CF1E3   stat:0000 t:2C2C3D31 d:FF r:FFB8     m:0A 8202 1CF1E3 1CE123 0101960033
2013.12.21 11:09:00.736 0: HMLAN_Parse: HMLAN1 R:E1CE75F   stat:0000 t:2C2C6957 d:FF r:FFCD     m:5F 8670 1CE75F 000000 00AF40
2013.12.21 11:09:06.430 0: HMLAN_Send:  HMLAN1 I:K
2013.12.21 11:09:06.433 0: HMLAN_Parse: HMLAN1 V:03C1 sNo:IEQ0061959 d:139779 O:DE7474 t:2C2C7F9E IDcnt:0011
2013.12.21 11:09:20.737 0: HMLAN_Parse: HMLAN1 R:E1CE75F   stat:0000 t:2C2CB77A d:FF r:FFCD     m:5F A258 1CE75F 1CED2A 0000
2013.12.21 11:09:20.869 0: HMLAN_Parse: HMLAN1 R:E1CED2A   stat:0000 t:2C2CB7FC d:FF r:FFBB     m:5F 8202 1CED2A 1CE75F 010100003D


TC Log:
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse set_0 %
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse ValveDesired: 0 %
2013-12-21_11:07:22 thermostat_wohnzimmer actuator: 0 %
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse ValvePosition: 0 %
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse 0 %
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse battery: ok
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse motorErr: ok
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse motor: stop
2013-12-21_11:07:22 hm_cc_vd_wohnzimmer_fenster_terasse operState: onTarget
2013-12-21_11:07:28 thermostat_wohnzimmer desired-temp: 22.0
2013-12-21_11:07:28 thermostat_wohnzimmer battery: ok
2013-12-21_11:07:28 thermostat_wohnzimmer_climate desired-temp: 22.0
2013-12-21_11:08:42 thermostat_wohnzimmer desired-temp: 6.0
2013-12-21_11:08:42 thermostat_wohnzimmer battery: ok
2013-12-21_11:08:42 thermostat_wohnzimmer_climate desired-temp: 6.0
2013-12-21_11:10:04 thermostat_wohnzimmer T: 18.6 H: 55
2013-12-21_11:10:04 thermostat_wohnzimmer measured-temp: 18.6
2013-12-21_11:10:04 thermostat_wohnzimmer humidity: 55
2013-12-21_11:10:04 thermostat_wohnzimmer_weather T: 18.6 H: 55
2013-12-21_11:10:04 thermostat_wohnzimmer_weather measured-temp: 18.6
2013-12-21_11:10:04 thermostat_wohnzimmer_weather humidity: 55
2013-12-21_11:10:05 thermostat_wohnzimmer desired-temp: 22.0
2013-12-21_11:10:05 thermostat_wohnzimmer battery: ok
2013-12-21_11:10:05 thermostat_wohnzimmer_climate desired-temp: 22.0
2013-12-21_11:10:05 thermostat_wohnzimmer desired-temp: 6.0
2013-12-21_11:10:05 thermostat_wohnzimmer battery: ok
2013-12-21_11:10:05 thermostat_wohnzimmer_climate desired-temp: 6.0


Gibt es eigentlich irgendwo eine Protokollbeschreibung der Raw Messages vom HMLAN? Vielleicht könnte ich dann selber mal was aus den Messages rauslesen.

martinp876

Hallo Thorsten

Zitat
11:07:28.866 1: *** set thermostat_wohnzimmer_climate desired-temp 22.0
11:08:42.368 1: *** set thermostat_wohnzimmer_climate desired-temp 6.0

also wenn ich es richtig sehe wird die temp auf 22 Grad gesetzt und dann auf 6 Grad. Das kommando kommt doch von FHEM. Hast du ein notify laufen? FHEM macht so etwas nicht von selbst (hoffe ich).

Gruss Martin

ThorstenH

Nur das oben erwähnte notify. Sonst nichts.

martinp876

Hi Thorsten

ich habe deine aktuelle Config nicht vorliegen. Ich sehe oben "AcceptManualDesiredTempInCentMode" das wohl 2-mal aufgerufen wird, einmal mit 22 und einmal mit 6 Grad.
Welches Notify ist da untergelegt?

Gruss Martin



ThorstenH

Internals:
   DEF        .*_climate:.*desired-temp:.* {
  AcceptManualDesiredTempInCentMode($NAME,$EVTPART1);
}
   NAME       accept_desired_temp_manu_in_cent_notify
   NR         134
   NTFY_ORDER 50-accept_desired_temp_manu_in_cent_notify
   REGEXP     .*_climate:.*desired-temp:.*
   STATE      active
   TYPE       notify

martinp876

hm -

von 1BF932 sehe ich nur wenig messages - da ist nur die Ventilsteuerung, nicht die Status-message.

Mach einmal den Stern raus

define accept_desired_temp_manu_in_cent_notify notify .*_climate:.desired-temp:.* {\
  AcceptManualDesiredTempInCentMode($NAME,$EVTPART1);\
}

ThorstenH

Ich vermute du meinst

define accept_desired_temp_manu_in_cent_notify notify .*_climate:desired-temp:.* {\
  AcceptManualDesiredTempInCentMode($NAME,$EVTPART1);\
}

Also den ".*" weglassen, richtig? Habe ich gemacht. Ich muss das allerdings länger verfolgen, da diese Effekte immer nur sporadisch auftreten. Melde mich dann.

frank

kann es sein, dass du ein gepeertes fenster geöffnet hast!
windowOpenTemp=6grad.

ich hatte euer scenario auch durchgespielt. leider reagierte bei mir das notify auf das fenster öffnen. doch wie die temperatur vorher war, und wann das fenster wieder geschlossen ist müsste man wohl auch noch einbauen.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

ThorstenH

Ich habe vorher alle Fenster ungepeert, obwohl normalerweise die Fensterkontakte im Cent Modus keinen Einfluss habe dürfen.

Zwischenzeitlich habe ich bemerkt, dass der TC anstelle meiner 3 VDs plötzlich 4 eingetragen hatte. Unpeeren hat mehrfach nicht funktioniert, so dass ich alle VDs und den TC wieder zurückgesetzt und neu konfiguriert habe.

Jetzt stehe ich wieder am Anfang und beobachte weiter.

martinp876

Hallo Thorsten,

ich meinte nur den '*', nicht '.*'

. = beliebiges zeichen, egal was
* wiederholen: beliebig oft zeichen vor dem *
r* Folge von beliebig vielen 'r'
x* Folge von beliebig vielen 'x'
.* Folge von beliebig vielen zeichen, egal was

zwischen
<name>: reading
ist i.a. ein ' ' (leerzeichen). Das kannst du mit '\ ' erschlagen oder mit '.'
Wichtig ist, dass ein 'set_' zwischen ':' und desired-temp vorkommen kann - oder sonst etwas.
.*_climate:desired-temp:.*
funktioniert/triggert?
.*_climate:.desired-temp:.*
hätte ich gemacht.


warum das unpeeren nicht funktioniert hat, hätte mich interessiert.

Wenn die 6 Grad auf einen Fensterkontakt zurückzuführen sind sollte das Symbol im TC zu sehen sein. Könnte ggf durch das setzen der desired-temp überschrieben werden.
Der TC hat meines wissens keine "interne" Fenster-offen Erkennung wie der RT. Wenn alle peers entfernt sind, sollte es nicht reagieren... aber der Hinweis von Frank ist sicher wichtig!

Gruss Martin