TC emulieren

Begonnen von wkarl, 02 Januar 2014, 10:39:55

Vorheriges Thema - Nächstes Thema

frank

hallo martin,

mit den 12 sec dachte ich den folgenden fall zu unterbinden:

wenn bei restart ein meeting berechnet wird, das in zb 5sec erfolgen soll, kann es meiner meinung nach nicht ausgeführt werden, da wir ja eine eingebaute verzögerung von 10 sec beim übergang zur timerfunktion haben.

somit dachte ich mit den 12sec, gleich ein realistisches meeting zu berechnen.

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

martinp876

Das spielst sich aber spaetestens beim naechsten trigger wieder ein. Sollte schlimmstenfalls - in seltenen Faellen, zu einem miss, aber nicht zu einem Loss fuehren.
Der Fall eines set - insbesondere automatisiert durch weitere Sensoren und noch dazu asynchron ist schon einmal statistisch ein bei weitem hoeheres Risikio und hat nach einiger zeit bei 12 von 240 sec eine trefferwahrscheinlichkeit von 5%, jeder 20te geht schief. Das fuehrt zum Auslassen einer Abfrage
Die Abwaegung ist somit sehr einfach.

frank

ZitatDie Abwaegung ist somit sehr einfach.

na dann.


oder man wechselt in abhängigkeit von restart!  ;)

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

frank

hallo martin,

ich teste gerade v5016.

ich gehe davon aus, du wolltest statt:

  while ($nextF < $tn+0.05) {# calculate next time from last successful

folgendes einfügen:

  while ($nextF < ($tn+0.05)) {# calculate next time from last successful


dein code erklärt aber, glaube ich, nicht folgende auswirkungen:

2014.02.22 13:53:04.732 5: CUL_HM VentilControler.Bad_Btn1 m:160 ->161 t:1393073584.72105->1393073753.72105  M:1393073584.73158 :169
2014.02.22 13:53:04.740 0: HMLAN_Send:  HMLAN1 S:S59A7FBA6 stat:  00 t:00000000 d:01 r:59A7FBA6 m:A1 A258 B3B3B3 193A9A 0354
2014.02.22 13:53:04.925 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:081FF031 d:FF r:FFB6     m:A1 8202 193A9A B3B3B3 0101482048
2014.02.22 13:53:05.305 0: HMLAN_Parse: HMLAN1 R:R59A7FBA6 stat:0008 t:00000000 d:FF r:7FFF     m:A1 A258 B3B3B3 193A9A 0354
2014.02.22 13:53:05.308 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 13:55:53.992 5: CUL_HM VentilControler.Bad_Btn1 m:161 ->162 t:1393073753.73158->1393073908.48158  M:1393073753.99156 :154.75


2014.02.22 13:57:22.977 0: Server shutdown
2014.02.22 13:57:23.020 4: CUL_send:  cul868X0 0     
2014.02.22 13:57:27.086 1: Including fhem.cfg
2014.02.22 13:57:32.289 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.22 13:57:32.345 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.22 13:57:42.481 1: Including ./log/fhem.save
2014.02.22 13:57:44.605 1: HCS BROETJE monitoring of devices started
2014.02.22 13:57:44.987 0: Server started with 299 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 3772)
2014.02.22 13:57:44.994 1: Perfmon: possible freeze starting at 13:57:29, delay is 15.994
2014.02.22 13:57:45.855 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.22 13:57:46.043 1: Perfmon: possible freeze starting at 13:57:45, delay is 1.041
2014.02.22 13:57:48.156 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 33
2014.02.22 13:57:48.239 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.22 13:57:49.317 5: CUL_HM VentilControler.Bad_Btn1 m:161 ->162 t:1393073753.73158->1393073908.48158  M:1393073869.31706 :154.75
2014.02.22 13:57:49.381 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: unknown
2014.02.22 13:57:49.480 1: Perfmon: possible freeze starting at 13:57:47, delay is 2.479
2014.02.22 13:57:50.509 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 33
2014.02.22 13:58:00.080 1: Perfmon: possible freeze starting at 13:57:58, delay is 2.079
2014.02.22 13:58:17.986 1: Perfmon: possible freeze starting at 13:58:16, delay is 1.985
2014.02.22 13:58:31.660 1: Perfmon: possible freeze starting at 13:58:28, delay is 3.66


2014.02.22 13:58:31.665 5: CUL_HM VentilControler.Bad_Btn1 m:162 ->163 t:1393073908.48158->1393074048.73158  M:1393073911.66485 :140.25
2014.02.22 13:58:31.737 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.22 13:58:31.739 0: HMLAN_Send:  HMLAN1 S:S59ACF8E3 stat:  00 t:00000000 d:01 r:59ACF8E3 m:A3 A258 B3B3B3 193A9A 0354
2014.02.22 13:58:32.169 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.22 13:58:33.182 0: HMLAN_Parse: HMLAN1 R:R59ACF8E3 stat:0008 t:00000000 d:FF r:7FFF     m:A3 A258 B3B3B3 193A9A 0354
2014.02.22 13:58:33.184 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 13:58:34.136 1: Perfmon: possible freeze starting at 13:58:33, delay is 1.135
2014.02.22 13:58:42.951 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok


2014.02.22 13:58:43.002 1: Perfmon: possible freeze starting at 13:58:42, delay is 1.001
2014.02.22 13:58:45.874 1: Perfmon: possible freeze starting at 13:58:44, delay is 1.873
2014.02.22 13:58:47.320 1: Perfmon: possible freeze starting at 13:58:46, delay is 1.287
2014.02.22 13:58:51.126 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 29
2014.02.22 13:58:53.594 1: Perfmon: possible freeze starting at 13:58:52, delay is 1.593
2014.02.22 13:59:03.429 1: Perfmon: possible freeze starting at 13:59:00, delay is 3.428
2014.02.22 14:00:03.275 1: Perfmon: possible freeze starting at 14:00:01, delay is 2.274
2014.02.22 14:00:52.153 5: CUL_HM VentilControler.Bad_Btn1 m:163 ->164 t:1393074051.91485->1393074177.66486  M:1393074052.15298 :125.75
2014.02.22 14:00:52.161 0: HMLAN_Send:  HMLAN1 S:S59AF1D83 stat:  00 t:00000000 d:01 r:59AF1D83 m:A4 A258 B3B3B3 193A9A 034A
2014.02.22 14:00:52.779 0: HMLAN_Parse: HMLAN1 R:R59AF1D83 stat:0008 t:00000000 d:FF r:7FFF     m:A4 A258 B3B3B3 193A9A 034A
2014.02.22 14:00:52.782 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 14:01:03.117 1: Perfmon: possible freeze starting at 14:01:00, delay is 3.116
2014.02.22 14:01:03.141 5: CUL_HM VentilControler.Bad_Btn1 virtualTC use fail-timer
2014.02.22 14:01:03.204 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.22 14:02:57.675 5: CUL_HM VentilControler.Bad_Btn1 m:164 ->165 t:1393074177.66486->1393074352.91485  M:1393074177.67453 :175.25
2014.02.22 14:02:57.682 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.22 14:02:57.685 0: HMLAN_Send:  HMLAN1 S:S59B107D5 stat:  00 t:00000000 d:01 r:59B107D5 m:A5 A258 B3B3B3 193A9A 004A
2014.02.22 14:02:58.293 0: HMLAN_Parse: HMLAN1 R:R59B107D5 stat:0008 t:00000000 d:FF r:7FFF     m:A5 A258 B3B3B3 193A9A 004A
2014.02.22 14:02:58.296 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 14:03:07.683 5: CUL_HM VentilControler.Bad_Btn1 virtualTC use fail-timer
2014.02.22 14:03:07.749 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.22 14:05:52.953 5: CUL_HM VentilControler.Bad_Btn1 m:165 ->166 t:1393074352.91485->1393074513.91486  M:1393074352.95287 :161
2014.02.22 14:05:52.961 0: HMLAN_Send:  HMLAN1 S:S59B3B483 stat:  00 t:00000000 d:01 r:59B3B483 m:A6 A258 B3B3B3 193A9A 004A
2014.02.22 14:05:53.569 0: HMLAN_Parse: HMLAN1 R:R59B3B483 stat:0008 t:00000000 d:FF r:7FFF     m:A6 A258 B3B3B3 193A9A 004A
2014.02.22 14:05:53.571 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 14:06:02.962 5: CUL_HM VentilControler.Bad_Btn1 virtualTC use fail-timer
2014.02.22 14:06:03.026 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.22 14:08:33.926 5: CUL_HM VentilControler.Bad_Btn1 m:166 ->167 t:1393074513.91486->1393074660.41485  M:1393074513.92533 :146.5
2014.02.22 14:08:33.933 0: HMLAN_Send:  HMLAN1 S:S59B6294F stat:  00 t:00000000 d:01 r:59B6294F m:A7 A258 B3B3B3 193A9A 004A
2014.02.22 14:08:34.540 0: HMLAN_Parse: HMLAN1 R:R59B6294F stat:0008 t:00000000 d:FF r:7FFF     m:A7 A258 B3B3B3 193A9A 004A
2014.02.22 14:08:34.544 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.22 14:08:43.935 5: CUL_HM VentilControler.Bad_Btn1 virtualTC use fail-timer
2014.02.22 14:08:44.003 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_4
2014.02.22 14:08:52.019 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 26


das entscheidende ist das senden des ersten events nach shutdown. obwohl keine antwort des vd registriert ist, wird das reading valveCtrl=ok gesendet. hast du eine erklärung dafür?

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

martinp876

Hi Frank,

an der erklärung für ack arbeite ich - ich denke es ist zu erklären.
Ja, die Berechnung war so gedacht - macht Perl erst den Vergleich und dann die Addition? Klammern ist in jeden Fall ok

Stören tut mich die  verspätete Message. Sicher kennst du mittlerweile alle timer - aber hiernoch einmal in langorm - mit verkürzten logs ;)
die Timerwerte sind direkt in die systemzeit umzurechnen. Ich habe die vorderen Zahle mit t.. ersetzt, da sie sich gerade nicht - besser lesbar.

Normalfall
14:00:52.15  CUL_HM B3B3B3 m:163 ->164 t:t..4051.91->t..4177.66  M:t..4052.15 :125.75
14:00:52.16  HMLAN_Send: ..
14:02:57.67  CUL_HM B3B3B3 m:164 ->165 t:t..4177.66->t..4352.91  M:t..4177.67 :175.25
14:02:57.68  HMLAN_Send:..
14:05:52.95  CUL_HM B3B3B3 m:165 ->166 t:t..4352.91->t..4513.91  M:t..4352.95 :161
14:05:52.96  HMLAN_Send:..
14:08:33.92  CUL_HM B3B3B3 m:166 ->167 t:t..4513.91->t..4660.41  M:t..4513.92 :146.5
14:08:33.93  HMLAN_Send:..

M: ist immer die aktuelle Zeit - und somit umformatiert die Zeit am Anfang der Zeile
14:00:52.15 => M:t..4052.15
14:02:57.67 => M:t..4177.67

Die Zeit am Ende ist die Wartezeit bis zum naechsten Aufruf - aber nur beim ersten mal - nicht nach restart!
14:00:52.15   + 125.75 = 14:02:57.67
14:02:57.67   + 175.25 = 14:02:57.67
14:05:52.95
Damit kann man den Ablauf einfach nachrechnen.
Nach dem Restart kommt ein extra aufruf, der ist ok

13:55:53.99  CUL_HM B3B3B3 m:161 ->162 t:t..3753.73->t..3908.48  M:t..3753.99 :154.75 ->13:58:27           
########### restart
13:57:49.31  CUL_HM B3B3B3 m:161 ->162 t:t..3753.73->t..3908.48  M:t..3869.31 :154.75  extra call   
13:58:31.66  CUL_HM B3B3B3 m:162 ->163 t:t..3908.48->t..4048.73  M:t..3911.66 :140.25
hier haben wir eine Delay von 4 sec.
Das kann nicht gut gehen.

wenn es nicht okmarkiert wäre wuerde es funktionieren, klar soweit.

Am Ok arbeite ich einmal.. hat sicher mit den Readings des Ventils zu tun... sollte keine Problem sein, das zu reparieren
Melde mich wieder
Gruss Martin

martinp876

das muesste eingentlich die Lösung sein:
      if ($vc eq 'restart'){
        CUL_HM_UpdtReadSingle($hash,"valveCtrl","unknown",1);
        my $pn = CUL_HM_id2Name($hashVd->{id});
        $hashVd->{ackT} = ReadingsTimestamp($pn, "ValvePosition", "");
      }

Nach dem restart den valvePosition timestamp 'merken' um später davon abgeleitet eine Veraenderung feststellen zu können.

Gruss Martin

frank

hallo martin,

Zitat von: martinp876 am 22 Februar 2014, 17:21:57
das muesste eingentlich die Lösung sein:
      if ($vc eq 'restart'){
        CUL_HM_UpdtReadSingle($hash,"valveCtrl","unknown",1);
        my $pn = CUL_HM_id2Name($hashVd->{id});
        $hashVd->{ackT} = ReadingsTimestamp($pn, "ValvePosition", "");
      }

Nach dem restart den valvePosition timestamp 'merken' um später davon abgeleitet eine Veraenderung feststellen zu können.

leider nicht. habe gerade nach restart 2 vd mit gleichem verhalten gehabt. erstes meeting ohne antwort, aber ok gemeldet. dann eingeschlafen.

diesen code nach cul_hm_updateConfig verschieben, bringt ja auch keine änderung. oder?

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

martinp876

Hi Frank,

muss ich noch einmal nachsehen.
Idee des OK ist, dass der Zeitstempel einer VD antwort 'neu' sein muss, sich also vom vorigen unterscheiden muss. Wenn dem so ist hat der VD offensichtlich geantwortet.
Eigentlich muesste ackT immer vor dem Senden gesetzt und in CUL_HM_valvePosTmr dann auf Aenderung geprueft werden. Das habe ich aus Performancegruenden 'verschoben' da es hinrechend sein muesste.

Ablauf sollte jetzt sein
1) valveCtrl == restart => setze ackT auf timestamp von ValvePosition, senden keine message msgSent = 0 oder nicht vorhanden.
2) CUL_HM_valvePosTmr wird nicht pruefen, da keine message gesendet wurde
3) CUL_HM_valvePosUpdt sendet message
4) VD antwortet - oder eben nicht
5) CUL_HM_valvePosTmr prueft ackT gegen den timestamp von  ValvePosition und setzt ok/miss entsprechend.

Die erste Message des VD mit ValvePosition darf also erst bei 4) kommen, nicht vorher.
Baue einmal einen Log in
      $hashVd->{miss} = 0;
    }
    Log 1,"setting acktime $hashVd->{ackT} - $ackTime";
    $hashVd->{msgSent} = 0;
    $hashVd->{ackT} = $ackTime;
um zu sehen, wann der wert geaendert wird.
Moeglich waere, dass $hashVd->{msgSent} ein Problem bereitet und in
      if ($vc eq 'restart'){
        CUL_HM_UpdtReadSingle($hash,"valveCtrl","unknown",1);
        my $pn = CUL_HM_id2Name($hashVd->{id});
        $hashVd->{ackT} = ReadingsTimestamp($pn, "ValvePosition", "");
        $hashVd->{msgSent} = 0;
      }
gesetzt werden muss. Haette ich nicht erwartet, ist aber sauberer

Gruss Martin

frank

hallo martin,

ZitatDie erste Message des VD mit ValvePosition darf also erst bei 4) kommen, nicht vorher.

das problem ist doch, dass gar keine message vom vd kommt, und trotzdem "ok" gesetzt wird! jedenfalls gibt es in fhem.log keinen eintrag einer antwort.

ich füge den log erst einmal ohne msgSent=0 ein. oder gleich beides?

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

martinp876

Hallo Frank,
Zitatdas problem ist doch, dass gar keine message vom vd kommt, und trotzdem "ok" gesetzt wird
das ist meine 'andere' Befuerchtung. 'ok' kann nur kommen, wenn der timestamp des Readings in der zwischenzeit veraendert wird - entweder durch eine message (die nicht kommt) oder durch das setzen des Readings aus dem statefile NACH dem restart. Das sollte aber nicht sein, da wir auf 'init_done' warten - und dann sollte init eben done sein, incl aller readings rueckschreiben. Der Log wird es hoffentlich zeigen.

Zitatich füge den log erst einmal ohne msgSent=0 ein. oder gleich beides?
beides - msgSent=0 sollte immer rein, ist sauberer und wird sehr selten ausgefuehrt

Gruss Martin

frank

hallo martin,

sorry, fehlalarm!   :)

der code war gar nicht eingefügt. da hatte ich wohl von den vielen versionen die falsche 10_cul_hm eingespielt.  ???

        my $pn = CUL_HM_id2Name($hashVd->{id});
        $hashVd->{ackT} = ReadingsTimestamp($pn, "ValvePosition", "");


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

frank

hallo martin,

es gibt noch etwas feintuningbedarf bei der ansteuerung der vd über vtc. im eventlog habe ich 2 mal folgenden fall bemerkt.

2014-06-05_03:08:24 hmlan1 SND L:0B N:DA F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:08:24 cul868 RCV L:0B N:DA F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:08:24 hmlan1 RCV L:0E N:DA F:82 CMD:02 SRC:Ventil.Bad DST:VentilControler.Bad 010100003E (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-62) (,WAKEMEUP,RPTEN)
2014-06-05_03:08:25 cul868 RCV L:09 N:DA F:A1 CMD:12 SRC:ccu DST:Ventil.Bad  (HAVE_DATA) (,WAKEUP,BIDI,RPTEN)
2014-06-05_03:08:25 hmlan1 RCV L:0A N:DA F:80 CMD:02 SRC:Ventil.Bad DST:ccu 00 (ACK) (,RPTEN)
2014-06-05_03:08:25 hmlan1 RCV L:0E N:DA F:82 CMD:02 SRC:Ventil.Bad DST:VentilControler.Bad 010100003E (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-62) (,WAKEMEUP,RPTEN)
2014-06-05_03:08:47 Ventil.Bad set_0 %
2014-06-05_03:08:47 VentilControler.Bad_Btn1 valvePosTC: 0 %
2014-06-05_03:08:47 VentilControler.Bad_Btn1 ValveAdjust:0 %

2014-06-05_03:11:23 hmlan1 SND L:0B N:DB F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0300 (ClimateEvent CMD:0x03 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:11:23 cul868 RCV L:0B N:DB F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0300 (ClimateEvent CMD:0x03 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:11:26 Ventil.Bad ResndFail
2014-06-05_03:11:26 Ventil.Bad MISSING ACK
2014-06-05_03:11:33 VentilControler.Bad_Btn1 valveCtrl: miss_1

2014-06-05_03:16:37 hmlan1 SND L:0B N:DD F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:16:37 cul868 RCV L:0B N:DD F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:16:39 Ventil.Bad ResndFail
2014-06-05_03:16:39 Ventil.Bad MISSING ACK
2014-06-05_03:16:47 VentilControler.Bad_Btn1 valveCtrl: miss_3

2014-06-05_03:18:53 hmlan1 SND L:0B N:DE F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:18:53 cul868 RCV L:0B N:DE F:A2 CMD:58 SRC:VentilControler.Bad DST:Ventil.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-05_03:18:53 hmlan1 RCV L:0E N:DE F:82 CMD:02 SRC:Ventil.Bad DST:VentilControler.Bad 010100003E (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-62) (,WAKEMEUP,RPTEN)
2014-06-05_03:18:53 Ventil.Bad 0
2014-06-05_03:18:54 cul868 RCV L:09 N:DE F:A1 CMD:12 SRC:ccu DST:Ventil.Bad  (HAVE_DATA) (,WAKEUP,BIDI,RPTEN)
2014-06-05_03:18:54 cul868 RCV L:0A N:DE F:80 CMD:02 SRC:Ventil.Bad DST:ccu 00 (ACK) (,RPTEN)
2014-06-05_03:18:54 hmlan1 RCV L:0E N:DE F:82 CMD:02 SRC:Ventil.Bad DST:VentilControler.Bad 010100003D (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-61) (,WAKEMEUP,RPTEN)
2014-06-05_03:18:54 hmusb1 RCV L:0A N:DE F:80 CMD:02 SRC:Ventil.Bad DST:ccu 00 (ACK) (,RPTEN)
2014-06-05_03:18:54 hmusb1 RCV L:0E N:DE F:82 CMD:02 SRC:Ventil.Bad DST:VentilControler.Bad 010100003D (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-61) (,WAKEMEUP,RPTEN)
2014-06-05_03:19:03 VentilControler.Bad_Btn1 valveCtrl: ok

################################################################################################

2014-06-07_11:41:16 hmlan1 SND L:0B N:43 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:41:16 hmusb1 RCV L:0B N:43 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:41:16 hmlan1 RCV L:0E N:43 F:82 CMD:02 SRC:Ventil.Kueche DST:VentilControler.Kueche 0101000032 (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-50) (,WAKEMEUP,RPTEN)
2014-06-07_11:41:16 hmusb1 RCV L:09 N:43 F:A1 CMD:12 SRC:ccu DST:Ventil.Kueche  (HAVE_DATA) (,WAKEUP,BIDI,RPTEN)
2014-06-07_11:41:17 cul868 RCV L:0A N:43 F:80 CMD:02 SRC:Ventil.Kueche DST:ccu 00 (ACK) (,RPTEN)
2014-06-07_11:41:17 cul868 RCV L:0E N:43 F:82 CMD:02 SRC:Ventil.Kueche DST:VentilControler.Kueche 0101000033 (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-51) (,WAKEMEUP,RPTEN)

2014-06-07_11:43:44 Ventil.Kueche set_0 %
2014-06-07_11:43:44 VentilControler.Kueche_Btn1 valvePosTC: 0 %
2014-06-07_11:43:44 VentilControler.Kueche_Btn1 ValveAdjust:0 %
2014-06-07_11:43:47 hmlan1 SND L:0B N:44 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0300 (ClimateEvent CMD:0x03 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:43:47 hmusb1 RCV L:0B N:44 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0300 (ClimateEvent CMD:0x03 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:43:50 Ventil.Kueche ResndFail
2014-06-07_11:43:50 Ventil.Kueche MISSING ACK
2014-06-07_11:43:57 VentilControler.Kueche_Btn1 valveCtrl: miss_1

2014-06-07_11:48:06 hmlan1 SND L:0B N:46 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:48:06 hmusb1 RCV L:0B N:46 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:48:07 Ventil.Kueche ResndFail
2014-06-07_11:48:07 Ventil.Kueche MISSING ACK
2014-06-07_11:48:16 VentilControler.Kueche_Btn1 valveCtrl: miss_3

2014-06-07_11:50:58 hmlan1 SND L:0B N:47 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:50:58 hmusb1 RCV L:0B N:47 F:A2 CMD:58 SRC:VentilControler.Kueche DST:Ventil.Kueche 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014-06-07_11:50:58 cul868 RCV L:0E N:47 F:82 CMD:02 SRC:Ventil.Kueche DST:VentilControler.Kueche 0101000031 (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:-49) (,WAKEMEUP,RPTEN)
2014-06-07_11:50:58 Ventil.Kueche 0
2014-06-07_11:50:59 hmusb1 RCV L:09 N:47 F:A1 CMD:12 SRC:ccu DST:Ventil.Kueche  (HAVE_DATA) (,WAKEUP,BIDI,RPTEN)
2014-06-07_11:50:59 cul868 RCV L:0A N:47 F:80 CMD:02 SRC:Ventil.Kueche DST:ccu 00 (ACK) (,RPTEN)
2014-06-07_11:51:08 VentilControler.Kueche_Btn1 valveCtrl: ok


wenn valvePosCmd=0x03 ist und ein miss entsteht (miss_1), dann wird nicht wie geplant beim nächst möglichen meeting gesendet, sondern erst beim darauffolgenden. es wird also einmal ausgelassen, obwohl ein miss erfolgt ist. da meine einstellung attr msgReduce=2 ist, wird im normalfall 2 mal ausgelassen.
dieser umstand wird im folgenden code nicht berücksichtigt.
      elsif(  ($vc ne "init" && $hashVd->{msgRed} <= $hashVd->{miss})
            || $hash->{helper}{virtTC} ne "00") {


ausserdem sollte man, meine ich, bei einem misslungenen valvePosCmd=0x03, dieses wiederholen, bis es erfolgreich empfangen wurde. würde man dieses tun, wäre die elsif-bedingung wohl wieder ok.

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

martinp876

da hast du recht.

Probiere Zeile 4325
        CUL_HM_SndCmd($defs{$hashVd->{nDev}},sprintf("%02X%s%s%s"
                                             ,$msgCnt
                                             ,$hashVd->{cmd}
                                             ,$hash->{helper}{virtTC}
                                             ,$hashVd->{val}));
      }
      InternalTimer($tn+10,"CUL_HM_valvePosTmr","valveTmr:$vId",0);
      $hashVd->{virtTC} = $hash->{helper}{virtTC};#save for repeat
      $hash->{helper}{virtTC} = "00";
    }

und 4377
  else {
    $hash->{helper}{virtTC} = $hashVd->{virtTC} if($hash->{helper}{virtTC} eq "00" && $hashVd->{virtTC});
    $hashVd->{miss}++;
  }

frank

hat leider noch gar nichts bewirkt. muss wohl an eine andere stelle. mal schauen.
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

martinp876

Hi Frank,

ich habe etwas verbessert und kurz getestst. Es klappt bei mir, dass man ein getConfig absetzen kann und dies automatisch abgeholt wird.
Bisher habe ich kein Problem gesehen, dass es Probleme mit den messagenummern geben könnte (und der Berechnung der wakeup time). Das zu testen dauert aber... also musst du nich die Augen aufhalten

Gruss Martin