FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: wkarl am 02 Januar 2014, 10:39:55

Titel: TC emulieren
Beitrag von: wkarl am 02 Januar 2014, 10:39:55
Hallo Martin,

am Ende der session ( CCC Conference in diesem Thread http://forum.fhem.de/index.php/topic,17959.0.html (http://forum.fhem.de/index.php/topic,17959.0.html))wird erwähnt, dass die Kollegen einen TC emulieren können und damit einen VD kontrollieren. Diese Möglichkeit ist in diesem Forum schon ein paar mal diskutiert worden. Es fehlten aber immer die Informationen bzgl der Kommunikation TC-VD.
Ich vermute mal aus dem source code (https://www.homegear.eu/index.php/Downloads) der Kollegen könnte man diese Informationen gewinnen. Aktuell bin ich zwar mit der fhem-Lösung zufrieden wie sie funktioniert, aber wer weiß wofür man dies noch gebrauchen könnte.

ciao walter
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 02 Januar 2014, 12:12:28
Hallo Walter,

ich werden einmal suche gehen. Interessant ist es in jedem Fall. Falls es mit präzisem timing zu tun hat könnte es schwer werden. Aber erst einmal suchen....

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 02 Januar 2014, 12:47:51
es gibt auch ein wiki von homegear. auf folgender seite wird das timing beschrieben:
https://www.homegear.eu/index.php/BidCoS_Packet_-_General_Information

ZitatTiming

The HomeMatic devices sleep most of the time to reduce battery consumption. Some devices (e. g. the HM-CC-VD) wake up at specific intervals waiting only for about 250 ms for an incoming packet. There is no packet sent when these devices wake up, so it is important to know, when this happens. Here is a C# code snippet of how the cycle length is being calculated:
int CalculateCycleLength(int DeviceAddress, int MessageCounter)
{
    const int MinimalCycleLength = 480;
    int Result = (((DeviceAddress << 8) | MessageCounter) * 1103515245 + 12345) >> 16;
    return (Result & 0xFF) + MinimalCycleLength;
}

The rusulting value is the sleeping time in units of 250 ms.
Synchronizing devices

Master and slave devices like a HM-CC-TC and a HM-CC-VD need to be synchronized in order for the master device to send its packet at the same moment the slave device wakes up and goes into Rx mode. The initial synchronization is done by pairing the devices. When the last pairing packet is received the normal duty cycle with its sleeping times starts. After that the slave device continuously synchronizes itself to the packets of the master device.
What happens when cyclic packets are not transmitted

When only one cyclic packet is not transmitted, the destination device waits for about 250 ms for an incoming packet and then goes to sleep again. After that the normal duty cycle continues.

When for whatever reason a master device (e. g. a HM-CC-TC) is not transmitting cyclic packets at all (maybe because the battery is empty), the destination (or slave) device (e. g. a HM-CC-VD) wakes up for six more duty cycles. With each duty cycle the device stays 500ms longer in Rx mode, so the durations in Rx mode for the six cycles are:

    250 ms
    750 ms
    1250 ms
    1750 ms
    2250 ms
    2750 ms

After that the duty cycle on the slave device does not continue. But the device wakes up for some minutes once in a while (once per hour?) and listens for incoming packets. This causes a very high battery usage.
What happens when a device is not reachable

When a slave device is not answering, the master device continues to send every duty cycle until the slave device answers again.

irgenwie habe ich dort noch kein inhaltsverzeichnis gefunden. deshalb bin ich bisher von link zu link gesurft. ansonsten "bidcos" in die suchmaske eingeben.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 03 Januar 2014, 18:03:55
hi,

interessante berechnung. Der wertebereich stimmt - aber die Kalkulation stimmt nicht mit der meines TC/VD überein.
Muss wohl mal im Code nachlesen

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 03 Januar 2014, 18:47:00
hallo martin,

die funktion wird in "HomeMaticDevice.cpp" (rootverzeichnis des entpackten sourcecodes, downloadlink: http://homegear.eu/downloads/homegear_0.2.5-1.tar.gz) definiert, und in "HM-CC-TC.cpp" (verzeichnis "Devices") ein paar mal aufgerufen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 03 Januar 2014, 20:11:10
Hi Frank,

danke, habe meinen Fehler erkannt. Muss auf long runden, dann stimmts

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 04 Januar 2014, 13:20:46
Hi,

die Version 4558 sollte jetzt einen TC emulieren können - mit einschränkungen
Beispiel
define vtc CUL_HM 221133
set vtc virtual 1
rename vtc_Btn1 vtc1
set vtc1 peerChan 0 vd single set
set vtc1 valvePos 70
# anlernen am VD drücken


- Kommando valvePos hat ein virtual channel wenn er mit einem VD gepeert ist. Also darauf achten, dass nach dem peeren gespeichert wird, damit das Attribut peerIds gesichert ist.
- Die Einstellung startet aktuell nicht automatisch nach einem system restart
- mehrere VDs mit einem TC-simu-controll-channel habe ich nicht probiert
- Anlernen ist beim starten einmalig notwendig. Danach ist der VD bereit, sich auf das neue Zeitraster zu adaptieren
- ob sich der VD auch fängt, wenn man nicht "anlernt" habe ich nicht getesten, muss probiert werden
- bei den Einstellungen muss man natürlich Geduld haben, der VD kann nur alle ~2,5min beschrieben werden.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 05 Januar 2014, 12:29:43
Hi,

ich habe diesen Thread mit großem Interesse gelesen und gedacht, dass müsste sich doch auch für das Emulieren eines Fensterkontaktes nutzen lassen. Leider bekomme ich jetzt immer vom HM-CC-RT-DN ein NACK als Antwort auf ein set virtualKitchenDoor postEvent open.
Geht das überhaupt?
Kurzer abriss meines Scenarios, ich versuche einen MAX Fensterkontakt als Fensterkontakt für mein CC-RT-DN zu verwenden.
Was ich bisher erfolgreich umgesetzt habe ist das Absenken der Temperatur per manuellem modus sobald das Fenster geöffnet ist, ich finde aber die andere Lösung eleganter :D

Hier noch kurz meine Config:

define virSC CUL_HM 221133
attr virSC autoReadReg 4_reqStatus
attr virSC expert 2_full
attr virSC model virtual_1
attr virSC peerIDs
attr virSC subType virtual

define virtualKitchenDoor CUL_HM 22113301
attr virtualKitchenDoor dummy 1
attr virtualKitchenDoor expert
attr virtualKitchenDoor group Virtual
attr virtualKitchenDoor model virtual_1
attr virtualKitchenDoor peerIDs 21BC8703,
attr virtualKitchenDoor room 1_HEIZUNG
attr virtualKitchenDoor webCmd press short:press long



Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 05 Januar 2014, 18:55:44
Hallo Achim,

ja, sollte funktionieren.
der RT muss burst eingeschaltet haben (register burstRx im device).

Ich habe es noch etwas getunt.
Ich habe den Ablauf jetzt so gestaltet, dass beim postEvent der RT geweckt wird und dann der Kommand-stack abgearbeitet wird. Der "event" ist hinten angestellt (normal sollte die Queue eh leer sein).

Zu beachten ist beim RT (wie bei allen wakeup devices) msgRepeat - ein repeat kann ganz schon lange dauern, da es bis zum nächsten wakeup warten muss!

Die getunte Version ist jetzt in SVN und morgen im update

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 06 Januar 2014, 13:49:40
Hallo Martin,

ich habe es jetzt nochmal mit der aktuellsten Version ausprobiert. Mir meldet das HM-CC-RT-DN immer noch NACK im state.
Folgende Info sehe ich in der Übersicht zum _WindowRec


trigLast
virtualKitchenDoor:open
2014-01-06 13:41:22


In den peerIDs zum _WindowRec ist der virtuelle Fenster sensor drin.

Danke und Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 06 Januar 2014, 14:40:41
Hallo Achim,

wie steht nun das Register burstRx im RT?
gepeert ist der Button auch im WindowsRec - korrekt?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 06 Januar 2014, 15:15:57
Hi Martin,

ja den hatte ich bereits zum Manuellen umstellen aktiv geschaltet.
gepeert ist es mit dem WindowRec, ja.

hier nochmal meine aktuelle Config. Mit dem webCmd press ... mache ich noch  nichts, denn momentan sende ich das Signal noch von "hand" per set virtualKitchenDoor postEvent open

hier die entscheidende Konfiguration


# HM-CFG-USB
define HM_CFG_USB HMLAN localhost:1234
attr HM_CFG_USB hmId 8D0C2D
attr HM_CFG_USB hmLanQlen 1_min

define Flur.Thermostat CUL_HM 21BC87
attr Flur.Thermostat .devInfo 00FFFF
attr Flur.Thermostat .stc 59
attr Flur.Thermostat IODev HM_CFG_USB
attr Flur.Thermostat actCycle 000:10
attr Flur.Thermostat actStatus alive
attr Flur.Thermostat autoReadReg 4_reqStatus
attr Flur.Thermostat building Haus
attr Flur.Thermostat expert 2_full
attr Flur.Thermostat firmware 1.0
attr Flur.Thermostat group Flur
attr Flur.Thermostat icon hc_wht_regler
attr Flur.Thermostat model HM-CC-RT-DN
attr Flur.Thermostat peerIDs
attr Flur.Thermostat room Hall_Living
attr Flur.Thermostat serialNr KEQ0576971
attr Flur.Thermostat subType thermostat

define Flur.Thermostat_WindowRec CUL_HM 21BC8703
attr Flur.Thermostat_WindowRec expert 1
attr Flur.Thermostat_WindowRec model HM-CC-RT-DN
attr Flur.Thermostat_WindowRec peerIDs 00000000,22113301,
attr Flur.Thermostat_WindowRec room Hall_Living
attr Flur.Thermostat_WindowRec stateFormat last:trigLast

[... noch ein paar andere configs ...]

define virSC CUL_HM 221133
attr virSC autoReadReg 4_reqStatus
attr virSC expert 2_full
attr virSC model virtual_1
attr virSC peerIDs
attr virSC subType virtual
attr virSC webCmd press short:press long

define virtualKitchenDoor CUL_HM 22113301
attr virtualKitchenDoor dummy 1
attr virtualKitchenDoor expert 1
attr virtualKitchenDoor group Virtual
attr virtualKitchenDoor model virtual_1
attr virtualKitchenDoor peerIDs 21BC8703,
attr virtualKitchenDoor room 1_HEIZUNG
attr virtualKitchenDoor webCmd press short:press long
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 07 Januar 2014, 17:25:54
Hi Achim,

die Frage war, was IM RT steht.
Schicke ein
list Flur.Thermostat_WindowRec
und
list Flur.Thermostat

und zeichne die rohmessages auf vom Ablauf

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 07 Januar 2014, 21:57:58
Hi Martin,

danke für den Hinweis.

vom Thermostat_WindowRec:

Internals:
   DEF        21BC8703
   NAME       Flur.Thermostat_WindowRec
   NR         53
   STATE      last:virtualKitchenDoor:open
   TYPE       CUL_HM
   chanNo     03
   device     Flur.Thermostat
   peerList   virtualKitchenDoor,
   CHANGETIME:
   Helper:
     Dblog:
       Triglast:
         Mydblog:
           TIME       1389126172.13053
           VALUE      virtualKitchenDoor:open
       Trig_virtualkitchendoor:
         Mydblog:
           TIME       1389126172.13053
           VALUE      open
   Readings:
     2014-01-03 17:25:53   CommandAccepted yes
     2014-01-05 00:33:11   R-sign          on
     2014-01-05 22:36:43   R-virtualKitchenDoor-shCtValLo 50
     2014-01-05 22:36:43   R-virtualKitchenDoor-winOpnTemp 12 C
     2014-01-06 13:36:46   peerList        virtualKitchenDoor,
     2014-01-07 21:22:52   trigLast        virtualKitchenDoor:open
     2014-01-05 00:58:22   trig_virSC1     open
     2014-01-07 21:22:52   trig_virtualKitchenDoor open
     2014-01-05 23:22:03   winOpnBoost     off
     2014-01-05 23:22:03   winOpnDetFall   1.4 K
     2014-01-05 23:22:03   winOpnMode      on
     2014-01-05 23:22:03   winOpnPeriod    15 min
     2014-01-05 23:22:03   winOpnTemp-int  12 C
   Helper:
     Role:
       chn        1
Attributes:
   expert     1
   model      HM-CC-RT-DN
   peerIDs    00000000,22113301,
   room       Hall_Living
   stateFormat last:trigLast


und nun vom Thermostat


Internals:
   CHANGED   
   DEF        21BC87
   HM_CFG_USB_MSGCNT 812
   HM_CFG_USB_RAWMSG E21BC87,0000,03BA80E2,FF,FFC9,34A00221BC8722113304109F0D09AC1100
   HM_CFG_USB_RSSI -55
   HM_CFG_USB_TIME 2014-01-07 21:22:53
   IODev      HM_CFG_USB
   LASTInputDev HM_CFG_USB
   MSGCNT     812
   NAME       Flur.Thermostat
   NR         41
   STATE      NACK
   TYPE       CUL_HM
   channel_01 Flur.Thermostat_Weather
   channel_02 Flur.Thermostat_Climate
   channel_03 Flur.Thermostat_WindowRec
   channel_04 Flur.Thermostat_Clima
   channel_05 Flur.Thermostat_ClimaTeam
   channel_06 Flur.Thermostat_remote
   lastMsg    No:34 - t:02 s:21BC87 d:221133 04109F0D09AC1100
   protCmdDel 0
   protEvt_AESok 20 last_at:2014-01-07 19:50:49
   protLastRcv 2014-01-07 21:22:53
   protNack   3 last_at:2014-01-07 21:22:53
   protResnd  2 last_at:2014-01-06 20:32:12
   protSnd    70 last_at:2014-01-07 21:22:52
   protState  CMDs_done_Errors:1
   rssi_at_HM_CFG_USB avg:-52.61 min:-69 max:-46 lst:-55 cnt:812
   CHANGETIME:
   Helper:
     Dblog:
       Activity:
         Mydblog:
           TIME       1389011806.30856
           VALUE      alive
       Actuator:
         Mydblog:
           TIME       1389126146.25149
           VALUE      60
       Battery:
         Mydblog:
           TIME       1389126146.25149
           VALUE      ok
       Batterylevel:
         Mydblog:
           TIME       1389126146.25149
           VALUE      3 V
       Desired-temp:
         Mydblog:
           TIME       1389126146.25149
           VALUE      21
       Measured-temp:
         Mydblog:
           TIME       1389126146.25149
           VALUE      22.1
       State:
         Mydblog:
           TIME       1389126173.57368
           VALUE      NACK
       Time-request:
         Mydblog:
           TIME       1389060156.85015
           VALUE      -
   Readings:
     2014-01-06 13:36:46   Activity        alive
     2014-01-07 21:22:53   CommandAccepted no
     2014-01-03 18:09:25   PairedTo        0x8D0C2D
     2013-12-22 00:11:06   R-backOnTime    10 s
     2014-01-03 18:04:11   R-btnLock       unlock
     2014-01-03 18:09:25   R-burstRx       on
     2014-01-03 18:04:11   R-cyclicInfoMsg on
     2014-01-03 18:04:11   R-cyclicInfoMsgDis 0
     2014-01-03 18:04:11   R-globalBtnLock off
     2014-01-03 18:04:11   R-localResDis   off
     2013-12-22 00:11:06   R-lowBatLimitRT 2.1 V
     2014-01-03 18:04:11   R-modusBtnLock  off
     2014-01-03 18:04:11   R-pairCentral   0x8D0C2D
     2014-01-03 18:09:25   RegL_00:        01:01 02:01 09:01 0A:8D 0B:0C 0C:2D 0E:0A 0F:00  11:00 12:15 16:00 18:00 19:00 1A:00 00:00
     2014-01-07 21:22:26   actuator        60 %
     2014-01-07 19:50:49   aesKeyNbr       FF
     2014-01-07 21:22:26   battery         ok
     2014-01-07 21:22:26   batteryLevel    3 V
     2014-01-07 21:22:26   desired-temp    21
     2014-01-07 21:22:26   measured-temp   22.1
     2014-01-07 21:22:53   state           NACK
     2014-01-07 03:02:36   time-request    -
   Helper:
     cSnd       118D0C2D21BC87810418
     mId        0095
     rxType     140
     Io:
       nextSend   1389126173.6946
     Prt:
       awake      0
       bErr       0
       sProc      0
       sleeping   1
       Rspwait:
     Q:
       qReqConf   
       qReqStat   
     Role:
       dev        1
     Rpt:
       IO         HM_CFG_USB
       flg        A
       ts         1389126173.67695
       ack:
         HASH(0x28904b8)
         34800222113321BC8700
     Rssi:
       At_hm_cfg_usb:
         avg        -52.6169950738916
         cnt        812
         lst        -55
         max        -46
         min        -69
Attributes:
   IODev      HM_CFG_USB
   actCycle   000:10
   actStatus  alive
   autoReadReg 4_reqStatus
   building   Haus
   expert     2_full
   firmware   1.0
   group      Flur
   icon       hc_wht_regler
   model      HM-CC-RT-DN
   peerIDs   
   room       Hall_Living
   serialNr   KEQ0576971
   subType    thermostat
   webCmd     getConfig:burstXmit


noch eine frage wie kann ich denn die rohmessages aufzeichnen?
Dazu hab ich leider keine Doku gefunden.

Danke und Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 08 Januar 2014, 16:26:14
Hallo Achim,

rohmessages mit
http://forum.fhem.de/index.php/topic,16563.msg107848.html#msg107848

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 08 Januar 2014, 20:47:42
Hi Martin,

ok habe jetzt folgendes aufgezeichnet beim schicken des events:


2014.01.08 20:44:00.261 0: HMLAN_Parse: HM_CFG_USB R:E21BC87   stat:0000 t:0396D652 d:FF r:FFC7     m:7D 8610 21BC87 000000 0AA8DE0F341C
2014.01.08 20:44:08.224 0: HMLAN_Send:  HM_CFG_USB I:K
2014.01.08 20:44:08.393 0: HMLAN_Parse: HM_CFG_USB V:03C3 sNo:JEQ0700361 d:1EBBC9 O:8D0C2D t:03970523 IDcnt:0002
2014.01.08 20:44:33.233 0: HMLAN_Send:  HM_CFG_USB I:K
2014.01.08 20:44:33.254 0: HMLAN_Parse: HM_CFG_USB V:03C3 sNo:JEQ0700361 d:1EBBC9 O:8D0C2D t:039766D3 IDcnt:0002
2014.01.08 20:44:33.732 0: HMLAN_Send:  HM_CFG_USB S:S73628905 stat:  00 t:00000000 d:01 r:73628905 m:58 B112 8D0C2D 21BC87
2014.01.08 20:44:34.278 0: HMLAN_Parse: HM_CFG_USB R:R73628905 stat:0001 t:03976AC3 d:FF r:FFC7     m:58 8002 21BC87 8D0C2D 00
2014.01.08 20:44:34.351 0: HMLAN_Send:  HM_CFG_USB S:+21BC87,00,01,
2014.01.08 20:44:34.353 0: HMLAN_Send:  HM_CFG_USB S:S73628B36 stat:  00 t:00000000 d:01 r:73628B36 m:59 A441 221133 21BC87 0109C8
2014.01.08 20:44:34.694 0: HMLAN_Parse: HM_CFG_USB R:E21BC87   stat:0000 t:03976C59 d:FF r:FFC7     m:59 A002 21BC87 221133 041CC219F1CFF900
2014.01.08 20:44:34.757 0: HMLAN_Send:  HM_CFG_USB S:+21BC87,00,01,
2014.01.08 20:44:34.759 0: HMLAN_Send:  HM_CFG_USB S:S73628CD3 stat:  00 t:00000000 d:01 r:73628CD3 m:59 8002 221133 21BC87 00
2014.01.08 20:44:34.822 0: HMLAN_Parse: HM_CFG_USB R:R73628CD3 stat:0002 t:00000000 d:FF r:7FFF     m:59 8002 221133 21BC87 00
2014.01.08 20:44:34.982 0: HMLAN_Parse: HM_CFG_USB R:E21BC87   stat:0000 t:03976D7F d:FF r:FFC7     m:59 8002 21BC87 221133 80B71E4B41
2014.01.08 20:44:35.238 0: HMLAN_Parse: HM_CFG_USB R:R73628B36 stat:0008 t:00000000 d:FF r:7FFF     m:59 A441 221133 21BC87 0109C8
2014.01.08 20:44:35.240 0: HMLAN_Parse: HM_CFG_USB no ACK from 21BC87
2014.01.08 20:44:35.270 0: HMLAN_Parse: HM_CFG_USB R:R73628B36 stat:0008 t:00000000 d:FF r:7FFF     m:59 A441 221133 21BC87 0109C8
2014.01.08 20:44:35.272 0: HMLAN_Parse: HM_CFG_USB no ACK from 21BC87
2014.01.08 20:44:35.302 0: HMLAN_Parse: HM_CFG_USB R:E21BC87   stat:0000 t:03976E91 d:FF r:FFC7     m:59 A002 21BC87 221133 04074A035D576500
2014.01.08 20:44:35.325 0: HMLAN_Send:  HM_CFG_USB S:S73628F32 stat:  00 t:00000000 d:01 r:73628F32 m:59 8002 221133 21BC87 00
2014.01.08 20:44:36.934 0: HMLAN_Parse: HM_CFG_USB R:R73628F32 stat:0002 t:00000000 d:FF r:7FFF     m:59 8002 221133 21BC87 00


danke und Gruß, Achiim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 09 Januar 2014, 07:30:14
Hi Achim,

ich denke, bei deinem TC ist AES aktiviert. Du solltest es abschalten - oder wird es benötig?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 09 Januar 2014, 21:12:52
Nun bin ich maximal verwirrt  :o
Ich versuche mit einem "virtuellen" TC zu erstellen welcher beim "echten" MAX Türkontakt das signal weiter zu geben.
Daher verstehe ich nicht das jetzt AES genutzt wird, bzw. alle anderen steuer-signale wie setDesiredTemp setzen funktionieren.

Danke und Gruß, Achim


Titel: Antw:TC emulieren
Beitrag von: martinp876 am 10 Januar 2014, 08:56:27
Hi Achim,

nun, dein TC antwortet entsprechend.
Du kannst einmal ein list aller 3 Kanäle senden, dann vergleiche ich es einmal  mit meinen Sample
Setze expert auf 2

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 10 Januar 2014, 22:46:28
Hi Martin,

nachdem ich in einem Anderen Thread gesehen habe wofür die daten in dem log stehen, gehe ich mal davon aus dass du in folgendem Schnipsel

2014.01.08 20:44:33.254 0: HMLAN_Parse: HM_CFG_USB V:03C3 sNo:JEQ0700361 d:1EBBC9 O:8D0C2D t:039766D3 IDcnt:0002
2014.01.08 20:44:33.732 0: HMLAN_Send:  HM_CFG_USB S:S73628905 stat:  00 t:00000000 d:01 r:73628905 m:58 B112 8D0C2D 21BC87
2014.01.08 20:44:34.278 0: HMLAN_Parse: HM_CFG_USB R:R73628905 stat:0001 t:03976AC3 d:FF r:FFC7     m:58 8002 21BC87 8D0C2D 00
2014.01.08 20:44:34.351 0: HMLAN_Send:  HM_CFG_USB S:+21BC87,00,01,
2014.01.08 20:44:34.353 0: HMLAN_Send:  HM_CFG_USB S:S73628B36 stat:  00 t:00000000 d:01 r:73628B36 m:59 A441 221133 21BC87 0109C8
2014.01.08 20:44:34.694 0: HMLAN_Parse: HM_CFG_USB R:E21BC87   stat:0000 t:03976C59 d:FF r:FFC7     m:59 A002 21BC87 221133 041CC219F1CFF900
2014.01.08 20:44:34.757 0: HMLAN_Send:  HM_CFG_USB S:+21BC87,00,01,


von Zeile

2014.01.08 20:44:33.732 0: HMLAN_Send:  HM_CFG_USB S:S73628905 stat:  00 t:00000000 d:01 r:73628905 m:58 B112 8D0C2D 21BC87

bzw.

2014.01.08 20:44:34.353 0: HMLAN_Send:  HM_CFG_USB S:S73628B36 stat:  00 t:00000000 d:01 r:73628B36 m:59 A441 221133 21BC87 0109C8

ausgehst.
Das device 221133 ist das virtuelle, und 21BC87 ist das tatsächliche Thermostat.

Nun ist es aber so, dass ich ja gar keinen TC habe sondern die Signale von einem Max Fensterkontakt weiter reichen möchte.
Sprich ich habe einen virtuellen TC (221133) welcher das Open event sendet.
Also muss fhem das d:01 setzen, wie kann ich das denn jetzt ausschalten?

Danke und Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Januar 2014, 09:27:31
Hi Achim,

ok, hatte den Kontext verloren.
Du hat einen RT und einen MAX fensterkontakt. Emulieren willst du keinen TC sondern einen HM-fensterkontakt. Mit TC hat es wohl nichts zu tun.
Da es eh über die Zentrale geht kannst du einfach die desired-temp setzen - ok, beim Rückschalten hast du ein Problem mit dem alten Wert.

Ist das jetzt korrekt verstanden?
Dann prüfe, dass der virtuellen SC  (HMId 221133) mit dem RT_WindowRec gepeert ist. Ausserdem sollte der RT (device) das register burstRx gesetzt haben

habe es gerade einmal getestet - wenn ich deinen Aufbau jetzt nicht missverstanden habe  sollte es passen...

Die Antwort deines Device deutet an, dass etwas im RT nicht stimmt - ich vermute, dass du nicht korrekt gepeert hast.
zeige doch einmal eine HMInfo Auswertung
set hm configChech
set hm register -f Flur.Thermostat

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 11 Januar 2014, 22:46:19
Hi Martin,

genau jetzt richtig verstanden. Sorry das ich die Kürzel durcheinander gebracht habe :)

Das RT hat burstRx gesetzt, damit stelle ich momentan "manuell" die Temp.

Zitat
Die Antwort deines Device deutet an, dass etwas im RT nicht stimmt - ich vermute, dass du nicht korrekt gepeert hast.
Dann peer ich die nochmal neu.

Zitatzeige doch einmal eine HMInfo Auswertung
und hier schonmal die ausgabe vom set hm register:

No regs found for:

Flur.Thermostat type:thermostat -
list:peer register         :value
   0:      backOnTime       :10 s
   0:      btnLock          :unlock
   0:      burstRx          :on
   0:      cyclicInfoMsg    :on
   0:      cyclicInfoMsgDis :0
   0:      globalBtnLock    :off
   0:      localResDis      :off
   0:      lowBatLimitRT    :2.1 V
   0:      modusBtnLock     :off
   0:      pairCentral      :0x8D0C2D
                 
                 
Flur.Thermostat_Clima type:thermostat -
list:peer register         :value
   1:      sign             :off
   7:      boostPeriod      :5 min
   7:      boostPos         :80 %
   7:      btnNoBckLight    :off
   7:      dayTemp          :21 C
   7:      daylightSaveTime :on
   7:      decalcTime       :11:00
   7:      decalcWeekday    :Sat
   7:      modePrioManu     :all
   7:      modePrioParty    :all
   7:      nightTemp        :17 C
   7:      noMinMax4Manu    :off
   7:      regAdaptive      :on
   7:      reguExtI         :15
   7:      reguExtP         :30
   7:      reguExtPstart    :30
   7:      reguIntI         :17
   7:      reguIntP         :32
   7:      reguIntPstart    :36
   7:      showInfo         :time
   7:      showWeekday      :off
   7:      tempMax          :30.5 C
   7:      tempMin          :4.5 C
   7:      tempOffset       :0.0K
   7:      valveErrPos      :15 %
   7:      valveMaxPos      :100 %
   7:      valveOffsetRt    :0 %
   7:      winOpnBoost      :off
   7:      winOpnDetFall    :1.4 K
   7:      winOpnMode       :on
   7:      winOpnPeriod     :15 min
   7:      winOpnTemp       :12 C
Temp set: Sat 05:00 17.0 C
Temp set: Sat 06:00 19.0 C
Temp set: Sat 24:00 21.0 C
Temp set: Sun 05:00 17.0 C
Temp set: Sun 06:00 19.0 C
Temp set: Sun 24:00 17.0 C
Temp set: Mon 05:00 17.0 C
Temp set: Mon 06:00 19.0 C
Temp set: Mon 09:00 21.0 C
Temp set: Mon 17:00 19.0 C
Temp set: Mon 24:00 17.0 C
Temp set: Tue 05:00 17.0 C
Temp set: Tue 06:00 19.0 C
Temp set: Tue 09:00 21.0 C
Temp set: Tue 17:00 19.0 C
Temp set: Tue 24:00 17.0 C
Temp set: Wed 05:00 17.0 C
Temp set: Wed 06:00 19.0 C
Temp set: Wed 09:00 21.0 C
Temp set: Wed 17:00 19.0 C
Temp set: Wed 24:00 17.0 C
Temp set: Thu 05:00 17.0 C
Temp set: Thu 06:00 19.0 C
Temp set: Thu 09:00 21.0 C
Temp set: Thu 17:00 19.0 C
Temp set: Thu 24:00 17.0 C
Temp set: Fri 05:00 17.0 C
Temp set: Fri 06:00 19.0 C
Temp set: Fri 09:00 21.0 C
Temp set: Fri 17:00 19.0 C
Temp set: Fri 22:00 21.0 C
Temp set: Fri 24:00 17.0 C
                 
                 
Flur.Thermostat_ClimaTeam type:thermostat -
list:peer register         :value
   1:      sign             :off
                 
                 
Flur.Thermostat_Climate type:thermostat -
list:peer register         :value
   1:      sign             :on
                 
                 
Flur.Thermostat_Weather type:thermostat -
list:peer register         :value
   1:      sign             :off
                 
                 
Flur.Thermostat_WindowRec type:thermostat -
list:peer register         :value
   1:      sign             :on
   7:virtualKitchenDoor winOpnTemp       :12 C
   7:virtualKitchenDoor winOpnTemp       :12 C
                                virtualKitchenDoor
                                sh
CtValLo                         50              50
Flur.Thermostat_remote type:thermostat -
list:peer register         :value
   1:      sign             :off


Danke und Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 12 Januar 2014, 11:57:32
Hallo Achim,

peering scheint ok.
virtualKitchenDoor hat die HMId 22113301 - korrekt?

alles andere beantwortet der RT auch?

seltsam.
winOpnMode sollte auf "off" gestellt werden, wenn der Fensterkontakt verwendet wird - sonst arbeitet der RT ggf intern dagegen. Ist aber nicht das Problem hier.

Kannst du noch einmal ent-peeren und neu peeren? so richtig komme ich nicht weiter.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 12 Januar 2014, 21:25:49
hallo martin,

ich konnte endlich die wundervolle implementierung der neuen vd-ansteuerung testen. die berechnung der wachzyclen scheint ja hervorragend zu klapen. nur meine kette aus software und hardware führt die aktionen auf dauer nicht zeitgetreu aus. spätstens nach einer guten stunde wird das wachfenster des vd nicht mehr getroffen.

wenn ich die funktion "sub CUL_HM_valvePosUpdt(@)" richtig verstehe, ruft sich die funktion über den "InternalTimer" immer selber auf, solange "valvePosTC" ungleich "off" ist. verzögerungen im ablauf werden somit ständig aufsummiert. eine synchronisation ist wohl nicht implementiert.

nach den ausführungen von homegear haben wir nur 6 zyclen, mit wachsendem wachfenster (250ms-2750ms), zeit, um wieder einen treffer zu landen. anschließend geht der vd auf valveErrPos und schläft ein. nach ca. 75 min wacht er auf, und wird von fhem wieder am leben gehalten.

vorschlag:
könnte man nicht den letzten erfolgreichen zeitpunkt ermitteln, abspeichern und als neue referenz nehmen? im moment wird dem InternalTimer ein undefeniertes "gettimeofday()" mit auf den weg gegeben. eine aktuelle verzögerung inklusive.
oder man speichert die beiden werte "gettimeofday()+$nextTimer", die man übergibt, und ermittelt beim nächsten durchlauf die aktuelle verzögerung, und kann sie elemimieren.
ich habe mal eine logausgabe mit der aktuellen zycluslänge in die funktion eingebaut. vom letzten erfolgreichen ansteuern bis zum ersten erfolglosen ansteuern ergeben sich bei mir verzögerungen von bis zu 4s, die zum einschlafen des vd führen.

desweiteren habe ich bemerkt, das jede änderung von valvePos ein neustart des messagezählers bedeutet, wodurch weitere probleme auftreten können.
bei einem realen tc läuft der zähler immer durch, ich habe einen vd mal in alufolie gewickelt und die kommunikation von vd und tc geloggt. obwohl der vd während 4 zyclen kein signal erhalten hat, gab es beim anschliessenden zyclus kein problem.
da die zyclen doch sehr unterschiedlich sind, und von der messagenummer abhängig sind, nehme ich an, dass der vd in seiner berechnung von einer kontinuierlichen erhöhung der messagenummer ausgeht. folglich bekommen wir probleme, wenn es während einer verzögerung zu einem messagezählerwechsel kommt. der vd kann das ja nicht vorhersehen.

zum heutigen abschluss noch einmal ein hinweis. ich bin immer noch der meinung, dass das erste climateEvent nach einem valvePos=off einen fehler im payload hat. es fehlt der cmd-anteil. statt 0x80 zb 0x0380.

2014-01-09_17:16:20 VentilControler.AZ_Btn1 ValveAdjust:stopped
2014-01-09_17:16:34 Ventil.AZ.Nord set_50 %
2014-01-09_17:16:34 Ventil.AZ.Nord ValveDesired: 50 %
2014-01-09_17:16:34 HMLAN1 SND L:0A N:02 F:A2 CMD:58 SRC:VentilControler.AZ DST:Ventil.AZ.Nord [b]80[/b] (ClimateEvent CMD:0x80) (,WAKEMEUP,BIDI,RPTEN)
2014-01-09_17:16:34 VentilControler.AZ_Btn1 ValveAdjust:50 %


bis die tage
frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 13 Januar 2014, 13:19:16
Hallo Frank

Zitatverzögerungen im ablauf werden somit ständig aufsummiert. eine synchronisation ist wohl nicht implementiert.
kann man so sehen. Ich erwarte es aber anders herum. Der TC sendet das kommando und legt fest, wann der VD zu erwachen hat - nicht anders herum. So gesehem muss die Zeit ab dem Sendezeitpunkt gerechnet werden.

Ein möglicher Fehler ist natürlich, dass der internal timer einfach zu spät kommt. Dann ist der Zeitpunkt verpasst und fertig.
Probiere einmal den folgenden code mit den Logs. Du brauchst nur einen der beiden - such ihn dir aus...

sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $vDevId = substr($vId,0,6);
  my $msgCnt = ($hash->{helper}{vd}{msgCnt} + 1)%255;
 
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;
  my $idl = $hash->{helper}{vd}{idl}+$msgCnt;
  my $lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
  my $hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
  my $nextTimer = (($lo+$hi)&0xff)/4 + 120;#original - instable
  my $name = $hash->{NAME};
  my $vp = ReadingsVal($name,"valvePosTC","15 %");
  $vp =~ s/ %//;
  $vp *=2.56;
  my $tn = gettimeofday();
  my $delta = int((gettimeofday() - $hash->{helper}{vd}{next})*1000);
  Log 1,"VD-timing ##### diff:$delta";
  Log 1,"VD-timing Critical ##### diff:$delta" if ($delta >100);
  foreach my $peer (sort(split(',',AttrVal($name,"peerIDs","")))) {
    next if (length($peer) != 8);
    $peer = substr($peer,0,6);
    CUL_HM_PushCmdStack($hash,sprintf("%02XA258%s%s%s%02X",$msgCnt,$vDevId
                                      ,$peer,$hash->{helper}{virtTC},$vp));
  }
  $hash->{helper}{vd}{next} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}


Problem ist, dass FHEM nicht exhtzeitfähing programmiert ist - jedefalls nicht auf dieser Ebene.
Sollte sich dies bewahrheiten kann man das Ganze auch über einen tochterprozess realisieren. Man hängt dann zwar immer noch am OS (das ist auch nicht für echtzeit ausgelegt aber besser) was die Lage verbessern sollte. Eine wirkungsvolle implementierung ist aber dann noch offen.

Zitatdesweiteren habe ich bemerkt, das jede änderung von valvePos ein neustart des messagezählers bedeutet, wodurch weitere probleme auftreten können.
warum sollte dies ein Problem sein? Der VD hat den Zähler zu nutzen, den der TC vorgibt. Es besteht kein Anspruch auf sequenzilität.

Der Bug beim "off" wird behoben

Lass mich deine tests zum Timing wissen...

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: anierbeck am 14 Januar 2014, 22:55:32
Hallo Martin,

Zitat
peering scheint ok.
virtualKitchenDoor hat die HMId 22113301 - korrekt?

alles andere beantwortet der RT auch?

Alles Korrekt verstanden

Zitat
seltsam.
winOpnMode sollte auf "off" gestellt werden, wenn der Fensterkontakt verwendet wird - sonst arbeitet der RT ggf intern dagegen. Ist aber nicht das Problem hier.

Kannst du noch einmal ent-peeren und neu peeren? so richtig komme ich nicht weiter.

Ich habe es jetzt nochmal neu peered, aber das hat mit diesem Thermostat nix gebracht. Mit einem
anderen hat es auf anhieb funktioniert :)

D.h. ich lasse jetzt meine "manual" Fenstersteuerung für das Flur Thermostat.


Danke und Gruß, Achim
Titel: Antw:TC emulieren
Beitrag von: frank am 18 Januar 2014, 01:29:10
hallo martin,

Zitat
warum sollte dies ein Problem sein? Der VD hat den Zähler zu nutzen, den der TC vorgibt. Es besteht kein Anspruch auf sequenzilität.

solange der vd das climateEvent empfängt, gibt es kein problem. die msgNbr kann beliebig sein. der vd berechnet aus der aktuellen msgNbr die nächste eventTime...

das problem entsteht, wenn der tc eine neue, nicht sequenziell folgende msgNbr übergibt und der vd diese nicht empfängt. woraus berechnet der vd nun die nächste eventTime? nach den beschreibungen von homegear und meinen beobachtungen wacht der vd noch bis zu 5 mal auf. jeweils mit verlängertem wachfenster. da die zeitabstände zwischen diesen 5 wachzuständen völlig unterschiedlich sind und ein realer tc immer sequentielle msgNbrs benutzt, macht es nur sinn, wenn der vd in diesem speziellen fall auch eine sequetielle msgNbr zur berechnung "annimmt".

die timingaufzeichnungen mit der bereitgestellten funktion sind im anhang. die grösste verzögerung beträgt knapp 7,5s.
mit folgender erweiterung läuft mein vd nun seit knapp 3 stunden ohne einzuschlafen! bisher maximal 3 aufeinander folgende climateEvents ohne antwort.

sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $vDevId = substr($vId,0,6);
  my $msgCnt = ($hash->{helper}{vd}{msgCnt} + 1)%255;
 
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;
  my $idl = $hash->{helper}{vd}{idl}+$msgCnt;
  my $lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
  my $hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
  my $nextTimer = (($lo+$hi)&0xff)/4 + 120;#original - instable
  my $name = $hash->{NAME};
  my $vp = ReadingsVal($name,"valvePosTC","15 %");
  $vp =~ s/ %//;
  $vp *=2.56;
  my $tn = gettimeofday();
  my $delta = int(($tn - $hash->{helper}{vd}{next})*1000);
  Log 1,"VD-timing ##### diff:$delta";
  Log 1,"VD-timing Critical ##### diff:$delta" if ($delta >100);
my $virtDevice = InternalVal($name,"device","");
my $virtDediceState = ReadingsVal($virtDevice,"state","");
Log 1,"VD-timing ##### CtrlState:$virtDediceState";
  foreach my $peer (sort(split(',',AttrVal($name,"peerIDs","")))) {
    next if (length($peer) != 8);
    $peer = substr($peer,0,6);
    CUL_HM_PushCmdStack($hash,sprintf("%02XA258%s%s%s%02X",$msgCnt,$vDevId
                                      ,$peer,$hash->{helper}{virtTC},$vp));
  }
if ($delta > 250) {
$hash->{helper}{vd}{next} += $nextTimer;
}
else {
$hash->{helper}{vd}{next} = $tn+$nextTimer;
}
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}


schöner wäre natürlich die nächste eventTime nicht in abhängigkeit von $delta zu berechnen, sondern vom state des virtuellen device (MISSING ACK). dazu fehlt mir aber noch das wissen und der überblick. vielleicht hast du ja eine idee!

noch zwei fragen zur timingaufzeichnung:
1. warum erscheint bei einem climateEvent mit erhaltener antwort trotzdem folgendes
HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2. es gibt gelungene ereignisse mit 2 antworten, aber einmal mit "dont process":
2014.01.17 08:41:47.470 1: VD-timing ##### diff:10
2014.01.17 08:41:47.477 0: HMLAN_Send:  HMLAN1 S:S9F260D96 stat:  00 t:00000000 d:01 r:9F260D96 m:38 A258 A1A1A1 1C4E25 0066
2014.01.17 08:41:47.659 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:22673636 d:FF r:FFAE     m:38 8202 1C4E25 A1A1A1 01011E0051
2014.01.17 08:41:47.995 0: HMLAN_Parse: HMLAN1 R:R9F260D96 stat:0008 t:00000000 d:FF r:7FFF     m:38 A258 A1A1A1 1C4E25 0066
2014.01.17 08:41:47.998 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.17 08:41:48.003 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:22673799 d:FF r:FFAE     m:38 8202 1C4E25 A1A1A1 01011E0051
2014.01.17 08:41:48.014 4: CUL_HM Ventil.AZ.Nord dup: dont process

und einanderes mal ohne "dont process".
2014.01.17 12:15:33.565 1: VD-timing ##### diff:16
2014.01.17 12:15:33.573 0: HMLAN_Send:  HMLAN1 S:S9FE9C386 stat:  00 t:00000000 d:01 r:9FE9C386 m:8C A258 A1A1A1 1C4E25 0066
2014.01.17 12:15:33.759 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:232AF2F0 d:FF r:FFAD     m:8C 8202 1C4E25 A1A1A1 01011E0051
2014.01.17 12:15:34.181 0: HMLAN_Parse: HMLAN1 R:R9FE9C386 stat:0008 t:00000000 d:FF r:7FFF     m:8C A258 A1A1A1 1C4E25 0066
2014.01.17 12:15:34.183 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.17 12:15:34.186 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:232AF453 d:FF r:FFAD     m:8C 8202 1C4E25 A1A1A1 01011E0053


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 18 Januar 2014, 12:24:42
Hi Frank

Zitatdas problem entsteht, wenn der tc eine neue, nicht sequenziell folgende msgNbr übergibt und der vd diese nicht empfängt.
nicht empfangen ist ein Problem - eine nicht sequenzielle nummer sollte kein Problem sein. Die Nummer ist immer in der hoheit des TC

Zitatworaus berechnet der vd nun die nächste eventTime? nach den beschreibungen von homegear und meinen beobachtungen wacht der vd noch bis zu 5 mal auf.
du bist schon bei der recovery aus dem ersten Fehler - nicht empfangen von messages. Da ist nichts implementiert. Da müsste man noch verbessern - klar.
Zitatrealer tc immer sequentielle msgNbrs benutzt,
so gesehen - ob das notwendig ist...
Zitatwenn der vd in diesem speziellen fall auch eine sequetielle msgNbr zur berechnung "annimmt".
möglich.

nun, der Erfolg gibt dir wohl recht

sollte man also nicht anstelle von
  if ($delta > 250) {
    $hash->{helper}{vd}{next} += $nextTimer;
  }
  else {
    $hash->{helper}{vd}{next} = $tn+$nextTimer;
  }

einfach
Zitat$hash->{helper}{vd}{next} += $nextTimer;
nutzen?

Zitatschöner wäre natürlich die nächste eventTime nicht in abhängigkeit von $delta zu berechnen, sondern vom state des virtuellen device (MISSING ACK).
verstehe ich gerade nicht. welches missing-ack - und warum nicht einfach weiterzählen?

ZitatHMLAN_Parse: HMLAN1 no ACK from 1C4E25
HMLAN hat eine Nachricht mit ACK-anforderung gesendet und will jetzt ein ach sehen. Es versteht aber nicht, dass die sendeadresse nicht die eigene ist und daher das ACK auch  nicht an seine Adresse kommt. Ein Problem, das keine weiteren Auswirkungen hat, ich aber noch nicht unterdrücken konnte. 

Zitatund einanderes mal ohne "dont process".
die message beim ersten Mal war duplicate, beim 2. nicht. Daher ist die eine als wiederholung verworfen worden, die 2. aber nicht.

ich werde einmal testen und dann einchecken

Gruss Martin

Titel: Antw:TC emulieren
Beitrag von: frank am 18 Januar 2014, 16:36:58
hallo martin,

in der datei mit den timing-aufzeichnungen gibt es eine sequenz von 36 erfolgreichen kommunikationen am stück (3:44:00-5:13:26). diese aufzeichnungen basieren auf dem eventTime-generator:

$hash->{helper}{vd}{next} = $tn+$nextTimer;

obwohl hier insgesammt ca. 876ms verzögerungen in die berechnungen eingehen, gibt es keine probleme. sogar grössere verzögerungen von 240ms und 186ms. darum bin ich einfach mal davon ausgegangen, dass sich der vd bei erfolgreichen kommunikationen neu synchronisiert. da das wachfenster angeblich nur 250ms ist, sollte die kommunikation ansonsten irgendwann abgebrochen sein.

wenn wir nun grundsätzlich die verzögerungen mit dem eventTime-generator:

$hash->{helper}{vd}{next} += $nextTimer;

eleminieren, der vd sich aber resynchronisiert, sind wir irgendwann zu früh dran.

Zitatwelches missing-ack - und warum nicht einfach weiterzählen?

daher würde ich gerne den ersten eventTime-generator nur in dem fall anwenden, wenn der vd keine antwort gesendet hat. das habe ich mit folgendem code:

my $virtDevice = InternalVal($name,"device","");
my $virtDeviceState = ReadingsVal($virtDevice,"state","");
Log 1,"VD-timing ##### CtrlState:$virtDeviceState";


auch sehr schön feststellen konnen, aber leider nur von der letzten kommunikation. wir bekommen ein "MISSING ACK" bei fehlender antwort, und ein "CMDs_processing..." wenn eine antwort kam.

"man hängt in der funktion irgendwie, wie zwischen zwei stühlen herum. es gibt informationen von der vorangegangenen kommunikation, die eventuell nicht geklappt hat, und damit auch auswirkungen auf die aktuell anstehende kommunikation hat. ebenso besteht durch eine ermittelte verzögerung der verdacht auf eine erneut misslingende kommunikation, auf die aber nicht mehr reagiert werden kann. aber man muss bereits auf die übernächste kommunikation reagieren."

somit wäre es optimal, wenn wir nach dem aufruf von "CUL_HM_ProcessCmdStack($hash)" auf eine antwort des vd prüfen, und vom ergebnis der prüfung abhängig die nächste eventTime generieren. entweder mit EventTime-generator eins oder zwei.
das würde aber bedeuten, man müsste einen moment warten, dann prüfen und die wartezeit mit in die berechnung der nächsten eventTime einbeziehen. hier fehlen mir die grundlagen, ob und wie man hier "warten" kann und/oder darf.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 19 Januar 2014, 09:01:17
Hi Frank,

warum nicht den timestamp prüfen. mit jedem ack auf ein setzen wird u.a. ValvePosition geändert. ReadingsTimestamp muss sich also geändert haben. Es müsste noch nicht einmal auf den Inhalt geprüft werden, nur auf gleichheit.

Allerdings verkompliziert sich das alles dann, da ein ACK für jeden VD auf der Liste geprüft werden muss und die Timer auseinander laufen. Faktisch muss man also für jeden VD einen timer laufen lassen, nicht für jeden TC. Oder den TC timer entsprechend berechnen...  dass er immer für den nächsten VD in seiner Liste aufgerüfen wird.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Januar 2014, 13:48:48
hallo martin,

Zitatwarum nicht den timestamp prüfen. mit jedem ack auf ein setzen wird u.a. ValvePosition geändert. ReadingsTimestamp muss sich also geändert haben. Es müsste noch nicht einmal auf den Inhalt geprüft werden, nur auf gleichheit.

klingt gut. auf $virtDeviceState zu prüfen bringt natürlich bei mehreren vd nichts. mehrere vd hatte ich bisher gar nicht auf der rechnung!

ZitatAllerdings verkompliziert sich das alles dann, da ein ACK für jeden VD auf der Liste geprüft werden muss und die Timer auseinander laufen. Faktisch muss man also für jeden VD einen timer laufen lassen, nicht für jeden TC. Oder den TC timer entsprechend berechnen...  dass er immer für den nächsten VD in seiner Liste aufgerüfen wird.

ich denke am unabhängigsten ist man, wenn jeder vd einen eigenen timer bekommt. die laufen dann wahrscheinlich nicht nur auseinander, sondern überholen sich sogar gegenseitig je nach toleranzen. batteriewechsel, neu anlernen und funkprobleme kommen auch noch dazu.

zum einfügen der prüfungssequenz ist mir doch noch etwas eingefallen. ich würde nun die funktion "CUL_HM_valvePosUpdt(@)" teilen.

die erste funktion "CUL_HM_valvePosUpdt(@)" löst das climateEvent aus, wie bisher. am ende ruft sie sich aber nicht selber über den internalTimer auf, sondern die zweite funktion "CUL_HM_valvePosTiming(@)" über einen festen internalTimer mit zb 10 sekunden.
hier wird dann die prüfung vorgenommen, das timing berechnet und zum schluss über einen weiteren internalTimer mit dann exaktem timing die erste funktion "CUL_HM_valvePosUpdt(@)" aufgerufen.


gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Januar 2014, 16:32:35
hallo martin,

ich habe noch folgendes in zeile 3111 eingefügt, direckt vor dem ersten aufruf von "CUL_HM_valvePosUpdt". sonst "überschlägt" sich die funktion!

      $hash->{helper}{vd}{next} = gettimeofday();


nur mal so am rande:
ich habe meinen test-vd jetzt mal über ein notify an einen tc gekoppelt. der folgt diesem jetzt tapfer. wer 5 oder mehr vd ansteuern will hat keine probleme mehr. oder negative und funktionale offsets. vielleicht auch nur in bestimmten situationen mitlaufen lassen. möglichkeiten ohne ende!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 19 Januar 2014, 17:12:08
Hallo Frank,

mal sehen, dass ich schritt halten kann.

Ich habe einmal alles implementiert wie ich es verstanden habe.
1) dass ein channel nur einen VD handeln kann ist noch nicht eingebaut - können wir später nachholen
2) welchen vorteil siehst du darin, die Funktion zu splitten? Performance gründe können es nicht sein, da es schlussendlich mehr performance kostet - ein weiterer Timer,... und bei vielen TCs viele Timer

mein VD läuft noch nicht rund... aber ich habe nicht viel getestet.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Januar 2014, 18:16:33
hallo martin,

Zitat2) welchen vorteil siehst du darin, die Funktion zu splitten? Performance gründe können es nicht sein, da es schlussendlich mehr performance kostet - ein weiterer Timer,... und bei vielen TCs viele Timer

als ich das geschrieben habe, hatte ich keine vorteile im splitten gesehen. ich hätte es nur mit meinem wissen so am einfachsten umsetzen können. da wir einen moment warten müssen, bis auch sicher alles verarbeitet ist, um prüfen zu können, ist diese idee entstanden.

nach einem neustart meiner fritzbox habe ich unglaubliche verzögerungen. siehe anhang.  mehrere male zwischen 120-130 sekunden!!!
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 19 Januar 2014, 18:26:26
files habe ich gerade eingecheckt.

nun - FHEM ist langsam - der neustart ist aufwendig. Auch sonst haben wir immer wieder kritisches timing - an vielen Stellen.

Du kannst apptime nutzen um einen überblock zu bekommen - beim Neustart ist es natürlich nicht von Anfang an dabei - aber du kannst es aus fhem.cfg starten, gleich zu beginn.

An der einen oder anderen Stelle ist der User schuld... macht also sinn, einmal zu schauen.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Januar 2014, 21:12:48
hallo martin,

deine prüfung ist leider an der falschen stelle. sie muss hier her:

  CUL_HM_ProcessCmdStack($hash);

  ##########   warten     ##########

  ##########   pruefung   ##########

  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);


an deiner stelle prüfst du zb m05 (msgNbr05), nimmst die verzögerung von m06 und veränderst die eventTime von m07.

sagen wir mal m05 war ok. m06 hat 3000ms verzögerung. dann wird diese verzögerung bei m07 auch nicht berücksichtigt und fällt unter den tisch. der vd schläft ein. selbst wenn keine weiteren verzögerungen dazukommen, kann der vd das nicht mehr reparieren!

sind es nur 1000ms schaft der vd es gerade noch beim 5. versuch:

2014.01.19 20:29:15.050 0: HMLAN_Send:  HMLAN1 S:SABFA786B stat:  00 t:00000000 d:01 r:ABFA786B m:1B A258 A1A1A1 1C4E25 00FA
2014.01.19 20:29:15.239 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:2F3C13D2 d:FF r:FFA6     m:1B 8202 1C4E25 A1A1A1 0101C40057
2014.01.19 20:29:15.678 0: HMLAN_Parse: HMLAN1 R:RABFA786B stat:0008 t:00000000 d:FF r:7FFF     m:1B A258 A1A1A1 1C4E25 00FA
2014.01.19 20:29:15.681 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 20:32:06.654 3: VD-timing Critical ##### diff:1108
2014.01.19 20:32:06.660 0: HMLAN_Send:  HMLAN1 S:SABFD16C5 stat:  00 t:00000000 d:01 r:ABFD16C5 m:1C A258 A1A1A1 1C4E25 00FA
2014.01.19 20:32:07.267 0: HMLAN_Parse: HMLAN1 R:RABFD16C5 stat:0008 t:00000000 d:FF r:7FFF     m:1C A258 A1A1A1 1C4E25 00FA
2014.01.19 20:32:07.270 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 20:34:42.671 0: HMLAN_Send:  HMLAN1 S:SABFF7830 stat:  00 t:00000000 d:01 r:ABFF7830 m:1D A258 A1A1A1 1C4E25 00FA
2014.01.19 20:34:43.279 0: HMLAN_Parse: HMLAN1 R:RABFF7830 stat:0008 t:00000000 d:FF r:7FFF     m:1D A258 A1A1A1 1C4E25 00FA
2014.01.19 20:34:43.282 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 20:37:04.182 0: HMLAN_Send:  HMLAN1 S:SAC01A0F7 stat:  00 t:00000000 d:01 r:AC01A0F7 m:1E A258 A1A1A1 1C4E25 00FA
2014.01.19 20:37:04.789 0: HMLAN_Parse: HMLAN1 R:RAC01A0F7 stat:0008 t:00000000 d:FF r:7FFF     m:1E A258 A1A1A1 1C4E25 00FA
2014.01.19 20:37:04.792 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 20:39:11.192 0: HMLAN_Send:  HMLAN1 S:SAC039119 stat:  00 t:00000000 d:01 r:AC039119 m:1F A258 A1A1A1 1C4E25 00FA
2014.01.19 20:39:11.799 0: HMLAN_Parse: HMLAN1 R:RAC039119 stat:0008 t:00000000 d:FF r:7FFF     m:1F A258 A1A1A1 1C4E25 00FA
2014.01.19 20:39:11.802 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 20:42:07.967 0: HMLAN_Send:  HMLAN1 S:SAC06439E stat:  00 t:00000000 d:01 r:AC06439E m:20 A258 A1A1A1 1C4E25 00FA
2014.01.19 20:42:08.291 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:2F47DF71 d:FF r:FFB2     m:20 8202 1C4E25 A1A1A1 0101C4004B
2014.01.19 20:42:09.147 0: HMLAN_Parse: HMLAN1 R:RAC06439E stat:0008 t:00000000 d:FF r:7FFF     m:20 A258 A1A1A1 1C4E25 00FA
2014.01.19 20:42:09.150 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25


an der stelle wo du es tust, müsstest du die verzögerung speichern und beim nächsten mal berücksichtigen, damit sie nicht unter den tisch fällt.

aber in jedem fall wird ein kostbarer umlauf verschenkt.

darum meine idee mit der gesplitteten funktion!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Januar 2014, 21:48:48
hallo martin,

wie schon vorausgesagt, kann die kommunikation nicht am leben gehalten werden, wenn der msgCounter ständig zurückgesetzt wird:

2014.01.19 21:14:01.038 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:15:59.960 0: HMLAN_Send:  HMLAN1 S:SAC254519 stat:  00 t:00000000 d:01 r:AC254519 m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:16:00.141 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:2F66E1F8 d:FF r:FFB2     m:02 8202 1C4E25 A1A1A1 0101C4004E
2014.01.19 21:16:00.571 0: HMLAN_Parse: HMLAN1 R:RAC254519 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:16:00.573 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:16:21.915 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:18:27.863 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:18:27.877 3: VD-timing Critical ##### diff:923
2014.01.19 21:18:27.885 0: HMLAN_Send:  HMLAN1 S:SAC2786EE stat:  00 t:00000000 d:01 r:AC2786EE m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:18:28.494 0: HMLAN_Parse: HMLAN1 R:RAC2786EE stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:18:28.497 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:20:54.896 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.01.19 21:20:54.898 0: HMLAN_Send:  HMLAN1 S:SAC29C531 stat:  00 t:00000000 d:01 r:AC29C531 m:03 A258 A1A1A1 1C4E25 00FA
2014.01.19 21:20:55.505 0: HMLAN_Parse: HMLAN1 R:RAC29C531 stat:0008 t:00000000 d:FF r:7FFF     m:03 A258 A1A1A1 1C4E25 00FA
2014.01.19 21:20:55.508 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:21:23.637 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:23:07.408 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.01.19 21:23:07.411 0: HMLAN_Send:  HMLAN1 S:SAC2BCAD1 stat:  00 t:00000000 d:01 r:AC2BCAD1 m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:23:08.019 0: HMLAN_Parse: HMLAN1 R:RAC2BCAD1 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:23:08.022 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:24:05.123 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:25:34.418 0: HMLAN_Send:  HMLAN1 S:SAC2E0913 stat:  00 t:00000000 d:01 r:AC2E0913 m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:25:35.026 0: HMLAN_Parse: HMLAN1 R:RAC2E0913 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:25:35.030 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:26:32.336 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:28:01.679 3: VD-timing Critical ##### diff:266
2014.01.19 21:28:01.689 0: HMLAN_Send:  HMLAN1 S:SAC304859 stat:  00 t:00000000 d:01 r:AC304859 m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:28:02.368 0: HMLAN_Parse: HMLAN1 R:RAC304859 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:28:02.372 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:28:44.635 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98
2014.01.19 21:30:28.696 0: HMLAN_Send:  HMLAN1 S:SAC328699 stat:  00 t:00000000 d:01 r:AC328699 m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:30:29.306 0: HMLAN_Parse: HMLAN1 R:RAC328699 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 A1A1A1 1C4E25 03FA
2014.01.19 21:30:29.313 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.01.19 21:31:46.649 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98


nach dem letzten, (6.) fehlversuch ist der vd eingeschlafen.
mit durchlaufendem zähler hat er eben noch 1008ms verzögerung im 5. versuch geschafft. nun schafft er nicht mal 923ms. die zusätzlichen 266ms müssten eigentlich durch die prüfung herausgefiltert worden sein.

bitte die zähler durchlaufen lassen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Januar 2014, 11:33:10
Hallo Frank,

Zitatbitte die zähler durchlaufen lassen.
tun sie doch - oder?
nach einem restart leider nicht

warum kommt bei dir so oft 02?
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Januar 2014, 12:01:11
moin martin,

bei jedem setzen von valvePos wird der zähler zurückgesetzt. beginnt immer bei m02. einmal kommt das neue set etwas später, dann zählt er bis m03. siehe letzter beitrag.

2014.01.19 21:14:01.038 2: CUL_HM set VentilControler.AZ_Btn1 valvePos 98


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Januar 2014, 12:20:05
danke - setzen hatte ich nicht kontrolliert...
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Januar 2014, 14:45:09
hallo martin,

einen vd kann man auf 100% setzen:

2014-01-20_13:40:02 HMLAN1 RCV L:0B N:C1 F:A2 CMD:58 SRC:Thermostat.Kueche DST:Ventil.Kueche 00FF (ClimateEvent CMD:0x00 ValvePos:255) (,WAKEMEUP,BIDI,RPTEN)
2014-01-20_13:40:02 Ventil.Kueche set_100 %
2014-01-20_13:40:02 Ventil.Kueche ValveDesired: 100 %


wenn ich den virtuellen tc auf 100 setzen möchte, liefert mein notify folgendes:

2014.01.20 13:30:17.619 3: set_valvePos_notify return value: only number <= 100  or 'off' allowed


manuelles setzen über webfrontend möchte auch keine 100 setzen. obwohl die fehlermeldung doch "<=100" sagt.

ausserdem wird nach einem erfolgreichen absetzen von "set valvePos" im webfrontend die auswahlliste der set befehle seltsam neu gefüllt. ("leer",?,parameter,requires). erst ein sehr verzögertes neuladen der seite bringt die richtige auswahl zurück.

die readings scheinen sich auch nicht selbständig zu aktualisieren (detailansicht channel).

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Januar 2014, 15:26:44
Hi Frank,

gut getestet... das mit 100 wird erledigt. Version 4700

das mit den Kommandos und dem gelegentlichen nicht funktionieren des web-update ist mir unklar. Auch ob es etwas mit CUL_HM zu tun hat oder dem fhemweb...

Grus Maritn
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Januar 2014, 17:02:51
hallo martin,

soweit gute arbeit. zähler läuft jetzt durch, 100% wird sauber verarbeitet.

an der zeitnahen eleminierung der verzögerungen arbeitest du noch?
oder ist dir mein beitrag vom 19 Januar 2014, 21:12:48 durch die lappen gegangen?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Januar 2014, 20:01:46
Hi Frank,

ist mir durch die Lappen gegangen.

aber da ist eh noch ein fehler drin:
  else {
    $hash->{helper}{vd}{next} = $tn+$nextTimer;
  }
  $hash->{helper}{vd}{ackT} = $ackTime;
#  $hash->{helper}{vd}{next} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;

die Zeile ist zu viel....

Also verstanden habe ich:
der VD - so er ein ACK schickt ist im trott und syncht sich auf ggf. kleine delays auf. Somit sollte die Berechnung für diesen Fall stimmen.
Sollte der VD einen step verpasst haben (warum auch immer) errechnet er den nächsten "meetingpoint" aus seinen daten - also versuchen wir dies auch und errechnen die Zeit vom alten timer vorwärts. Machen wir im Prinzip - eben nur die Zeile war nicht gelöscht.

Ist dies also unser Problem oder habe ich etwas übersehen/nicht verstanden?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Januar 2014, 21:33:49
hallo martin,

Zitatder VD - so er ein ACK schickt ist im trott und syncht sich auf ggf. kleine delays auf. Somit sollte die Berechnung für diesen Fall stimmen.

richtig!

ZitatSollte der VD einen step verpasst haben (warum auch immer) errechnet er den nächsten "meetingpoint" aus seinen daten - also versuchen wir dies auch und errechnen die Zeit vom alten timer vorwärts. Machen wir im Prinzip - eben nur die Zeile war nicht gelöscht.

richtig!

ZitatIst dies also unser Problem...

nein!

Zitatoder habe ich etwas übersehen/nicht verstanden?

ja!!!!

stell dir vor, die letzten kommunikationen waren alle ok. keine verzögerungen.
jetzt kommen wir in die funktion und prüfen. die prüfung ergibt alles ok, weil die letzte kommunikation gut war.
aber oh schreck. auf dem weg von der letzten kommunikation zu dieser aktuellen, die gleich am ende der funktion auf den weg gebracht wird, ist eine verzögerung von 7777ms entstanden.
die prüfung war ok, darum wird die aktuelle verzögerung nicht herausgerechnet, und geht in die nächste eventTime bestimmung mit ein. der zeitpunkt des nächsten funktionsdurchlauf.

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

wir müssen in diesem funktionsdurchgang prüfen, ob die aktuell ermittelte verzögerung probleme gemacht hat oder nicht!

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


Zitatdeine prüfung ist leider an der falschen stelle. sie muss hier her:

Code: [Auswählen]

  CUL_HM_ProcessCmdStack($hash);

  ##########   warten     ##########

  ##########   pruefung   ##########

  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);



an deiner stelle prüfst du zb m05 (msgNbr05), nimmst die verzögerung von m06 und veränderst die eventTime von m07.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Januar 2014, 08:40:20
Hi Frank,

ok - bau ich ein - gerade im test, mit 2 timern wie von dir vorgeschlagem

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Januar 2014, 13:30:38
hallo martin,

kann es kaum erwarten!

wo du schon mal dabei bist, könntest du gleich noch mal ein neues feature einbauen.

meines wissens nach weiss fhem bisher nicht, wann und ob ein vd auf "valveErrorPos" steht. in der prüfungssequenz könnte man doch einen zähler einbauen, der bei jeder fehlenden antwort um 1 erhöht und bei erfolgter antwort auf 0 zurückgesetzt wird. sobald der zähler >=6 ist, müsste man das reading valvePosition=valveErrorPos setzen und im state eventuell den hinweis "15% ErrorPosition" anzeigen.
ein neues reading "missingCommunication" mit dem inhalt des zählers könnte auch gute hinweise auf die qualität der kommunikation geben.

diese routine wäre auch beim realen tc sinnvoll.

desweiteren wäre beim parentdevice des virtuellen tc der befehl "set clear [readings|msgEvents|register|rssi]" hilfreich, sowie die anzeige der rssi-werte. sollte einmal für jeden vd ein eigener channel existieren, müssten die protokoll- und rssidaten eventuel in den channelbereich verlegt werden.

nun noch zwei "merkwürdigkeiten" die mir in der 10_CUL_HM.pm aufgefallen sind.

1. das semikolon hinter der schliessenden if-klammer (zeile 3187):

      if (!$hash->{helper}{virtTC}){
        $hash->{helper}{vd}{next} = gettimeofday()
              if (!defined $hash->{helper}{vd}{next});
        $hash->{helper}{virtTC} = "03";
        CUL_HM_valvePosUpdt("valvePos:$dst$chn");
      };
      $hash->{helper}{virtTC} = "03";
      $state = "ValveAdjust:$vp %";


2. die variablendefinition ausserhalb der subdefinition (zeile 3505):

my $updtValveCnt = 0;
sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Januar 2014, 14:26:46
hallo martin,

V 4705 ist verfügbar

Zitatmeines wissens nach weiss fhem bisher nicht, wann und ob ein vd auf "valveErrorPos" steht.
bekommen wir auch nicht gesagt... Leider meldet der vd das nicht.

Zitatder bei jeder fehlenden antwort um 1 erhöht und bei erfolgter antwort auf 0 zurückgesetzt wird.
hm

Zitatsobald der zähler >=6 ist, müsste man das reading valvePosition=valveErrorPos setzen und im state eventuell den hinweis "15% ErrorPosition" anzeigen.
15% ist programmierbar - könnte ein anderer Wert sein.
das ist eine Mutmassung. Sicher ist nur, das FHEM nichts gehört hat. Sollte gleich sein für virtuellen und echten TC.


Zitatein neues reading "missingCommunication" mit dem inhalt des zählers könnte auch gute hinweise auf die qualität der kommunikation geben.
du könntest den actCycle auf 15 oder 20min setzen. der Prüft so etwas. Dann bekommst du dead - was in gewisser weise stimmt.

Zitatdiese routine wäre auch beim realen tc sinnvoll.
wenn, dann ja.
Allgemein habe ich etwas Probleme damit. Es müsste dann eigentlich die gesamte kommunikation überwacht werden, jeder sender mit jedem Empfänger... das ist einiges..

Zitatdesweiteren wäre beim parentdevice des virtuellen tc der befehl "set clear [readings|msgEvents|register|rssi]" hilfreich
ok
Zitatsowie die anzeige der rssi-werte. sollte einmal für jeden vd ein eigener channel existieren, müssten die protokoll- und rssidaten eventuel in den channelbereich verlegt werden.
wieso? Kann ein channel andere werte empfangen als sein device? ein channel sendet und empfängt nicht,hat auch keinen RSSI wert.
RSSI von virtuellen Devices... sind die des IODev... aber gut

Gruss Martin



Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Januar 2014, 17:07:30
da der controller anzeigen muss ob sein Sklave noch werkelt muss hier eine Anzeigen her... da hast du recht.

ich habe jetzt:
anzahl peers auf 1 beschränkt. beim setzen der valvePos wird es geprüft - das kommando ggf nicht akzeptiert.
der vtc bekommt ein Reading
valveCtrl [init|ok|lost]

lost habe ich - nach de

ist das ok? V4707 sollte dies berücksichtigen.

Gruss Martin

Titel: Antw:TC emulieren
Beitrag von: frank am 21 Januar 2014, 18:57:20
hallo martin,

hier überschlagen sich ja die ereignisse. jetzt komm ich gleich nicht mehr hinterher!

erst mal muss ich mit dir auf deine v4705 "virtuell anstossen". auch auf wkarl, der den entscheidenen hinweis gegeben hat. nicht zu vergessen die jungs von homegear mit ihrer unglaublichen eventTime-funktion.
ich habe ja den verdacht, dass sie die original firmware von vd und tc haben. bei gelegenheit wollte ich da noch mal anklingeln, ob da eventuell diesbezüglich was abzustauben ist. da wir hier im forum mittlerweile eigene firmware bauen, die deutlich besser ist als das original, könnte man auf einfache weise das original "aufpimpen". alles in allem hervorragende arbeit.

seit einer guten stunde bügelt der vtc mit v4705 alle kommunikationsprobleme augenblicklich weg. ich habe noch mal je einen delay-logger in die funktionen eingebaut, um genau zu testen. scheint alles so zu funktionieren, wie erhofft!
es scheint sogar so zu sein, dass der 10s-timer bereits diverse verzögerungen einsammelt, die dann später beim eventTime-timer keine auswirkungen mehr haben können. insgesamt also wesentlich stabiler! warum auch immer. sind timer so anfällig? dann sollten wir überlegen, den 10s-timer vielleicht noch deutlich zu erhöhen.

so jetzt zum neuen feature:

du hast natürlich recht, dass die info von 6 fehlgeschlagenen kommunikationen keine "gewissheit" über den tatsächlichen zustand des vd gibt.
doch bei einem virtuellen tc sollte diese ungewissheit vernachlässigbar sein, da der user zwingend für guten funkkontakt sorgen muss, um überhaupt ein nutzbares system zu bekommen.
beim realen tc sieht das etwas anders aus, da hier der tc in der regel besseren funkkontakt mit dem vd haben wird, als die zentrale mit beiden einzeln. auch wird der normale user hier nicht nach funkproblemen zwischen zentrale und device ausschau halten, solange die heizung die bude warm hält.

mit dem reading des zählerstandes wollte ich eigentlich die qualität der kommunikation beobachten. wenn alles "normal" bei mir läuft, gibt es ab und an nur ein unbeantwortetes climateEvent am stück, 2 selten, 3 fast nie, 4 und 5 erwarte ich eigentlich nicht mehr. es sei denn, meine fritzbox hat keine puste mehr. 6 sollten der vergangenheit angehören.

ZitatvalveCtrl [init|ok|lost]

lost habe ich - nach de

wenn du noch ein "warning" spendierst, vielleicht 4, finde ich das auch gut.

also auf zu v4707,
gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Januar 2014, 20:03:40
hallo martin,

    CUL_HM_UpdtReadSingle($hash,"valveCtrl","lost",1)
          if(   $hash->{helper}{vd}{miss} > 6
             && ReadingsVal($hash->{NAME},"valveCtrl","") ne "lost");


lost ist eigentlich schon bei 6 fehlversuchen. also ">=6".


ansonsten kannst du das attr msgRepeat default auf 0 setzen und eventuell sperren. macht in dieser anwendung keinen sinn und reduziert die funklast.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Januar 2014, 20:12:10
Hi Frank

Zitathier überschlagen sich ja die ereignisse. jetzt komm ich gleich nicht mehr hinterher!
du hast mich ja ganz schön getrieben ;) da muss ich auch einmal vorwärts kommen.

Zitatauch auf wkarl, der den entscheidenen hinweis gegeben hat. nicht zu vergessen die jungs von homegear mit ihrer unglaublichen eventTime-funktion.
ich habe ja den verdacht, dass sie die original firmware von vd und tc haben.
hm . ich wäre auf diese Formel nicht gekommen...

Zitatob da eventuell diesbezüglich was abzustauben ist....
ich habe leider nichts (ausser Fragen...)

Zitatich habe noch mal je einen delay-logger in die funktionen eingebaut, um genau zu testen
macht sinn - aber nur zum testen...
Zitat10s-timer bereits diverse verzögerungen einsammelt.
denkbar - das ist entkoppelt vom senden und readings setzen,...

Zitatsind timer so anfällig?
wie mans nimmt - sehr. Konzeptbedingt
Zitatdann sollten wir überlegen, den 10s-timer vielleicht noch deutlich zu erhöhen.
an der dauer liegt es wohl nicht...

Zitatwenn du noch ein "warning" spendierst, vielleicht 4, finde ich das auch gut
wie meinst du das? Bei fehler- count= 4 ein warning?
hm kann man machen. oder bei 1?

Zitatlost ist eigentlich schon bei 6 fehlversuchen. also ">=6".
kann ich machen. Ist 6 irgendwie vorgegeben?
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Januar 2014, 20:26:43
hallo martin,

0,1,2,3 => ok
4,5 => warning
6,7,.... => lost

ZitatIst 6 irgendwie vorgegeben?

ZitatWhen for whatever reason a master device (e. g. a HM-CC-TC) is not transmitting cyclic packets at all (maybe because the battery is empty), the destination (or slave) device (e. g. a HM-CC-VD) wakes up for six more duty cycles. With each duty cycle the device stays 500ms longer in Rx mode, so the durations in Rx mode for the six cycles are:

    250 ms
    750 ms
    1250 ms
    1750 ms
    2250 ms
    2750 ms

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 22 Januar 2014, 07:37:38
Hallo Frank,

Es scheint mir übrigens, dass er nach (sehr) langer wartezeit auf dauer-an ist.

Das mit der "4" verstehe ich nicht - ist doch sehr zufällig gewählt. Entweder ganz oder garnicht...?
ich habe jetzt
0 => ok
1,2,3,4,5 => miss_1,miss_2,...
6,7,.... => lost
wenn es Probleme gibt sollte man sie alle sehen können, meine ich.
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 22 Januar 2014, 12:27:21
hallo martin,

ZitatEs scheint mir übrigens, dass er nach (sehr) langer wartezeit auf dauer-an ist.

wenn du meinst, dass der vd, nachdem er die kommunikation eingestellt hat (lost), nach weiteren ca 75 min auf "dauer-an" geht, dann hast du gut beobachtet. wenn der tc in seinem üblichen trott weiter funkt, können die beiden spätestens nach 75 min wieder normal kommunizieren.

ZitatDas mit der "4" verstehe ich nicht - ist doch sehr zufällig gewählt.

richtig. ich dachte du wolltest "sparen"!

ZitatEntweder ganz oder garnicht...?

ein mann, ein wort!

Zitatich habe jetzt
0 => ok
1,2,3,4,5 => miss_1,miss_2,...
6,7,.... => lost
wenn es Probleme gibt sollte man sie alle sehen können, meine ich.

perfekt!
war eigentlich von anfang an mein plan.


ich habe jetzt mal eine in meinem haus installierte vd/tc-kombi entpeert und eine notify/vtc-kombi zwischen geschaltet. hat wohl hervorragend funktioniert. der test-vd funktionierte mit eigenem vtc weiterhin sehr gut.

mein eigentliches ziel ist eine heizungsregelung mit "variablem referenzraum". der raum mit der aktuell grössten heizanforderung beeinflusst über Tsoll/Tist die vorlauftemperatur. das macht nur sinn, wenn im aktuellen referenzraum alle heizkörperventile auf 100% sind. wechselt der referenzraum, müssen die ventile wieder auf automatik gehen, also vom entsprechenden tc gesteurt werden.
meine bisherige realisierung über das register mdTempValve im tc funktioniert leider nur vom prinzip, ist in der realität aber eigentlich nicht zu gebrauchen. nun der ansatz über das vtc.

der reale tc ohne gepeerten vd sendet wohl weiterhin brav die entsprechenden actuator-sollwerte. es gibt nur das problem, dass der tc stündlich meckert (beep) und im display das antennensymbol binkt mit angezeigtem "v". ich muss dich wohl schon mal langsam darauf einstimmen, einen virtuellen vd zu entwerfen, damit meine frau keinen nervenzusammenbruch vom beepen bekommt!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 22 Januar 2014, 12:34:24
Zitatperfekt!
war eigentlich von anfang an mein plan.
irgendwann hast du mich so weit...
Die readings sollten begrenzt sein, hoffe ich...

das File habe ich gerade eingecheckt. V4711

funktioniert ein virtuellen VD nicht? dachte das hatten wir schon - aber muss noch einmal probieren...

Titel: Antw:TC emulieren
Beitrag von: frank am 24 Januar 2014, 01:56:38
hallo martin,

ich habe jetzt 4 vd mit 4 vtc gepeert. das funktioniert soweit sehr gut.

dann habe ich zusätzlich 4 vvd definiert und mit den entsprechenden tc gepeert. als beispiel folgenden log:

2014.01.24 00:30:48.656 0: HMLAN_Parse: HMLAN1 R:E1936FF   stat:0000 t:44B36A31 d:FF r:FFB6     m:9B A258 1936FF D3D3D3 0083
2014.01.24 00:30:48.892 0: HMLAN_Send:  HMLAN1 S:SC17110F9 stat:  00 t:00000000 d:01 r:C17110F9 m:9B 8002 D3D3D3 1936FF 0101660000
2014.01.24 00:30:49.658 0: HMLAN_Parse: HMLAN1 R:RC17110F9 stat:0002 t:00000000 d:FF r:7FFF     m:9B 8002 D3D3D3 1936FF 0101660000


das sieht ja erst einmal gut aus. der reale tc sendet das climateEvent und mein virtueller vd die antwort. dem tc scheint das nicht zu genügen. das antennensymbol blinkt, ein kleines v ist sichtbar und im tc-menü unter VST (valvestatus) sieht man eine 1, für einen gepeerten vd, aber kein wert, sondern "-- -- %".

bei einem tc ist manchmal ruhe, dann steht auch ein wert im VST-menü.

wahrscheinlich gibt es hier wieder ein timing problem. die antwort kommt eventuell zu spät. bei homegear hatte ich gelesen, dass der tc exakt 20s nach dem weatherEvent wach wird, um dann gegebenenfalls anfragen abzuarbeiten.

ansonsten ist mir aufgefallen, dass der reale vd mit "8202" antwortet, unser vvd aber mit "8002". testweise hatte ich das mal umgestellt, aber keine besserung bemerkt.

wenn ich den obigen log betrachte, gehe ich mal davon aus, dass der hmlan ein sendemodul und ein empfangsmodul besitzt. das was er selber sendet, empfängt er 766ms später. somit kann man eventuell annehmen, dass der tc sein ClimateEvent ebenfalls 766ms vor dem empfang am hmlan sendet. das wiederum würde dann bedeuten, dass unsere antwort auf den tc 1002ms später erfolgt. wahrscheinlich viel zu spät, wenn man bedenkt, dass das fenster beim vd gerade mal 250ms hat.
alles nur spekulationen, aber fakt ist, der tc kann mit unserer antwort nichts anfangen.

kann man die antworten irgendwie früher senden? einen 20sek-timer einzubauen und auf verdacht die antwort "rauszuhauen", macht wohl auch keinen sinn.

was kann ich tun, oder was mache ich falsch?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 24 Januar 2014, 10:20:03
Hi Frank,

Zitat
bei einem tc ist manchmal ruhe, dann steht auch ein wert im VST-menü.
könnte sein, dass der TC den Inhalt der message prüft...

Zitatwahrscheinlich gibt es hier wieder ein timing problem. die antwort kommt eventuell zu spät. bei homegear hatte ich gelesen, dass der tc exakt 20s nach dem weatherEvent wach wird...
das timing gibt der TC vor. Wenn wir ein problem haben, dann dass dein Antwort nicht 250ms nach dem request kommt. Viel rechnen muss man hier definitv nicht, der Teil ist einfach
Zitat
...der reale vd mit "8202" antwortet, unser vvd aber mit "8002". testweise hatte ich das mal umgestellt, aber keine besserung bemerkt
.
habe ich gesehen - hätte mich gewundert. das ist ein messageFlag - irgendetwas mit GruppenType oder so... Gut dass du es getestet hast.

Zitatwenn ich den obigen log betrachte, gehe ich mal davon aus, dass der hmlan ein sendemodul und ein empfangsmodul besitzt. das was er selber sendet, empfängt er 766ms später.
nein. HMLAN informiert seine Zentrale, dass eine message erfolgreich gesendet wurde. Da es eine message ohne AntwortRequest war ist es für ihn erledigt. Status 0002

Zitatsomit kann man eventuell annehmen, dass der tc sein ClimateEvent ebenfalls 766ms vor dem empfang am hmlan sendet. das wiederum würde dann bedeuten, dass unsere antwort auf den tc 1002ms später erfolgt. wahrscheinlich viel zu spät, wenn man bedenkt, dass das fenster beim vd gerade mal 250ms hat.
ein... wir unterhalten uns erfolgreich mit dem TC wenn er aufwacht. Timing ist: 100-250ms nach dem empfang senden. Achtung: Acks können schneller gesendet werden. Der VD sendet einen ACKinfo
Zitatalles nur spekulationen, aber fakt ist, der tc kann mit unserer antwort nichts anfangen.

Zitatkann man die antworten irgendwie früher senden? einen 20sek-timer einzubauen und auf verdacht die antwort "rauszuhauen", macht wohl auch keinen sinn.
macht keinen sinn - der VD sendet exact nach dem TC. Wenn du es genau haben willst solltest du die Zeitstempel des HMLAN vergleichen, wenn realer VD mit realem TC arbeitet - einfach die t:... von einander abziehen. Das timing ist sehr präzise, da aus FW generiert - FHEM ist deutlich schlechter. Habe einmal eine alte Tabelle eingefügt - der VD antwortet wie ein Uhrwert 130ms nach dem TC. In diesem Fall ist die messung von FHEM auch gut, da war nichts los auf dem Rechner
HMLANTime FHEMTime HMLANTime Delay TC->VD
1 53,338 027BF69E m:5B A258 172A85 150B94 03AE 113,338 41678494
1 53,47 027BF71F m:5B 8202 150B94 172A85 010186101E 113,47 41678623 129
4 0,842 027DE8BF m:5C A258 172A85 150B94 00AE 240,842 41806015
4 0,974 027DE941 m:5C 8202 150B94 172A85 010188001E 240,974 41806145 130
6 58,096 02809D3E m:5D A258 172A85 150B94 00AE 418,096 41983294
6 58,229 02809DC1 m:5D 8202 150B94 172A85 010188001E 418,229 41983425 131
9 40,853 02831919 m:5E A258 172A85 150B94 00AE 580,853 42146073
9 40,984 0283199A m:5E 8202 150B94 172A85 010188001E 580,984 42146202 129
12 9,107 02855C4B m:5F A258 172A85 150B94 00AE 729,107 42294347
12 9,24 02855CCD m:5F 8202 150B94 172A85 010188001E 729,24 42294477 130
14 22,862 028766D8 m:60 A258 172A85 150B94 00AE 862,862 42428120
14 22,993 02876759 m:60 8202 150B94 172A85 010188001E 862,993 42428249 129
17 26,368 028A33C2 m:61 A258 172A85 150B94 00AE 1046,368 42611650
17 26,499 028A3444 m:61 8202 150B94 172A85 010188001E 1046,499 42611780 130
20 15,373 028CC807 m:62 A258 172A85 150B94 00AE 1215,373 42780679
20 15,506 028CC889 m:62 8202 150B94 172A85 010188001E 1215,506 42780809 130
22 49,879 028F23A5 m:63 A258 172A85 150B94 00AE 1369,879 42935205
22 50,011 028F2426 m:63 8202 150B94 172A85 010188001E 1370,011 42935334 129
25 10,132 02914796 m:64 A258 172A85 150B94 00AE 1510,132 43075478
25 10,265 02914818 m:64 8202 150B94 172A85 010188001E 1510,265 43075608 130
27 15,887 029332E1 m:65 A258 172A85 150B94 00AE 1635,887 43201249
27 16,018 02933362 m:65 8202 150B94 172A85 010188001E 1636,018 43201378 129
30 11,142 0295DF90 m:66 A258 172A85 150B94 00AE 1811,142 43376528
30 11,273 0295E011 m:66 8202 150B94 172A85 010188001E 1811,273 43376657 129
32 52,147 02985493 m:67 A258 172A85 150B94 00AE 1972,147 43537555
32 52,28 02985515 m:67 8202 150B94 172A85 010188001E 1972,28 43537685 130
35 18,653 029A90F0 m:68 A258 172A85 150B94 00AE 2118,653 43684080
35 18,784 029A9171 m:68 8202 150B94 172A85 010188001E 2118,784 43684209 129


Ich denke der Schlüssel liegt im Microtiming oder im messageInhalt
Titel: Antw:TC emulieren
Beitrag von: frank am 25 Januar 2014, 16:32:17
hallo martin,

ZitatIch denke der Schlüssel liegt im Microtiming oder im messageInhalt

message-inhalt
nach einem tag hin und her testen, kann ich den message-inhalt durch folgende beobachtung ausklammern:

der tc, der bisher wenigsten zeitweise die antworten seines vvd empfangen hat, konnte gestern auf einmal vollends überzeugen. da meine anderen tc im prinzip die gleichen antworten erhalten, aber keinen empfang bestätigt haben, müssen wir uns auf das micro-timing konzentrieren.

micro-timing
für den einsamen erfolg eines einzigen tc, ist wahrscheinlich ein fast leerer batteriesatz in verbindung mit seinen hardwaretoleranzen verantwortlich. er hat den ganzen tag das batteriesymbol angezeigt. seit ich ihm einen neuen satz spendiert habe, empfängt er so viel wie alle anderen. gar nichts!

hat eventuell jemand einen schaltplan vom tc? oder kann bestätigt werden, dass eine geringe versorgungsspannung die taktzeiten des prozessors entscheidend verlängert?

ansonsten habe ich den ganzen tag damit verbracht, die antwort des vvd "vorzuziehen":

1. in der hoffnung ein cul868 könnte schneller reagieren als ein hmlan, habe ich den cul eingebaut, tc fullreset (reset und batterien raus), mit cul gepairt und mit vvd gepeert. IOId von tc und vvd auf cul gesetzt. aber kein erfolg!
ein vvd wird ja nicht gepairt. oder mache ich da etwas falsch?

2014.01.24 18:24:31.972 4: CUL_Parse: cul868 A 0B 1D A258 1936FF D3D3D3 00001D -59.5
2014.01.24 18:24:31.984 4: RCV L:0B N:1D F:A2 CMD:58 SRC:Thermostat.Bad DST:TCControler.Bad 0000 (ClimateEvent CMD:0x00 ValvePos:0) (,WAKEMEUP,BIDI,RPTEN)
2014.01.24 18:24:32.116 4: CUL_send:  cul868As 0E 1D 8202 D3D3D3 1936FF 0101000000
2014.01.24 18:24:32.136 4: SND L:0E N:1D F:82 CMD:02 SRC:TCControler.Bad DST:Thermostat.Bad 0101000000 (ACK_STATUS CHANNEL:0x01 STATUS:0x00 UP:0 DOWN:0 LOWBAT:0 RSSI:0) (,WAKEMEUP,RPTEN)


in der aufzeichnung sind es vom empfang bis zum senden 144ms (timestamp).
hier noch mal eine genauere aufzeichnung mit cul (verbose5) und hmlan lauschen.

2014.01.24 12:37:06.870 5: CUL/RAW: /A0BB9A2581936FFD3D3D300F413
2014.01.24 12:37:06.872 4: CUL_Parse: cul868 A 0B B9 A258 1936FF D3D3D3 00F413 -64.5
2014.01.24 12:37:06.874 5: cul868 dispatch A0BB9A2581936FFD3D3D300F4::-64.5:cul868
2014.01.24 12:37:06.884 4: RCV L:0B N:B9 F:A2 CMD:58 SRC:Thermostat.Bad DST:TCControler.Bad 00F4 (ClimateEvent CMD:0x00 ValvePos:244) (,WAKEMEUP,BIDI,RPTEN)
2014.01.24 12:37:07.011 5: cul868 sending As0EB98202D3D3D31936FF0101BE0000
2014.01.24 12:37:07.014 4: CUL_send:  cul868As 0E B9 8202 D3D3D3 1936FF 0101BE0000
2014.01.24 12:37:07.034 4: SND L:0E N:B9 F:82 CMD:02 SRC:TCControler.Bad DST:Thermostat.Bad 0101BE0000 (ACK_STATUS CHANNEL:0x01 STATUS:0xBE UP:0 DOWN:0 LOWBAT:0 RSSI:0) (,WAKEMEUP,RPTEN)
2014.01.24 12:37:07.538 0: HMLAN_Parse: HMLAN1 R:E1936FF   stat:0000 t:474C74A0 d:FF r:FFB8     m:B9 A258 1936FF D3D3D3 00F4
2014.01.24 12:37:07.550 0: HMLAN_Parse: HMLAN1 R:ED3D3D3   stat:0000 t:474C7551 d:FF r:FFDA     m:B9 8202 D3D3D3 1936FF 0101BE0000


zum vergleich tc/vvd mit hmlan gepaired.

2014.01.24 23:23:23.774 0: HMLAN_Parse: HMLAN1 R:E1936FF   stat:0000 t:499C3997 d:FF r:FFB8     m:73 A258 1936FF D3D3D3 00EE
2014.01.24 23:23:23.921 0: HMLAN_Send:  HMLAN1 S:SC659B452 stat:  00 t:00000000 d:01 r:C659B452 m:73 8202 D3D3D3 1936FF 0101BA0000
2014.01.24 23:23:25.103 0: HMLAN_Parse: HMLAN1 R:RC659B452 stat:0002 t:00000000 d:FF r:7FFF     m:73 8202 D3D3D3 1936FF 0101BA0000


im folgenden habe ich versucht, die ausführung der antwortmessage in 10_CUL_HM vorzuziehen, richtung dateianfang:

2. im elsif-block (v4711z1581) habe ich "push @ack" vor "push @entities" gesetzt. kein erfolg!
    elsif($mTp eq "58" && $p =~ m/^(..)(..)/) {# climate event

3. dann habe ich elsif-block (v4711z1581) und if-block (v4711z1543) getauscht
    if($mTp =~ m/^4/ && @mI > 1) { #Push Button event

4. und zum abschluss habe ich die übergeordnete if/els-struktur (v4711z1542)
  if(AttrVal($dname, "subType", "none") eq "virtual"){# see if need for answer
vor den if-block (v4711z695) gesetzt.

  if   ($parse eq "ACK"){# remember - ACKinfo will be passed on

nun wird bei mir "push @ack" in zeile 701 ausgeführt, statt in zeile 1587. kein erfolg!
erstaunlich das noch alles andere läuft.

wie kann ich noch schneller reagieren?
ist ein "push @ack" vielleicht langsamer als die kombi "CUL_HM_PushCmdStack" und "CUL_HM_ProcessCmdStack"?
wo wird der empfang vom hmlan bereitgestellt?
könnte ich an der stelle nicht mal eine "pseudoantwort" im raw-format testweise zurücksenden?

gruss frank


Titel: Antw:TC emulieren
Beitrag von: martinp876 am 25 Januar 2014, 17:38:40
Hi Frank,

Zitatansonsten habe ich den ganzen tag damit verbracht, die antwort des vvd "vorzuziehen":
achtung - zu früh bringt auch nichts.
Der HMLAN liefert ein Präzises Timing - da sehe ich überhaupt keine Probleme. Hingegen können Probleme an ethernet interface (auch bereits im HMLAN) beginnen.
Ich weiss gerade nicht, ob ich mich wiederhole - egal
Du hast aber zumindest einen Indikator - msgPasreDly teilt dir mit, wie genau wir sind.
Das timing wird beim Senden berücksichtigt.

Zitatein vvd wird ja nicht gepairt. oder mache ich da etwas falsch?
Guter Punkt. Setze das Attribut IODev - mehr ist nicht notwendig.

Das Timing der CUL müsste schlechter sein. USB ist zwar schneller, aber beim HMLAN haben wir den Zeitstempel aus der HW.

Wenn du den HMLAN zum monitoren der CUL laufen lässt kannst du aus den Zeitstempeln des HMLAN (t:.....) den realen Delay der messages ablesen

Zitat12:37:07.538 0: HMLAN_Parse: HMLAN1 R:E1936FF   stat:0000 t:474C74A0 d:FF r:FFB8     m:B9 A258 1936FF D3D3D3 00F4
12:37:07.550 0: HMLAN_Parse: HMLAN1 R:ED3D3D3   stat:0000 t:474C7551 d:FF r:FFDA     m:B9 8202 D3D3D3 1936FF 0101BE0000
das sind 177ms - evtl zu spät für ein ACK? Für eine message wäre es in der Toleranz

Wenn du die CUL beschleunigen willst musst du 00_CUL offnen und
  my $id = (length($fn)>19)?substr($fn,16,6):"";#get HMID destination

  if($id &&
     $modules{CUL_HM}{defptr}{$id} &&
     $modules{CUL_HM}{defptr}{$id}{helper}{io} &&
     $modules{CUL_HM}{defptr}{$id}{helper}{io}{nextSend}) {
    my $dDly = $modules{CUL_HM}{defptr}{$id}{helper}{io}{nextSend} - $now;
    }


  my (undef,$mTy,undef,$id) = unpack 'A8A2A6A6',$fn if(length($fn)>19);

  if($id &&
     $mTy ne "02" &&
     $modules{CUL_HM}{defptr}{$id} &&
     $modules{CUL_HM}{defptr}{$id}{helper}{io} &&
     $modules{CUL_HM}{defptr}{$id}{helper}{io}{nextSend}) {
    my $dDly = $modules{CUL_HM}{defptr}{$id}{helper}{io}{nextSend} - $now;

also die beiden Zeilen einfügen/Ändern

my (undef,$mTy,undef,$id) = unpack 'A8A2A6A6',$fn if(length($fn)>19);
$mTy ne "02" &&


Ich denke, das wird sowieso eingebaut werden

Gruss Martin


Titel: Antw:TC emulieren
Beitrag von: frank am 25 Januar 2014, 23:18:23
hallo martin,

Zitatachtung - zu früh bringt auch nichts.
Der HMLAN liefert ein Präzises Timing - da sehe ich überhaupt keine Probleme.

wenn ich auf ein climateEvent eines realen tc, das vom hmlan empfangen wird, so schnell als möglich versuche zu reagieren, kann ich die antwort doch niemals "zu früh" senden.
es könnte nur zu früh werden, wenn ich nicht "reagiere", sondern "antizipiere" und aus verdacht eine antwort sende.

ich habe noch mal eine tc/vvd-kombi mit dem cul gepaired und den hmlan zum monitoren verwendet. mit deinem 00_cul_patch ermittle ich aus den hmlan zeitstempeln reaktionszeiten von 175ms bis 180ms. eventuell kann man sagen, dass dadurch 1-2ms gewonnen werden können. mein "vorziehen" des "push @ack" bringt, wenn überhaupt, nur 0-1ms.

msgParseDly       min:-3968 max:6638 last:121 cnt:707

ist msgParseDelay die verzögerung vom hmlan-zeitstempel zum fhem-zeitstempel?
ich hatte den hmlan irgendwann währed der neuen tests stromlos gemacht, um zu resetten.

schön wär mal eine idee mit vielleicht 20ms zeitgewinn!
meinen spezielllen tc bestücke ich ab sofort nur nöch mit gebrauchten batterien, dann fühlt er sich wohl und versteht fhem!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 26 Januar 2014, 01:02:26
hallo martin,

wäre es zuviel verlangt, beim virtuellen tc, das reading valveCtrl als event zu posten?
dann könnte ich das schön überwachen!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 26 Januar 2014, 11:07:53
Hallo Frank,

Der TC setzt im Ventil ValveDesired - reicht dies nicht?
oh - ich denke, ich setze dies im Device (da ein VD immer ein device ist). werde ich einmal anpassen...

Zitatso schnell als möglich versuche zu reagieren, kann ich die antwort doch niemals "zu früh" senden.
das trifft evtl auf ein ack zu. Kommandos und andere reaktionen darf man nicht so schnell als möglich senden. 100ms sind gefordert. Kann man nichts machen.

Zitataus den hmlan zeitstempeln reaktionszeiten von 175ms bis 180ms.
dann klappt es nicht. Rudi hat die Änderung bereits eingecheckt. Kannst du dies noch einmal loggen? Wenn du mit CUL arbeitest.

Zitatmein "vorziehen" des "push @ack" bringt, wenn überhaupt, nur 0-1ms.
klar - das timing wird im IO gemacht.
Zitatist msgParseDelay die verzögerung vom hmlan-zeitstempel zum fhem-zeitstempel?
ja. Wenn du 6 sec hat ist dies durchaus möglich - du solltest mit apptime suchen, ob ein Prozess so lange dauert. Da habe ich schon mehrere gefunden.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 26 Januar 2014, 16:23:02
hallo martin,

ich habe jetzt mal einen realen tc mit je einem realen und virtuellen vd gepeert und alle beteiligten devices an den cul868 gekoppelt. den funkverkehr habe ich mit einem "unbeteiligten" hmlan aufgezeichnet. die vom tc erzeugten climateEvents und die antworten von vd und vvd, inklusive der berechneten reaktionszeiten siehst du hier:

reaktionszeiten von vd,vvd auf climateEvent von tc
--------------------------------------------------

versuchsaufbau:
---------------------------------------------------
tc,vd: mit cul868 gepairt
tc,vd,vvd: IODev cul868
tc mit vd,vvd gepeert

hmlan(monitor):123ABC
cul868:C1C1C1
tc:1BF81B
vd:1C4E25
vvd:D4D4D4

messergebnisse:
---------------------------------------------------
2014.01.26 14:33:38.068 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:040AD87B d:FF r:FFB9     m:5E A258 1BF81B 1C4E25 00FE
2014.01.26 14:33:38.080 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:040AD8FB d:FF r:FFC0     m:5E 8202 1C4E25 1BF81B 0101C60025
67819643
67819771
128ms ### realer vd ###

2014.01.26 14:36:21.728 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:040D5743 d:FF r:FFBC     m:5F A258 1BF81B D4D4D4 00FE
2014.01.26 14:36:21.740 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:040D57F7 d:FF r:FFDD     m:5F 8202 D4D4D4 1BF81B 0101C60000
67983171
67983351
180ms ### virtueller vd ###

2014.01.26 14:38:50.565 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:040F9D64 d:FF r:FFBB     m:60 A258 1BF81B 1C4E25 00FE
2014.01.26 14:38:50.578 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:040F9DE4 d:FF r:FFBF     m:60 8202 1C4E25 1BF81B 0101C60024
68132196
68132324
128ms ### realer vd ###

2014.01.26 14:41:04.971 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0411ABDA d:FF r:FFBB     m:61 A258 1BF81B D4D4D4 00FE
2014.01.26 14:41:06.001 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:0411AD4B d:FF r:FFDD     m:61 8202 D4D4D4 1BF81B 0101C60000
68266970
68267339
369ms ### virtueller vd ###

2014.01.26 14:43:05.625 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:041381A9 d:FF r:FFBB     m:62 A258 1BF81B 1C4E25 00FE
2014.01.26 14:43:05.642 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0413822A d:FF r:FFBE     m:62 8202 1C4E25 1BF81B 0101C60026
68387241
68387370
129ms ### realer vd ###

2014.01.26 14:45:56.587 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:041618DB d:FF r:FFBD     m:63 A258 1BF81B D4D4D4 00FE
2014.01.26 14:45:56.616 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:04161B0D d:FF r:FFDD     m:63 8202 D4D4D4 1BF81B 0101C60000
68557019
68557581
562ms ### virtueller vd ###

2014.01.26 14:48:30.841 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:04187862 d:FF r:FFBC     m:64 A258 1BF81B 1C4E25 00FE
2014.01.26 14:48:30.854 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:041878E3 d:FF r:FFBD     m:64 8202 1C4E25 1BF81B 0101C60024
68712546
68712675
129ms ### realer vd ###

2014.01.26 14:50:52.006 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:041A9F42 d:FF r:FFBD     m:65 A258 1BF81B D4D4D4 00FE
2014.01.26 14:50:52.019 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:041A9FF5 d:FF r:FFDD     m:65 8202 D4D4D4 1BF81B 0101C60000
68853570
68853749
179ms ### virtueller vd ###

2014.01.26 14:55:54.366 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:041F3D18 d:FF r:FFBB     m:67 A258 1BF81B 1C4E25 00FE
2014.01.26 14:55:54.379 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:041F3D99 d:FF r:FFBF     m:67 8202 1C4E25 1BF81B 0101C60027
69156120
69156249
129ms ### realer vd ###

2014.01.26 14:58:36.555 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0421B50A d:FF r:FFBD     m:68 A258 1BF81B D4D4D4 00FE
2014.01.26 14:58:36.568 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:0421B623 d:FF r:FFDD     m:68 8202 D4D4D4 1BF81B 0101C60000
69317898
69318179
281ms ### virtueller vd ###

2014.01.26 15:01:07.560 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0423F455 d:FF r:FFBF     m:69 A258 1BF81B 1C4E25 00FE
2014.01.26 15:01:08.344 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0423F4D6 d:FF r:FFBB     m:69 8202 1C4E25 1BF81B 0101C6002C
69465173
69465302
129ms ### realer vd ###

2014.01.26 15:03:15.664 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0425FAF9 d:FF r:FFBE     m:6A A258 1BF81B D4D4D4 00FE
2014.01.26 15:03:16.705 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:0425FC58 d:FF r:FFDC     m:6A 8202 D4D4D4 1BF81B 0101C60000
69597945
69598296
351ms ### virtueller vd ###

2014.01.26 15:06:18.905 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0428C3FC d:FF r:FFBE     m:6B A258 1BF81B 1C4E25 00FE
2014.01.26 15:06:19.440 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0428C47D d:FF r:FFBC     m:6B 8202 1C4E25 1BF81B 0101C6002C
69780476
69780605
129ms ### realer vd ###

2014.01.26 15:09:06.975 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:042B5458 d:FF r:FFBE     m:6C A258 1BF81B D4D4D4 00FE
2014.01.26 15:09:06.988 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:042B5557 d:FF r:FFDC     m:6C 8202 D4D4D4 1BF81B 0101C60000
69948504
69948759
255ms ### virtueller vd ###

2014.01.26 15:11:40.158 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:042DAC0E d:FF r:FFBE     m:6D A258 1BF81B 1C4E25 00FE
2014.01.26 15:11:40.171 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:042DAC8F d:FF r:FFBA     m:6D 8202 1C4E25 1BF81B 0101C6002D
70102030
70102159
129ms ### realer vd ###

2014.01.26 15:13:59.613 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:042FCC17 d:FF r:FFBD     m:6E A258 1BF81B D4D4D4 00FE
2014.01.26 15:13:59.625 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:042FCD06 d:FF r:FFDD     m:6E 8202 D4D4D4 1BF81B 0101C60000
70241303
70241542
239ms ### virtueller vd ###

2014.01.26 15:16:04.147 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0431B37A d:FF r:FFBD     m:6F A258 1BF81B 1C4E25 00FE
2014.01.26 15:16:04.159 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0431B3FB d:FF r:FFBE     m:6F 8202 1C4E25 1BF81B 0101C6002F
70366074
70366203
129ms ### realer vd ###

2014.01.26 15:18:58.815 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:04345C41 d:FF r:FFBD     m:70 A258 1BF81B D4D4D4 00FE
2014.01.26 15:18:59.573 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:043460E7 d:FF r:FFDD     m:70 8202 D4D4D4 1BF81B 0101C60000
70540353
70541543
190ms ### virtueller vd ###

2014.01.26 15:21:38.145 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:0436CC62 d:FF r:FFBB     m:71 A258 1BF81B 1C4E25 00FE
2014.01.26 15:21:38.159 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0436CCE3 d:FF r:FFBF     m:71 8202 1C4E25 1BF81B 0101C60038
70700130
70700259
129ms ### realer vd ###

2014.01.26 15:24:03.819 0: HMLAN_Parse: HMLAN1 R:E1BF81B   stat:0000 t:043904D6 d:FF r:FFBF     m:72 A258 1BF81B D4D4D4 00FE
2014.01.26 15:24:03.832 0: HMLAN_Parse: HMLAN1 R:ED4D4D4   stat:0000 t:04390587 d:FF r:FFDC     m:72 8202 D4D4D4 1BF81B 0101C60000
70845654
70845831
177ms ### virtueller vd ###


ZitatDer TC setzt im Ventil ValveDesired - reicht dies nicht?
oh - ich denke, ich setze dies im Device (da ein VD immer ein device ist). werde ich einmal anpassen...

ich würde gerne auf "ok,miss_1,...,miss_5,lost" reagieren.


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 26 Januar 2014, 16:51:43
Hi Frank,

meine CUL antwortet in 40ms - sehr konstant.
hast du schon einmal geprüft, was apptime zu deinem System sagt?

Zitatich würde gerne auf "ok,miss_1,...,miss_5,lost" reagieren.
schwierig - oder habe ich einen denkfehler? Wenn der reale Tc  sendet und wir antworten kann es zu spät gewesen sein - oder auch nicht. Das ist kaffeesatzlesen.  Wie soll ich feststellen, ob etwas verpasst wurde? Wenn der TC nicht mehr sendet?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 26 Januar 2014, 17:27:51
hallo martin,

Zitatschwierig - oder habe ich einen denkfehler? Wenn der reale Tc  sendet und wir antworten kann es zu spät gewesen sein - oder auch nicht. Das ist kaffeesatzlesen.  Wie soll ich feststellen, ob etwas verpasst wurde? Wenn der TC nicht mehr sendet?

langsam.
ich würde gerne auf änderungen des readings "valveCtrl" vom "virtuellen tc" reagieren, um zu erkennen, ob der "reale vd" schon eingeschlafen ist (valveCtrl=lost). oder ob er mit hoher wahrscheinlichkeit (valveCtrl=miss_5) gleich einschlafen wird.
das reading haben wir ja schon. es wird halt kein event gepostet, so dass ich bequem über ein notify darauf zugreifen könnte.

Zitatmeine CUL antwortet in 40ms - sehr konstant.
hast du schon einmal geprüft, was apptime zu deinem System sagt?

sind das die antworten eines virtuellen vd auf die climateEvents eines realen tc?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 26 Januar 2014, 18:44:16
edit: Bei mir kommen sie events - sollte man triggern können.

Hi Frank

Zitates wird halt kein event gepostet, so dass ich bequem über ein notify darauf zugreifen könnte.
ui - ist aber so eingestellt. Mal untersuchen - bin schon einmal reingefallen, das in fhem.pl einfach das triggern unterdrückt wird.

werde einmal nachsehen.

Zitatsind das die antworten eines virtuellen vd auf die climateEvents eines realen tc?
korrekt
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 26 Januar 2014, 23:06:44
hallo martin,

auf der verzweifelten suche nach deinen 40ms, hat ein "komplettes" fhem update, inklusive reset der fritzbox, alle probleme gelöst (ein einfaches reload 00_CUL.pm reicht vielleicht nicht aus).

als zugabe kamen sogar noch die valveCtrl-events.

alle virtuellen und realen devices hängen wieder am hmlan. alles läuft wie gewünscht.

vielen, vielen, ...dank
gruss frank
Titel: Antw:TC emulieren
Beitrag von: eldrik am 27 Januar 2014, 08:03:46
Hi,

vorab eine tolle Leistung die hier betrieben worden ist!

Ich folge dem Thread nun schon ein Weile, ist es mit der jetzigen Version nunmehr möglich:

- einen oder mehrere TC zu emulieren und hierdurch die VDs zu betreiben?
- externe nicht HM Temperatursensoren für den virtuellen TC zu benutzen?
- externe nicht HM Fensterkontakte für den virtuellen TC zu benutzen, zur Absenkung der Temperatur bei offenen Fenster?
- wie ist die Zuverlässigkeit?

Greetz
Eldrik
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 27 Januar 2014, 08:22:09
Hi Eldrik,

Zitat- einen oder mehrere TC zu emulieren und hierdurch die VDs zu betreiben?
ja
Zitat- externe nicht HM Temperatursensoren für den virtuellen TC zu benutzen?
ja  - regelalgorythmus musst du selbst schreiben
Zitat- externe nicht HM Fensterkontakte für den virtuellen TC zu benutzen, zur Absenkung der Temperatur bei offenen Fenster?
ja..  - wenn ist eine einfache temp-absenkung - musst du selbst bauen und in die Regelung einfließen lassen
Zitat- wie ist die Zuverlässigkeit?
hängt von System ab.
Limitierungen:
HMLAN sendekapazität - HMLAN wird irgendwann abschalten , wen zu viel gesendet wurde. Beobachte hierzu die Performance indikatoren
die Systemlast könnte zu verzögerungen führen, die zu message-loss führen. Einfache Fehler kann das System ab - wenn dein System "dicht" wird könnte es knapp werden .

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 27 Januar 2014, 13:51:46
hallo eldrik,

Zitat- einen oder mehrere TC zu emulieren und hierdurch die VDs zu betreiben?

die tc-emulation ist eigentlich nur ein virtuelles hm-device (vtc), dass in der lage ist, einen realen hm-cc-vd (vd) zu steuern. du setzt den vtc auf den gewünschten wert und dieser sorgt dann dafür, dass der vd solange in der gewünschten position verbleibt, bis du den wert veränderst.

mit welchen werten du den vtc versorgst, liegt in deiner hand. du kannst dir nun eine funktion zusammenbauen, die in abhängigkeit unterschiedlichster daten (tsoll, tist, fenster, uhrzeit, anwesenheit, sonnenstand, ...usw), eine für dich brauchbare öffnungsposition liefert.

ich steuere meine 4 vd seit ein paar tagen über fhem mit 4 vtc sehr erfolgreich. bis dahin wurde das von 4 realen tc nicht so erfolgreich durchgeführt. nun benutze ich die von den tc "empfohlenen" vd-positionen, wenn sie mir zusagen. ansonsten werden sie nach meinen wünschen verändert, bevor sie, über den umweg der 4 vtc, an die realen vd gesendet werden.

ein realer vd muss spätestens alle 10-15 minuten eine erfolgreiche kommunikation mit seinem positionsgeber haben, damit er nicht einschläft und die error-position einstellt. sollte dies dennoch geschehen, so wacht der vd erst nach einer guten stunde wieder auf, und versucht erneut mit seinem positionsgeber zu kommunizieren. wenn das erfolgreich verläuft, ist alles wieder normal. das gilt, sowohl für den virtuellen tc, als auch für den realen tc als positionsgeber.

aus dieser beschreibung musst du nun selber die vor- oder nachteile in bezug zu deinem system bestimmen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 31 Januar 2014, 19:26:46
Hallo Frank,

es gibt Probleme mit dem "Schnellen ACK". Einige Devices vertragen das nicht. Daher ist die Frage, ob es mit 50ms auch klappt.

anbei eine Datei mit 50ms delay für ACKs. Wäre gut, wenn du diese testen könntest. Das wäre ein kompromiss, der hoffentlich alle Glücklich macht.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 31 Januar 2014, 20:59:13
hallo martin,

betrifft mich das denn überhaupt? ich nutze eigentlich nur hmlan.

den cul868 hatte ich zwischenzeitlich nur eingebaut , weil der hmlan nicht funktionierte. ich hatte die hoffnung mit cul könnte es besser werden. zusätzlich gab es dann die möglichkeit mit hmlan als monitor zu schauen.

nachdem du 40ms gemessen hattest, habe ich ein komplettes update gemacht und alles resettet. anschliessend zwei messungen mit ca. 80ms aufgezeichnet und dann sofort auf hmlan zurückgewechselt.

seitdem läuft alles einwandfrei mit hmlan.

aber ich teste das trotzdem gleich mal. morgen weiss ich dann mit sicherheit genaues.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 01 Februar 2014, 01:43:40
kurzer erfahrungsbericht mit 4 vd, die über fhem (vtc) gesteuert werden

seit einer knappen woche steuer ich meine vd über fhem und versorge sie entweder mit den werten, die mir die realen tc bieten, oder mit eigenen werten. dabei hat sich in den letzten tagen gezeigt, dass diese vorgehensweise so nicht funktioniert, da der tc, die durch meine ventilstellungen herbeigeführten temperaturänderungen auf seine berechneten ventilstellungen bezieht. weil ich häufig 100% setze, glaubt der tc langsam, dass er mit 80% dasselbe leisten kann. somit habe ich nun den regler des tc vollkommen aus der regelung entfernen müssen. das übernimmt momentan testweise das modul "PID20".

das eigentliche ansteuern der vd läuft hingegen einwandfrei. als beispiel habe ich mal einen plot von heute angehängt. zu sehen sind die "ergebnisse" der kommunikation zwischen vd und vtc (reading:valveCtrl vom vtc). wenn der vtc einen steuerbefehl an den vd abgesetzt hat und der vtc daraufhin eine antwort empfangen hat, ist die kommunikation "ok". es gibt nichts zu sehen (kein y-wert). bei einer 100%-igen kommunikation wären also gar keine ausschläge vorhanden.

zu erkennen sind also alle misslungenen kommunikationen. und zwar die anzahl der in folge misslungenen kommunikationen. zb 2 mal in folge keine antwort erhalten, ergibt ein "miss_2". bei 6 fehlenden antworten nacheinander ergibt sich ein "lost", da sich nun der vd verabschiedet und einschläft (21.30 SZ). wenn man nichts unternimmt, wacht er nach gut 60 min wieder auf, und kann normal weiterarbeiten. zu dieser zeit hatte ich meine fritzbox resettet. bei den anderen 3 vd habe ich noch rechtzeitig die anlerntaste für 3sec gedrückt, woraufhin die kommunikationen weiterlaufen konnten. ohne einschlafen der vd.

generell gibt es eigentlich nur gelegentlich "einfache" (miss_1) fehlkommunikationen. manchmal "miss_2" und sehr selten"miss_3" und höher. diese werden hauptsächlich durch verzögerungen des programmablaufs in meiner fritzbox erzeugt. interessant wäre ein vergleich mit einem wenig belasteten system mit mehr power.
in der ganzen zeit sind aber erst 2 "lost" ereignisse bei 4 vd aufgetreten! bis hierher bin ich mit dem zwischenergebnis sehr zu frieden!

@martin
eigentlich müsste es doch möglich sein, die kommunikation nach einem reset am leben zu halten? werden die berechneten kommunikationszeitpunkte nicht gespeichert und über den reset gerettet?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 01 Februar 2014, 12:52:16
hallo martin,

die 00_CUL.pm läuft bis jetzt ohne erkennbare auffälligkeiten (14 std). wie bereits gesagt, nutze ich zur zeit keinen cul868 für homematic.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 01 Februar 2014, 12:52:39
Zitatsomit habe ich nun den regler des tc vollkommen aus der regelung entfernen müssen.
hätte ich so erwartet. Wenn man das Ventil selbst steuern will muss man die Ventilstellung aus der Temperatur errechnen.

Zitatdas eigentliche ansteuern der vd läuft hingegen einwandfrei.
super.

Zitatgenerell gibt es eigentlich nur gelegentlich "einfache" (miss_1)
Zu beachten für User sind evtl Probleme bei Update und restart. Da kommt das timing ausser tritt - fängt sich nach einiger Zeit wieder. Das sollte in die Doku.

Zitateigentlich müsste es doch möglich sein, die kommunikation nach einem reset am leben zu halten?
hmmm - mal denken. Da gibt es mehrere Punkte
a) die Virtuellen Aktore starten nicht automatisch. Das müsste eingebaut werden, ist möglich
b) FHEM speichert attribute mit save und Readings bei updates u.ä. (müsste ich einmal genau nachsehen). Aktuell wird das timing in helper gespeichert - und das geht verloren.
b1) es wäre möglich die next timing in Readings ablegen und nach neustart ein Recovery probieren.

ich probiere einmal
Gruss Martin

p.s.
da jetzt humudity (virtHum) hinzugekommen ist habe ich den Code modifiziert. Gibt hoffentlich keine Probleme. Der Default für webCmd hat sich geändert, Gibt jetzt auch ein pull-down menu für valvePos, virtTemp und virtHum.


p.s.2 - das timing für ACK der virtuellen Aktoren habe ich auch angepasst (50ms)



Titel: Antw:TC emulieren
Beitrag von: martinp876 am 02 Februar 2014, 11:23:17
Hi,

im Anhang eine Version zum testen - es sollte das timing über einen shutdown restart aufrechterhalten.
Wenns klappt wird es eingecheckt

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 02 Februar 2014, 14:58:34
hallo martin,

ich habe gerade die neue 10_cul.pm probiert, aber noch kein shutdown,restart, da irgendwas nicht so richtig funktioniert.

auf jeden fall kommt kein reading valveCtrl=ok mehr.

alles andere später.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 02 Februar 2014, 16:42:11
das sollte besser gehen (bezüglich 'ok')
Titel: Antw:TC emulieren
Beitrag von: frank am 02 Februar 2014, 19:23:54
hallo martin,

beim wechsel von version_1 auf version_2 mit "shutdown & restart" haben 2/4 vd überlebt!

anschliessend habe ich ein reset der fritzbox durchgeführt ohne "shutdown & restart". immerhin 1/4 vd hat überlebt. der hat es sogar mit extremen daten geschafft:

2014.02.02 17:38:55.971 1: General VentilControler.Kueche_Btn1 ok:Ventil.Kueche:2014-02-02 17:38:46 - 2014-02-02 17:36:19
2014.02.02 17:43:30.351 1: Including fhem.cfg
2014.02.02 17:51:54.990 1: General VentilControler.Kueche_Btn1 ok:Ventil.Kueche:2014-02-02 17:51:45 - 2014-02-02 17:03:33


daraus lerne ich, dass eine aktuelle "fhem.save" überlebenswichtig ist! also gestöbert, folgendes entdeckt und sofort eingebaut. oder gibt es bereits etwas besseres?

define AutoSave at +*00:15:00 {          \
{BlockingCall("WriteStatefile", "","", 30,"", "")}\
}



fazit: geniale arbeit martin!
ps: ich werde gleich noch mal einen stromausfall simulieren. besten dank bis dahin.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 03 Februar 2014, 01:21:24
hallo martin,

während der ganzen überlebenstest der vd haben 2 vd die mitarbeit verweigert. ich habe immer nur auf eine funktionierende kommunikation geachtet und nicht bemerkt, das die 2 vd permanent auf 0% gesetzt waren.
die beiden haben die peer einträge verloren. wäre ja nicht weiter tragisch, wenn mann sie wieder setzen könnte. egal was ich mit dem peerchan auch anstelle, fhem sagt immer "peerChan requires parameter: <position> ". weder löschen des peers beim vtc, noch setzen im vd. vd resetet und neu gepairt. vtc entfernt und wieder definiert. immer nur "peerChan requires parameter: <position> ".
mir fällt nichts mehr ein.
es gibt auch keine hinweise zu dieser info. ist peerchan vielleicht irgendwie gesperrt, weil das set menue im vtc häufig (fast immer) falsche eingaben anzeigt?
irgendwann im laufe der letzten wochen war das schonmal. dann hat es, warum auch immer, irgendwann funktioniert.

++++++++++++++++++++++++++++++++++++++++++++++++++++++

gerade wollte ich ein list meiner devices machen und habe so aus langer weile zum1001 mal probiert. und dann klappt auf einmal alles, als wär das schon mmer so????????
also noch mal zum mit schreiben:
set VentilControler.Bad_Btn1 peerChan 0 Ventil.Bad single set actor
wenn man nun noch den remote anteil setzen will, reicht es nicht, den gleich im eingabefeld nach zu schieben. immer erst bei 1. anfangen!

ich glaub hier spukt es.
war auch gerade geisterstunde!

ps: nach stromausfall von fritzbox und hmlan hat 1/3 vd überlebt. (wahrscheinlich ohne peer)

gruss frank

Titel: Antw:TC emulieren
Beitrag von: frank am 03 Februar 2014, 13:31:26
hallo martin,

es gibt noch probleme.

1. der vtc sendet bei valvePos=100 das kommando "0x0300" für 0%. sehr unschön.

2014.02.03 12:36:39.035 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 100
2014.02.03 12:38:14.112 0: HMLAN_Send:  HMLAN1 S:SF78AA220 stat:  00 t:00000000 d:01 r:F78AA220 m:04 A258 B3B3B3 193A9A 0300
2014.02.03 12:38:14.676 0: HMLAN_Parse: HMLAN1 R:RF78AA220 stat:0008 t:00000000 d:FF r:7FFF     m:04 A258 B3B3B3 193A9A 0300
2014.02.03 12:38:14.679 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.03 12:38:14.685 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0357AF90 d:FF r:FFB6     m:04 8202 193A9A B3B3B3 0101BE2049

2014.02.03 12:39:29.829 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 99
2014.02.03 12:40:23.627 0: HMLAN_Send:  HMLAN1 S:SF78C9C0C stat:  00 t:00000000 d:01 r:F78C9C0C m:05 A258 B3B3B3 193A9A 03FD
2014.02.03 12:40:24.192 0: HMLAN_Parse: HMLAN1 R:RF78C9C0C stat:0008 t:00000000 d:FF r:7FFF     m:05 A258 B3B3B3 193A9A 03FD
2014.02.03 12:40:24.195 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.03 12:40:24.201 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0359A98E d:FF r:FFB6     m:05 8202 193A9A B3B3B3 0101001049


2. nach einem restart wird das reading valveCtrl falsch gesetzt.
zuerst "init"->ok, dann "ok"->falsch, dann "miss_1"->wieder ok. es wird "ok"gesetzt, obwohl keine antwort erhalten worden ist.

2014.02.02 23:04:25.356 0: Server shutdown
2014.02.02 23:04:25.389 4: CUL_send:  cul868X0 0     
2014.02.02 23:04:29.774 1: Including fhem.cfg
2014.02.02 23:04:44.308 1: Including ./log/fhem.save
2014.02.02 23:04:47.929 0: Server started with 353 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 2664)
2014.02.02 23:04:52.783 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.02 23:04:52.997 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.02 23:04:53.216 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.02 23:05:02.806 1: General VentilControler.SZ_Btn1 ok:Ventil.SZ:2014-02-02 21:59:25 -
2014.02.02 23:05:02.861 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: ok
2014.02.02 23:05:03.019 1: General VentilControler.Bad_Btn1 ok:Ventil.Bad:2014-02-02 23:02:32 -
2014.02.02 23:05:03.072 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok
2014.02.02 23:05:03.239 1: General VentilControler.Kueche_Btn1 ok:Ventil.Kueche:2014-02-02 23:02:44 -
2014.02.02 23:05:03.292 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: ok
2014.02.02 23:06:10.713 1: General VentilControler.WZ_Btn1 ok:Ventil.WZ:2014-02-02 22:42:41 -
2014.02.02 23:06:10.767 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: ok
2014.02.02 23:07:12.005 1: General VentilControler.Kueche_Btn1 miss_1:Ventil.Kueche:2014-02-02 23:02:44 - 2014-02-02 23:02:44
2014.02.02 23:07:12.061 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.02 23:07:41.537 1: General VentilControler.Bad_Btn1 miss_1:Ventil.Bad:2014-02-02 23:02:32 - 2014-02-02 23:02:32
2014.02.02 23:07:41.627 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.02 23:07:58.338 1: General VentilControler.SZ_Btn1 miss_1:Ventil.SZ:2014-02-02 21:59:25 - 2014-02-02 21:59:25
2014.02.02 23:07:58.437 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.02 23:08:31.981 1: General VentilControler.WZ_Btn1 miss_1:Ventil.WZ: - 2014-02-02 22:42:41
2014.02.02 23:08:32.037 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 03 Februar 2014, 13:50:07
Hallo Frank,

Zitat"peerChan requires parameter: <position> ".
sollte nicht sein.
war evtl ein Bug, dass die Routine/perl nicht von 0 startet beim command-parsen.
Wenn es noch Probleme gibt bitte das genaue Kommando.

Ich habe evtl einen fix (hoffe ich).

Zum save habe ich mir folgende Pholosophie angeeignet:
- fhem.cfg wird (fast) ausschliesslich durch save beschreiben
=> save kann ich immer wieder machen, so oft ich will/muss
- mein eigenes UserCfg hänge ich per notify am ende an. Dies wird nie vom save überschrieben. ggf. würde es attribute von fhem.cfg überschreiben... da sollte man vorsicht walten lassen

woran ich arbeite ist ein handling der register/peer settings plus sereinnummer/FWversion... also "device-Config-Data".
Bislang gibt es in HMInfo ein
saveConfig: kumulatives speichern von Registern, peers, serialNr,...
loadConfig: gespeicherte Readings werden gelesen und - falls nicht gesetzt - in die Readings eingefügt.
purgeConfig: (neu, ab nächstem update) komprimiert das Kumulative config file. Somit kann man öfter bedenkenlos saveConfig ausführen.

Was noch fehlt ist ein automatisches auslösen des saveConfig, wenn entsprechende Daten geändert wurden.
In diesem Zug würde die FWversion, seriennummer und 2 andere von attribut nach readings wandern - wo sie hingehören.

Gruss Martin

p.s. 100% - wir sollten den Wert auf 99% beschränken - mehr kann er glaube ich eh nicht
Titel: Antw:TC emulieren
Beitrag von: frank am 03 Februar 2014, 22:35:46
hallo martin,

Zitatp.s. 100% - wir sollten den Wert auf 99% beschränken - mehr kann er glaube ich eh nicht

nein.
die anzeige tc,vd ist zwar 0-99, aber der reale vd antwortet sowohl mit 0xc6 (198) als auch mit 0xc8 (200), wenn die anzeige 99 ist und der reale tc 0xff sendet. einmal ist operState onTarget einmal targetNotMet. sieht man sich den umrechnungsfaktor "*2" an, ergibt sich logischer weise 100% bei 0xc8.

also benötigen wir für reale und virtuelle devices:
1. tc->vd: 100%, 0xFF (255)
2. vd->tc: 100%, 0xC8 (200)

gruss frank

ps: über die "speichereien" muss ich erst meditieren!
Titel: Antw:TC emulieren
Beitrag von: frank am 04 Februar 2014, 00:58:11
hallo martin,

mit nun 5 vd, habe ich gerade einen neuen "überlebenstest" absolviert. war leider sehr enttäuschend. 0/5 vd haben überlebt.   :'(

jedenfalls kommt mir gerade der gedanke, das du da etwas übersehen haben könntest. ich finde das müsste vom prinzip sehr viel erfolgreicher verlaufen.

wenn ich das richtig analysiere, speicherst du "nur" den letzten erfolgreichen meetingpoint im reading ".next", um daraus einen neuen zeitpunkt zu errechnen. ich glaube das reicht nicht. du musst zusätzlich die msgNbr, die dem letzten erfolgreichen zeitpunkt zugrunde liegt, ebenfalls speichern und bei der weiteren berechnung mit einbeziehen.

jetzt bin ich mir sicher. ich habe mal aus meinem log was zusammengestellt:

2014.02.03 23:34:47.500 0: HMLAN_Send:  HMLAN1 S:SF9E3BA8D stat:  00 t:00000000 d:01 r:F9E3BA8D m:11 A258 B5B5B5 1C4E25 0300
2014.02.03 23:34:47.681 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:05B0DB4C d:FF r:FFC1     m:11 8102 1C4E25 B5B5B5 010100003F
2014.02.03 23:34:48.029 0: HMLAN_Parse: HMLAN1 R:RF9E3BA8D stat:0008 t:00000000 d:FF r:7FFF     m:11 A258 B5B5B5 1C4E25 0300

2014.02.03 23:35:08.813 0: Server shutdown

2014.02.03 23:40:08.912 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.03 23:40:08.944 0: HMLAN_Send:  HMLAN1 S:SF9E8A230 stat:  00 t:00000000 d:01 r:F9E8A230 m:02 A258 B5B5B5 1C4E25 0300
2014.02.03 23:40:09.558 0: HMLAN_Parse: HMLAN1 R:RF9E8A230 stat:0008 t:00000000 d:FF r:7FFF     m:02 A258 B5B5B5 1C4E25 0300

2014.02.03 23:41:09.174 1: General VentilControler.AZ.Nord_Btn1 ok:Ventil.AZ.Nord:2014-02-03 23:34:47 -


danach hatte der letzte gespeicherte meetingpoint die msgNbr 11, und das erste climateEvent nach dem shutdown hat die msgNbr 02. wir müssen genau wie beim durchlaufenlassen des zählers bei den positionsänderungen, die zähler vom letzen erfolgreichen meetingpunkt ausgehend, weiterlaufen lassen.
dann schaffen wir 100%!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 04 Februar 2014, 11:10:26
Hallo Frank
da kann ich garnichts vorteilhaftes gegensagen ;)
msgCnt wird entsprechend gerettet werden - lagere es jetzt ein

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 05 Februar 2014, 01:10:24
hallo martin,

ich habe dir mal etwas arbeit gestohlen.  :)


  elsif($cmd =~ m/^(valvePos|virtTemp|virtHum)$/) { ###########################
    my $valu = $a[2];
    my %lim = (valvePos =>{min=>0  ,max=>100,rd =>"valvePosTC" ,u =>" %"},
               virtTemp =>{min=>-20,max=>50 ,rd =>"temperature",u =>""  },
               virtHum  =>{min=>0  ,max=>99 ,rd =>"humidity"   ,u =>""  },);
    if ($valu eq "off"){
      if ($cmd eq "virtHum") {$hash->{helper}{vd}{vinH} = "";}
      else                   {$hash->{helper}{vd}{vin}  = "";}
      if ((!$hash->{helper}{vd}{vinH} || $hash->{helper}{vd}{vinH} eq "") &&
          (!$hash->{helper}{vd}{vin}  || $hash->{helper}{vd}{vin}  eq "") ){
        $state = "$cmd:stopped";
        RemoveInternalTimer("valvePos:$dst$chn");# remove responsePending timer
        RemoveInternalTimer("valveTmr:$dst$chn");# remove responsePending timer
        delete($hash->{helper}{virtTC});
      }
    }
    if ($hash->{helper}{virtTC} || $valu ne "off") {
      if ($valu ne "off"){
        return "level between $lim{$cmd}{min} and $lim{$cmd}{max} or 'off' allowed"
             if ($valu !~ m/^[+-]?\d+\.?\d?$/||
                 $valu > $lim{$cmd}{max}||$valu < $lim{$cmd}{min} );
        if ($cmd eq "virtHum") {$hash->{helper}{vd}{vinH} = $valu;}
        else                   {$hash->{helper}{vd}{vin}  = $valu;}
      }
      if ($cmd eq "valvePos"){
        my @pId = grep !/^$/,split(',',AttrVal($name,"peerIDs",""));
        return "virtual TC support one VD only. Correct number of peers"
          if (scalar @pId != 1);
        my $ph = CUL_HM_id2Hash($pId[0]);
        return "peerID $pId[0] is not assigned to a device " if (!$ph);
        $hash->{helper}{vd}{typ} = 1; #valvePos
        $hash->{helper}{vd}{id}  = $modules{CUL_HM}{defptr}{$pId[0]}
                                              ?$pId[0]
                                              :substr($pId[0],0,6);
        $hash->{helper}{vd}{cmd} = "A258$dst".substr($pId[0],0,6);
        CUL_HM_UpdtReadBulk($ph,1,
                         "state:set_$valu %",
                         "ValveDesired:$valu %");
        $hash->{helper}{vd}{val} = sprintf("%02X",($valu * 2.56)%256);
        $state = "ValveAdjust:$valu %";
      }
      else{#virtTemp || virtHum
        $hash->{helper}{vd}{typ} = 2; #virtTemp
        $hash->{helper}{vd}{cmd} = "8670$dst"."000000";
        my $t = $hash->{helper}{vd}{vin}?$hash->{helper}{vd}{vin}:0;
        $t *=10;
        $t -= 0x8000 if ($t < 0);
        $hash->{helper}{vd}{val} = sprintf("%04X", $t & 0x7fff);
        $hash->{helper}{vd}{val} .= sprintf("%02X", $hash->{helper}{vd}{vinH})
             if ($hash->{helper}{vd}{vinH} && $hash->{helper}{vd}{vinH} ne "");
      }
      $hash->{helper}{vd}{idh} = hex(substr($dst,2,2))*20077;
      $hash->{helper}{vd}{idl} = hex(substr($dst,4,2))*256;
      $hash->{helper}{vd}{msgCnt} = ReadingsVal($name,".msgCnt",0)
if (!defined $hash->{helper}{vd}{msgCnt});
      if (!$hash->{helper}{virtTC}){
my $pn = CUL_HM_id2Name($hash->{helper}{vd}{id});
        $hash->{helper}{vd}{ackT} = ReadingsTimestamp($pn, "ValvePosition", "")
if (!defined $hash->{helper}{vd}{ackT});

        $hash->{helper}{vd}{miss} = 0  if (!defined$hash->{helper}{vd}{miss});
        $hash->{helper}{virtTC}   = ($cmd eq "valvePos")?"03":"00";
        CUL_HM_UpdtReadSingle($hash,"valveCtrl","init",1)if ($cmd eq "valvePos");
        $hash->{helper}{vd}{next} = ReadingsVal($name,".next",gettimeofday())
if (!defined $hash->{helper}{vd}{next});
        CUL_HM_valvePosUpdt("valvePos:$dst$chn");
      }
      $hash->{helper}{virtTC} = ($cmd eq "valvePos")?"03":"00";
    }
    CUL_HM_UpdtReadSingle($hash,$lim{$cmd}{rd},$valu.$lim{$cmd}{u},1);
  }

sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  my $msgCnt = $hash->{helper}{vd}{msgCnt};
my ($idl,$lo,$hi,$nextTimer);
  $hash->{helper}{vd}{nextF} = $hash->{helper}{vd}{next};
  my $tn = gettimeofday();
do {
$msgCnt = ($msgCnt + 1)%255;
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;
$idl = $hash->{helper}{vd}{idl}+$msgCnt;
$lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
$hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
$nextTimer = (($lo+$hi)&0xff)/4 + 120;#original - instable
$hash->{helper}{vd}{nextF} += $nextTimer;
} until ($hash->{helper}{vd}{nextF} > $tn);
  $hash->{helper}{vd}{nextM} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  if ($hash->{helper}{vd}{cmd}){
    if ($hash->{helper}{vd}{typ} == 1){
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{virtTC}
                                        ,$hash->{helper}{vd}{val}));
    }
    else{
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{vd}{val}));
    }
  }
  else{
    delete $hash->{helper}{virtTC};
    CUL_HM_UpdtReadSingle($hash,"state","stopped",1);
    return;# terminate processing
  }
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
  InternalTimer($tn+10,"CUL_HM_valvePosTmr","valveTmr:$vId",0);
}
sub CUL_HM_valvePosTmr(@) {#calc next vd wakeup
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  if ($hash->{helper}{vd}{typ} == 1){
    my $pn = CUL_HM_id2Name($hash->{helper}{vd}{id});
    my $ackTime = ReadingsTimestamp($pn, "ValvePosition", "");
    my $vc;
    if (!$ackTime || $ackTime eq $hash->{helper}{vd}{ackT} ){
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
      $vc = (++$hash->{helper}{vd}{miss} > 5)
                                          ?"lost"
                                          :"miss_".$hash->{helper}{vd}{miss};
      Log3 $name,5,"CUL_HM $name virtualTC use fail-timer";
    }
    else{
CUL_HM_UpdtReadBulk($hash,0,".next:".$hash->{helper}{vd}{next}
,".msgCnt:".($hash->{helper}{vd}{msgCnt}-1));
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
      $vc = "ok";
      $hash->{helper}{vd}{miss} = 0;
    }
    CUL_HM_UpdtReadSingle($hash,"valveCtrl",$vc,1)
          if(ReadingsVal($name,"valveCtrl","") ne $vc);
    $hash->{helper}{vd}{ackT} = $ackTime;
  }
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}


damit geht:

shutdown & restart:                                      5/5 -> 100%
fritzbox reset (ohne shutdown):                    5/5 -> 100%
5 min stromausfall (fritzbox, hmlan):             5/5 -> 100%

hier der log vom stromausfall
2014.02.05 00:35:43.249 1: General VentilControler.AZ.Nord_Btn1 ok:Ventil.AZ.Nord:2014-02-05 00:35:33 - 2014-02-05 00:33:04

######################### 7mmin 26sec offline ###############################################

2014.02.05 00:43:09.406 1: Including fhem.cfg
2014.02.05 00:43:13.896 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.05 00:43:13.958 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.05 00:43:24.754 1: Including ./log/fhem.save
2014.02.05 00:43:28.120 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.05 00:43:29.392 0: Server started with 356 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 1743)
2014.02.05 00:43:32.105 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.05 00:43:34.007 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.05 00:43:34.203 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.05 00:43:34.489 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.05 00:43:34.750 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.05 00:43:38.215 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.05 00:43:44.078 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.05 00:43:44.276 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.05 00:43:44.560 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.05 00:43:44.821 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.05 00:44:21.664 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: ok
2014.02.05 00:44:32.189 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: ok
2014.02.05 00:44:42.151 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.05 00:44:42.261 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok
2014.02.05 00:45:23.555 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.05 00:47:22.382 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: ok


gruss frank

ps: du machst bitte noch den 100%-bug von beitrag « Antwort #83 am: 03 Februar 2014, 22:35:46 »

pps: damit geht jetzt sogar das set-pulldown-menue beim vtc:chn01!

ppps: ich glaube es gibt ein problem,wenn der msg-zähler "überläuft"! wäre es möglich, dass es msgNbr=00 im durchlauf nicht gibt?
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 05 Februar 2014, 11:38:26
danke - habe es sinngemäß übernommen.
habe die Varibalen aus Readings genommen - hast du angst vor der Performance, weil du sie nach Helper kopierst?
Die unitl-loop ist gut - fängt noch einmal ein paar, die knapp am trigger restarten.

Max level ist 99% - 100 gibt es nicht... ist so

ja, pull-down geht seit ein paar Versionen - auch beim Thermostat.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 05 Februar 2014, 15:40:34
hallo martin,

Zitathabe die Varibalen aus Readings genommen - hast du angst vor der Performance, weil du sie nach Helper kopierst?

so wie du die readings "missbrauchst", geht es nicht. du hast sie in der 1. funktion gesetzt, um sie in der 2. funktion zu benutzen. diese daten sind aber keine korrekten meetingpoint-daten. bei systemabsturz wird dann auf diese "falschen" daten zugegriffen.

die readings dürfen nur gesetzt werden, wenn eine prüfung die daten bestätigt hat (timerfunktion, prüfung, else-teil). wenn du die readings nutzt, musst du sicherstellen, dass zu jeder zeit gültige meetingpoint-daten zur rettung der vd enthalten sind.

du kannst das verhalten der readings sehr schön in der detailansicht von vtc:chn01 bei den timestamps beobachten. 1. müssen die timestamps von .msgCtr und .next immer gleich sein. beide readings müssen immer zusammen passen. und 2. immer mit einem neuen valveCtrl=ok timestamp identisch sein.

desweiteren (funktion valvePosUpdt) wird die variable $hash->{helper}{vd}{nextF} erst erfolgreich in der do schleife gesetz, um sie ein paar zeilen später wieder zu überschreiben.

zusätzlich hat mir gerade ein "set clear readings" beim vtc das system lahmgelegt. selbst ein reset der fritzbox hilft nicht mehr. im logfile tauchen nur noch alle 10 min daten auf. das webfrontend kommt nicht mehr durch. ich muss leider mit meiner cul_hm version vorlieb nehmen.  ;)

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 05 Februar 2014, 16:44:40
Zitatso wie du die readings "missbrauchst", geht es nicht. du hast sie in der 1. funktion gesetzt, um sie in der 2. funktion zu benutzen. diese daten sind aber keine korrekten meetingpoint-daten. bei systemabsturz wird dann auf diese "falschen" daten zugegriffen.
der errechnete Wert aus CUL_HM_valvePosTmr sollte immer gültig sein und somit nach readings geschrieben werden können. Wenn FHEM jetzt damit arbeitet MUSS man damit weiter arbeiten können - auch nach reboot.

Zitatdie readings dürfen nur gesetzt werden, wenn eine prüfung die daten bestätigt hat (timerfunktion, prüfung, else-teil).
warum? Ohne restart würden wir mit dem then Zweig weiter arbeiten - also siehe oben.
Nach dem reset errechnest du es alles in der Until schleife noch einmal... sollte hoffentlich exakt die gleichen Werte ergeben. ok - du sparst das setzen des Readings (normalfall) und errechnest es ggf (Ausnahmefall). Ist also schneller. Die until schleife wird dafür immer bearbeitet - das kostet wiederum Performance...

Zitatwenn du die readings nutzt, musst du sicherstellen, dass zu jeder zeit gültige meetingpoint-daten zur rettung der vd enthalten sind.
klar - deshalb immer mit readings arbeiten. Der Satz muss selbstverständlich komplett sein.

Fraglich, warum du
      CUL_HM_UpdtReadBulk($hash,0,".next:".$hash->{helper}{vd}{next}
                                 ,".msgCnt:".($hash->{helper}{vd}{msgCnt}-1));
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};

hier einen Wertesatz vorher ablegst und nicht den, der als nächstes erwartet würde (kein -1 sowie den errechneten Wert nextM in die Readings). Klar - müsste dann auch so in der Berechnung bei Neustart berüchsichtigt werden. Kein Problem sondern ein anderes Herangehen.

Zitatdesweiteren (funktion valvePosUpdt) ... wieder zu überschreiben.
ok, ist klar - copyfehler - meine schuld.

Zitatzusätzlich hat mir gerade ein "set clear readings" beim vtc das system lahmgelegt.
ok - das ist ein Argument zur doppelten Datenhaltung - readings nur als faultback...
Wäre ohne den obigen copy-fehler wohl nicht in dem Ausmaß passiert.

Habe deine Version eingecheckt, zumindest ist der operationale Betrieb somit vom clear Readings  nicht betroffen (wenn danach nicht gleich ein reboot kommt)

Danke
Martin

Titel: Antw:TC emulieren
Beitrag von: martinp876 am 05 Februar 2014, 19:16:06
Hi,

vorsicht mit der Aktuellen Version - ich glaube zwar keinen tippfehler drin zu haben (hat komplett 'compared') aber mein System hat sich aufgehängt.
Kritisch ist m.E. diese Until-loop - die scheint auch endlos laufen zu können.
Werde mir die Berechnung doch einmal reinziehen müssen - oder hast du etwas gefunden Frank?
Endlose Berechnungen machen eh keinen Sinn, da ist neustart angesagt - lässt sich nicht mehr synchen

Ich werden heute noch einmal einchecken, so dass "normal-user" nicht am update sterben ;)
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 05 Februar 2014, 21:26:54
hallo martin,

die do schleife wird wohl endlos laufen, weil du das beste aus 2 philosophien verknüpft hast.  :)

meiner meinung nach kann die schleife nicht endlos laufen. es sei denn irgendetwas wird null oder negativ bei der $nextTimer berechnung. es wird ja ständig aufsummiert, und wenn das aufsummierte grösser als die aktuelle zeit wird, ist der durchlauf beendet.

es kann natürlich lange dauern, wenn du wie heute mittag folgendes einbaust, und nextF 0 wird, dann fangen wir wohl im jahre 1900 oder wer weiss wo an. das hat bei mir wohl das system zum glühen gebracht, als ich die readings gelöscht habe.

  $hash->{helper}{vd}{nextF} = ReadingsVal($name,".next",0);

ist die v4815 nun eigentlich ok oder nur notdürftig geflickt?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 06 Februar 2014, 00:01:07
hallo martin,

meine version ist eigentlich aus der alten version ohne rettungsfeature entstanden. da laufen wir ja quasi den ganzen tag im kreis. bei jedem durchlauf wird aus dem alten $hash->{helper}{vd}{next} jeweils $hash->{helper}{vd}{nextF} und $hash->{helper}{vd}{nextM} berechnet und später nach prüfung eins von beiden zum neuen $hash->{helper}{vd}{next} usw, usw.

durch den einbau der do schleife sollte sich eigentlich erst einmal nichts ändern. sie wird mindestens einmal durchlaufen und die until prüfung wird immer sofort bestanden. denn das alte $hash->{helper}{vd}{next} ist ja ungefähr $tn. also mit meiner version ist das normale verhalten genauso, wie vor dem feature. eine nexttimer berechnung und weiter.

es ändert (soll) sich erst bei systemstart. meine version startet genauso wie die alte, wenn keine readings mit rettungsdaten existieren. erst durch die existenz der rettungsdaten werden die genutzt, um das system zu initialisieren. in diesem moment kommt man das einzige mal mit einem älteren $hash->{helper}{vd}{next} in die funktion und muss die do schleife entsprechend oft durchlaufen, bis das erste $hash->{helper}{vd}{nextF} grösser als die aktuelle zeit wird.

ich speichere zur zeit alle 15 min mein fhem.save file. wenn es dumm läuft und bei speicherung der letzte, verifizierte meetingpoint 15 min zurückliegt, sind meine daten also höchstens 30 min alt. bei einem meeting cycle von ca 2,5 min ergeben sich in diesem fall ca 12 durchläufe der do schleife. das aber auch nur im fall eines neustartes!!
wie gesagt, sonst immer 1 mal, egal ob meeting erfolgreich oder nicht. das sollte also kein problem geben.

vor der do schleife in 4815 habe ich das hier gefunden.

  $hash->{helper}{vd}{next} = ReadingsVal($name,".next",$tn)
        if (!defined $hash->{helper}{vd}{next});


das brauchen wir eigentlich nicht, da es bereits schon vor dem ersten funktionsaufruf eingebaut ist.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

nächster punkt: msgNbr bug:

ich stelle regelmässig fest, das der message zähler beim übergang falsch zählt. er zählt: ....fd,fe, 00, 01.... es fehlt also der wert ff. der fehler liegt in dieser berechnung:

$msgCnt = ($msgCnt + 1)%255;

ich bringe meine seltenen vd ausfälle mit diesem bug in verbindung. wäre das behoben, gäbe es vielleicht keine aussetzer mehr.  ;D wie wäre es damit:

$msgCnt = ($msgCnt + 1)%256;

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 06 Februar 2014, 11:02:25
Hallo Frank,
Zitatdas brauchen wir eigentlich nicht, da es bereits schon vor dem ersten funktionsaufruf eingebaut ist.
hm - das ist falsch. Mein system hat sich aufgehängt - hat nur noch ein kill-9 geholfen. Ich habe es geloggt - es haben werte gefehlt.
Diese Abfrage macht die Sache sicher - den ein Aufhängen - zumal in dieser Form ist indiskutablel.
Die Version habe ich gestern noch 'repariert' mit dieser Abfrage.

Man kann es sicher auch anders lösen. Meine Version vorher hatte zu allen Abfragen auch default wenn nichts gesetzt ist - das ist jetzt wieder so. Hast du den Quer-einstieg nach reboot berücksichtigt? Da liegt die Ursache begraben

und klar - modulo 256. Gut beobachtet.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 06 Februar 2014, 11:36:45
hallo martin,

ich habe den fehler gefunden.
meine version baut auf v4711 auf. dort fehlt folgender block mit dem aufruf der funktion CUL_HM_valvePosUpdt.

    elsif ("virtual" eq $st) {#setup virtuals
      $hash->{helper}{role}{vrt} = 1;
      if (   $hash->{helper}{fkt}
          && $hash->{helper}{fkt} =~ m/^(vdCtrl|virtThSens)$/){
        my $n = ReadingsVal($name,".next",0);
        my $now = gettimeofday();
        $n = $now if ($n<$now);
        my $vId = substr($id."01",0,8);
        $hash->{helper}{virtTC} = "00";
        CUL_HM_Set($hash,$name,"valvePos",ReadingsVal($name,"valvePosTC",""));
        CUL_HM_Set($hash,$name,"virtTemp",ReadingsVal($name,"temperature",""));
        CUL_HM_Set($hash,$name,"virtHum" ,ReadingsVal($name,"humidity",""));
        RemoveInternalTimer("valvePos:$vId");
        InternalTimer($n,"CUL_HM_valvePosUpdt","valvePos:$vId",0);
        }
    }


wenn du von hier einsteigst ist natürlich nichts abgesichert.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 06 Februar 2014, 12:38:47
Hi Frank

so isses - ausser Readings ;) Die (und nur die) sind nach neustart da.
Mit "set" einzusteigen zu aufwändig...

Aber eigentlich is mein code zu aufwändig. Ich werden einfach
        InternalTimer(ReadingsVal($name,".next",1) ,"CUL_HM_valvePosUpdt","valvePos:$vId",0);
nutzen. kein Next oder next kleiner "now" startet dann einfach sofort die Bearbeitung - weniger code, gleiches resultat.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 06 Februar 2014, 17:25:52
hallo martin,

auch mit v4820 erreicht man nun 100% rettungsquote. da macht das herumschrauben am system wieder spass. nicht mehr nach jedem shutdown, ob gewollt oder nicht, durchs ganze haus jagen und sämtliche vd reanimieren.

wo wir gerade beim rumschrauben sind. ich hätte da noch eine "klitzekleine" erweiterung anzubieten. bisher wird bei einem neustart das erste climateEvent ohne aussicht auf erfolg gesendet. nicht nur dass unnötig resourcen verschenkt und gerade beim neustart der funk sinnlos belastet wird, erscheint in meinem log dieses "hässliche" miss_1.

mit folgenden änderungen:

sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  my $msgCnt = $hash->{helper}{vd}{msgCnt};
  my ($idl,$lo,$hi,$nextTimer);
  my $tn = gettimeofday();
  $hash->{helper}{vd}{next} = ReadingsVal($name,".next",$tn)
        if (!defined $hash->{helper}{vd}{next});
  $hash->{helper}{vd}{nextF} = $hash->{helper}{vd}{next};
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;

  if ($tn > ($hash->{helper}{vd}{nextF} + 3000)){# mised 20 periods;
    Log3 $name,3,"CUL_HM $name virtualTC timer off by:".int($tn - $hash->{helper}{vd}{nextF});
    $hash->{helper}{vd}{nextF} = $tn;
  }
  do {
    $msgCnt = ($msgCnt + 1)%256;
    $idl = $hash->{helper}{vd}{idl}+$msgCnt;
    $lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
    $hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
    $nextTimer = (($lo+$hi)&0xff)/4 + 120;
    $hash->{helper}{vd}{nextF} += $nextTimer;
  } until ($hash->{helper}{vd}{nextF} > $tn);

  $hash->{helper}{vd}{nextM} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  if ($hash->{helper}{vd}{cmd}){
    if ($hash->{helper}{vd}{typ} == 1){

##################################################################################
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{virtTC}
                                        ,$hash->{helper}{vd}{val}))
if (ReadingsVal($name,"valveCtrl","init") ne "init");
##################################################################################

    }
    else{
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{vd}{val}));
    }
  }
  else{
    delete $hash->{helper}{virtTC};
    CUL_HM_UpdtReadSingle($hash,"state","stopped",1);
    return;# terminate processing
  }
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
  InternalTimer($tn+10,"CUL_HM_valvePosTmr","valveTmr:$vId",0);
}
sub CUL_HM_valvePosTmr(@) {#calc next vd wakeup
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  if ($hash->{helper}{vd}{typ} == 1){

##################################################################################
if (ReadingsVal($name,"valveCtrl","init") eq "init") {
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
CUL_HM_UpdtReadSingle($hash,"valveCtrl","ready",1);
}
else {
##################################################################################

my $pn = CUL_HM_id2Name($hash->{helper}{vd}{id});
my $ackTime = ReadingsTimestamp($pn, "ValvePosition", "");
my $vc;
if (!$ackTime || $ackTime eq $hash->{helper}{vd}{ackT} ){
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
$vc = (++$hash->{helper}{vd}{miss} > 5)
?"lost"
:"miss_".$hash->{helper}{vd}{miss};
Log3 $name,5,"CUL_HM $name virtualTC use fail-timer";
}
else{
CUL_HM_UpdtReadBulk($hash,0,".next:".$hash->{helper}{vd}{next}
,".msgCnt:".($hash->{helper}{vd}{msgCnt}-1));
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
$vc = "ok";
$hash->{helper}{vd}{miss} = 0;
}
CUL_HM_UpdtReadSingle($hash,"valveCtrl",$vc,1)
if(ReadingsVal($name,"valveCtrl","") ne $vc);
$hash->{helper}{vd}{ackT} = $ackTime;

##################################################################################
}
##################################################################################

  }
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}


sieht mein log nach shutdwn & restart dann so aus:

2014.02.06 16:28:16.802 0: Server shutdown
2014.02.06 16:28:21.270 1: Including fhem.cfg
2014.02.06 16:28:25.726 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.06 16:28:25.784 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.06 16:28:37.709 1: Including ./log/fhem.save
2014.02.06 16:28:40.630 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.06 16:28:41.883 0: Server started with 356 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 3890)
2014.02.06 16:28:43.730 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.06 16:28:46.495 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.06 16:28:46.663 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.06 16:28:47.183 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.06 16:28:47.377 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.06 16:28:51.822 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: ready
2014.02.06 16:28:56.605 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: ready
2014.02.06 16:28:56.749 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ready
2014.02.06 16:28:57.278 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: ready
2014.02.06 16:28:57.476 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ready
2014.02.06 16:29:22.287 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok
2014.02.06 16:29:58.969 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.06 16:30:25.531 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: ok
2014.02.06 16:30:49.689 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: ok
2014.02.06 16:30:52.389 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: ok


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 06 Februar 2014, 19:48:00
Hallo Frank,

nun - operationell hatte ich ja nichts verändert - ist immer noch dein code.

Code bauen ich ein.
Wenn es aber häufig eingesetzt werden soll wird man den code evtl optimieren müssen. Will man z.B. 10 Thermostate nutzen wird die CPU last wichtig!

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 06 Februar 2014, 23:46:45
hallo martin,

deine variation bringt, glaub ich, ärger! weil "typ=1 & init" nach else will.  ;)
hatte ich der schönheit wegen auch erst, dann aber nicht gewagt.

    if (   $hash->{helper}{vd}{typ} == 1
        && ReadingsVal($name,"valveCtrl","init") ne "init"){
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{virtTC}
                                        ,$hash->{helper}{vd}{val}));
    }
    else{
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{vd}{val}));
    }


ZitatWenn es aber häufig eingesetzt werden soll wird man den code evtl optimieren müssen. Will man z.B. 10 Thermostate nutzen wird die CPU last wichtig!

dann mach dich schon mal warm!
das läuft so überzeugend, da werde ich wohl noch kräftig erweitern. da gerade alle auf rt umswitchen gibt es die vd bestimmt bald zum schrottpreis. aber nicht weitersagen.  :)

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 07 Februar 2014, 08:17:22
Hi Frank,

sorry - schlecht nachgedacht. - korrogiert

Zur "massenhaft" Nutztung wird muss man einige andere Dinge betrachten - so z.B. das message aufkommen und die HMLAN Grenzen...

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: Hauswart am 10 Februar 2014, 10:05:41
Ist es mit PID20 (http://www.fhemwiki.de/wiki/PID20_-_Der_PID-Regler), welcher die benötigte Ventileinstellung berechnet, über die virtuelle Einstellungen "valvePos" und "virtTemp" die Ventilöffnung bzw. die Temperatur bei einem HM-CC-RT-DN zu regeln?

Dann wäre das HM-CC-RT-DN de facto ein reiner Stellantrieb? Ist-Temperatur wird nicht vom RT gemessen, Ventilöffnung von PID20 berrechnet, Soll-Temperatur wird von PID20 festgelegt bzw. über Dummy?

Titel: Antw:TC emulieren
Beitrag von: frank am 10 Februar 2014, 11:47:51
hallo hauswart,

Zitat von: Hauswart am 10 Februar 2014, 10:05:41
Ist es mit PID20 (http://www.fhemwiki.de/wiki/PID20_-_Der_PID-Regler), welcher die benötigte Ventileinstellung berechnet, über die virtuelle Einstellungen "valvePos" und "virtTemp" die Ventilöffnung bzw. die Temperatur bei einem HM-CC-RT-DN zu regeln?

wie du im anderen thread bereits mehrfach gehört hast, ist diese methode mit dem rt nicht möglich! jedenfals habe ich das dort so verstanden. ich habe kein rt und kann es selbst nicht beurteilen. da beim rt regler und ventil in einem gehäuse untergebracht sind, ist es wohl nicht möglich die datenverbindung zwischen regler und ventil zu kappen, um dem ventil eigene daten zu übermitteln.

wenn du die firmware vom rt verändern würdest, hättest du vielleicht eine chance.  ;)

die möglichkeiten in diesem thread beziehen sich ausschliesslich auf einen hm-cc-vd. bei diesem model ist kein regler im gleichen gehäuse enthalten. es handelt sich hier, um einen reinen stellantrieb, ohne extras.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 10 Februar 2014, 12:11:50
kann ich bestaetigen - der RT bekommt kann, wenn gepeert, die ist-temp von extern bekommen. Die Ventilstellung berechnet er immer intern
Titel: Antw:TC emulieren
Beitrag von: frank am 10 Februar 2014, 18:09:56
hallo martin,

nachdem, seit den letzten erweiterungen des vtc, keine ausfälle der realen vd mehr aufgetreten sind, habe ich es gewagt, dem vd nicht mehr zu jedem zyclus ein climateEvent anzubieten. ziel ist, den funkverkehr zum vd zu reduzieren.

mit folgender erweiterung wird nach jedem erfolgreichen meeting ein zyclus ausgelassen. dieses feature soll steuerbar sein. normalerweise müsste die steuerung durch die einstellung eines attributs erfolgen. aus unkenntnis der attributeinbindung habe ich es erst einmal über ein reading ausprobiert.

#+++++++++++++++++ set/get support subroutines+++++++++++++++++++++++++++++++++
sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  my $msgCnt = $hash->{helper}{vd}{msgCnt};
  my ($idl,$lo,$hi,$nextTimer);
  my $tn = gettimeofday();
  $hash->{helper}{vd}{next} = ReadingsVal($name,".next",$tn)
        if (!defined $hash->{helper}{vd}{next});
  $hash->{helper}{vd}{nextF} = $hash->{helper}{vd}{next};
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;

  if ($tn > ($hash->{helper}{vd}{nextF} + 3000)){# mised 20 periods;
    Log3 $name,3,"CUL_HM $name virtualTC timer off by:".int($tn - $hash->{helper}{vd}{nextF});
    $hash->{helper}{vd}{nextF} = $tn;
  }
  do {
#######################################################
    $msgCnt = ($msgCnt + 1)%256;
#######################################################
    $idl = $hash->{helper}{vd}{idl}+$msgCnt;
    $lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
    $hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
    $nextTimer = (($lo+$hi)&0xff)/4 + 120;
    $hash->{helper}{vd}{nextF} += $nextTimer;
  } until ($hash->{helper}{vd}{nextF} > $tn);

  $hash->{helper}{vd}{nextM} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  if ($hash->{helper}{vd}{cmd}){
    if    ($hash->{helper}{vd}{typ} == 1){

#######################################################################################
#   msgReduce=0 => push all cycle (100% msgLoad)
#   msgReduce=1 => push 1 cycle, miss 1 cycle if first cycle ok (50% msgLoad)

CUL_HM_UpdtReadSingle($hash,"msgReduce",0,0)
if (!defined ReadingsVal($name,"msgReduce",undef));
my $mr = ReadingsVal($name,"msgReduce",0);

my $vc = ReadingsVal($name,"valveCtrl","init");
if (!(($vc eq "init") || ($vc eq "ok") && $mr)) { #push if ready,idle,miss,lost
CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s%s"
,$msgCnt
,$hash->{helper}{vd}{cmd}
,$hash->{helper}{virtTC}
,$hash->{helper}{vd}{val}));
}
#
#######################################################################################

      InternalTimer($tn+10,"CUL_HM_valvePosTmr","valveTmr:$vId",0);
    }
    elsif ($hash->{helper}{vd}{typ} == 2){
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{vd}{val}));
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
      InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
    }
  }
  else{
    delete $hash->{helper}{virtTC};
    CUL_HM_UpdtReadSingle($hash,"state","stopped",1);
    return;# terminate processing
  }
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
}
sub CUL_HM_valvePosTmr(@) {#calc next vd wakeup
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};

#######################################################################################
#
my $vc = ReadingsVal($name,"valveCtrl","init");
if ($vc eq "init") {
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
CUL_HM_UpdtReadSingle($hash,"valveCtrl","ready",1);
}
my $mr = ReadingsVal($name,"msgReduce",0);
elsif (($vc eq "ok") && $mr) {
$hash->{helper}{vd}{miss} = 1;
$hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
CUL_HM_UpdtReadSingle($hash,"valveCtrl","idle",1);
}
#
#######################################################################################

  else {
    my $pn = CUL_HM_id2Name($hash->{helper}{vd}{id});
    my $ackTime = ReadingsTimestamp($pn, "ValvePosition", "");
    my $vc;
    if (!$ackTime || $ackTime eq $hash->{helper}{vd}{ackT} ){
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
      $vc = (++$hash->{helper}{vd}{miss} > 5)
                                          ?"lost"
                                          :"miss_".$hash->{helper}{vd}{miss};
      Log3 $name,5,"CUL_HM $name virtualTC use fail-timer";
    }
    else{
      CUL_HM_UpdtReadBulk($hash,0,".next:".$hash->{helper}{vd}{next}
                                 ,".msgCnt:".($hash->{helper}{vd}{msgCnt}-1));
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
      $vc = "ok";
      $hash->{helper}{vd}{miss} = 0;
    }
    CUL_HM_UpdtReadSingle($hash,"valveCtrl",$vc,1)
          if(ReadingsVal($name,"valveCtrl","") ne $vc);
    $hash->{helper}{vd}{ackT} = $ackTime;
  }
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}



seit gut 24 std läuft diese erweiterung bei mir problemlos. da meine hauptfunklast durch 5 vtc und 4 vvd erzeugt wird, die ca alle 2.5 min messages zu ihren realen partnern senden, erzielt diese erweiterung eine enorme reduzierung der funklast. laufen diese 9 virtuellen entities unter volllast, kann ich am hmlan unter msgLoadEst im normalen betrieb eine gemittelte funklast von 25% feststelen. über hminfo:msgStat entspricht es stündlich ca 220 messages. nach dem einbau der erweiterung sinken die werte auf 15%/160msg. und das bei bisher 100% lebenserhaltung der vd.

als nächsten schritt wollte ich die vvd funklast verringern. mit folgendem code ist es mir aber nur gelungen, die antworten zum tc zu ändern, anstatt sie zu reduzieren. das sollte dir ja bestimmt keine probleme bereiten.  ;) zumindestens kann ich die funktion meiner erweiterung im log erkennen. bei jedem "gewollten" auslassen antwortet fhem nun mit einem normalen ack (00). man kann am realen tc gut erkennen, dass ihm das nicht gefällt. zur zeit läuft ein vvd mit einstellung msgReduce=4 (1x msg und 4x auslassen), was ca 20% der bisherigen volllast entsprechen sollte. mit dieser einstellung scheint er gerade noch zufrieden zu sein, ohne ein stündliches beep, beep von sich zu geben. mit einstellung 5 gab es einmal alarm. daher könnte man sich auf einstellungen von 0-4 begnügen. wahrscheinlich würde es auch reichen, ihm 1-2 antworten kurz vor der vollen Stunde zu senden, wenn einem das blinkende antennensymbol in der restlichen zeit nicht stört. auch bei dieser erweiterung nutze ich ein reading anstelle eines attributes.

    elsif($mTp eq "58" && $p =~ m/^(..)(..)/) {# climate event
      my ($d1,$vp) =($1,hex($2)); # adjust_command[0..4] adj_data[0..250]
      $vp = int($vp/2.56+0.5);    # valve position in %
      my $chnHash = $modules{CUL_HM}{defptr}{$dst."01"};
      $chnHash = $dhash if (!$chnHash);
      push @entities, CUL_HM_UpdtReadBulk($chnHash,1,"ValvePosition:$vp %",
                                                     "ValveAdjCmd:".$d1);

#######################################################################################
#   msgReduce=0 => push all cycle  (100% msgLoad)
#   msgReduce=1 => push 1 cycle, miss 1 cycle  (50% msgLoad)
#   msgReduce=2 => push 1 cycle, miss 2 cycle  (33% msgLoad)
#   msgReduce=3 => push 1 cycle, miss 3 cycle  (25% msgLoad)
#   msgReduce=4 => push 1 cycle, miss 4 cycle  (20% msgLoad)
CUL_HM_UpdtReadSingle($chnHash,"msgReduce",0,0)
if (!defined ReadingsVal($chnHash->{NAME},"msgReduce",undef));
my $ctrRange = ReadingsVal($chnHash->{NAME},"msgReduce",0)+1;
$chnHash->{helper}{cntr} = ($ctrRange-1)
if (!defined $chnHash->{helper}{cntr});

$chnHash->{helper}{cntr} = ($chnHash->{helper}{cntr} +1)%$ctrRange;
if (!$chnHash->{helper}{cntr}) {
push @ack,$chnHash,$mNo."8002".$dst.$src.'0101'.
                         sprintf("%02X",$vp*2)."0000";
}
#
#######################################################################################
    }


ps: deine neue variation des modulo256-zählers musste ich wieder ändern. hat immer die selbe msgNbr erzeugt.

pps: anbei noch ein plot einer vd/vtc-kommunikation nach einem reset. ab ca 17.35 habe ich auf reduzierung der funklast umgeschaltet. kleine rote kästchen sind die phasen ohne climateEvent (status=idle).

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 08:27:13
Hi Frank,

die reduzierung zum Senden habe ich vorbereitet.
Da attribute nicht selektiv sind und ich hier eine Uuberschwemmung vermeiden will gibt es das Sammelattribut "param"
Einschalten ueber Attribut "param" = msgReduce
attr <name> param msgReduce

Den 2. Teil werde ich nicht einbauen. Wenn das device eine Antwort anfordert wird diese gesendet. Alles andere sind Verletzungen des Funkprotokols - und das kann nicht die Loesung sein.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 11:46:56
hallo martin,

ZitatDen 2. Teil werde ich nicht einbauen. Wenn das device eine Antwort anfordert wird diese gesendet. Alles andere sind Verletzungen des Funkprotokols - und das kann nicht die Loesung sein.

nein, das stimmt nicht!

es wird keine antwort "gefordert". das funkprotokoll von cmd58 ist ja gerade für den fall des "nicht antwortens" konzipiert. der tc sendet tapfer nach seinem rythmus cmd58 und reagiert entsprechend der "häufigkeit der empfangenen" antworten. bei unterschiedlicher häufigkeit mit unterschiedlichen aktionen.

es sind ja expliziet massnahmen vorhanden, die darauf aufbauen, dass die erwartung der antworten unter 100% liegt. es beeinflusst den realen tc auch in keinster weise in seiner funktion. im gegenteil ist es ihm völlig egal, ob der vd antwortet oder nicht. er gibt lediglich ab einer "minimalen häufigkeit" eine warnung an den user aus, um nach fehlern zu schauen.

somit wäre die implementation einer "variablen häufigkeit" der antworten unseres virtuellen vd wesentlich näher an der realität, als die von "dir vorgeschriebene 100%-ige" antwort.

auf deine argumentationsweise aufbauend könnte ich dann auch behaupten, dass fhem, wenn es sich als virtueller vd "tarnt" und sein empfangsfenster für den cmd58 regelverletzend "unendlich" weit aufreisst, es sich damit nicht an das funkprotokoll hält.

um eine echte verletzung des funkprotokolls handelt es sich, wenn man "unnötigerweise" den funkverkehr belastet. wir könnten 80% des funkverkehrs einsparen, weil er nicht notwendig ist und es keine regel gibt, dieses nicht zu tun. im gegenteil  ist die reduzierung "unnötigen" funkverkehrs empfehlenswert, vielleicht sogar vorgeschrieben, um den funkverkehr anderer funkteilnehmer nicht unnötigerweise störend zu beeinflussen.

deine argumente hinterlassen bei mir eher den eindruck, dass du dieses feature einfach nur nicht haben willst. warum auch immer. sicherlich nicht wegen einer verletzung des funkprotokolls.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 13:43:11
Hi Frank,

ob ein device eine Antwort sehen will oder nicht legt es im Flag fest,  nicht im Commandtype. Wie oft wiederholt wird ist eine andere Sache.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 13:57:02
hallo martin,

ich habe gerade festgestellt, dass du zwischen v4820 und v4864 eine änderung bei der eingabe von valvaPosTC vorgenommen haben musst. einstellige positionswerte müssen auf einmal mit vorangestellter "0" eigegeben werden, um ausgeführt zu werden. nicht so entscheidend ist die neue form der ausgabe des readings valvePos beim zustand stopped in der darstellung "off %".

somit kommen die befehle des pid20-reglers nicht mehr durch.

muss ich das nun auffangen und entsprechend modifizieren, oder ist das ein versehen?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 14:31:57
Hi Frank,

konkret:
du willst .1 schicken koennen anstatt 0.1?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: betateilchen am 11 Februar 2014, 14:36:22
ich vermute anhand seiner Beschreibung, er will "1" schicken können anstatt "01"  8)
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 14:41:53
Zitat von: betateilchen am 11 Februar 2014, 14:36:22
ich vermute anhand seiner Beschreibung, er will "1" schicken können anstatt "01"  8)

ganz genau :)

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 14:49:33
alles klar
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 15:34:29
hallo martin,

also, wegen:

A2 => 10100010 => bit5 = 1 => bidi

fühlst du dich genötigt, alles "stehen und liegen" zu lassen, um ohne rücksicht auf verluste sofort eine antwort "raus zu hauen".

da kann man nicht mit etwas gelassenheit eventuell ausnahmsweise ein momentchen verharren, um dann wohlüberlegt etwas später mit sicherheit auch das richtige zu antworten?  8)

Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 16:37:07
Frank,

es gibt ein Protokoll - das besagt, wenn du angesprochen bist und das Gegenüber eine Antwort erwartet antwortet man. So ist das Protokol definiert. man kann nicht warten oder sonst etwas, da ist ein Zeitfenster.
Ich habe erst einmal nicht die Absicht hier solche Verletzungen einzubauen, auch wenn du ausmessen würdest, dass manche devices her keinen Alarm (Empfänger nicht erreichbar) schicken würden.
HM hat das so definiert, die Gesamtfunklast eines Systems kann es also ab (oder HM hat einen eklatanten Designfehler gemacht).
Dass man als Master einen Ventilwert aus lässt ist grenzwertig... aber gut, wenns sein muss - hab ich eingebaut.

Wie viele virtuelle VDs willst du den betreiben?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 18:22:22
hallo martin,

ZitatIch habe erst einmal nicht die Absicht hier solche Verletzungen einzubauen, auch wenn du ausmessen würdest, dass manche devices her keinen Alarm (Empfänger nicht erreichbar) schicken würden.

na dann.  :'(

ZitatDass man als Master einen Ventilwert aus lässt ist grenzwertig... aber gut, wenns sein muss - hab ich eingebaut.

das kann nicht grenzwertig sein, da der tc das selber so macht. sind 2-4 vd mit ihm gepeert, bedient er die vd der reihe nach, und lässt die anderen "verhungern".

aber trotzdem danke dafür.  :)

ZitatWie viele virtuelle VDs willst du den betreiben?

wahrscheinlich verdoppeln. das sollte von der funklast dann eigentlich reichen.

zur zeit benötige ich halt 62,5% (25 messages pro std und pro tc) meiner funklast nur dafür, die tc zu streicheln, damit sie mich nicht jede stunde anpeepen. ich weiss ja nicht, was im laufe der zeit noch so ins system aufgenommen werden will. hoffentlich müssen dann nicht existentielle messages warten, nur damit diese unnötigen gesendet werden. kann mann da eventuell prioritäten festlegen?

für mein empfinden sind diese messages ansich schon überflüssig. warum peept der tc überhaupt, wenn kein vd mit ihm gepeert ist? fast in jeder situation nervt mich das teil. wenn man was von ihm will, macht er es nicht oder unzuverlässig. wenn man aber nichts mehr von ihm will, dann peept er äusserst zuverlässig. egal.

denn eigentlich müsste doch ein workaround existieren. ich habe gerade mal versucht mit dem attr ignore zu spielen. leider noch kein glück gehabt. aber da scheint noch ein bug zu existieren. setze ich das parentdevice auf ignore, erzeugt die fehlermeldung "device ignored due to attr 'ignore'" 6 einträge im set-menue des channeldevice. jedes wort einen eintrag.

frage: sollte ein "attr <device> ignore 1" grundsätzlich die kommunikation beenden? und mit "0" wieder beginnen?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 11 Februar 2014, 19:20:23
hallo martin,

mein freund ist attr dummy.  :)

aber auch hier gibt es probleme:
mit "attr dummy 1" kann ich die messages zwar erfolgreich verhindern. doch ein "attr dummy 0" schaltet die antworten nicht wieder ein. erst ein "delete attr dummy" startet das senden der messages wieder.

das ist doch bestimmt nicht so vorgesehen!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 11 Februar 2014, 19:43:32
Hi Frank,

Zitatzur zeit benötige ich halt 62,5% (25 messages pro std und pro tc) meiner funklast.... kann mann da eventuell prioritäten festlegen?
Prioritäten gibt es nicht - wie sollte das auch gehen - senden oder nicht, was anderes geht nicht. oder du willst Minuten lang warten...

Zitatfür mein empfinden sind diese messages ansich schon überflüssig. warum peept der tc überhaupt, wenn kein vd mit ihm gepeert ist? fast in jeder situation nervt mich das teil.
ist nun einmal HM konzept - message und ack - das hat nur sinn, wenn auch gemeldet wird. Das mit dem piepen ist eine spezialitaet...


ignore schaltet senden und empfangen aus.
dummy schaltet senden aus - wird auch in fhem.pl genutzt, habe nicht geprüft, was dort abgefragt wird.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 12 Februar 2014, 13:30:22
hallo martin,

ich habe jetzt die v4886 eingespielt. aber msgReduce springt nicht an. wir sind immer im normalmodus.

ich habe attr param msgReduce im parentdevice angelegt. im channel geht nicht. ein get param msgReduce ergibt sowohl im parent- als auch im channeldevice undefined.

ein loggen von $hash->{helper}{vd}{msgRed} in den beiden funktionen ergibt immer 0.

dieser elsif-block wird genau einmal beim shutdown & restart durchlaufen, und initialisiert
$hash->{helper}{vd}{msgRed}=1. ich logge am anfang und am ende von elsif. auf dem weg zur funktion CUL_HM_valvePosUpdt bekommt sie den zustand undefiniert (aber wo?), wodurch sie dann natürlich in der funktion auf 0 gesetzt wird.
ich finde keine stelle an der die variable $hash->{helper}{vd}{msgRed} expliziet gelöscht wird!

    elsif ($md =~ m/^virtual_/){
      if ($cmd eq "set"){
        if ($attrVal eq "noOnOff"){# no action    
        }
        elsif ($attrVal eq "msgReduce"){#set param
          $hash->{helper}{vd}{msgRed}=1;
        }
        else{
          return "attribut param not defined for this entity";
        }
      }
      else{
        delete $hash->{helper}{vd}{msgRed};
      }
    }
    else{
      return "attribut param not defined for this entity";
    }


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 12 Februar 2014, 13:41:27
schaue ich mir an...
Titel: Antw:TC emulieren
Beitrag von: frank am 12 Februar 2014, 13:47:51
eigentlich kann das nur bedeuten das $hash->{helper}{vd}{msgRed} in elsif und funktion nicht das selbe ist!
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 12 Februar 2014, 14:17:02
ja - aber ich muss noch ein paar details einfuegen bei param allgemein
Titel: Antw:TC emulieren
Beitrag von: JohanK am 13 Februar 2014, 15:43:49
Hallo,
Habe diese Konversation nicht ganz begriffen :-) aber trotzdem sehr erfreut mit dem Resultat !

Aber Ich verstehe das bei nicht zurück schicken von einem Ack in der Praxis, bei realen Devices, zu folge hat das der HMLAN noch 2 mal versucht um den Empfänger zu erreichen. Man sieht dass nur wenn Mann den Funkverkehr mitlogged auf einen zweiten HMLAN...Also das generiert extra Funktraffic in dem fall. Weiß nicht ob das in diese Konfiguration auch so sein wird.

freundliche Grüße, und viel dank für diese neue und viel gewünschte Funktionalität !!

Johan
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 13 Februar 2014, 15:52:24
Zitat...zu folge hat das der HMLAN noch 2 mal versucht um den Empfänger zu erreichen. Man sieht dass nur wenn Mann den Funkverkehr mitlogged...
exact. das zu steuern fehlt mir das Wissen zum HMLAN - also ist es unvermeidlich

Wiederholt wird von jedem Device, wenn ein gefordertes ACK nicht gekommen ist. Die Anzahl der Wiederholungen ist i.A. 2, kann aber abweichen. In manchen Faellen ist es 0 (nur einmal senden). Unterschiede liegen in den Devices un dggf in deren Einstellungen

HMLAN steht immer auf 2 (1 mal senden, 2 mal wieder holen).

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 13 Februar 2014, 16:43:40
hallo ihr beiden,

meine derzeitigen versuche bestätigen diese tatsache.

nach meinem fhem.log unterdrücke ich zur zeit erfolgreich 4 von 5 antworten der virtuellen vd, indem ich die vvd für 4 zyklen in den dummy-zustand versetze. das sollte eine reduzierung von 80% bedeuten.

aber sowohl msgLoadEst vom hmlan, sowie msgStat von hminfo geben in diesem fall nicht die erwartete reduzierung wieder. es gibt keinen linearen zusammenhang. eine reduzierung der werte hat aber trotzdem stattgefunden. bei msgLoadEst hätte ich rechnerisch eine reduzierung im mittel von 9% erwartet, aber nur ca. 5% sind erfolgt. bei msgStat wird sogar noch weniger reduziert. erwartet hätte ich 80msg pro std weniger, aber nur 20msg weniger sind zu beobachten.

aber schon interessant, das msgLoadEst und msgStat die heimlichen antworten mitbekommen, wenngleich sie sie auch unterschiedlich bewerten. wahrscheinlich hat dann auch die länge der antworten einfluss auf auf die 1%-regel, weil der hmlan vermutlich nur mit "0x00" antwortet.
das attribut msgRepeat hat wohl keinen einfluss darauf, denn das habe ich auf 0 gestellt.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 13 Februar 2014, 19:42:37
Hi Frank

Zitataber schon interessant, das msgLoadEst und msgStat die heimlichen antworten mitbekommen
nun, ich habe mich bemüht - das waren einige Experimente.
Ja, die Berechnung ist leicht unterscheidlich, sie Aussage auch
Zitatwahrscheinlich hat dann auch die länge der antworten einfluss
nein
Zitatdas attribut msgRepeat hat wohl keinen einfluss darauf, denn das habe ich auf 0 gestellt.
auf die Wiederholungen des HMLAN? Nein, die kann ich nicht beeinflussen (eq3 evtl schon... aber da fehlt die Registerbeschreibung den HMLAN selbst. )

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 13 Februar 2014, 20:11:12
hallo martin,

hattest du eventuell wegen der attr param umstellung schon etwas unternommen? in v4901 war mir im angesprochenen bereich nichts neues aufgefallen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 13 Februar 2014, 20:16:11
Hallo Frank,
msgred sollte jetzt funktionieren - gesetzt wird es jedenfalls bei mir.
Machst du es gerade skalierbar? Also jede 2./3./4. message unterdrücken? Gib gescheid, wenn dem so ist
Gruss Martin

ps - sehe gerade deine Antwort - eigentlich sollte es eingecheckt sein.
Also attr param msgReduce setzt den Helper korrekt.
Die Verarbeitung habe ich nicht getestet - mache ich jetzt mal
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 13 Februar 2014, 20:41:23
hallo martin,

ZitatMachst du es gerade skalierbar? Also jede 2./3./4. message unterdrücken?
bevor ich daran gehe, wollte ich erst einmal versuchen, die beiden funktionen derart um zu bauen, dass man im falle einer unterdrückung die internalTimer gleich auf den "gewünschten" zeitpunkt stellt. dann hätte man nicht so viele "sinnlose" kurze timer am laufen. gibt vielleicht mehr performance? oder was meinst du?

dann muss ich jetzt wohl zum svn!  :)

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 14 Februar 2014, 03:16:43
hallo martin,

msgReduce klappt immer noch nicht.  :(

mit 6 log einträgen andiesen stellen:

    elsif ($md =~ m/^virtual_/){
      Log 1,"##### init1 ##### cmd:$cmd, model:$md, attrVal:$attrVal, msgRdc:$hash->{helper}{vd}{msgRed}";
      if ($cmd eq "set"){
        if ($attrVal eq "noOnOff"){# no action    
        }
        elsif ($attrVal eq "msgReduce"){#set param
          $hash->{helper}{vd}{msgRed}=1;
        }
        else{
          return "attribut param not defined for this entity";
        }
      }
      else{
        delete $hash->{helper}{vd}{msgRed};
      }
       Log 1,"##### init2 ##### cmd:$cmd, model:$md, attrVal:$attrVal, msgRdc:$hash->{helper}{vd}{msgRed}";
    }
#######################################################
sub CUL_HM_valvePosUpdt(@) {#update valve position periodically to please valve
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  my $msgCnt = $hash->{helper}{vd}{msgCnt};
  my ($idl,$lo,$hi,$nextTimer);
  my $tn = gettimeofday();
  $hash->{helper}{vd}{next} = ReadingsVal($name,".next",$tn)
        if (!defined $hash->{helper}{vd}{next});
  $hash->{helper}{vd}{nextF} = $hash->{helper}{vd}{next};
# int32_t result = (((_address << 8) | messageCounter) * 1103515245 + 12345) >> 16;
#                          4e6d = 20077                        12996205 = C64E6D
# return (result & 0xFF) + 480;

  if ($tn > ($hash->{helper}{vd}{nextF} + 3000)){# mised 20 periods;
    Log3 $name,3,"CUL_HM $name virtualTC timer off by:".int($tn - $hash->{helper}{vd}{nextF});
    $hash->{helper}{vd}{nextF} = $tn;
  }
  do {
    $msgCnt = ($msgCnt +1) %256;
    $idl = $hash->{helper}{vd}{idl}+$msgCnt;
    $lo = int(($idl*0x4e6d +12345)/0x10000)&0xff;
    $hi = ($hash->{helper}{vd}{idh}+$idl*198)&0xff;
    $nextTimer = (($lo+$hi)&0xff)/4 + 120;
    $hash->{helper}{vd}{nextF} += $nextTimer;
  } until ($hash->{helper}{vd}{nextF} > $tn);

  $hash->{helper}{vd}{nextM} = $tn+$nextTimer;
  $hash->{helper}{vd}{msgCnt} = $msgCnt;
  if ($hash->{helper}{vd}{cmd}){
    if    ($hash->{helper}{vd}{typ} == 1){
      my $vc = ReadingsVal($name,"valveCtrl","init");
      if(!defined $hash->{helper}{vd}{msgRed}){
        $hash->{helper}{vd}{msgRed} = 0;
      }
Log 1,"##### updt1:$name, vCtrl:$vc, msgRdc:$hash->{helper}{vd}{msgRed} #####";

      if (!(($vc eq "init") ||
            ($vc eq "ok") && $hash->{helper}{vd}{msgRed})) {#if ready,idle,miss,lost
Log 1,"##### updt2:$name, vCtrl:$vc, msgRdc:$hash->{helper}{vd}{msgRed} #####";
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s%s"
                                           ,$msgCnt
                                           ,$hash->{helper}{vd}{cmd}
                                           ,$hash->{helper}{virtTC}
                                           ,$hash->{helper}{vd}{val}));
      }
      InternalTimer($tn+10,"CUL_HM_valvePosTmr","valveTmr:$vId",0);
    }
    elsif ($hash->{helper}{vd}{typ} == 2){
      CUL_HM_PushCmdStack($hash,sprintf("%02X%s%s"
                                        ,$msgCnt
                                        ,$hash->{helper}{vd}{cmd}
                                        ,$hash->{helper}{vd}{val}));
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
      InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
    }
  }
  else{
    delete $hash->{helper}{virtTC};
    CUL_HM_UpdtReadSingle($hash,"state","stopped",1);
    return;# terminate processing
  }
  $hash->{helper}{virtTC} = "00";
  CUL_HM_ProcessCmdStack($hash);
}
sub CUL_HM_valvePosTmr(@) {#calc next vd wakeup
  my($in ) = @_;
  my(undef,$vId) = split(':',$in);
  my $hash = CUL_HM_id2Hash($vId);
  my $name = $hash->{NAME};
  my $vc = ReadingsVal($name,"valveCtrl","init");
Log 1,"##### tmr1:$name, vCtrl:$vc, msgRdc:$hash->{helper}{vd}{msgRed} #####";
  if ($vc eq "init") {
  $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
  CUL_HM_UpdtReadSingle($hash,"valveCtrl","ready",1);
  }
  elsif (($vc eq "ok") && $hash->{helper}{vd}{msgRed}) {
Log 1,"##### tmr2:$name, vCtrl:$vc, msgRdc:$hash->{helper}{vd}{msgRed} #####";
  $hash->{helper}{vd}{miss} = 1;
  $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
  CUL_HM_UpdtReadSingle($hash,"valveCtrl","idle",1);
  }
  else {
    my $pn = CUL_HM_id2Name($hash->{helper}{vd}{id});
    my $ackTime = ReadingsTimestamp($pn, "ValvePosition", "");
    my $vc;
    if (!$ackTime || $ackTime eq $hash->{helper}{vd}{ackT} ){
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextF};
      $vc = (++$hash->{helper}{vd}{miss} > 5)
                                          ?"lost"
                                          :"miss_".$hash->{helper}{vd}{miss};
      Log3 $name,5,"CUL_HM $name virtualTC use fail-timer";
    }
    else{
      CUL_HM_UpdtReadBulk($hash,0,".next:".$hash->{helper}{vd}{next}
                                 ,".msgCnt:".($hash->{helper}{vd}{msgCnt}-1));
      $hash->{helper}{vd}{next} = $hash->{helper}{vd}{nextM};
      $vc = "ok";
      $hash->{helper}{vd}{miss} = 0;
    }
    CUL_HM_UpdtReadSingle($hash,"valveCtrl",$vc,1)
          if(ReadingsVal($name,"valveCtrl","") ne $vc);
    $hash->{helper}{vd}{ackT} = $ackTime;
  }
  InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
}


erhalte ich folgende logausgaben in fhem.log:

0.nach shutdown, restart (attr war angelegt)
2014.02.13 22:10:51.327 1: ##### init1 ##### cmd:set, model:virtual_1, attrVal:msgReduce, msgRdc:
2014.02.13 22:10:51.329 1: ##### init2 ##### cmd:set, model:virtual_1, attrVal:msgReduce, msgRdc:1

1. funktiondurchlauf
2014.02.13 22:10:56.565 1: ##### updt1:VentilControler.Kueche_Btn1, vCtrl:init, msgRdc:0 #####
2014.02.13 22:11:06.572 1: ##### tmr1:VentilControler.Kueche_Btn1, vCtrl:init, msgRdc:0 #####

2. funktiondurchlauf
2014.02.13 22:11:18.875 1: ##### updt1:VentilControler.Kueche_Btn1, vCtrl:ready, msgRdc:0 #####
2014.02.13 22:11:18.877 1: ##### updt2:VentilControler.Kueche_Btn1, vCtrl:ready, msgRdc:0 #####
2014.02.13 22:11:28.883 1: ##### tmr1:VentilControler.Kueche_Btn1, vCtrl:ready, msgRdc:0 #####

3. funktiondurchlauf
2014.02.13 22:13:36.388 1: ##### updt1:VentilControler.Kueche_Btn1, vCtrl:ok, msgRdc:0 #####
2014.02.13 22:13:36.389 1: ##### updt2:VentilControler.Kueche_Btn1, vCtrl:ok, msgRdc:0 #####
2014.02.13 22:13:46.400 1: ##### tmr1:VentilControler.Kueche_Btn1, vCtrl:ok, msgRdc:0 #####

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

deleteattr parentdev param msgReduce
2014.02.13 23:01:39.581 1: ##### init1 ##### cmd:del, model:virtual_1, attrVal:, msgRdc:1
2014.02.13 23:01:39.583 1: ##### init2 ##### cmd:del, model:virtual_1, attrVal:, msgRdc:

attr parentdev param msgReduce
2014.02.13 23:06:02.063 1: ##### init1 ##### cmd:set, model:virtual_1, attrVal:msgReduce, msgRdc:
2014.02.13 23:06:02.065 1: ##### init2 ##### cmd:set, model:virtual_1, attrVal:msgReduce, msgRdc:1


$hash->{helper}{vd}{msgRed} ist in den funktionen nicht definiert und wird dann dort neu definiert und zu 0 gesetzt.
attribut setzen geht nur im parent. ein get param liefert in parent und channel undef.

jetzt habe ich es einigermassen durch folgende änderung zum laufen bekommen:

    elsif ($md =~ m/^virtual_/){
my $myHash = CUL_HM_id2Hash(CUL_HM_hash2Id($hash)."01");
Log 1,"##### init1 ##### cmd:$cmd, model:$md, attrVal:$attrVal, msgRdc:$hash->{helper}{vd}{msgRed}";
      if ($cmd eq "set"){
        if ($attrVal eq "noOnOff"){# no action    
        }
        elsif ($attrVal eq "msgReduce"){#set param
          $myHash->{helper}{vd}{msgRed}=1;
        }
        else{
          return "attribut param not defined for this entity";
        }
      }
      else{
        delete $myHash->{helper}{vd}{msgRed};
      }
Log 1,"##### init2 ##### cmd:$cmd, model:$md, attrVal:$attrVal, msgRdc:$hash->{helper}{vd}{msgRed}";
    }


aber:
komischerweise werden nach einem neustart zwar die werte initialisiert in elsif, aber wiederum sind sie in den funktionen nicht definiert. erst ein weiteres setzen der attribute bewirkt das die funktionen nun die werte auch kennen. ab da funktioniert es.
und weiterhin ergibt ein get param msgreduce in parent und child undef.

heute nacht träume ich von "hash".  ???

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 14 Februar 2014, 07:32:32
hm - mus sich einmal testen.
Du hast den "param " schon am channel gesetzt, nicht etwa am virtuellen Device? dann geht es nicht.

Timer sparen macht sinn...
gegenargumente sind aenderungen an der Ventilstellung. Eigentlich sollte die Message nur ausgelassen werden, wenn keine Aenderung in der Zwischenzeit stattgefunden hat.

Zum sparen: Die Anzahl laufender Timer kannst du  nicht reduzieren, das ist immer einer je virtTC. Sollte aber kaum Performance kosten. Was du sparst ist der Aufruf und die Bearbeitung der Prozedur. Vom Konzept waere also zu beachten
1) wenn skip, dann gleich in CUL_HM_valvePosUpdt. CUL_HM_valvePosTmr kennt kein Reduced
2) skip nur wenn die letzte Message ein ack hatte
3) skip nur, wenn der wert nicht geaendert wurde (oder anders herum: force send if changed)

Werde einmal nachdenken...
Die Performance der timerprocedur kann man ausmessen und die moegliche Einsparung bewerten. Dann entscheiden, wie es zusammenpasst

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 14 Februar 2014, 09:18:16
hallo martin,

ZitatDu hast den "param " schon am channel gesetzt, nicht etwa am virtuellen Device? dann geht es nicht.

wie mehrfach gesagt, geht das bei mir ja nicht!

dann ist aber endlich klar, warum nicht. ich habe meinen channel attr model umbenannt. rate mal. nicht mehr "virtual_1", sondern aus dem riesigen angebot des pulldown menue den eintrag "hm-cc-tc".

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 14 Februar 2014, 09:27:49
Zitatwie mehrfach gesagt, geht das bei mir ja nicht!
ok - also param gibt es bei virtuellen channels...
model und sybtype sollte man nicht aendern...

ich habe eine dynamische einstellung vorbereitet - muss ich noch testen
attr vtc param msgReduce:5
sendet dann erst den 5.
attr vtc param msgReduce
weiterhin ein skip.

Ausserdem gefaellt mir das valveCtrl "idle" nicht. Wenn du msgReduced einschaltest wuerde dies im normalbetrieb kontinuierlich trigger generieren. Daher ist es in meiner version(kann erst heute Abend testen, dauert also) eliminiert. Ich denke du brauchst es bestenfalls zum testen

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 14 Februar 2014, 10:05:04
Zitatmodel und sybtype sollte man nicht aendern...
das dachte ich auch immer. ...doch während der suche nach einem fehler, nötigte mich dieses kilometerlange pulldown-menue förmlich dazu.  ;)

ZitatAusserdem gefaellt mir das valveCtrl "idle" nicht. ... Ich denke du brauchst es bestenfalls zum testen
ein name, unterschiedlich zu "ok", ist zur zeit zwingend erforderlich. sonst wird immer gesendet, weil immer "ok".

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 14 Februar 2014, 10:43:27
Zitatein name, unterschiedlich zu "ok", ist zur zeit zwingend erforderlich. sonst wird immer gesendet, weil immer "ok".
schon klar - jetzt. Daher sollte es auch geaendert werden.
Aktueller Ansatz ist, helper/msgRed nicht als flag sondern als limit zu nutzen. Also Werte 0...9 zulassen (ok, ab 5 wird es schwierig ;) andere Diskussion) .
helper/miss wird inkrementiert (ohne reading-change) bis der megRed level erreicht ist. Dann kann valveCtrl ok stehen bleiben.
Wenn miss >= msgRep wird wieder gesendet, miss =0 gesetzt (so ein ACK kommt) und es geht von vorne los.

Klingt ok?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 14 Februar 2014, 12:51:17
hallo martin,

ZitatAktueller Ansatz ist, helper/msgRed nicht als flag sondern als limit zu nutzen. Also Werte 0...9 zulassen (ok, ab 5 wird es schwierig ;) andere Diskussion) .
helper/miss wird inkrementiert (ohne reading-change) bis der megRed level erreicht ist. Dann kann valveCtrl ok stehen bleiben.
Wenn miss >= msgRep wird wieder gesendet, miss =0 gesetzt (so ein ACK kommt) und es geht von vorne los.

theoretisch ganz gut.  ;)

dabei würde wohl auch die korrekte fehlerausgabe miss_n erhalten bleiben. also zb 3 mal auslassen, dann fehler => miss_4.

hilfreich wäre dann aber ein event, das den aktuellen msgRed signalisiert, um zu loggen. also beim umschalten, oder so. sonst kann man zb im fehler-log keine zusammenhänge zum modus feststellen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 14 Februar 2014, 19:18:58
Hi Frank,

zum Loggen sollte man einen log einbauen - das macht meht sinn. Ein Reading sind dafür nicht gedacht.
miss ist dann ein Problem in sich. Es gibt dann ausgelassene messages die durch nicht-antworten(fehler) oder durch auslassen (absicht) erzeugt werden. Mein Vorschlag ist

- miss zaehlt alle ausslassungen
- das Reading wird nur gesetzt, wenn es ein Fehler ist.

Klingt zufriedenstellend?

Bin noch am Testen - wird evtl morgen :( - muss jetzt gehen

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 15 Februar 2014, 04:35:44
hallo martin,

Zitat- miss zaehlt alle ausslassungen
- das Reading wird nur gesetzt, wenn es ein Fehler ist.

Klingt zufriedenstellend?

sehr gut!

Zitatzum Loggen sollte man einen log einbauen - das macht meht sinn.
du meinst ein eintrag in fhem.log? das muss, meine ich, nicht sein, kann aber nicht schaden. doch hier geht mir viel verloren, wenn ich versuche mache, und mit zb global verbose 1 alles versuchsunrelevante abgeschaltet ist.

ich möchte ja auch plotten können, wie unten im bild zu sehen ist. hier müsste dann der reduce-modus mit anzuzeigen sein. im augenblick kann man durch die vorhandenen idle zustände erkennen, wann der skip-modus anfägt (nach dem ersten init kurz nach 2.00). jetzt sollen die idle zustände wegfallen. würde man dann zwischen 3.30 und 11.00 (7,5 std ohne fehler) den reduce-modus wechseln, kann man nicht erkennen, wann das geschehen ist. nur die art der fehler lässt erkennen, welcher modus eingeschaltet war. denn ein miss2-fehler ohne miss1, kann nur im skip-modus vorkommen (fehler nach idle).
wenn mein ziel erreicht ist, sieht man gar keine fehler mehr, dann wirds richtig schwierig.  ;)

wie wäre es, wenn man nach reduce-modus wechsel immer bei init einsteigt? dann könnte man den modus durch init0-init9 erkennbar machen. oder mit ready verknüpfen.

Zitat3) skip nur, wenn der wert nicht geaendert wurde (oder anders herum: force send if changed)
das ist gut. könnte man mit valveCtrl=force kennzeichnen. um zu erkennen, ob überhaupt noch reduziert wird. wer hohe reduzierung reduce9 8) haben möchte, muss das ja erkennen können, um seinen regler entsprechend anzupassen.
schaltbar wäre noch besser. zb mit reduce verknüpfen. einige könnte man ja opfern. eine hälfte reduce ohne force, die andere hälfte reduce mit force. im force modus braucht man ja wohl auch nicht so hohe reduce werte.

da bin ich mal gespannt, was der weihnachtsmann so bringt.  :)

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 15 Februar 2014, 08:45:12
Hi Frank,

4931 ist übertragen.

Generell ist Readings nicht dazu gedacht, zu debuggen. Wir werden die SW so stabil machen, dass wenn man reduces:4 einstellt 4 transmist ausgelassen werden - das muss verlaesslich sein und nicht ueber Readings geprüft werden. Logs könnte man dazu einbauen....
Readings sind für Änderungen an des Devices, die sporadisch, und nicht vorhersehbar seid.

Prüfe einmal ...
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 15 Februar 2014, 15:06:51
hallo martin,

ZitatPrüfe einmal ...
wenn die alte einstellung msgReduce ohne zahl auch gehen sollte, dann sieht es schlecht aus. der zustand ready nach init wird nicht erreicht. nur miss1 bis lost.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 15 Februar 2014, 16:03:31
bin noch einmal am nachtesten, kann es aber nicht sehen.
Was machst du?

Du hast ein virt device mit einem virt channel der mit einem VD gepeert ist.
Dem virtChannel gibtst du das Attribut
attr vrtCh param msgReduce
oder
attr vrtCh param msgReduce:1
oder
attr vrtCh param msgReduce:5

sollte bei list vrtCh zu sehen sein:
vrtCh->helper->vd->msgRed 1 oder 5

So weit ok?
der Rest läuft bei mir wir prospektiert.

testest du beretis sonderfälle? Restart oder so?

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 15 Februar 2014, 16:38:42
hallo martin,

ZitatDu hast ein virt device mit einem virt channel der mit einem VD gepeert ist.
Dem virtChannel gibtst du das Attribut
attr vrtCh param msgReduce
das war meine konfiguration bevor ich v4939 mit shtutdown/restart gestartet habe.

alle vtc sind nach restart mit valveCtr= init,miss1,...,miss5,lost eingeschlafen. (bisher gab es immer ready nach init)

nach einer stunde sind die vd von selber aufgewacht, und seitdem können sie am leben gehalten werden. bei 4 vtc habe ich noch garnichts verändert. bei einem hatte ich versucht über das neue "msgReduce:1" das sterben zu verhindern. hatte nicht genutzt.

augenblickliches fazit:
"msgReduce" und "msgReduce:1" kann man verwenden.
das sterben betrift wohl nur die rettungsroutine nach reset.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 15 Februar 2014, 17:57:47
hallo martin,

keine reduzierung,weder mit msgReduce:2, noch mit msgReduce:3. hmlan sendet alle 2-3 minuten.
gibt es bereits force send?

list vom vtc mit reduce2:

Internals:
   .triggerUsed 1
   CHANGED   
   DEF        B3B3B301
   NAME       VentilControler.Bad_Btn1
   NR         467
   STATE      Vsoll:21 %, Status:ValveAdjust:21 %, Kommunikation:miss_1
   TYPE       CUL_HM
   chanNo     01
   device     VentilControler.Bad
   peerList   Ventil.Bad,
   Readings:
     2014-02-15 17:27:44   .msgCnt         71
     2014-02-15 17:27:44   .next           1392481654.13823
     2014-02-15 17:31:52   state           ValveAdjust:21 %
     2014-02-15 17:30:53   valveCtrl       miss_1
     2014-02-15 17:30:53   valveCtrlRam    miss_1
     2014-02-15 17:31:52   valvePosTC      21 %
   Helper:
     fkt        vdCtrl
     virtTC     03
     Role:
       chn        1
       vrt        1
     Vd:
       ackT       2014-02-15 17:27:34
       cmd        A258B3B3B3193A9A
       id         193A9A
       idh        3593783
       idl        45824
       miss       1
       msgCnt     73
       msgRed     2
       msgSent    1
       next       1392481985.15051
       nextF      1392481985.15051
       nextM      1392482001.91477
       typ        1
       val        35
       vin        21
Attributes:
   alias      30. Controler
   event-on-change-reading valveCtrl
   expert     1_on
   group      Heizung.Bad
   model      virtual_1
   param      msgReduce:2
   peerIDs    193A9A01,
   room       98_Ventile
   stateFormat Vsoll:valvePosTC, Status:state, Kommunikation:valveCtrl
   webCmd     press short:press long


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 15 Februar 2014, 18:58:29
Frank,

setzt du den Wert ständig? Wie angekündigt wird ein geaenderter wert immer übertragen.
In dem List sehe ich dass der Wert gerade frisch gesetzt wurde.

Das auslassen funktioniert bei mir zu 100%. Und wenn ich einen Wert vorgebe (also set  valvePos auslöse) wird beim nächsten mal gesendet - und dann erst der darauffolgende ausgelassen

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 15 Februar 2014, 19:38:04
hallo martin,

der pid20-regler setzt wahrscheilich nach jeder berechnung (60sec) einen wert, die werte ändern sich aber nicht ständig.

nach deiner beschreibung sendet er also nicht nur nach änderung sondern bei jedem setzen. dann wird natürlich nie geändert.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 15 Februar 2014, 23:17:31
Hi Frank,

so ist es (aktuell).
Mir gefällt es so - damit kann ich einen "Force" trigger einfach auslösen.
Es wäre hilfreich, den PID  nur senden zu lassen, wenn er auch etwas geändert hat. Wenn er alle 60sec sendet ist dies eh übertrieben, da der VTC 2,5 mal öfter aufgerufen wird, als er überhaupt kann.
Kannst du ihn auf "event-on-change-reading" setzen, damit er handlicher wird? Alles andere klingt nicht sinnvoll für mich.

Klar kann man es auch im VTC ändern/blockieren. Ist aber nicht sauber, da es viel früher geblockt werden sollte
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 16 Februar 2014, 00:58:25
hallo martin,

ich konnte dem regler erfolgreich mitteilen, das er hauptsächlich nur bei änderungen den set-befehl sendet. nun klappt es auch bei mir. es ist natürlich kaum mehr zu überblicken, was da genau passiert.

wenn ich von hmlan msgloadest ausgehe, sollte es sehr gut funktionieren. vorher hatte ich bei skip ohne force, im langen mittel um 10.5%. jetzt mit der einstellung msgreduce:2 vielleicht 11%. leider versauen heute viele disconnects eine stabile messkurve. da in der theorie durch die zusätzlichen force meldungen mehr traffic zu erwarten ist, sollte die tendenz im vergleich passen.

ich habe jetz mal alle 5 vtc auf reduce3 gestellt und werde morgen sehen was passiert.

eine unerklärliche auffälligkeit muss ich noch erwähnen. bei einem vtc gab es miss3 fehler, obwohl reduce2 eingestellt war (wahrscheinlich). nach meinem verständnis sollte das unmöglich sein. oder? also ein sprung von ok auf miss3.  ???

hast du mal ein reset versuch getestet?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 16 Februar 2014, 10:22:15
Hi Frank,

ein miss3 ist möglich, wenn die antwort nach Miss2 nicht gekommen ist.

Zu deinen Überwachungen - hier muss man sich das Ziel einer automation Anlage klar machen. Erste einmal sollten ereignisse des Environments angezeigt werden - das will man überwachen, nicht die Anlage. Die Anlage will man kontrollieren.
In der Entwicklungsphase will man debuggen - und das ist der Level, den du suchst.
Debuggen ist temporär - es sollte irgendwann stabil sein, dann läuft die Kiste Debug Info muss dann weg sein, nur noch Alarme.
Zum debuggen gibt es jede Menge Möglichkeiten und Indikatoren - message statistic auf verschiedenen leveln - wenns sein muss die rohmessages mitschreiben, oder hmProtocolEvents... Alternativ kann man logs einbauen. Das sollte reichen. Readings sind defnitiv nicht debug-level für System-interna.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 16 Februar 2014, 11:49:35
hallo martin,

Zitatein miss3 ist möglich, wenn die antwort nach Miss2 nicht gekommen ist.

nein, denn:

reduce2 => maximal eine message wird ausgelassen. (0 wenn force, sonst 1)
also:
auslassen erzeugt miss1_unvisible (soll nicht angezeigt werden).
fehler nach auslassen erzeugt miss2 (soll angezeigt werden).
fehler nach miss2 erzeugt miss3 (soll angezeigt werden).

wie kommt dann ein miss3 ohne vorangegangenen miss2 zustande? ein miss3 ohne vorangegangenen miss2, bedeutet nach meiner logik: 2 mal auslassen, dann fehler. sollte bei reduce2 nicht möglich sein! siehe grafik.

gleiches problem bei reduce3 => maximal 2 messages werden ausgelassen. (0 oder 1 wenn force, sonst 2)
ich erhalte aber unter anderem miss4 ohne vorangegangenen miss3.

----------------------------------------------------------------------------------------------

ZitatReadings sind für Änderungen an des Devices, die sporadisch, und nicht vorhersehbar seid.

nach dieser philosophie, ist aus sicht eines virtuellen tc, der im modus reduce läuft, ein force unvorhersehbar und sporadisch.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 16 Februar 2014, 13:24:37
hallo martin,

Zitatich habe eine dynamische einstellung vorbereitet - muss ich noch testen
attr vtc param msgReduce:5

sendet dann erst den 5.

mit reduce3 sieht mein log so aus. anhand der msgnummer ist zu erkennen, dass er aber 3 mal auslässt, und nicht 2 mal. dann ist miss4 natürlich richtig.

ist nun die beschreibung des features falsch oder die implementierung?

2014.02.16 08:41:05.297 0: HMLAN_Send:  HMLAN1 S:S39A430D3 stat:  00 t:00000000 d:01 r:39A430D3 m:B1 A258 B5B5B5 1C4E25 0017
2014.02.16 08:41:05.477 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0C27B941 d:FF r:FFB2     m:B1 8202 1C4E25 B5B5B5 010112004D
2014.02.16 08:41:05.858 0: HMLAN_Parse: HMLAN1 R:R39A430D3 stat:0008 t:00000000 d:FF r:7FFF     m:B1 A258 B5B5B5 1C4E25 0017

2014.02.16 08:51:22.813 0: HMLAN_Send:  HMLAN1 S:S39AD9CFB stat:  00 t:00000000 d:01 r:39AD9CFB m:B5 A258 B5B5B5 1C4E25 0321
2014.02.16 08:51:22.995 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0C3125C0 d:FF r:FFB3     m:B5 8202 1C4E25 B5B5B5 010112104D
2014.02.16 08:51:23.375 0: HMLAN_Parse: HMLAN1 R:R39AD9CFB stat:0008 t:00000000 d:FF r:7FFF     m:B5 A258 B5B5B5 1C4E25 0321

2014.02.16 09:01:03.302 0: HMLAN_Send:  HMLAN1 S:S39B67886 stat:  00 t:00000000 d:01 r:39B67886 m:B9 A258 B5B5B5 1C4E25 0021
2014.02.16 09:01:03.910 0: HMLAN_Parse: HMLAN1 R:R39B67886 stat:0008 t:00000000 d:FF r:7FFF     m:B9 A258 B5B5B5 1C4E25 0021
2014.02.16 09:01:13.366 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 16 Februar 2014, 14:03:49
Zitatmit reduce3 sieht mein log so aus. anhand der msgnummer ist zu erkennen, dass er aber 3 mal auslässt,
hört sich gut an für mich.
reduce 0: kein auslassen
reduce 1: einmal auslassen
....

es ist die Beschreibung. Der Name des Parameter impliziert das aktuelle Verhalten - meine ich

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 11:05:15
hallo martin,

Zitathast du mal ein reset versuch getestet?

Zitatalle vtc sind nach restart mit valveCtr= init,miss1,...,miss5,lost eingeschlafen. (bisher gab es immer ready nach init)

nach restart stimmt etwas nicht mit den msg-nummern!

2014.02.17 10:23:03.307 0: HMLAN_Send:  HMLAN1 S:S3F27E74D stat:  00 t:00000000 d:01 r:3F27E74D m:05 A258 B2B2B2 1DFC2F 030A
2014.02.17 10:23:03.690 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:02397488 d:FF r:FFC8     m:05 8202 1DFC2F B2B2B2 0101001034
2014.02.17 10:23:03.871 0: HMLAN_Parse: HMLAN1 R:R3F27E74D stat:0008 t:00000000 d:FF r:7FFF     m:05 A258 B2B2B2 1DFC2F 030A
2014.02.17 10:23:03.874 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 10:24:53.384 0: HMLAN_Send:  HMLAN1 S:S3F299547 stat:  00 t:00000000 d:01 r:3F299547 m:84 A258 B5B5B5 1C4E25 030F
2014.02.17 10:24:53.765 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:023B2291 d:FF r:FFB4     m:84 8202 1C4E25 B5B5B5 01010C204B
2014.02.17 10:24:53.945 0: HMLAN_Parse: HMLAN1 R:R3F299547 stat:0008 t:00000000 d:FF r:7FFF     m:84 A258 B5B5B5 1C4E25 030F
2014.02.17 10:24:53.948 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 10:26:30.590 0: HMLAN_Send:  HMLAN1 S:S3F2B1100 stat:  00 t:00000000 d:01 r:3F2B1100 m:7D A258 B1B1B1 1BFC52 03FD
2014.02.17 10:26:30.775 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:023C9D91 d:FF r:FFB7     m:7D 8202 1BFC52 B1B1B1 0101C60048
2014.02.17 10:26:31.156 0: HMLAN_Parse: HMLAN1 R:R3F2B1100 stat:0008 t:00000000 d:FF r:7FFF     m:7D A258 B1B1B1 1BFC52 03FD
2014.02.17 10:26:31.158 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 10:26:52.721 0: HMLAN_Send:  HMLAN1 S:S3F2B6770 stat:  00 t:00000000 d:01 r:3F2B6770 m:7F A258 B3B3B3 193A9A 002B
2014.02.17 10:26:52.905 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:023CF406 d:FF r:FFB5     m:7F 8202 193A9A B3B3B3 010122004A
2014.02.17 10:26:53.285 0: HMLAN_Parse: HMLAN1 R:R3F2B6770 stat:0008 t:00000000 d:FF r:7FFF     m:7F A258 B3B3B3 193A9A 002B
2014.02.17 10:26:53.288 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 10:27:03.400 0: HMLAN_Send:  HMLAN1 S:S3F2B912A stat:  00 t:00000000 d:01 r:3F2B912A m:7F A258 B4B4B4 1CE9F5 00FD
2014.02.17 10:27:03.584 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:023D1DBE d:FF r:FFBF     m:7F 8202 1CE9F5 B4B4B4 0101C60044
2014.02.17 10:27:03.964 0: HMLAN_Parse: HMLAN1 R:R3F2B912A stat:0008 t:00000000 d:FF r:7FFF     m:7F A258 B4B4B4 1CE9F5 00FD
2014.02.17 10:27:03.967 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5


2014.02.17 10:35:40.486 1: Including fhem.cfg
2014.02.17 10:35:45.343 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.17 10:35:45.404 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.17 10:35:57.009 1: Including ./log/fhem.save
2014.02.17 10:35:59.843 1: HCS BROETJE monitoring of devices started
2014.02.17 10:36:00.188 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.17 10:36:01.546 0: Server started with 362 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 1752)
2014.02.17 10:36:06.854 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.17 10:36:06.880 0: HMLAN_Send:  HMLAN1 S:S3F33DC22 stat:  00 t:00000000 d:01 r:3F33DC22 m:0C A258 B2B2B2 1DFC2F 030A
2014.02.17 10:36:07.265 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.17 10:36:07.287 0: HMLAN_Send:  HMLAN1 S:S3F33DDB9 stat:  00 t:00000000 d:01 r:3F33DDB9 m:08 A258 B3B3B3 193A9A 032B
2014.02.17 10:36:07.627 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.17 10:36:07.648 0: HMLAN_Send:  HMLAN1 S:S3F33DF21 stat:  00 t:00000000 d:01 r:3F33DF21 m:08 A258 B4B4B4 1CE9F5 03FD
2014.02.17 10:36:07.961 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.17 10:36:07.990 0: HMLAN_Send:  HMLAN1 S:S3F33E077 stat:  00 t:00000000 d:01 r:3F33E077 m:0A A258 B5B5B5 1C4E25 030F
2014.02.17 10:36:14.558 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.17 10:36:14.599 0: HMLAN_Parse: HMLAN1 R:R3F33C215 stat:0008 t:00000000 d:FF r:7FFF     m:80 A258 B1B1B1 1BFC52 03FD
2014.02.17 10:36:14.601 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 10:36:14.623 0: HMLAN_Parse: HMLAN1 R:R3F33DC22 stat:0008 t:00000000 d:FF r:7FFF     m:0C A258 B2B2B2 1DFC2F 030A
2014.02.17 10:36:14.626 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 10:36:14.629 0: HMLAN_Parse: HMLAN1 R:R3F33DDB9 stat:0008 t:00000000 d:FF r:7FFF     m:08 A258 B3B3B3 193A9A 032B
2014.02.17 10:36:14.631 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 10:36:14.634 0: HMLAN_Parse: HMLAN1 R:R3F33DF21 stat:0008 t:00000000 d:FF r:7FFF     m:08 A258 B4B4B4 1CE9F5 03FD
2014.02.17 10:36:14.637 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 10:36:14.639 0: HMLAN_Parse: HMLAN1 R:R3F33E077 stat:0008 t:00000000 d:FF r:7FFF     m:0A A258 B5B5B5 1C4E25 030F
2014.02.17 10:36:14.642 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 10:36:16.510 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.17 10:36:16.958 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.17 10:36:17.346 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 10:36:17.703 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 10:36:18.052 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.17 10:36:29.652 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.17 10:37:22.466 0: HMLAN_Send:  HMLAN1 S:S3F350364 stat:  00 t:00000000 d:01 r:3F350364 m:09 A258 B3B3B3 193A9A 0333
2014.02.17 10:37:23.073 0: HMLAN_Parse: HMLAN1 R:R3F350364 stat:0008 t:00000000 d:FF r:7FFF     m:09 A258 B3B3B3 193A9A 0333
2014.02.17 10:37:23.075 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 10:37:28.667 0: HMLAN_Send:  HMLAN1 S:S3F351B9A stat:  00 t:00000000 d:01 r:3F351B9A m:09 A258 B4B4B4 1CE9F5 03FD
2014.02.17 10:37:29.275 0: HMLAN_Parse: HMLAN1 R:R3F351B9A stat:0008 t:00000000 d:FF r:7FFF     m:09 A258 B4B4B4 1CE9F5 03FD
2014.02.17 10:37:29.278 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 10:37:32.578 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.17 10:37:37.237 0: HMLAN_Send:  HMLAN1 S:S3F353D17 stat:  00 t:00000000 d:01 r:3F353D17 m:0B A258 B5B5B5 1C4E25 030F
2014.02.17 10:37:37.619 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0246CACD d:FF r:FFB4     m:0B 8202 1C4E25 B5B5B5 01010C204C
2014.02.17 10:37:37.800 0: HMLAN_Parse: HMLAN1 R:R3F353D17 stat:0008 t:00000000 d:FF r:7FFF     m:0B A258 B5B5B5 1C4E25 030F
2014.02.17 10:37:37.802 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 10:37:38.754 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.17 10:37:47.308 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.17 10:38:19.555 0: HMLAN_Send:  HMLAN1 S:S3F35E266 stat:  00 t:00000000 d:01 r:3F35E266 m:0D A258 B2B2B2 1DFC2F 0311
2014.02.17 10:38:20.215 0: HMLAN_Parse: HMLAN1 R:R3F35E266 stat:0008 t:00000000 d:FF r:7FFF     m:0D A258 B2B2B2 1DFC2F 0311
2014.02.17 10:38:20.217 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 10:38:29.618 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.17 10:38:58.846 0: HMLAN_Send:  HMLAN1 S:S3F367BE0 stat:  00 t:00000000 d:01 r:3F367BE0 m:86 A258 B1B1B1 1BFC52 03FD
2014.02.17 10:38:59.456 0: HMLAN_Parse: HMLAN1 R:R3F367BE0 stat:0008 t:00000000 d:FF r:7FFF     m:86 A258 B1B1B1 1BFC52 03FD
2014.02.17 10:38:59.458 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 10:39:08.939 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.17 10:39:23.964 0: HMLAN_Send:  HMLAN1 S:S3F36DDFE stat:  00 t:00000000 d:01 r:3F36DDFE m:0A A258 B3B3B3 193A9A 033D
2014.02.17 10:39:24.571 0: HMLAN_Parse: HMLAN1 R:R3F36DDFE stat:0008 t:00000000 d:FF r:7FFF     m:0A A258 B3B3B3 193A9A 033D
2014.02.17 10:39:24.574 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 10:39:34.028 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.17 10:40:27.012 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.17 10:40:44.304 0: HMLAN_Send:  HMLAN1 S:S3F3817D2 stat:  00 t:00000000 d:01 r:3F3817D2 m:0E A258 B2B2B2 1DFC2F 0319
2014.02.17 10:40:44.911 0: HMLAN_Parse: HMLAN1 R:R3F3817D2 stat:0008 t:00000000 d:FF r:7FFF     m:0E A258 B2B2B2 1DFC2F 0319
2014.02.17 10:40:44.914 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 10:40:54.376 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.17 10:41:23.590 0: HMLAN_Send:  HMLAN1 S:S3F38B148 stat:  00 t:00000000 d:01 r:3F38B148 m:87 A258 B1B1B1 1BFC52 03FD
2014.02.17 10:41:24.198 0: HMLAN_Parse: HMLAN1 R:R3F38B148 stat:0008 t:00000000 d:FF r:7FFF     m:87 A258 B1B1B1 1BFC52 03FD
2014.02.17 10:41:24.201 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 10:41:33.654 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_4
2014.02.17 10:42:14.965 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.17 10:42:14.967 0: HMLAN_Send:  HMLAN1 S:S3F3979F7 stat:  00 t:00000000 d:01 r:3F3979F7 m:0B A258 B3B3B3 193A9A 003D
2014.02.17 10:42:15.574 0: HMLAN_Parse: HMLAN1 R:R3F3979F7 stat:0008 t:00000000 d:FF r:7FFF     m:0B A258 B3B3B3 193A9A 003D
2014.02.17 10:42:15.577 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 10:42:25.033 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_4


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 11:58:29
Hallo Frank,

hm - sieht seltsam aus - werde ich einmal gruebeln.
du hast 12 min wartezeit, bis es wieder los geht - da sind die VDs schon auf lost, korrket?
kannst du den log einbauen? macht das Gruebeln einfachen
  do {
    $msgCnt = ($msgCnt +1) %256;
    $idl = $hashVd->{idl}+$msgCnt;
    $lo = int(($idl*0x4e6d +12345)/0x10000);#&0xff;
    $hi = ($hashVd->{idh}+$idl*198);        #&0xff;
    $nextTimer = (($lo+$hi)&0xff)/4 + 120;
    $nextF += $nextTimer;
Log 1,"VD-test $vId c:$msgCnt t:".int($nextF*1000)." x:".int($nextTimer*1000);
  } until ($nextF > $tn);

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 12:09:16
hallo martin,

  if (!$hashVd->{msgSent}) {
    $hashVd->{miss}++;
    $hashVd->{next} = $hashVd->{nextF};
    $vcn = "ready" if ($vc eq "init");
  }


der status ready wird wohl nicht existieren, da hashVd->{msgSent} bei restart nicht initialisiert wird.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 12:39:12
hallo martin,

eine initialisierung von msgSent bewirkt keine änderung.

1. es gibt kein ready
2. das erste event nach neustart wird rausgehauen, obwohl es unterdrückt sein sollte.

hier das log:

2014.02.17 12:03:31.114 0: HMLAN_Send:  HMLAN1 S:S3F83E16B stat:  00 t:00000000 d:01 r:3F83E16B m:2D A258 B5B5B5 1C4E25 0000
2014.02.17 12:03:31.296 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:02957109 d:FF r:FFB4     m:2D 8202 1C4E25 B5B5B5 010100004C
2014.02.17 12:03:31.677 0: HMLAN_Parse: HMLAN1 R:R3F83E16B stat:0008 t:00000000 d:FF r:7FFF     m:2D A258 B5B5B5 1C4E25 0000
2014.02.17 12:03:31.680 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 12:03:41.295 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.17 12:03:51.189 0: HMLAN_Send:  HMLAN1 S:S3F842FD7 stat:  00 t:00000000 d:01 r:3F842FD7 m:2B A258 B3B3B3 193A9A 0385
2014.02.17 12:03:51.374 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0295BF79 d:FF r:FFB4     m:2B 8202 193A9A B3B3B3 01016E204A
2014.02.17 12:03:51.754 0: HMLAN_Parse: HMLAN1 R:R3F842FD7 stat:0008 t:00000000 d:FF r:7FFF     m:2B A258 B3B3B3 193A9A 0385
2014.02.17 12:03:51.757 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:04:50.024 0: HMLAN_Send:  HMLAN1 S:S3F8515AA stat:  00 t:00000000 d:01 r:3F8515AA m:A8 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:04:50.209 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:0296A554 d:FF r:FFB8     m:A8 8202 1BFC52 B1B1B1 0101C60047
2014.02.17 12:04:50.598 0: HMLAN_Parse: HMLAN1 R:R3F8515AA stat:0008 t:00000000 d:FF r:7FFF     m:A8 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:04:50.601 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 12:05:56.442 0: HMLAN_Send:  HMLAN1 S:S3F86191C stat:  00 t:00000000 d:01 r:3F86191C m:2C A258 B4B4B4 1CE9F5 0000
2014.02.17 12:05:56.626 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:0297A8CE d:FF r:FFC2     m:2C 8202 1CE9F5 B4B4B4 0101000040
2014.02.17 12:05:57.012 0: HMLAN_Parse: HMLAN1 R:R3F86191C stat:0008 t:00000000 d:FF r:7FFF     m:2C A258 B4B4B4 1CE9F5 0000
2014.02.17 12:05:57.017 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 12:06:14.201 0: HMLAN_Send:  HMLAN1 S:S3F865E7B stat:  00 t:00000000 d:01 r:3F865E7B m:2C A258 B3B3B3 193A9A 036B
2014.02.17 12:06:14.386 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0297EE30 d:FF r:FFB5     m:2C 8202 193A9A B3B3B3 010168204B
2014.02.17 12:06:14.766 0: HMLAN_Parse: HMLAN1 R:R3F865E7B stat:0008 t:00000000 d:FF r:7FFF     m:2C A258 B3B3B3 193A9A 036B
2014.02.17 12:06:14.769 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:07:36.534 0: HMLAN_Send:  HMLAN1 S:S3F87A017 stat:  00 t:00000000 d:01 r:3F87A017 m:A9 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:07:36.718 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:02992FD7 d:FF r:FFB8     m:A9 8202 1BFC52 B1B1B1 0101C60048
2014.02.17 12:07:37.098 0: HMLAN_Parse: HMLAN1 R:R3F87A017 stat:0008 t:00000000 d:FF r:7FFF     m:A9 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:07:37.101 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 12:08:22.712 0: HMLAN_Send:  HMLAN1 S:S3F88547A stat:  00 t:00000000 d:01 r:3F88547A m:2D A258 B3B3B3 193A9A 0361
2014.02.17 12:08:22.896 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0299E440 d:FF r:FFB4     m:2D 8202 193A9A B3B3B3 010154204A
2014.02.17 12:08:23.277 0: HMLAN_Parse: HMLAN1 R:R3F88547A stat:0008 t:00000000 d:FF r:7FFF     m:2D A258 B3B3B3 193A9A 0361
2014.02.17 12:08:23.280 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:10:08.547 0: HMLAN_Send:  HMLAN1 S:S3F89F1E4 stat:  00 t:00000000 d:01 r:3F89F1E4 m:AA A258 B1B1B1 1BFC52 03FD
2014.02.17 12:10:08.741 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:029B81BD d:FF r:FFB6     m:AA 8202 1BFC52 B1B1B1 0101C60049
2014.02.17 12:10:09.117 0: HMLAN_Parse: HMLAN1 R:R3F89F1E4 stat:0008 t:00000000 d:FF r:7FFF     m:AA A258 B1B1B1 1BFC52 03FD
2014.02.17 12:10:09.121 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 12:11:24.068 0: HMLAN_Send:  HMLAN1 S:S3F8B18E6 stat:  00 t:00000000 d:01 r:3F8B18E6 m:2E A258 B3B3B3 193A9A 0359
2014.02.17 12:11:24.675 0: HMLAN_Parse: HMLAN1 R:R3F8B18E6 stat:0008 t:00000000 d:FF r:7FFF     m:2E A258 B3B3B3 193A9A 0359
2014.02.17 12:11:24.678 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:11:34.135 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 12:11:50.040 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.17 12:11:50.042 0: HMLAN_Send:  HMLAN1 S:S3F8B7E5A stat:  00 t:00000000 d:01 r:3F8B7E5A m:32 A258 B2B2B2 1DFC2F 0000
2014.02.17 12:11:50.226 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:029D0E3D d:FF r:FFC9     m:32 8202 1DFC2F B2B2B2 0101000034
2014.02.17 12:11:50.607 0: HMLAN_Parse: HMLAN1 R:R3F8B7E5A stat:0008 t:00000000 d:FF r:7FFF     m:32 A258 B2B2B2 1DFC2F 0000
2014.02.17 12:11:50.609 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 12:12:26.055 0: HMLAN_Send:  HMLAN1 S:S3F8C0B09 stat:  00 t:00000000 d:01 r:3F8C0B09 m:AB A258 B1B1B1 1BFC52 03FD
2014.02.17 12:12:26.242 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:029D9AF0 d:FF r:FFB7     m:AB 8202 1BFC52 B1B1B1 0101C60049
2014.02.17 12:12:26.621 0: HMLAN_Parse: HMLAN1 R:R3F8C0B09 stat:0008 t:00000000 d:FF r:7FFF     m:AB A258 B1B1B1 1BFC52 03FD
2014.02.17 12:12:26.624 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52


2014.02.17 12:13:44.624 0: Server shutdown
2014.02.17 12:13:44.659 4: CUL_send:  cul868X0 0     
2014.02.17 12:18:33.070 1: Including fhem.cfg
2014.02.17 12:18:38.192 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.17 12:18:38.254 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.17 12:18:48.567 1: Including ./log/fhem.save
2014.02.17 12:18:51.095 1: HCS BROETJE monitoring of devices started
2014.02.17 12:18:51.497 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.17 12:18:51.509 1: VD-test B1B1B101 c:171 t:1392635669039 x:123000
2014.02.17 12:18:51.510 1: VD-test B1B1B101 c:172 t:1392635841789 x:172750
2014.02.17 12:18:51.512 1: VD-test B1B1B101 c:173 t:1392636000039 x:158250
2014.02.17 12:18:52.950 0: Server started with 362 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 1729)
2014.02.17 12:18:56.637 1: VD-test B5B5B501 c:1 t:1392635180592 x:169500
2014.02.17 12:18:56.639 1: VD-test B5B5B501 c:2 t:1392635335592 x:155000
2014.02.17 12:18:56.641 1: VD-test B5B5B501 c:3 t:1392635476342 x:140750
2014.02.17 12:18:56.643 1: VD-test B5B5B501 c:4 t:1392635602592 x:126250
2014.02.17 12:18:56.645 1: VD-test B5B5B501 c:5 t:1392635778342 x:175750
2014.02.17 12:18:56.647 1: VD-test B5B5B501 c:6 t:1392635939842 x:161500
2014.02.17 12:18:56.692 1: VD-test B4B4B401 c:1 t:1392635325924 x:169500
2014.02.17 12:18:56.694 1: VD-test B4B4B401 c:2 t:1392635480924 x:155000
2014.02.17 12:18:56.696 1: VD-test B4B4B401 c:3 t:1392635621674 x:140750
2014.02.17 12:18:56.698 1: VD-test B4B4B401 c:4 t:1392635747924 x:126250
2014.02.17 12:18:56.701 1: VD-test B4B4B401 c:5 t:1392635923674 x:175750
2014.02.17 12:18:56.703 1: VD-test B4B4B401 c:6 t:1392636085174 x:161500
2014.02.17 12:18:56.742 1: VD-test B3B3B301 c:1 t:1392635472194 x:169500
2014.02.17 12:18:56.745 1: VD-test B3B3B301 c:2 t:1392635627194 x:155000
2014.02.17 12:18:56.746 1: VD-test B3B3B301 c:3 t:1392635767944 x:140750
2014.02.17 12:18:56.748 1: VD-test B3B3B301 c:4 t:1392635894194 x:126250
2014.02.17 12:18:56.750 1: VD-test B3B3B301 c:5 t:1392636069944 x:175750
2014.02.17 12:18:56.789 1: VD-test B2B2B201 c:1 t:1392635679522 x:169500
2014.02.17 12:18:56.791 1: VD-test B2B2B201 c:2 t:1392635834522 x:155000
2014.02.17 12:18:56.793 1: VD-test B2B2B201 c:3 t:1392635975272 x:140750
2014.02.17 12:18:56.844 1: VD-test B1B1B101 c:174 t:1392635689789 x:143750
2014.02.17 12:18:56.845 1: VD-test B1B1B101 c:175 t:1392635819289 x:129500
2014.02.17 12:18:56.847 1: VD-test B1B1B101 c:176 t:1392635998289 x:179000
2014.02.17 12:18:57.049 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.17 12:18:57.061 1: VD-test B2B2B201 c:4 t:1392635656772 x:146750
2014.02.17 12:18:57.063 1: VD-test B2B2B201 c:5 t:1392635789022 x:132250
2014.02.17 12:18:57.064 1: VD-test B2B2B201 c:6 t:1392635970772 x:181750
2014.02.17 12:18:57.101 0: HMLAN_Send:  HMLAN1 S:S3F92028E stat:  00 t:00000000 d:01 r:3F92028E m:06 A258 B2B2B2 1DFC2F 0300
2014.02.17 12:18:58.673 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.17 12:18:58.684 1: VD-test B3B3B301 c:6 t:1392635467444 x:164750
2014.02.17 12:18:58.685 1: VD-test B3B3B301 c:7 t:1392635617694 x:150250
2014.02.17 12:18:58.687 1: VD-test B3B3B301 c:8 t:1392635753444 x:135750
2014.02.17 12:18:58.689 1: VD-test B3B3B301 c:9 t:1392635874944 x:121500
2014.02.17 12:18:58.691 1: VD-test B3B3B301 c:10 t:1392636045944 x:171000
2014.02.17 12:18:58.976 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.17 12:18:58.989 1: VD-test B4B4B401 c:7 t:1392635289424 x:133000
2014.02.17 12:18:58.990 1: VD-test B4B4B401 c:8 t:1392635472174 x:182750
2014.02.17 12:18:58.992 1: VD-test B4B4B401 c:9 t:1392635640424 x:168250
2014.02.17 12:18:58.994 1: VD-test B4B4B401 c:10 t:1392635794174 x:153750
2014.02.17 12:18:58.996 1: VD-test B4B4B401 c:11 t:1392635933674 x:139500
2014.02.17 12:18:58.998 1: VD-test B4B4B401 c:12 t:1392636058674 x:125000
2014.02.17 12:18:59.322 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.17 12:18:59.333 1: VD-test B5B5B501 c:7 t:1392635191092 x:180000
2014.02.17 12:18:59.334 1: VD-test B5B5B501 c:8 t:1392635356592 x:165500
2014.02.17 12:18:59.336 1: VD-test B5B5B501 c:9 t:1392635507842 x:151250
2014.02.17 12:18:59.338 1: VD-test B5B5B501 c:10 t:1392635644592 x:136750
2014.02.17 12:18:59.339 1: VD-test B5B5B501 c:11 t:1392635766842 x:122250
2014.02.17 12:18:59.341 1: VD-test B5B5B501 c:12 t:1392635938592 x:171750
2014.02.17 12:18:59.342 1: VD-test B5B5B501 c:13 t:1392636096092 x:157500
2014.02.17 12:19:01.999 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.17 12:19:02.581 0: HMLAN_Parse: HMLAN1 R:R3F91ECC6 stat:0008 t:00000000 d:FF r:7FFF     m:AD A258 B1B1B1 1BFC52 03FD
2014.02.17 12:19:02.584 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 12:19:02.651 0: HMLAN_Parse: HMLAN1 R:R3F92028E stat:0008 t:00000000 d:FF r:7FFF     m:06 A258 B2B2B2 1DFC2F 0300
2014.02.17 12:19:02.654 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 12:19:04.141 0: HMLAN_Send:  HMLAN1 S:S3F921E10 stat:  00 t:00000000 d:01 r:3F921E10 m:0D A258 B5B5B5 1C4E25 0300
2014.02.17 12:19:04.546 0: HMLAN_Send:  HMLAN1 S:S3F921FA4 stat:  00 t:00000000 d:01 r:3F921FA4 m:0A A258 B3B3B3 193A9A 0347
2014.02.17 12:19:04.750 0: HMLAN_Parse: HMLAN1 R:R3F921E10 stat:0008 t:00000000 d:FF r:7FFF     m:0D A258 B5B5B5 1C4E25 0300
2014.02.17 12:19:04.753 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 12:19:05.006 0: HMLAN_Send:  HMLAN1 S:S3F922170 stat:  00 t:00000000 d:01 r:3F922170 m:0C A258 B4B4B4 1CE9F5 0300
2014.02.17 12:19:05.416 0: HMLAN_Parse: HMLAN1 R:R3F921FA4 stat:0008 t:00000000 d:FF r:7FFF     m:0A A258 B3B3B3 193A9A 0347
2014.02.17 12:19:05.419 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:19:05.726 0: HMLAN_Parse: HMLAN1 R:R3F922170 stat:0008 t:00000000 d:FF r:7FFF     m:0C A258 B4B4B4 1CE9F5 0300
2014.02.17 12:19:05.728 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 12:19:06.915 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.17 12:19:07.174 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.17 12:19:08.750 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 12:19:09.060 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 12:19:09.402 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.17 12:19:30.783 1: VD-test B2B2B201 c:7 t:1392636138272 x:167500
2014.02.17 12:19:30.793 0: HMLAN_Send:  HMLAN1 S:S3F92862B stat:  00 t:00000000 d:01 r:3F92862B m:07 A258 B2B2B2 1DFC2F 0300
2014.02.17 12:19:31.400 0: HMLAN_Parse: HMLAN1 R:R3F92862B stat:0008 t:00000000 d:FF r:7FFF     m:07 A258 B2B2B2 1DFC2F 0300
2014.02.17 12:19:31.404 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 12:19:40.853 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.17 12:19:58.304 1: VD-test B1B1B101 c:177 t:1392636162789 x:164500
2014.02.17 12:19:58.319 0: HMLAN_Send:  HMLAN1 S:S3F92F1A9 stat:  00 t:00000000 d:01 r:3F92F1A9 m:B1 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:19:59.532 0: HMLAN_Parse: HMLAN1 R:R3F92F1A9 stat:0008 t:00000000 d:FF r:7FFF     m:B1 A258 B1B1B1 1BFC52 03FD
2014.02.17 12:19:59.535 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 12:20:08.381 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.17 12:20:45.954 1: VD-test B3B3B301 c:11 t:1392636202444 x:156500
2014.02.17 12:20:45.964 0: HMLAN_Send:  HMLAN1 S:S3F93ABCE stat:  00 t:00000000 d:01 r:3F93ABCE m:0B A258 B3B3B3 193A9A 0335
2014.02.17 12:20:46.571 0: HMLAN_Parse: HMLAN1 R:R3F93ABCE stat:0008 t:00000000 d:FF r:7FFF     m:0B A258 B3B3B3 193A9A 0335
2014.02.17 12:20:46.574 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 12:20:56.817 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.17 12:20:58.731 1: VD-test B4B4B401 c:13 t:1392636233174 x:174500
2014.02.17 12:20:58.801 0: HMLAN_Send:  HMLAN1 S:S3F93DDF2 stat:  00 t:00000000 d:01 r:3F93DDF2 m:0D A258 B4B4B4 1CE9F5 0300
2014.02.17 12:20:59.410 0: HMLAN_Parse: HMLAN1 R:R3F93DDF2 stat:0008 t:00000000 d:FF r:7FFF     m:0D A258 B4B4B4 1CE9F5 0300
2014.02.17 12:20:59.414 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 12:21:08.862 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.17 12:21:36.102 1: VD-test B5B5B501 c:14 t:1392636239092 x:143000
2014.02.17 12:21:36.111 0: HMLAN_Send:  HMLAN1 S:S3F946FB1 stat:  00 t:00000000 d:01 r:3F946FB1 m:0E A258 B5B5B5 1C4E25 0300
2014.02.17 12:21:36.718 0: HMLAN_Parse: HMLAN1 R:R3F946FB1 stat:0008 t:00000000 d:FF r:7FFF     m:0E A258 B5B5B5 1C4E25 0300
2014.02.17 12:21:36.721 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 12:21:46.244 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 12:55:58
Hi Frank

msgSent soll auch nicht initialisiert werden. Das stellt sicher, dass nach dem hochfahren erst einmal gesendet wird - das ist absicht.
Nach einem neustart mit unterdruecken anfangen ist nicht sinnvoll. Es erzeugt einiges an Risiko und fast nichts an sparen - so viele neustarts sollte es nicht geben - und ziel ist das Sparen und nicht sendemuster erzeugen.

Problematisch ist wohl, dass einige msgCnt mit 0 beginnen. Da habe ich keine Erklaerung - es sei den, das statefile wurde nicht sauber geschrieben. Dann haben wir aber keine change.

Also:
wenn ein vtc mit
2014.02.17 12:18:56.637 1: VD-test B5B5B501 c:1 t:1392635180592 x:169500
beginnt - offne das statefile und kontrollieren, was in passenden reading steht.

Gruss Martin

Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 13:30:32
hallo martin,

ZitatNach einem neustart mit unterdruecken anfangen ist nicht sinnvoll. Es erzeugt einiges an Risiko und fast nichts an sparen - so viele neustarts sollte es nicht geben - und ziel ist das Sparen und nicht sendemuster erzeugen.

ich glaube du verstehst mich nicht.
es geht nicht um die gewünschte reduzierung, infolge von msgreduce.

sondern um das verhindern des ersten events nach neustart, wenn die funktion das erste mal aufgerufen wird, da dieses event zu einem völlig zufälligen zeitpunkt "rausgehauen" wird. der erste aufruf der funktion wurde ja nicht durch einen timer präzise berechnet, sondern ist von der dauer des resets abhängig!

  if (!$hashVd->{msgSent}) {
    $hashVd->{miss}++;
    $hashVd->{next} = $hashVd->{nextF};
    $vcn = "ready" if ($vc eq "init");
  }

wozu existiert dieser if -block? seit inbetriebname dieser version wurde ready noch nicht ein einziges mal erreicht. seinerzeit wurde ready eingeführt um das erste "sinnlose" event nach neustart zu verhindern.

Zitates sei den, das statefile wurde nicht sauber geschrieben.
warum sollte das auf einmal anders sein?

vom allerersten moment an, seit ich die neue version einsetze, funktioniert der neustart nicht mehr. direkt davor war es problemlos.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 14:24:07
Hi Frank

ready koenne wir von mir aus verwerfen. Das war schon immer so drin.... Ich brauche es nicht, werden es loeschen.
Den block brauche wir schon, der unterdrueckt das senden.

Und ja, hatte ich falsch verstanden.
Das einfachste, den ersten trigger zu unterdruecken ist, valveCtrl beim restart auf 'restart' zu setzen und  in CUL_HM_valvePosUpdt die message bei restart zu unterdruecken.
Zitatwarum sollte das auf einmal anders sein?
einfach nachsehen.
Offensichtlich ist es nicht duchgekommen - bei ein paar aktoren. Entweder sind wir zu schnell (dein system brauch recht lange zum restart) oder die readings fehlen. In beiden Faellen mussen wir an anderer Stelle aktiv werden

Zitatvom allerersten moment an, seit ich die neue version einsetze, funktioniert der neustart nicht mehr. direkt davor war es problemlos.
sorry.
aber ein paar Probleme hast du dir selber gemacht - du erinnerst dich?
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 14:57:58
hallo martin,

Zitataber ein paar Probleme hast du dir selber gemacht - du erinnerst dich?
ich spreche nur vom restart.
deine aussagen haben den eindruck gemacht, als ob es nur von bestimmten zählerständen abhängig sei. deswegen sprach ich davon, dass dieses nichtfunktionieren nach neustart von anfang an nicht geht. in beliebigen konstellationen, bei bestimmt 10 restarts. nicht nur der eine.

also msgCnt wird falsch initialisiert.
eben war msgcnt=44 im statefile gespeichert, die zählung nach restart (dein testlog) beginnt aber mit 0.

        $hash->{helper}{vd}{msgCnt} = ReadingsVal($name,".msgCnt",0)
              if (!defined $hash->{helper}{vd}{msgCnt});


vielleicht ist der wert von $name nicht korrekt, weswegen dann msgcnt zu 0 wird ($name von child oder parent).

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 15:04:46
Frank,

das war die gesuchte Info. Ich denke, der update wird zu frueh gestartet - bevor die Readings zu verfuegung stehen. Schau ich mir einmal an...
anders kann ich es mir nicht vorstellen. Die Namen sollten schon korrekt sein.
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 15:15:31
baue dies if so in Zeile 190 ein. Das sollte es aufhalten. Gehoert sowieso da hin.
Wenn dann immer noch falsche Zaehler kommen, die mit dem statefile nicht uebereinstimmen muss ich wo anders suchen



sub CUL_HM_updateConfig($){
  # this routine is called 5 sec after the last define of a restart
  # this gives FHEM sufficient time to fill in attributes
  # it will also be called after each manual definition
  # Purpose is to parse attributes and read config
  if (!$init_done){
    RemoveInternalTimer("updateConfig");
    InternalTimer(gettimeofday()+5,"CUL_HM_updateConfig", "updateConfig", 0);
    return;
  }

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 15:59:11
hier der log:

im statefile war gespeichert:

setstate VentilControler.AZ.Nord_Btn1 2014-02-17 15:25:53 .msgCnt 50
setstate VentilControler.AZ.Nord_Btn1 2014-02-17 15:25:53 .next 1392647143.13289
setstate VentilControler.Bad_Btn1 2014-02-17 15:25:50 .msgCnt 45
setstate VentilControler.Bad_Btn1 2014-02-17 15:25:50 .next 1392647138.08433
setstate VentilControler.Kueche_Btn1 2014-02-17 15:26:24 .msgCnt -1
setstate VentilControler.Kueche_Btn1 2014-02-17 15:26:24 .next 1392647174.42658
setstate VentilControler.SZ_Btn1 2014-02-17 15:21:32 .msgCnt 42
setstate VentilControler.SZ_Btn1 2014-02-17 15:21:32 .next 1392646882.05564
setstate VentilControler.WZ_Btn1 2014-02-17 15:22:05 .msgCnt 44
setstate VentilControler.WZ_Btn1 2014-02-17 15:22:05 .next 1392646915.45713



2014.02.17 15:27:36.298 0: Server shutdown
2014.02.17 15:27:36.334 4: CUL_send:  cul868X0 0     
2014.02.17 15:39:41.781 1: Including fhem.cfg
2014.02.17 15:39:46.428 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.17 15:39:46.492 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.17 15:39:56.740 1: Including ./log/fhem.save
2014.02.17 15:39:59.244 1: HCS BROETJE monitoring of devices started
2014.02.17 15:39:59.594 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.17 15:39:59.606 1: VD-test B1B1B101 c:0 t:1392647331926 x:157500
2014.02.17 15:39:59.608 1: VD-test B1B1B101 c:1 t:1392647474926 x:143000
2014.02.17 15:39:59.609 1: VD-test B1B1B101 c:2 t:1392647603676 x:128750
2014.02.17 15:39:59.611 1: VD-test B1B1B101 c:3 t:1392647781926 x:178250
2014.02.17 15:39:59.613 1: VD-test B1B1B101 c:4 t:1392647945676 x:163750
2014.02.17 15:39:59.614 1: VD-test B1B1B101 c:5 t:1392648095176 x:149500
2014.02.17 15:40:00.928 0: Server started with 362 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 1739)
2014.02.17 15:40:05.964 1: VD-test B2B2B201 c:1 t:1392647051555 x:169500
2014.02.17 15:40:05.966 1: VD-test B2B2B201 c:2 t:1392647206555 x:155000
2014.02.17 15:40:05.968 1: VD-test B2B2B201 c:3 t:1392647347305 x:140750
2014.02.17 15:40:05.971 1: VD-test B2B2B201 c:4 t:1392647473555 x:126250
2014.02.17 15:40:05.973 1: VD-test B2B2B201 c:5 t:1392647649305 x:175750
2014.02.17 15:40:05.975 1: VD-test B2B2B201 c:6 t:1392647810805 x:161500
2014.02.17 15:40:05.977 1: VD-test B2B2B201 c:7 t:1392647957805 x:147000
2014.02.17 15:40:05.979 1: VD-test B2B2B201 c:8 t:1392648090305 x:132500
2014.02.17 15:40:06.019 1: VD-test B4B4B401 c:1 t:1392647084957 x:169500
2014.02.17 15:40:06.021 1: VD-test B4B4B401 c:2 t:1392647239957 x:155000
2014.02.17 15:40:06.023 1: VD-test B4B4B401 c:3 t:1392647380707 x:140750
2014.02.17 15:40:06.025 1: VD-test B4B4B401 c:4 t:1392647506957 x:126250
2014.02.17 15:40:06.027 1: VD-test B4B4B401 c:5 t:1392647682707 x:175750
2014.02.17 15:40:06.028 1: VD-test B4B4B401 c:6 t:1392647844207 x:161500
2014.02.17 15:40:06.031 1: VD-test B4B4B401 c:7 t:1392647991207 x:147000
2014.02.17 15:40:06.033 1: VD-test B4B4B401 c:8 t:1392648123707 x:132500
2014.02.17 15:40:06.073 1: VD-test B3B3B301 c:1 t:1392647307584 x:169500
2014.02.17 15:40:06.075 1: VD-test B3B3B301 c:2 t:1392647462584 x:155000
2014.02.17 15:40:06.077 1: VD-test B3B3B301 c:3 t:1392647603334 x:140750
2014.02.17 15:40:06.079 1: VD-test B3B3B301 c:4 t:1392647729584 x:126250
2014.02.17 15:40:06.081 1: VD-test B3B3B301 c:5 t:1392647905334 x:175750
2014.02.17 15:40:06.083 1: VD-test B3B3B301 c:6 t:1392648066834 x:161500
2014.02.17 15:40:06.124 1: VD-test B5B5B501 c:1 t:1392647312632 x:169500
2014.02.17 15:40:06.126 1: VD-test B5B5B501 c:2 t:1392647467632 x:155000
2014.02.17 15:40:06.128 1: VD-test B5B5B501 c:3 t:1392647608382 x:140750
2014.02.17 15:40:06.131 1: VD-test B5B5B501 c:4 t:1392647734632 x:126250
2014.02.17 15:40:06.133 1: VD-test B5B5B501 c:5 t:1392647910382 x:175750
2014.02.17 15:40:06.135 1: VD-test B5B5B501 c:6 t:1392648071882 x:161500
2014.02.17 15:40:06.179 1: VD-test B1B1B101 c:6 t:1392647309426 x:135000
2014.02.17 15:40:06.181 1: VD-test B1B1B101 c:7 t:1392647429926 x:120500
2014.02.17 15:40:06.183 1: VD-test B1B1B101 c:8 t:1392647600176 x:170250
2014.02.17 15:40:06.184 1: VD-test B1B1B101 c:9 t:1392647755926 x:155750
2014.02.17 15:40:06.186 1: VD-test B1B1B101 c:10 t:1392647897176 x:141250
2014.02.17 15:40:06.188 1: VD-test B1B1B101 c:11 t:1392648023926 x:126750
2014.02.17 15:40:06.315 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.17 15:40:06.327 1: VD-test B2B2B201 c:9 t:1392647020555 x:138500
2014.02.17 15:40:06.328 1: VD-test B2B2B201 c:10 t:1392647144805 x:124250
2014.02.17 15:40:06.330 1: VD-test B2B2B201 c:11 t:1392647318555 x:173750
2014.02.17 15:40:06.332 1: VD-test B2B2B201 c:12 t:1392647477805 x:159250
2014.02.17 15:40:06.334 1: VD-test B2B2B201 c:13 t:1392647622555 x:144750
2014.02.17 15:40:06.336 1: VD-test B2B2B201 c:14 t:1392647753055 x:130500
2014.02.17 15:40:06.337 1: VD-test B2B2B201 c:15 t:1392647933055 x:180000
2014.02.17 15:40:06.339 1: VD-test B2B2B201 c:16 t:1392648098555 x:165500
2014.02.17 15:40:06.612 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.17 15:40:06.624 1: VD-test B3B3B301 c:7 t:1392647288334 x:150250
2014.02.17 15:40:06.626 1: VD-test B3B3B301 c:8 t:1392647424084 x:135750
2014.02.17 15:40:06.628 1: VD-test B3B3B301 c:9 t:1392647545584 x:121500
2014.02.17 15:40:06.629 1: VD-test B3B3B301 c:10 t:1392647716584 x:171000
2014.02.17 15:40:06.631 1: VD-test B3B3B301 c:11 t:1392647873084 x:156500
2014.02.17 15:40:06.633 1: VD-test B3B3B301 c:12 t:1392648015334 x:142250
2014.02.17 15:40:07.014 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.17 15:40:07.027 1: VD-test B4B4B401 c:9 t:1392647083707 x:168250
2014.02.17 15:40:07.029 1: VD-test B4B4B401 c:10 t:1392647237457 x:153750
2014.02.17 15:40:07.031 1: VD-test B4B4B401 c:11 t:1392647376957 x:139500
2014.02.17 15:40:07.032 1: VD-test B4B4B401 c:12 t:1392647501957 x:125000
2014.02.17 15:40:07.034 1: VD-test B4B4B401 c:13 t:1392647676457 x:174500
2014.02.17 15:40:07.036 1: VD-test B4B4B401 c:14 t:1392647836707 x:160250
2014.02.17 15:40:07.037 1: VD-test B4B4B401 c:15 t:1392647982457 x:145750
2014.02.17 15:40:07.039 1: VD-test B4B4B401 c:16 t:1392648113707 x:131250
2014.02.17 15:40:07.365 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.17 15:40:07.376 1: VD-test B5B5B501 c:7 t:1392647323132 x:180000
2014.02.17 15:40:07.378 1: VD-test B5B5B501 c:8 t:1392647488632 x:165500
2014.02.17 15:40:07.379 1: VD-test B5B5B501 c:9 t:1392647639882 x:151250
2014.02.17 15:40:07.381 1: VD-test B5B5B501 c:10 t:1392647776632 x:136750
2014.02.17 15:40:07.383 1: VD-test B5B5B501 c:11 t:1392647898882 x:122250
2014.02.17 15:40:07.384 1: VD-test B5B5B501 c:12 t:1392648070632 x:171750
2014.02.17 15:40:14.672 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.17 15:40:15.027 0: HMLAN_Parse: HMLAN1 R:R404A11CD stat:0008 t:00000000 d:FF r:7FFF     m:05 A258 B1B1B1 1BFC52 03FD
2014.02.17 15:40:15.029 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 15:40:16.247 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.17 15:40:16.415 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.17 15:40:16.691 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 15:40:16.724 1: VD-test B3B3B301 c:13 t:1392648143084 x:127750
2014.02.17 15:40:16.734 0: HMLAN_Send:  HMLAN1 S:S404A54A0 stat:  00 t:00000000 d:01 r:404A54A0 m:0C A258 B3B3B3 193A9A 0366
2014.02.17 15:40:16.809 0: HMLAN_Send:  HMLAN1 S:S404A54EB stat:  00 t:00000000 d:01 r:404A54EB m:0C A258 B5B5B5 1C4E25 0300
2014.02.17 15:40:17.098 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 15:40:17.351 0: HMLAN_Send:  HMLAN1 S:S404A5708 stat:  00 t:00000000 d:01 r:404A5708 m:10 A258 B2B2B2 1DFC2F 0300
2014.02.17 15:40:17.402 0: HMLAN_Parse: HMLAN1 R:R404A54A0 stat:0008 t:00000000 d:FF r:7FFF     m:0C A258 B3B3B3 193A9A 0366
2014.02.17 15:40:17.404 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 15:40:17.474 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.17 15:40:17.491 0: HMLAN_Parse: HMLAN1 R:R404A54EB stat:0008 t:00000000 d:FF r:7FFF     m:0C A258 B5B5B5 1C4E25 0300
2014.02.17 15:40:17.494 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 15:40:17.612 0: HMLAN_Send:  HMLAN1 S:S404A580E stat:  00 t:00000000 d:01 r:404A580E m:10 A258 B4B4B4 1CE9F5 0300
2014.02.17 15:40:17.959 0: HMLAN_Parse: HMLAN1 R:R404A5708 stat:0008 t:00000000 d:FF r:7FFF     m:10 A258 B2B2B2 1DFC2F 0300
2014.02.17 15:40:17.961 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 15:40:18.311 0: HMLAN_Parse: HMLAN1 R:R404A580E stat:0008 t:00000000 d:FF r:7FFF     m:10 A258 B4B4B4 1CE9F5 0300
2014.02.17 15:40:18.313 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 15:40:23.935 1: VD-test B1B1B101 c:12 t:1392648200426 x:176500
2014.02.17 15:40:26.791 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.17 15:40:34.006 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.17 15:41:10.643 1: VD-test B5B5B501 c:13 t:1392648228132 x:157500
2014.02.17 15:41:10.650 0: HMLAN_Send:  HMLAN1 S:S404B273C stat:  00 t:00000000 d:01 r:404B273C m:0D A258 B5B5B5 1C4E25 0300
2014.02.17 15:41:11.257 0: HMLAN_Parse: HMLAN1 R:R404B273C stat:0008 t:00000000 d:FF r:7FFF     m:0D A258 B5B5B5 1C4E25 0300
2014.02.17 15:41:11.260 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 15:41:20.714 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.17 15:41:38.567 1: VD-test B2B2B201 c:17 t:1392648249805 x:151250
2014.02.17 15:41:38.575 0: HMLAN_Send:  HMLAN1 S:S404B9451 stat:  00 t:00000000 d:01 r:404B9451 m:11 A258 B2B2B2 1DFC2F 0300
2014.02.17 15:41:39.182 0: HMLAN_Parse: HMLAN1 R:R404B9451 stat:0008 t:00000000 d:FF r:7FFF     m:11 A258 B2B2B2 1DFC2F 0300
2014.02.17 15:41:39.185 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 15:41:48.700 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.17 15:41:53.719 1: VD-test B4B4B401 c:17 t:1392648294707 x:181000
2014.02.17 15:41:53.727 0: HMLAN_Send:  HMLAN1 S:S404BCF81 stat:  00 t:00000000 d:01 r:404BCF81 m:11 A258 B4B4B4 1CE9F5 0300
2014.02.17 15:41:54.333 0: HMLAN_Parse: HMLAN1 R:R404BCF81 stat:0008 t:00000000 d:FF r:7FFF     m:11 A258 B4B4B4 1CE9F5 0300
2014.02.17 15:41:54.337 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 15:42:04.168 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.17 15:42:23.095 1: VD-test B3B3B301 c:14 t:1392648320334 x:177250
2014.02.17 15:42:23.107 0: HMLAN_Send:  HMLAN1 S:S404C4240 stat:  00 t:00000000 d:01 r:404C4240 m:0E A258 B3B3B3 193A9A 0342
2014.02.17 15:42:23.715 0: HMLAN_Parse: HMLAN1 R:R404C4240 stat:0008 t:00000000 d:FF r:7FFF     m:0E A258 B3B3B3 193A9A 0342
2014.02.17 15:42:23.718 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 15:42:33.214 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.17 15:43:20.439 1: VD-test B1B1B101 c:13 t:1392648362426 x:162000
2014.02.17 15:43:20.446 0: HMLAN_Send:  HMLAN1 S:S404D2240 stat:  00 t:00000000 d:01 r:404D2240 m:0D A258 B1B1B1 1BFC52 03FD
2014.02.17 15:43:21.053 0: HMLAN_Parse: HMLAN1 R:R404D2240 stat:0008 t:00000000 d:FF r:7FFF     m:0D A258 B1B1B1 1BFC52 03FD
2014.02.17 15:43:21.055 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 15:43:30.512 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.17 15:43:48.143 1: VD-test B5B5B501 c:14 t:1392648371132 x:143000
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 16:42:04
seltsam - wird kontinuierlich schlechter bei dir. Beim ersten Test waren nur wenige Sensoren  auf '0', jetzt sind es quasi alle...
Ich werde heute Abend einmal selbst testen... wenn ich ans system komme
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 17:57:38
hallo martin,

ich habe jetzt jeweils noch eine log-zeile (fängt immer mit "VD-test(init)" an) direkt unter den initialisierungen von ".msgCnt" und ".next" eingebaut. nun wird es noch seltsamer:

2014.02.17 17:24:21.868 0: Server shutdown
2014.02.17 17:24:21.903 4: CUL_send:  cul868X0 0     
2014.02.17 17:27:30.749 1: Including fhem.cfg
2014.02.17 17:27:35.506 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.17 17:27:35.566 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.17 17:27:45.999 1: Including ./log/fhem.save
2014.02.17 17:27:48.524 1: HCS BROETJE monitoring of devices started
2014.02.17 17:27:49.986 0: Server started with 362 defined entities (version $Id: fhem.pl 4709 2014-01-21 18:00:07Z rudolfkoenig $, os linux, user root, pid 1735)
2014.02.17 17:27:55.268 1: VD-test B2B2B201 c:1 t:1392653985098 x:169500
2014.02.17 17:27:55.270 1: VD-test B2B2B201 c:2 t:1392654140098 x:155000
2014.02.17 17:27:55.272 1: VD-test B2B2B201 c:3 t:1392654280848 x:140750
2014.02.17 17:27:55.282 1: VD-test B2B2B201 c:4 t:1392654407098 x:126250
2014.02.17 17:27:55.284 1: VD-test B2B2B201 c:5 t:1392654582848 x:175750
2014.02.17 17:27:55.364 1: VD-test B4B4B401 c:1 t:1392654105542 x:169500
2014.02.17 17:27:55.366 1: VD-test B4B4B401 c:2 t:1392654260542 x:155000
2014.02.17 17:27:55.379 1: VD-test B4B4B401 c:3 t:1392654401292 x:140750
2014.02.17 17:27:55.381 1: VD-test B4B4B401 c:4 t:1392654527542 x:126250
2014.02.17 17:27:55.454 1: VD-test B5B5B501 c:1 t:1392654295178 x:169500
2014.02.17 17:27:55.456 1: VD-test B5B5B501 c:2 t:1392654450178 x:155000
2014.02.17 17:27:55.458 1: VD-test B5B5B501 c:3 t:1392654590928 x:140750
2014.02.17 17:27:55.560 1: VD-test B1B1B101 c:1 t:1392654304708 x:169500
2014.02.17 17:27:55.562 1: VD-test B1B1B101 c:2 t:1392654459708 x:155000
2014.02.17 17:27:55.564 1: VD-test B1B1B101 c:3 t:1392654600458 x:140750
2014.02.17 17:27:55.645 1: VD-test B3B3B301 c:1 t:1392654394280 x:169500
2014.02.17 17:27:55.647 1: VD-test B3B3B301 c:2 t:1392654549280 x:155000
2014.02.17 17:27:55.834 1: VD-test(init) VentilControler.SZ_Btn1 c:5
2014.02.17 17:27:55.895 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.17 17:27:55.907 1: VD-test(init) VentilControler.SZ_Btn1 t:1392653815598
2014.02.17 17:27:55.909 1: VD-test B2B2B201 c:6 t:1392653997348 x:181750
2014.02.17 17:27:55.911 1: VD-test B2B2B201 c:7 t:1392654164848 x:167500
2014.02.17 17:27:55.913 1: VD-test B2B2B201 c:8 t:1392654317848 x:153000
2014.02.17 17:27:55.914 1: VD-test B2B2B201 c:9 t:1392654456348 x:138500
2014.02.17 17:27:55.916 1: VD-test B2B2B201 c:10 t:1392654580598 x:124250
2014.02.17 17:27:56.169 1: VD-test(init) VentilControler.Bad_Btn1 c:2
2014.02.17 17:27:56.229 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.17 17:27:56.239 1: VD-test(init) VentilControler.Bad_Btn1 t:1392654224780
2014.02.17 17:27:56.241 1: VD-test B3B3B301 c:3 t:1392654368780 x:144000
2014.02.17 17:27:56.243 1: VD-test B3B3B301 c:4 t:1392654498280 x:129500
2014.02.17 17:27:56.472 1: VD-test(init) VentilControler.WZ_Btn1 c:4
2014.02.17 17:27:56.543 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.17 17:27:56.555 1: VD-test(init) VentilControler.WZ_Btn1 t:1392653936042
2014.02.17 17:27:56.557 1: VD-test B4B4B401 c:5 t:1392654098042 x:162000
2014.02.17 17:27:56.558 1: VD-test B4B4B401 c:6 t:1392654245542 x:147500
2014.02.17 17:27:56.560 1: VD-test B4B4B401 c:7 t:1392654378542 x:133000
2014.02.17 17:27:56.562 1: VD-test B4B4B401 c:8 t:1392654561292 x:182750
2014.02.17 17:27:56.779 1: VD-test(init) VentilControler.AZ.Nord_Btn1 c:3
2014.02.17 17:27:56.841 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.17 17:27:56.853 1: VD-test(init) VentilControler.AZ.Nord_Btn1 t:1392654125678
2014.02.17 17:27:56.854 1: VD-test B5B5B501 c:4 t:1392654284928 x:159250
2014.02.17 17:27:56.856 1: VD-test B5B5B501 c:5 t:1392654429678 x:144750
2014.02.17 17:27:56.858 1: VD-test B5B5B501 c:6 t:1392654560178 x:130500
2014.02.17 17:27:57.594 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.17 17:27:58.884 0: HMLAN_Send:  HMLAN1 S:S40ACEF66 stat:  00 t:00000000 d:01 r:40ACEF66 m:06 A258 B5B5B5 1C4E25 0300
2014.02.17 17:27:59.146 0: HMLAN_Send:  HMLAN1 S:S40ACF06C stat:  00 t:00000000 d:01 r:40ACF06C m:04 A258 B3B3B3 193A9A 0328
2014.02.17 17:27:59.408 0: HMLAN_Send:  HMLAN1 S:S40ACF172 stat:  00 t:00000000 d:01 r:40ACF172 m:0A A258 B2B2B2 1DFC2F 0300
2014.02.17 17:27:59.492 0: HMLAN_Parse: HMLAN1 R:R40ACEF66 stat:0008 t:00000000 d:FF r:7FFF     m:06 A258 B5B5B5 1C4E25 0300
2014.02.17 17:27:59.495 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 17:27:59.670 0: HMLAN_Send:  HMLAN1 S:S40ACF279 stat:  00 t:00000000 d:01 r:40ACF279 m:08 A258 B4B4B4 1CE9F5 0300
2014.02.17 17:27:59.754 0: HMLAN_Parse: HMLAN1 R:R40ACF06C stat:0008 t:00000000 d:FF r:7FFF     m:04 A258 B3B3B3 193A9A 0328
2014.02.17 17:27:59.757 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 17:28:00.016 0: HMLAN_Parse: HMLAN1 R:R40ACF172 stat:0008 t:00000000 d:FF r:7FFF     m:0A A258 B2B2B2 1DFC2F 0300
2014.02.17 17:28:00.019 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 17:28:00.278 0: HMLAN_Parse: HMLAN1 R:R40ACF279 stat:0008 t:00000000 d:FF r:7FFF     m:08 A258 B4B4B4 1CE9F5 0300
2014.02.17 17:28:00.281 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 17:28:05.978 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.17 17:28:06.309 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 17:28:06.624 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 17:28:06.921 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.17 17:28:18.289 1: VD-test B3B3B301 c:5 t:1392654677280 x:179000
2014.02.17 17:28:18.298 0: HMLAN_Send:  HMLAN1 S:S40AD3B3B stat:  00 t:00000000 d:01 r:40AD3B3B m:05 A258 B3B3B3 193A9A 0328
2014.02.17 17:28:18.905 0: HMLAN_Parse: HMLAN1 R:R40AD3B3B stat:0008 t:00000000 d:FF r:7FFF     m:05 A258 B3B3B3 193A9A 0328
2014.02.17 17:28:18.907 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 17:28:28.357 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.17 17:29:20.697 1: VD-test B5B5B501 c:7 t:1392654740178 x:180000
2014.02.17 17:29:20.705 0: HMLAN_Send:  HMLAN1 S:S40AE2F03 stat:  00 t:00000000 d:01 r:40AE2F03 m:07 A258 B5B5B5 1C4E25 0300
2014.02.17 17:29:21.300 1: VD-test B4B4B401 c:9 t:1392654729542 x:168250
2014.02.17 17:29:21.307 0: HMLAN_Send:  HMLAN1 S:S40AE315D stat:  00 t:00000000 d:01 r:40AE315D m:09 A258 B4B4B4 1CE9F5 0300
2014.02.17 17:29:21.361 0: HMLAN_Parse: HMLAN1 R:R40AE2F03 stat:0008 t:00000000 d:FF r:7FFF     m:07 A258 B5B5B5 1C4E25 0300
2014.02.17 17:29:21.363 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 17:29:21.915 0: HMLAN_Parse: HMLAN1 R:R40AE315D stat:0008 t:00000000 d:FF r:7FFF     m:09 A258 B4B4B4 1CE9F5 0300
2014.02.17 17:29:21.918 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 17:29:30.765 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.17 17:29:31.368 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.17 17:29:40.609 1: VD-test B2B2B201 c:11 t:1392654754348 x:173750
2014.02.17 17:29:40.616 0: HMLAN_Send:  HMLAN1 S:S40AE7CCA stat:  00 t:00000000 d:01 r:40AE7CCA m:0B A258 B2B2B2 1DFC2F 0300
2014.02.17 17:29:41.223 0: HMLAN_Parse: HMLAN1 R:R40AE7CCA stat:0008 t:00000000 d:FF r:7FFF     m:0B A258 B2B2B2 1DFC2F 0300
2014.02.17 17:29:41.226 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 17:29:50.677 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.17 17:29:56.573 1: VD-test(init) VentilControler.Bad_Btn1 c:5


demnach wird die loopschleife vor dem initialisieren durchlaufen!!!
edit: die zähler hatten im statefile jeweils irgend etwas mit 50.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 18:50:23
Hallo Frank,

werde ich mir ansehen. In meinemAufbau läuft es übrigens wie erwartet...
Welchen Typ restart machst du? Evtl werden die Timer nicht gestoppt...


Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 19:12:06
hallo martin,

ZitatWelchen Typ restart machst du?
ich versuche immer shutdown & restart.

seit ein paar tagen klappt aber das restart nicht mehr.
wenn ich anschliessend über telnet manuel mit ./startfhem probiere, bekomme ich als antwort von fhem, dass das fhem.log read-only wäre. also kein start. daraufhin mache ich dann reset der fritzbox.

wenn ich mir das logfile über telnet mit "ls -l" anschaue, ist aber "-rwxrwxrwx" zu sehen. soweit ich als windows-user linux verstanden habe, sollte das doch ok sein, also nicht read-only.

aber egal, weil diese vorgehensweise hat vor dieser version immer zu 100% geklappt. sogar mit stromausfall (ohne shutdown und stecker der fritzbox ziehen) habe ich 100% wiederbelebung gehabt. damals allerdings noch ohne reduzierung.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 17 Februar 2014, 19:19:41
Hi Frank

shutdown & restart? Ich nehmen an shutdown restart.

Zitatseit ein paar tagen klappt aber das restart nicht mehr.
da lässt du mich aber ganz schönauflaufen. Da musst du erst einmal dein System in ordnung bringen bevor du mir sagst, dass ein abgeleitetes Details  nicht kappt. Leicht unfair, nachdem du dies schon Tage weisst!

"-rwxrwxrwx" sollte ok sein. Ist das Dirctory auch freigegeben? Kannst du das Lofile löschen?

Zitataber egal
sehe ich garnicht so. Sind die andere Files schreibbar?
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 20:27:42
hallo martin,

ZitatIch nehmen an shutdown restart.
ja.

ZitatIst das Dirctory auch freigegeben?
der pfad zum logfile: var/InternerSpeicher/USB-FlashDisk-00/fhem/log/fhem.log

beide ordner auf dem usbstick haben: drwxrwxrwx

ZitatKannst du das Lofile löschen?
das ist ein problem!

vom laptop -> löscht es , bleibt aber erhalten
über weboberfläche fritzbox -> fehler
über telnet  -> muss ich erst mal schauen wie das geht

das ging auf alle fälle schon mal.

ZitatSind die andere Files schreibbar?
über laptop kann ich nicht direkt 10_cul_hm verändern, nur über umweg fritzboxoberfläche ein neues drüberkopieren. war schon immer so.
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 20:39:22
also über telnet: "rm fhem.log" -> no, read-only file system
auch bei einem alten logfile.

auch nach shutdown.
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 20:42:39
mir fällt gerade ein, dass es vor ein paar tagen neue firmware für die fritzbox gab. könnte das ein hinweis sein?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 21:56:29
hallo martin,

shutdown restart hat nun geklappt.
aber erst nachdem ich den global log-path vom stick weg zurück auf standard gesetzt habe.

ein komplettes fhem update hat beim backupversuch (ebenfals richtung usb-stick) zwischenzeitlich auch versagt. auch hier hat jetzt das umlenken des path auf standard abhilfe geschaffen.

ich habe den starken verdacht, dass avm irgend etwas geändert hat.  die fixe änderung gab es, weil die bösen hacker kostenlos über den telefonanschluss telefonieren konnten.

nach dem update schau ich mal weiter.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 17 Februar 2014, 23:33:31
hallo martin,

nun mit frischem fhem update, frizbox reset, 4 vd manuell reannimiert, alle vtc haben msgreduce=0, eine kleine pause eingelegt, dann statefile gesichert, dann shutdown restart.

restart fhem hat funktioniert  ;).

aber:
alle vd eingeschlafen und laut log zählt der msgcounter bei 2 vtc nach restart falsch weiter. B2B2B2 und B4B4B4. zufälligerweise hatten diese beiden kurz vor shutdown ein miss. 

2014.02.17 22:50:51.435 0: HMLAN_Send:  HMLAN1 S:S41D4896D stat:  00 t:00000000 d:01 r:41D4896D m:4F A258 B4B4B4 1CE9F5 0000
2014.02.17 22:50:52.043 0: HMLAN_Parse: HMLAN1 R:R41D4896D stat:0008 t:00000000 d:FF r:7FFF     m:4F A258 B4B4B4 1CE9F5 0000
2014.02.17 22:50:52.046 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 22:51:01.196 0: HMLAN_Send:  HMLAN1 S:S41D4AF8E stat:  00 t:00000000 d:01 r:41D4AF8E m:52 A258 B2B2B2 1DFC2F 0000
2014.02.17 22:51:01.503 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 22:51:01.804 0: HMLAN_Parse: HMLAN1 R:R41D4AF8E stat:0008 t:00000000 d:FF r:7FFF     m:52 A258 B2B2B2 1DFC2F 0000
2014.02.17 22:51:01.807 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 22:51:09.636 1: ----- NOTIFY ----- TCControler.Bad state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:51:26.435 1: ----- NOTIFY ----- TCControler.SZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:51:52.081 1: ----- NOTIFY ----- TCControler.WZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:51:57.280 0: HMLAN_Send:  HMLAN1 S:S41D58AA1 stat:  00 t:00000000 d:01 r:41D58AA1 m:50 A258 B5B5B5 1C4E25 0000
2014.02.17 22:51:57.842 0: HMLAN_Parse: HMLAN1 R:R41D58AA1 stat:0008 t:00000000 d:FF r:7FFF     m:50 A258 B5B5B5 1C4E25 0000
2014.02.17 22:51:57.845 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 22:51:57.851 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:04E7303F d:FF r:FFB1     m:50 8202 1C4E25 B5B5B5 010100004E
2014.02.17 22:52:27.150 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.17 22:52:27.154 0: HMLAN_Send:  HMLAN1 S:S41D5FF4E stat:  00 t:00000000 d:01 r:41D5FF4E m:51 A258 B3B3B3 193A9A 002E
2014.02.17 22:52:27.721 0: HMLAN_Parse: HMLAN1 R:R41D5FF4E stat:0008 t:00000000 d:FF r:7FFF     m:51 A258 B3B3B3 193A9A 002E
2014.02.17 22:52:27.724 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 22:52:27.730 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:04E7A4FA d:FF r:FFB5     m:51 8202 193A9A B3B3B3 0101240049
2014.02.17 22:52:57.587 1: ----- NOTIFY ----- TCControler.Kueche state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:53:03.391 0: HMLAN_Send:  HMLAN1 S:S41D68CE2 stat:  00 t:00000000 d:01 r:41D68CE2 m:2F A258 B1B1B1 1BFC52 00FD
2014.02.17 22:53:03.957 0: HMLAN_Parse: HMLAN1 R:R41D68CE2 stat:0008 t:00000000 d:FF r:7FFF     m:2F A258 B1B1B1 1BFC52 00FD
2014.02.17 22:53:03.960 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 22:53:03.966 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:04E8328B d:FF r:FFB0     m:2F 8202 1BFC52 B1B1B1 0101C6004E
2014.02.17 22:53:20.555 0: Server shutdown
2014.02.17 22:53:20.594 4: CUL_send:  cul868X0 0     
2014.02.17 22:53:24.779 1: Including fhem.cfg
2014.02.17 22:53:30.011 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.17 22:53:30.067 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.17 22:53:41.644 1: Including ./log/fhem.save
2014.02.17 22:53:44.336 1: HCS BROETJE monitoring of devices started
2014.02.17 22:53:45.145 0: Server started with 362 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 2814)
2014.02.17 22:53:45.154 1: Perfmon: possible freeze starting at 22:53:27, delay is 18.153
2014.02.17 22:53:46.478 1: ----- NOTIFY ----- TCControler.SZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:53:46.568 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.17 22:53:51.541 1: Perfmon: possible freeze starting at 22:53:47, delay is 4.54
2014.02.17 22:53:51.654 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.17 22:53:51.675 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.17 22:53:51.678 0: HMLAN_Send:  HMLAN1 S:S41D7497D stat:  00 t:00000000 d:01 r:41D7497D m:5C A258 B2B2B2 1DFC2F 0300
2014.02.17 22:53:51.981 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.17 22:53:52.000 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.17 22:53:52.002 0: HMLAN_Send:  HMLAN1 S:S41D74AC2 stat:  00 t:00000000 d:01 r:41D74AC2 m:52 A258 B3B3B3 193A9A 032E
2014.02.17 22:53:52.313 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.17 22:53:52.334 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.17 22:53:52.336 0: HMLAN_Send:  HMLAN1 S:S41D74C10 stat:  00 t:00000000 d:01 r:41D74C10 m:53 A258 B4B4B4 1CE9F5 0300
2014.02.17 22:53:52.655 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.17 22:53:52.676 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.17 22:53:52.678 0: HMLAN_Send:  HMLAN1 S:S41D74D66 stat:  00 t:00000000 d:01 r:41D74D66 m:51 A258 B5B5B5 1C4E25 0300
2014.02.17 22:53:53.128 0: HMLAN_Parse: HMLAN1 R:R41D7497D stat:0008 t:00000000 d:FF r:7FFF     m:5C A258 B2B2B2 1DFC2F 0300
2014.02.17 22:53:53.131 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 22:53:53.134 0: HMLAN_Parse: HMLAN1 R:R41D74AC2 stat:0008 t:00000000 d:FF r:7FFF     m:52 A258 B3B3B3 193A9A 032E
2014.02.17 22:53:53.136 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 22:53:53.149 1: Perfmon: possible freeze starting at 22:53:52, delay is 1.148
2014.02.17 22:53:53.161 0: HMLAN_Parse: HMLAN1 R:R41D74C10 stat:0008 t:00000000 d:FF r:7FFF     m:53 A258 B4B4B4 1CE9F5 0300
2014.02.17 22:53:53.163 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 22:53:53.294 0: HMLAN_Parse: HMLAN1 R:R41D74D66 stat:0008 t:00000000 d:FF r:7FFF     m:51 A258 B5B5B5 1C4E25 0300
2014.02.17 22:53:53.296 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 22:54:01.734 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.17 22:54:02.059 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.17 22:54:02.393 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.17 22:54:02.735 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.17 22:54:12.439 1: ----- NOTIFY ----- TCControler.Bad state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:54:14.037 0: HMLAN_Send:  HMLAN1 S:S41D7A0D7 stat:  00 t:00000000 d:01 r:41D7A0D7 m:52 A258 B5B5B5 1C4E25 0300
2014.02.17 22:54:15.047 1: ----- NOTIFY ----- TCControler.WZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:54:15.191 0: HMLAN_Parse: HMLAN1 R:R41D7A0D7 stat:0008 t:00000000 d:FF r:7FFF     m:52 A258 B5B5B5 1C4E25 0300
2014.02.17 22:54:15.195 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.17 22:54:24.099 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.17 22:54:34.062 1: Perfmon: possible freeze starting at 22:54:33, delay is 1.062
2014.02.17 22:54:45.525 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.17 22:54:45.562 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.17 22:54:45.564 0: HMLAN_Send:  HMLAN1 S:S41D81BFC stat:  00 t:00000000 d:01 r:41D81BFC m:30 A258 B1B1B1 1BFC52 03FD
2014.02.17 22:54:46.172 0: HMLAN_Parse: HMLAN1 R:R41D81BFC stat:0008 t:00000000 d:FF r:7FFF     m:30 A258 B1B1B1 1BFC52 03FD
2014.02.17 22:54:46.175 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 22:54:55.623 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.17 22:55:03.649 0: HMLAN_Send:  HMLAN1 S:S41D862A3 stat:  00 t:00000000 d:01 r:41D862A3 m:53 A258 B3B3B3 193A9A 0335
2014.02.17 22:55:04.256 0: HMLAN_Parse: HMLAN1 R:R41D862A3 stat:0008 t:00000000 d:FF r:7FFF     m:53 A258 B3B3B3 193A9A 0335
2014.02.17 22:55:04.259 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.17 22:55:13.716 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.17 22:55:17.378 1: ----- NOTIFY ----- TCControler.Kueche state:ready_to_send msgReduce:5 msgCtr:0
2014.02.17 22:55:36.423 0: HMLAN_Send:  HMLAN1 S:S41D8E2A9 stat:  00 t:00000000 d:01 r:41D8E2A9 m:54 A258 B4B4B4 1CE9F5 0300
2014.02.17 22:55:37.031 0: HMLAN_Parse: HMLAN1 R:R41D8E2A9 stat:0008 t:00000000 d:FF r:7FFF     m:54 A258 B4B4B4 1CE9F5 0300
2014.02.17 22:55:37.034 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.17 22:55:46.487 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.17 22:55:52.642 0: HMLAN_Send:  HMLAN1 S:S41D92205 stat:  00 t:00000000 d:01 r:41D92205 m:31 A258 B1B1B1 1BFC52 03FD
2014.02.17 22:55:53.251 0: HMLAN_Parse: HMLAN1 R:R41D92205 stat:0008 t:00000000 d:FF r:7FFF     m:31 A258 B1B1B1 1BFC52 03FD
2014.02.17 22:55:53.254 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.17 22:56:02.706 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.17 22:56:03.446 0: HMLAN_Send:  HMLAN1 S:S41D94C38 stat:  00 t:00000000 d:01 r:41D94C38 m:5D A258 B2B2B2 1DFC2F 0300
2014.02.17 22:56:04.196 0: HMLAN_Parse: HMLAN1 R:R41D94C38 stat:0008 t:00000000 d:FF r:7FFF     m:5D A258 B2B2B2 1DFC2F 0300
2014.02.17 22:56:04.199 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.17 22:56:13.510 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.17 22:56:16.281 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.17 22:56:16.284 0: HMLAN_Send:  HMLAN1 S:S41D97E5C stat:  00 t:00000000 d:01 r:41D97E5C m:53 A258 B5B5B5 1C4E25 0000
2014.02.17 22:56:16.893 0: HMLAN_Parse: HMLAN1 R:R41D97E5C stat:0008 t:00000000 d:FF r:7FFF     m:53 A258 B5B5B5 1C4E25 0000
2014.02.17 22:56:16.898 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 18 Februar 2014, 10:20:01
Hallo Frank,

halten wir erst einmal fest, dass die Uebernahme der msgCnt aus dem statefile sauber funktioniert hat, so man ein arbeitsfaehiges Filesystem hat, und einen definierten reboot macht. Beruhigend.

So, jetzt hast du den log, der die do-schleife entfernt - hier werden sicher die Werte fuer B2 und B4 hochgerechnet. Es deuted also darauf hin, dass .msgCnt und .next bei den beiden ein Problem haben.
Koenntest du diese Logs wieder einbauen?
Evtl. liegt es an .next... mal sehen

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 18 Februar 2014, 10:59:47
hallo martin,

Zitathalten wir erst einmal fest, dass die Uebernahme der msgCnt aus dem statefile sauber funktioniert hat, so man ein arbeitsfaehiges Filesystem hat, und einen definierten reboot macht. Beruhigend.

eindeutiges jein!  mit tendenz zu nein. ;)
weil unterschiedliche versionen von 10culhm. die version war vom update-server. am nachmittag hatte ich 4939. ich habe dann noch diverse versionen rückwärts probiert, auch die vom nachmittag. und wahrscheinlich war da wieder das rücksetzen der zähler. aber egal.

jetzt bin ich bei svn von gestern abend. v4973. ubernahme aus statefile wohl ok. aber keine rettung.
konzentriere dich mal auf B1B1B101. die do-schleife wird 2 mal durchlaufen!!!
c195 müsste eigentlich schon der richtige wert sein. kurz vorm senden wird dann noch mal vorausberechnet???

2014.02.18 08:25:32.514 0: HMLAN_Send:  HMLAN1 S:S43E2AD22 stat:  00 t:00000000 d:01 r:43E2AD22 m:BD A258 B2B2B2 1DFC2F 030A
2014.02.18 08:25:32.898 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:06F46411 d:FF r:FFC8     m:BD 8202 1DFC2F B2B2B2 0101001035
2014.02.18 08:25:33.078 0: HMLAN_Parse: HMLAN1 R:R43E2AD22 stat:0008 t:00000000 d:FF r:7FFF     m:BD A258 B2B2B2 1DFC2F 030A
2014.02.18 08:25:33.081 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:25:53.314 1: VD-test B4B4B401 c:194 t:1392708477303 x:124000
2014.02.18 08:25:53.320 0: HMLAN_Send:  HMLAN1 S:S43E2FE6A stat:  00 t:00000000 d:01 r:43E2FE6A m:C2 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:25:53.504 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:06F4B493 d:FF r:FFBA     m:C2 8202 1CE9F5 B4B4B4 0101000048
2014.02.18 08:25:53.885 0: HMLAN_Parse: HMLAN1 R:R43E2FE6A stat:0008 t:00000000 d:FF r:7FFF     m:C2 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:25:53.887 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.18 08:25:55.120 1: ----- NOTIFY ----- TCControler.Bad state:send_disabled msgReduce:5 msgCtr:4
2014.02.18 08:26:46.563 1: VD-test B3B3B301 c:229 t:1392708554639 x:148250
2014.02.18 08:26:46.570 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.18 08:26:46.572 0: HMLAN_Send:  HMLAN1 S:S43E3CE6C stat:  00 t:00000000 d:01 r:43E3CE6C m:E5 A258 B3B3B3 193A9A 0042
2014.02.18 08:26:46.956 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:06F58565 d:FF r:FFB5     m:E5 8202 193A9A B3B3B3 0101340049
2014.02.18 08:26:47.136 0: HMLAN_Parse: HMLAN1 R:R43E3CE6C stat:0008 t:00000000 d:FF r:7FFF     m:E5 A258 B3B3B3 193A9A 0042
2014.02.18 08:26:47.139 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.18 08:26:52.805 1: VD-test B1B1B101 c:193 t:1392708538543 x:125750
2014.02.18 08:26:52.810 0: HMLAN_Send:  HMLAN1 S:S43E3E6CC stat:  00 t:00000000 d:01 r:43E3E6CC m:C1 A258 B1B1B1 1BFC52 00FD
2014.02.18 08:26:53.376 0: HMLAN_Parse: HMLAN1 R:R43E3E6CC stat:0008 t:00000000 d:FF r:7FFF     m:C1 A258 B1B1B1 1BFC52 00FD
2014.02.18 08:26:53.379 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.18 08:26:53.385 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:06F59E8E d:FF r:FFB5     m:C1 8202 1BFC52 B1B1B1 0101C6004A
2014.02.18 08:27:00.683 1: VD-test B5B5B501 c:41 t:1392708558163 x:137500
2014.02.18 08:27:00.696 0: HMLAN_Send:  HMLAN1 S:S43E4059A stat:  00 t:00000000 d:01 r:43E4059A m:29 A258 B5B5B5 1C4E25 0000
2014.02.18 08:27:00.962 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:06F5BBDA d:FF r:FFB3     m:29 8202 1C4E25 B5B5B5 010100004C
2014.02.18 08:27:01.276 0: HMLAN_Parse: HMLAN1 R:R43E4059A stat:0008 t:00000000 d:FF r:7FFF     m:29 A258 B5B5B5 1C4E25 0000
2014.02.18 08:27:01.280 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.18 08:27:31.624 1: ----- NOTIFY ----- TCControler.SZ state:send_disabled msgReduce:5 msgCtr:5
2014.02.18 08:27:53.125 1: Perfmon: possible freeze starting at 08:27:47, delay is 6.124
2014.02.18 08:27:55.141 1: ----- NOTIFY ----- TCControler.Kueche state:send_disabled msgReduce:5 msgCtr:5
2014.02.18 08:27:56.424 1: Perfmon: possible freeze starting at 08:27:54, delay is 2.423
2014.02.18 08:27:57.667 1: VD-test B4B4B401 c:195 t:1392708650813 x:173500
2014.02.18 08:27:57.688 0: HMLAN_Send:  HMLAN1 S:S43E4E439 stat:  00 t:00000000 d:01 r:43E4E439 m:C3 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:27:58.370 0: HMLAN_Parse: HMLAN1 R:R43E4E439 stat:0008 t:00000000 d:FF r:7FFF     m:C3 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:27:58.419 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.18 08:28:08.219 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.18 08:28:16.107 1: ----- NOTIFY ----- TCControler.WZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.18 08:28:16.854 1: Perfmon: possible freeze starting at 08:28:15, delay is 1.853
2014.02.18 08:28:18.765 1: VD-test B2B2B201 c:190 t:1392708650753 x:152000
2014.02.18 08:28:18.848 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.18 08:28:18.851 0: HMLAN_Send:  HMLAN1 S:S43E536E2 stat:  00 t:00000000 d:01 r:43E536E2 m:BE A258 B2B2B2 1DFC2F 000A
2014.02.18 08:28:19.424 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:06F6EDEA d:FF r:FFC8     m:BE 8202 1DFC2F B2B2B2 0101080035
2014.02.18 08:28:20.680 0: HMLAN_Parse: HMLAN1 R:R43E536E2 stat:0008 t:00000000 d:FF r:7FFF     m:BE A258 B2B2B2 1DFC2F 000A
2014.02.18 08:28:20.730 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:28:20.826 1: Perfmon: possible freeze starting at 08:28:19, delay is 1.826
2014.02.18 08:28:24.308 1: Perfmon: possible freeze starting at 08:28:23, delay is 1.307
2014.02.18 08:28:36.169 1: Perfmon: possible freeze starting at 08:28:35, delay is 1.168
2014.02.18 08:28:40.032 1: Perfmon: possible freeze starting at 08:28:37, delay is 2.979
2014.02.18 08:32:50.438 1: Including fhem.cfg
2014.02.18 08:32:55.368 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.18 08:32:55.430 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.18 08:33:06.888 1: Including ./log/fhem.save
2014.02.18 08:33:09.427 1: HCS BROETJE monitoring of devices started
2014.02.18 08:33:09.825 0: Server started with 362 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 1751)
2014.02.18 08:33:09.832 1: Perfmon: possible freeze starting at 08:32:52, delay is 17.832
2014.02.18 08:33:10.674 1: ----- NOTIFY ----- TCControler.SZ state:ready_to_send msgReduce:5 msgCtr:0
2014.02.18 08:33:11.115 1: Perfmon: possible freeze starting at 08:33:10, delay is 1.114
2014.02.18 08:33:11.619 1: ----- NOTIFY ----- TCControler.Kueche state:ready_to_send msgReduce:5 msgCtr:0
2014.02.18 08:33:12.118 1: ----- NOTIFY ----- TCControler.WZ state:send_disabled msgReduce:5 msgCtr:1
2014.02.18 08:33:12.427 1: ----- NOTIFY ----- TCControler.Bad state:ready_to_send msgReduce:5 msgCtr:0
2014.02.18 08:33:14.492 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: restart
2014.02.18 08:33:14.696 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.18 08:33:15.040 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: restart
2014.02.18 08:33:15.244 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: restart
2014.02.18 08:33:15.413 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: restart
2014.02.18 08:33:15.440 1: Perfmon: possible freeze starting at 08:33:12, delay is 3.439
2014.02.18 08:33:15.957 1: ----- NOTIFY ----- TCControler.SZ state:send_disabled msgReduce:5 msgCtr:1
2014.02.18 08:33:16.042 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.18 08:33:16.426 1: VD-test B2B2B201 c:184 t:1392707694451 x:154000
2014.02.18 08:33:16.429 1: VD-test B2B2B201 c:185 t:1392707833951 x:139500
2014.02.18 08:33:16.431 1: VD-test B2B2B201 c:186 t:1392707959201 x:125250
2014.02.18 08:33:16.432 1: VD-test B2B2B201 c:187 t:1392708133951 x:174750
2014.02.18 08:33:16.435 1: VD-test B2B2B201 c:188 t:1392708294201 x:160250
2014.02.18 08:33:16.436 1: VD-test B2B2B201 c:189 t:1392708440201 x:146000
2014.02.18 08:33:16.438 1: VD-test B2B2B201 c:190 t:1392708571701 x:131500
2014.02.18 08:33:16.440 1: VD-test B2B2B201 c:191 t:1392708752701 x:181000
2014.02.18 08:33:16.442 1: VD-test B2B2B201 c:192 t:1392708919451 x:166750
2014.02.18 08:33:16.481 1: VD-test B4B4B401 c:189 t:1392707727250 x:146000
2014.02.18 08:33:16.483 1: VD-test B4B4B401 c:190 t:1392707858750 x:131500
2014.02.18 08:33:16.485 1: VD-test B4B4B401 c:191 t:1392708039750 x:181000
2014.02.18 08:33:16.487 1: VD-test B4B4B401 c:192 t:1392708206500 x:166750
2014.02.18 08:33:16.488 1: VD-test B4B4B401 c:193 t:1392708358750 x:152250
2014.02.18 08:33:16.490 1: VD-test B4B4B401 c:194 t:1392708496500 x:137750
2014.02.18 08:33:16.492 1: VD-test B4B4B401 c:195 t:1392708619750 x:123250
2014.02.18 08:33:16.495 1: VD-test B4B4B401 c:196 t:1392708792750 x:173000
2014.02.18 08:33:16.496 1: VD-test B4B4B401 c:197 t:1392708951250 x:158500
2014.02.18 08:33:16.535 1: VD-test B1B1B101 c:188 t:1392707791485 x:160250
2014.02.18 08:33:16.536 1: VD-test B1B1B101 c:189 t:1392707937485 x:146000
2014.02.18 08:33:16.538 1: VD-test B1B1B101 c:190 t:1392708068985 x:131500
2014.02.18 08:33:16.540 1: VD-test B1B1B101 c:191 t:1392708249985 x:181000
2014.02.18 08:33:16.542 1: VD-test B1B1B101 c:192 t:1392708416735 x:166750
2014.02.18 08:33:16.544 1: VD-test B1B1B101 c:193 t:1392708568985 x:152250
2014.02.18 08:33:16.546 1: VD-test B1B1B101 c:194 t:1392708706735 x:137750
2014.02.18 08:33:16.548 1: VD-test B1B1B101 c:195 t:1392708829985 x:123250
2014.02.18 08:33:16.588 1: VD-test B3B3B301 c:224 t:1392707793587 x:153000
2014.02.18 08:33:16.590 1: VD-test B3B3B301 c:225 t:1392707932337 x:138750
2014.02.18 08:33:16.593 1: VD-test B3B3B301 c:226 t:1392708056587 x:124250
2014.02.18 08:33:16.595 1: VD-test B3B3B301 c:227 t:1392708230337 x:173750
2014.02.18 08:33:16.597 1: VD-test B3B3B301 c:228 t:1392708389837 x:159500
2014.02.18 08:33:16.599 1: VD-test B3B3B301 c:229 t:1392708534837 x:145000
2014.02.18 08:33:16.601 1: VD-test B3B3B301 c:230 t:1392708665337 x:130500
2014.02.18 08:33:16.603 1: VD-test B3B3B301 c:231 t:1392708845337 x:180000
2014.02.18 08:33:16.643 1: VD-test B5B5B501 c:36 t:1392707821102 x:176750
2014.02.18 08:33:16.645 1: VD-test B5B5B501 c:37 t:1392707983352 x:162250
2014.02.18 08:33:16.647 1: VD-test B5B5B501 c:38 t:1392708131102 x:147750
2014.02.18 08:33:16.650 1: VD-test B5B5B501 c:39 t:1392708264602 x:133500
2014.02.18 08:33:16.651 1: VD-test B5B5B501 c:40 t:1392708447602 x:183000
2014.02.18 08:33:16.653 1: VD-test B5B5B501 c:41 t:1392708616102 x:168500
2014.02.18 08:33:16.655 1: VD-test B5B5B501 c:42 t:1392708770352 x:154250
2014.02.18 08:33:16.657 1: VD-test B5B5B501 c:43 t:1392708910102 x:139750
2014.02.18 08:33:16.819 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.18 08:33:16.830 1: VD-test B2B2B201 c:193 t:1392707713201 x:172750
2014.02.18 08:33:16.832 1: VD-test B2B2B201 c:194 t:1392707871451 x:158250
2014.02.18 08:33:16.834 1: VD-test B2B2B201 c:195 t:1392708015201 x:143750
2014.02.18 08:33:16.835 1: VD-test B2B2B201 c:196 t:1392708144701 x:129500
2014.02.18 08:33:16.837 1: VD-test B2B2B201 c:197 t:1392708323701 x:179000
2014.02.18 08:33:16.839 1: VD-test B2B2B201 c:198 t:1392708488201 x:164500
2014.02.18 08:33:16.840 1: VD-test B2B2B201 c:199 t:1392708638201 x:150000
2014.02.18 08:33:16.842 1: VD-test B2B2B201 c:200 t:1392708773951 x:135750
2014.02.18 08:33:16.843 1: VD-test B2B2B201 c:201 t:1392708895201 x:121250
2014.02.18 08:33:17.123 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.18 08:33:17.134 1: VD-test B3B3B301 c:232 t:1392707809587 x:169000
2014.02.18 08:33:17.135 1: VD-test B3B3B301 c:233 t:1392707964087 x:154500
2014.02.18 08:33:17.137 1: VD-test B3B3B301 c:234 t:1392708104337 x:140250
2014.02.18 08:33:17.139 1: VD-test B3B3B301 c:235 t:1392708230087 x:125750
2014.02.18 08:33:17.140 1: VD-test B3B3B301 c:236 t:1392708405337 x:175250
2014.02.18 08:33:17.142 1: VD-test B3B3B301 c:237 t:1392708566337 x:161000
2014.02.18 08:33:17.144 1: VD-test B3B3B301 c:238 t:1392708712837 x:146500
2014.02.18 08:33:17.145 1: VD-test B3B3B301 c:239 t:1392708844837 x:132000
2014.02.18 08:33:17.468 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.18 08:33:17.481 1: VD-test B4B4B401 c:198 t:1392707711500 x:130250
2014.02.18 08:33:17.483 1: VD-test B4B4B401 c:199 t:1392707891250 x:179750
2014.02.18 08:33:17.484 1: VD-test B4B4B401 c:200 t:1392708056750 x:165500
2014.02.18 08:33:17.486 1: VD-test B4B4B401 c:201 t:1392708207750 x:151000
2014.02.18 08:33:17.488 1: VD-test B4B4B401 c:202 t:1392708344250 x:136500
2014.02.18 08:33:17.489 1: VD-test B4B4B401 c:203 t:1392708466500 x:122250
2014.02.18 08:33:17.491 1: VD-test B4B4B401 c:204 t:1392708638250 x:171750
2014.02.18 08:33:17.492 1: VD-test B4B4B401 c:205 t:1392708795500 x:157250
2014.02.18 08:33:17.494 1: VD-test B4B4B401 c:206 t:1392708938250 x:142750
2014.02.18 08:33:17.811 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.18 08:33:17.823 1: VD-test B5B5B501 c:44 t:1392707802602 x:158250
2014.02.18 08:33:17.824 1: VD-test B5B5B501 c:45 t:1392707946602 x:144000
2014.02.18 08:33:17.826 1: VD-test B5B5B501 c:46 t:1392708076102 x:129500
2014.02.18 08:33:17.828 1: VD-test B5B5B501 c:47 t:1392708255102 x:179000
2014.02.18 08:33:17.829 1: VD-test B5B5B501 c:48 t:1392708419602 x:164500
2014.02.18 08:33:17.831 1: VD-test B5B5B501 c:49 t:1392708569852 x:150250
2014.02.18 08:33:17.832 1: VD-test B5B5B501 c:50 t:1392708705602 x:135750
2014.02.18 08:33:17.834 1: VD-test B5B5B501 c:51 t:1392708826852 x:121250
2014.02.18 08:33:17.992 1: Perfmon: possible freeze starting at 08:33:16, delay is 1.991
2014.02.18 08:33:19.344 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.18 08:33:19.347 0: HMLAN_Send:  HMLAN1 S:S43E9CCB0 stat:  00 t:00000000 d:01 r:43E9CCB0 m:33 A258 B5B5B5 1C4E25 0300
2014.02.18 08:33:19.633 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.18 08:33:19.636 0: HMLAN_Send:  HMLAN1 S:S43E9CDD3 stat:  00 t:00000000 d:01 r:43E9CDD3 m:EF A258 B3B3B3 193A9A 034C
2014.02.18 08:33:19.899 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.18 08:33:19.901 0: HMLAN_Send:  HMLAN1 S:S43E9CEDE stat:  00 t:00000000 d:01 r:43E9CEDE m:C9 A258 B2B2B2 1DFC2F 030A
2014.02.18 08:33:19.956 0: HMLAN_Parse: HMLAN1 R:R43E9CCB0 stat:0008 t:00000000 d:FF r:7FFF     m:33 A258 B5B5B5 1C4E25 0300
2014.02.18 08:33:19.958 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.18 08:33:20.164 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.18 08:33:20.167 0: HMLAN_Send:  HMLAN1 S:S43E9CFE6 stat:  00 t:00000000 d:01 r:43E9CFE6 m:CE A258 B4B4B4 1CE9F5 0300
2014.02.18 08:33:20.251 0: HMLAN_Parse: HMLAN1 R:R43E9CDD3 stat:0008 t:00000000 d:FF r:7FFF     m:EF A258 B3B3B3 193A9A 034C
2014.02.18 08:33:20.254 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.18 08:33:20.510 0: HMLAN_Parse: HMLAN1 R:R43E9CEDE stat:0008 t:00000000 d:FF r:7FFF     m:C9 A258 B2B2B2 1DFC2F 030A
2014.02.18 08:33:20.512 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:33:20.775 0: HMLAN_Parse: HMLAN1 R:R43E9CFE6 stat:0008 t:00000000 d:FF r:7FFF     m:CE A258 B4B4B4 1CE9F5 0300
2014.02.18 08:33:20.907 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.18 08:33:25.283 1: ----- NOTIFY ----- TCControler.WZ state:send_disabled msgReduce:5 msgCtr:2
2014.02.18 08:33:25.838 1: ----- NOTIFY ----- TCControler.Kueche state:send_disabled msgReduce:5 msgCtr:1
2014.02.18 08:33:26.899 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.18 08:33:27.639 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.18 08:33:27.715 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.18 08:33:27.892 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.18 08:33:34.431 1: ----- NOTIFY ----- TCControler.Bad state:send_disabled msgReduce:5 msgCtr:1
2014.02.18 08:33:46.862 1: VD-test B5B5B501 c:52 t:1392708997852 x:171000
2014.02.18 08:33:46.870 0: HMLAN_Send:  HMLAN1 S:S43EA3838 stat:  00 t:00000000 d:01 r:43EA3838 m:34 A258 B5B5B5 1C4E25 0300
2014.02.18 08:33:47.478 0: HMLAN_Parse: HMLAN1 R:R43EA3838 stat:0008 t:00000000 d:FF r:7FFF     m:34 A258 B5B5B5 1C4E25 0300
2014.02.18 08:33:47.480 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.18 08:33:56.932 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.18 08:34:04.846 1: VD-test B3B3B301 c:240 t:1392709026337 x:181500
2014.02.18 08:34:04.855 0: HMLAN_Send:  HMLAN1 S:S43EA7E79 stat:  00 t:00000000 d:01 r:43EA7E79 m:F0 A258 B3B3B3 193A9A 034C
2014.02.18 08:34:05.462 0: HMLAN_Parse: HMLAN1 R:R43EA7E79 stat:0008 t:00000000 d:FF r:7FFF     m:F0 A258 B3B3B3 193A9A 034C
2014.02.18 08:34:05.465 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.18 08:34:10.054 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.18 08:34:10.066 1: VD-test B1B1B101 c:196 t:1392707777735 x:146500
2014.02.18 08:34:10.067 1: VD-test B1B1B101 c:197 t:1392707909735 x:132000
2014.02.18 08:34:10.069 1: VD-test B1B1B101 c:198 t:1392708091485 x:181750
2014.02.18 08:34:10.070 1: VD-test B1B1B101 c:199 t:1392708258735 x:167250
2014.02.18 08:34:10.072 1: VD-test B1B1B101 c:200 t:1392708411485 x:152750
2014.02.18 08:34:10.074 1: VD-test B1B1B101 c:201 t:1392708549985 x:138500
2014.02.18 08:34:10.076 1: VD-test B1B1B101 c:202 t:1392708673985 x:124000
2014.02.18 08:34:10.078 1: VD-test B1B1B101 c:203 t:1392708847485 x:173500
2014.02.18 08:34:10.079 1: VD-test B1B1B101 c:204 t:1392709006735 x:159250
2014.02.18 08:34:10.089 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.18 08:34:10.092 0: HMLAN_Send:  HMLAN1 S:S43EA92EB stat:  00 t:00000000 d:01 r:43EA92EB m:CC A258 B1B1B1 1BFC52 03FD
2014.02.18 08:34:11.343 0: HMLAN_Parse: HMLAN1 R:R43EA92EB stat:0008 t:00000000 d:FF r:7FFF     m:CC A258 B1B1B1 1BFC52 03FD
2014.02.18 08:34:11.348 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.18 08:34:11.366 1: Perfmon: possible freeze starting at 08:34:10, delay is 1.362
2014.02.18 08:34:14.916 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.18 08:34:20.136 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.18 08:34:49.613 1: ----- NOTIFY ----- TCControler.SZ state:send_disabled msgReduce:5 msgCtr:2
2014.02.18 08:34:55.211 1: VD-test B2B2B201 c:202 t:1392709065951 x:170750
2014.02.18 08:34:55.219 0: HMLAN_Send:  HMLAN1 S:S43EB4334 stat:  00 t:00000000 d:01 r:43EB4334 m:CA A258 B2B2B2 1DFC2F 030A
2014.02.18 08:34:55.826 0: HMLAN_Parse: HMLAN1 R:R43EB4334 stat:0008 t:00000000 d:FF r:7FFF     m:CA A258 B2B2B2 1DFC2F 030A
2014.02.18 08:34:55.829 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:35:05.279 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.18 08:35:38.260 1: VD-test B4B4B401 c:207 t:1392709066750 x:128500
2014.02.18 08:35:38.268 0: HMLAN_Send:  HMLAN1 S:S43EBEB5E stat:  00 t:00000000 d:01 r:43EBEB5E m:CF A258 B4B4B4 1CE9F5 0300
2014.02.18 08:35:38.611 1: ----- NOTIFY ----- TCControler.Bad state:send_disabled msgReduce:5 msgCtr:2
2014.02.18 08:35:39.220 1: ----- NOTIFY ----- TCControler.WZ state:send_disabled msgReduce:5 msgCtr:3
2014.02.18 08:35:39.364 0: HMLAN_Parse: HMLAN1 R:R43EBEB5E stat:0008 t:00000000 d:FF r:7FFF     m:CF A258 B4B4B4 1CE9F5 0300
2014.02.18 08:35:39.367 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.18 08:35:48.330 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.18 08:35:51.192 1: ----- NOTIFY ----- TCControler.Kueche state:send_disabled msgReduce:5 msgCtr:2
2014.02.18 08:36:00.033 1: Including fhem.cfg
2014.02.18 08:36:01.713 1: telnetPort: Can't open server port at 7072: Address already in use. Exiting.
2014.02.18 08:36:22.909 1: Perfmon: possible freeze starting at 08:36:21, delay is 1.908
2014.02.18 08:36:37.863 1: VD-test B5B5B501 c:53 t:1392709154352 x:156500
2014.02.18 08:36:37.872 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.18 08:36:37.874 0: HMLAN_Send:  HMLAN1 S:S43ECD432 stat:  00 t:00000000 d:01 r:43ECD432 m:35 A258 B5B5B5 1C4E25 0000
2014.02.18 08:36:38.481 0: HMLAN_Parse: HMLAN1 R:R43ECD432 stat:0008 t:00000000 d:FF r:7FFF     m:35 A258 B5B5B5 1C4E25 0000
2014.02.18 08:36:38.484 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.18 08:36:46.748 1: VD-test B1B1B101 c:205 t:1392709151485 x:144750
2014.02.18 08:36:46.806 0: HMLAN_Send:  HMLAN1 S:S43ECF716 stat:  00 t:00000000 d:01 r:43ECF716 m:CD A258 B1B1B1 1BFC52 03FD
2014.02.18 08:36:47.415 0: HMLAN_Parse: HMLAN1 R:R43ECF716 stat:0008 t:00000000 d:FF r:7FFF     m:CD A258 B1B1B1 1BFC52 03FD
2014.02.18 08:36:47.418 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.18 08:36:48.234 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_3
2014.02.18 08:36:57.007 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.18 08:37:06.347 1: VD-test B3B3B301 c:241 t:1392709193587 x:167250
2014.02.18 08:37:06.356 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.18 08:37:06.359 0: HMLAN_Send:  HMLAN1 S:S43ED4376 stat:  00 t:00000000 d:01 r:43ED4376 m:F1 A258 B3B3B3 193A9A 004C
2014.02.18 08:37:06.967 0: HMLAN_Parse: HMLAN1 R:R43ED4376 stat:0008 t:00000000 d:FF r:7FFF     m:F1 A258 B3B3B3 193A9A 004C
2014.02.18 08:37:06.970 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.18 08:37:16.418 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.18 08:37:45.962 1: VD-test B2B2B201 c:203 t:1392709222451 x:156500
2014.02.18 08:37:45.970 0: HMLAN_Send:  HMLAN1 S:S43EDDE34 stat:  00 t:00000000 d:01 r:43EDDE34 m:CB A258 B2B2B2 1DFC2F 0311
2014.02.18 08:37:46.576 0: HMLAN_Parse: HMLAN1 R:R43EDDE34 stat:0008 t:00000000 d:FF r:7FFF     m:CB A258 B2B2B2 1DFC2F 0311
2014.02.18 08:37:46.579 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:37:46.760 1: VD-test B4B4B401 c:208 t:1392709244750 x:178000
2014.02.18 08:37:46.768 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.18 08:37:46.770 0: HMLAN_Send:  HMLAN1 S:S43EDE152 stat:  00 t:00000000 d:01 r:43EDE152 m:D0 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:37:47.377 0: HMLAN_Parse: HMLAN1 R:R43EDE152 stat:0008 t:00000000 d:FF r:7FFF     m:D0 A258 B4B4B4 1CE9F5 0000
2014.02.18 08:37:47.380 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.18 08:37:50.761 1: ----- NOTIFY ----- TCControler.SZ state:send_disabled msgReduce:5 msgCtr:3
2014.02.18 08:37:56.033 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.18 08:37:56.831 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.18 08:38:00.874 1: Perfmon: possible freeze starting at 08:37:59, delay is 1.872
2014.02.18 08:38:01.795 1: ----- NOTIFY ----- TCControler.Kueche state:send_disabled msgReduce:5 msgCtr:3
2014.02.18 08:38:32.350 1: ----- NOTIFY ----- TCControler.Bad state:send_disabled msgReduce:5 msgCtr:3
2014.02.18 08:38:42.275 1: ----- NOTIFY ----- TCControler.WZ state:send_disabled msgReduce:5 msgCtr:4
2014.02.18 08:39:11.499 1: VD-test B1B1B101 c:206 t:1392709281735 x:130250
2014.02.18 08:39:11.510 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.18 08:39:11.515 0: HMLAN_Send:  HMLAN1 S:S43EF2C58 stat:  00 t:00000000 d:01 r:43EF2C58 m:CE A258 B1B1B1 1BFC52 00FD
2014.02.18 08:39:12.123 0: HMLAN_Parse: HMLAN1 R:R43EF2C58 stat:0008 t:00000000 d:FF r:7FFF     m:CE A258 B1B1B1 1BFC52 00FD
2014.02.18 08:39:12.126 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.18 08:39:14.362 1: VD-test B5B5B501 c:54 t:1392709296352 x:142000
2014.02.18 08:39:14.370 0: HMLAN_Send:  HMLAN1 S:S43EF3784 stat:  00 t:00000000 d:01 r:43EF3784 m:36 A258 B5B5B5 1C4E25 0000
2014.02.18 08:39:14.978 0: HMLAN_Parse: HMLAN1 R:R43EF3784 stat:0008 t:00000000 d:FF r:7FFF     m:36 A258 B5B5B5 1C4E25 0000
2014.02.18 08:39:14.981 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.18 08:39:21.600 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.18 08:39:24.434 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4
2014.02.18 08:39:53.597 1: VD-test B3B3B301 c:242 t:1392709346337 x:152750
2014.02.18 08:39:53.605 0: HMLAN_Send:  HMLAN1 S:S43EFD0C8 stat:  00 t:00000000 d:01 r:43EFD0C8 m:F2 A258 B3B3B3 193A9A 004C
2014.02.18 08:39:54.212 0: HMLAN_Parse: HMLAN1 R:R43EFD0C8 stat:0008 t:00000000 d:FF r:7FFF     m:F2 A258 B3B3B3 193A9A 004C
2014.02.18 08:39:54.214 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.18 08:40:03.669 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_4
2014.02.18 08:40:22.466 1: VD-test B2B2B201 c:204 t:1392709364451 x:142000
2014.02.18 08:40:22.478 0: HMLAN_Send:  HMLAN1 S:S43F04190 stat:  00 t:00000000 d:01 r:43F04190 m:CC A258 B2B2B2 1DFC2F 031C
2014.02.18 08:40:23.088 0: HMLAN_Parse: HMLAN1 R:R43F04190 stat:0008 t:00000000 d:FF r:7FFF     m:CC A258 B2B2B2 1DFC2F 031C
2014.02.18 08:40:23.091 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.18 08:40:32.568 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_4


gruss frank


Titel: Antw:TC emulieren
Beitrag von: martinp876 am 18 Februar 2014, 11:39:09
Hi Frank,

Zitatweil unterschiedliche versionen von 10culhm
du machst mich fertig. Da ist es verdammt schwer zu folgen.

Zitatubernahme aus statefile wohl ok.
na das war doch das erste Problem von gestern - also doch ja

Zitataber keine rettung.
das ist dann das 2. Problem  - eins nachdem anderen

Zitatdie do-schleife wird 2 mal durchlaufen!!!
das war gestern schon so - war aber 2.rangig, da erst sein statefile-problem geloeset werden musste.

Der Hinweis ist sicher wichtig - und passiert bei fast allen.
Zu beachten ist, dass
- der Aufruf 54 sekunden auseinander liegt - eine Zeit, die so nicht vorkommt
- der msgCnt weiter gezaehlt wird
- der .next noch vom alten wert gelesen wird
=> und hier liegt das Problem: next und msgCnt sind nicht synchron

Das bringt mich zu meiner urspruenglichen implementierung zurueck (die du geaendert haben wolltest...) in der
$hashVd->{next} in CUL_HM_valvePosUpdt(@) erst einmal auf $hashVd->{nextF} gesetzt wird. In CUL_HM_valvePosTmr(@) wird es dann auf $hashVd->{nextF} korrigiert wird, so wir ein ack erhalten.

Gruss Martin

Titel: Antw:TC emulieren
Beitrag von: frank am 18 Februar 2014, 17:06:16
hallo martin,

ZitatDas bringt mich zu meiner urspruenglichen implementierung zurueck (die du geaendert haben wolltest...)

ich hätte es nur gerne wieder so gehabt, wie es vorher schon einmal gewesen war.  ;)

in v4973 macht glaube ich auch der umstand probleme, dass CUL_HM_valvePosUpdt nach restart sowohl von culhmconfig als auch von culhmset aufgerufen werden. da gibt es dann wohl konkurenz.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Februar 2014, 12:08:24
hallo martin,

sollten die grösseren umbaumassnahmen in v4989 mit einer geplanten verbesserung der rettung der vd nach restart in zusammenhang stehen, müssen dich meine vd leider enttäuschen.

2014.02.19 11:20:21.244 0: HMLAN_Send:  HMLAN1 S:S49A914BE stat:  00 t:00000000 d:01 r:49A914BE m:67 A258 B2B2B2 1DFC2F 0302
2014.02.19 11:20:21.432 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:0CBAFDD2 d:FF r:FFC9     m:67 8202 1DFC2F B2B2B2 0101000034
2014.02.19 11:20:21.810 0: HMLAN_Parse: HMLAN1 R:R49A914BE stat:0008 t:00000000 d:FF r:7FFF     m:67 A258 B2B2B2 1DFC2F 0302
2014.02.19 11:20:21.814 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 11:21:36.182 0: HMLAN_Send:  HMLAN1 S:S49AA3978 stat:  00 t:00000000 d:01 r:49AA3978 m:75 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:21:36.369 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:0CBC2298 d:FF r:FFB7     m:75 8202 1BFC52 B1B1B1 0101C60047
2014.02.19 11:21:36.749 0: HMLAN_Parse: HMLAN1 R:R49AA3978 stat:0008 t:00000000 d:FF r:7FFF     m:75 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:21:36.752 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 11:21:42.246 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.19 11:21:42.250 0: HMLAN_Send:  HMLAN1 S:S49AA5128 stat:  00 t:00000000 d:01 r:49AA5128 m:97 A258 B3B3B3 193A9A 0040
2014.02.19 11:21:42.435 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0CBC3A4C d:FF r:FFB6     m:97 8202 193A9A B3B3B3 0101320048
2014.02.19 11:21:42.816 0: HMLAN_Parse: HMLAN1 R:R49AA5128 stat:0008 t:00000000 d:FF r:7FFF     m:97 A258 B3B3B3 193A9A 0040
2014.02.19 11:21:42.819 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 11:22:31.368 0: HMLAN_Send:  HMLAN1 S:S49AB110A stat:  00 t:00000000 d:01 r:49AB110A m:53 A258 B4B4B4 1CE9F5 03AE
2014.02.19 11:22:31.553 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:0CBCFA2F d:FF r:FFBC     m:53 8202 1CE9F5 B4B4B4 0101902045
2014.02.19 11:22:31.933 0: HMLAN_Parse: HMLAN1 R:R49AB110A stat:0008 t:00000000 d:FF r:7FFF     m:53 A258 B4B4B4 1CE9F5 03AE
2014.02.19 11:22:31.939 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 11:22:39.016 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.19 11:22:39.020 0: HMLAN_Send:  HMLAN1 S:S49AB2EEA stat:  00 t:00000000 d:01 r:49AB2EEA m:E8 A258 B5B5B5 1C4E25 0000
2014.02.19 11:22:39.202 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0CBD1812 d:FF r:FFB2     m:E8 8202 1C4E25 B5B5B5 010100004D
2014.02.19 11:22:39.585 0: HMLAN_Parse: HMLAN1 R:R49AB2EEA stat:0008 t:00000000 d:FF r:7FFF     m:E8 A258 B5B5B5 1C4E25 0000
2014.02.19 11:22:39.590 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:24:36.375 0: HMLAN_Send:  HMLAN1 S:S49ACF959 stat:  00 t:00000000 d:01 r:49ACF959 m:54 A258 B4B4B4 1CE9F5 03B0
2014.02.19 11:24:36.560 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:0CBEE28F d:FF r:FFBC     m:54 8202 1CE9F5 B4B4B4 0101881045
2014.02.19 11:24:36.940 0: HMLAN_Parse: HMLAN1 R:R49ACF959 stat:0008 t:00000000 d:FF r:7FFF     m:54 A258 B4B4B4 1CE9F5 03B0
2014.02.19 11:24:36.943 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5


2014.02.19 11:24:43.916 0: Server shutdown
2014.02.19 11:24:48.277 1: Including fhem.cfg
2014.02.19 11:24:53.674 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.19 11:24:53.732 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.19 11:25:04.604 1: Including ./log/fhem.save
2014.02.19 11:25:06.705 1: HCS BROETJE monitoring of devices started
2014.02.19 11:25:08.430 0: Server started with 298 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 6603)
2014.02.19 11:25:09.225 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.19 11:25:11.399 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: restart
2014.02.19 11:25:11.571 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.19 11:25:11.735 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: restart
2014.02.19 11:25:11.968 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: restart
2014.02.19 11:25:12.233 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: restart
2014.02.19 11:25:15.192 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.19 11:25:15.222 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 11:25:15.226 0: HMLAN_Send:  HMLAN1 S:S49AD9118 stat:  00 t:00000000 d:01 r:49AD9118 m:68 A258 B2B2B2 1DFC2F 030A
2014.02.19 11:25:15.539 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.19 11:25:15.558 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.19 11:25:15.561 0: HMLAN_Send:  HMLAN1 S:S49AD9268 stat:  00 t:00000000 d:01 r:49AD9268 m:98 A258 B3B3B3 193A9A 0347
2014.02.19 11:25:15.898 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.19 11:25:15.918 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.19 11:25:15.921 0: HMLAN_Send:  HMLAN1 S:S49AD93D1 stat:  00 t:00000000 d:01 r:49AD93D1 m:54 A258 B4B4B4 1CE9F5 03B0
2014.02.19 11:25:16.230 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.19 11:25:16.250 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.19 11:25:16.253 0: HMLAN_Send:  HMLAN1 S:S49AD951C stat:  00 t:00000000 d:01 r:49AD951C m:E8 A258 B5B5B5 1C4E25 0300
2014.02.19 11:25:17.081 0: HMLAN_Parse: HMLAN1 R:R49AD9118 stat:0008 t:00000000 d:FF r:7FFF     m:68 A258 B2B2B2 1DFC2F 030A
2014.02.19 11:25:17.084 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 11:25:17.088 0: HMLAN_Parse: HMLAN1 R:R49AD9268 stat:0008 t:00000000 d:FF r:7FFF     m:98 A258 B3B3B3 193A9A 0347
2014.02.19 11:25:17.090 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 11:25:17.093 0: HMLAN_Parse: HMLAN1 R:R49AD93D1 stat:0008 t:00000000 d:FF r:7FFF     m:54 A258 B4B4B4 1CE9F5 03B0
2014.02.19 11:25:17.096 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 11:25:17.098 0: HMLAN_Parse: HMLAN1 R:R49AD951C stat:0008 t:00000000 d:FF r:7FFF     m:E8 A258 B5B5B5 1C4E25 0300
2014.02.19 11:25:17.101 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:25:25.282 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.19 11:25:26.872 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.19 11:25:26.944 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.19 11:25:27.016 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.19 11:25:27.055 0: HMLAN_Send:  HMLAN1 S:S49ADBF51 stat:  00 t:00000000 d:01 r:49ADBF51 m:E9 A258 B5B5B5 1C4E25 0300
2014.02.19 11:25:27.779 0: HMLAN_Parse: HMLAN1 R:R49ADBF51 stat:0008 t:00000000 d:FF r:7FFF     m:E9 A258 B5B5B5 1C4E25 0300
2014.02.19 11:25:27.781 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:25:37.118 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.19 11:25:47.504 0: HMLAN_Send:  HMLAN1 S:S49AE0F31 stat:  00 t:00000000 d:01 r:49AE0F31 m:69 A258 B2B2B2 1DFC2F 030A
2014.02.19 11:25:48.112 0: HMLAN_Parse: HMLAN1 R:R49AE0F31 stat:0008 t:00000000 d:FF r:7FFF     m:69 A258 B2B2B2 1DFC2F 030A
2014.02.19 11:25:48.115 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 11:25:57.566 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.19 11:26:08.682 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.19 11:26:08.721 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.19 11:26:08.723 0: HMLAN_Send:  HMLAN1 S:S49AE6213 stat:  00 t:00000000 d:01 r:49AE6213 m:76 A258 B1B1B1 1BFC52 03FD
2014.02.19 11:26:09.330 0: HMLAN_Parse: HMLAN1 R:R49AE6213 stat:0008 t:00000000 d:FF r:7FFF     m:76 A258 B1B1B1 1BFC52 03FD
2014.02.19 11:26:09.334 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 11:26:18.782 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.19 11:26:42.691 0: HMLAN_Send:  HMLAN1 S:S49AEE6C6 stat:  00 t:00000000 d:01 r:49AEE6C6 m:77 A258 B1B1B1 1BFC52 03FD
2014.02.19 11:26:43.515 0: HMLAN_Parse: HMLAN1 R:R49AEE6C6 stat:0008 t:00000000 d:FF r:7FFF     m:77 A258 B1B1B1 1BFC52 03FD
2014.02.19 11:26:43.518 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 11:26:52.753 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.19 11:26:54.478 0: HMLAN_Send:  HMLAN1 S:S49AF14D0 stat:  00 t:00000000 d:01 r:49AF14D0 m:55 A258 B4B4B4 1CE9F5 03A6
2014.02.19 11:26:55.086 0: HMLAN_Parse: HMLAN1 R:R49AF14D0 stat:0008 t:00000000 d:FF r:7FFF     m:55 A258 B4B4B4 1CE9F5 03A6
2014.02.19 11:26:55.090 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 11:27:04.540 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.19 11:27:25.016 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.19 11:27:25.019 0: HMLAN_Send:  HMLAN1 S:S49AF8C1A stat:  00 t:00000000 d:01 r:49AF8C1A m:E9 A258 B5B5B5 1C4E25 0000
2014.02.19 11:27:25.626 0: HMLAN_Parse: HMLAN1 R:R49AF8C1A stat:0008 t:00000000 d:FF r:7FFF     m:E9 A258 B5B5B5 1C4E25 0000
2014.02.19 11:27:25.628 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:27:31.755 0: HMLAN_Send:  HMLAN1 S:S49AFA66D stat:  00 t:00000000 d:01 r:49AFA66D m:99 A258 B3B3B3 193A9A 034F
2014.02.19 11:27:32.362 0: HMLAN_Parse: HMLAN1 R:R49AFA66D stat:0008 t:00000000 d:FF r:7FFF     m:99 A258 B3B3B3 193A9A 034F
2014.02.19 11:27:32.366 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 11:27:35.072 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_3
2014.02.19 11:27:35.120 0: HMLAN_Send:  HMLAN1 S:S49AFB392 stat:  00 t:00000000 d:01 r:49AFB392 m:EA A258 B5B5B5 1C4E25 0000
2014.02.19 11:27:35.727 0: HMLAN_Parse: HMLAN1 R:R49AFB392 stat:0008 t:00000000 d:FF r:7FFF     m:EA A258 B5B5B5 1C4E25 0000
2014.02.19 11:27:35.730 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:27:41.821 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.19 11:27:45.182 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4
2014.02.19 11:28:29.515 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 11:28:29.518 0: HMLAN_Send:  HMLAN1 S:S49B0880D stat:  00 t:00000000 d:01 r:49B0880D m:6A A258 B2B2B2 1DFC2F 000A
2014.02.19 11:28:30.128 0: HMLAN_Parse: HMLAN1 R:R49B0880D stat:0008 t:00000000 d:FF r:7FFF     m:6A A258 B2B2B2 1DFC2F 000A
2014.02.19 11:28:30.132 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 11:28:39.640 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.19 11:29:31.943 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.19 11:29:31.946 0: HMLAN_Send:  HMLAN1 S:S49B17BE8 stat:  00 t:00000000 d:01 r:49B17BE8 m:78 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:29:32.553 0: HMLAN_Parse: HMLAN1 R:R49B17BE8 stat:0008 t:00000000 d:FF r:7FFF     m:78 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:29:32.557 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 11:29:34.374 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.19 11:29:34.377 0: HMLAN_Send:  HMLAN1 S:S49B18568 stat:  00 t:00000000 d:01 r:49B18568 m:56 A258 B4B4B4 1CE9F5 00A6
2014.02.19 11:29:34.984 0: HMLAN_Parse: HMLAN1 R:R49B18568 stat:0008 t:00000000 d:FF r:7FFF     m:56 A258 B4B4B4 1CE9F5 00A6
2014.02.19 11:29:34.986 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 11:29:42.035 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.19 11:29:44.437 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.19 11:30:08.256 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.19 11:30:08.258 0: HMLAN_Send:  HMLAN1 S:S49B209C1 stat:  00 t:00000000 d:01 r:49B209C1 m:9A A258 B3B3B3 193A9A 004F
2014.02.19 11:30:08.870 0: HMLAN_Parse: HMLAN1 R:R49B209C1 stat:0008 t:00000000 d:FF r:7FFF     m:9A A258 B3B3B3 193A9A 004F
2014.02.19 11:30:08.873 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 11:30:14.980 0: HMLAN_Send:  HMLAN1 S:S49B22406 stat:  00 t:00000000 d:01 r:49B22406 m:EB A258 B5B5B5 1C4E25 0000
2014.02.19 11:30:15.650 0: HMLAN_Parse: HMLAN1 R:R49B22406 stat:0008 t:00000000 d:FF r:7FFF     m:EB A258 B5B5B5 1C4E25 0000
2014.02.19 11:30:15.653 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 11:30:18.319 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.19 11:30:25.043 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_5
2014.02.19 11:30:57.005 0: HMLAN_Send:  HMLAN1 S:S49B2C82F stat:  00 t:00000000 d:01 r:49B2C82F m:6B A258 B2B2B2 1DFC2F 000A
2014.02.19 11:30:57.612 0: HMLAN_Parse: HMLAN1 R:R49B2C82F stat:0008 t:00000000 d:FF r:7FFF     m:6B A258 B2B2B2 1DFC2F 000A
2014.02.19 11:30:57.616 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 11:31:07.070 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_4
2014.02.19 11:32:00.130 0: HMLAN_Send:  HMLAN1 S:S49B3BEC3 stat:  00 t:00000000 d:01 r:49B3BEC3 m:57 A258 B4B4B4 1CE9F5 00A6
2014.02.19 11:32:00.738 0: HMLAN_Parse: HMLAN1 R:R49B3BEC3 stat:0008 t:00000000 d:FF r:7FFF     m:57 A258 B4B4B4 1CE9F5 00A6
2014.02.19 11:32:00.741 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 11:32:06.691 0: HMLAN_Send:  HMLAN1 S:S49B3D865 stat:  00 t:00000000 d:01 r:49B3D865 m:79 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:32:07.298 0: HMLAN_Parse: HMLAN1 R:R49B3D865 stat:0008 t:00000000 d:FF r:7FFF     m:79 A258 B1B1B1 1BFC52 00FD
2014.02.19 11:32:07.301 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 11:32:10.224 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_4
2014.02.19 11:32:16.756 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_4


msgnummern und/oder eventzeitpunkte passen nicht. => alle vd verstorben.  :'(

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 19 Februar 2014, 12:42:15
Hallo Frank,

hm - hatte gestern bei mir funktioniert - hatte aber nur einen Versuch.
wie du sicher gesehen hast ist es der Zaehler. Nachdem eine message ausgelassen wurde muss die erste nach restart  um 2 hoeher sein, ist es aber nicht.
somit muss das "-1" raus.
    else{#successful - store sendtime and msgCnt that calculated it
      CUL_HM_UpdtReadBulk($hash,0,".next:".$hashVd->{nextL}
#                                 ,".msgCnt:".($hashVd->{msgCnt}-1));
                                 ,".msgCnt:".($hashVd->{msgCnt}));

ich kann es bestenfalls heute Abend testen. Falls du logs sendest waere der in der while schleife hilfreich.
Ein doppelter Aurfuf macht durch die While anstelle von until keine Probleme mehr.
nextL(astSend) sollte besser lesbar verarbeitet werden koennen.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 19 Februar 2014, 15:52:31
hallo martin,

anbei noch mal ein log mit zusätzlichen logeinträgen (ende while-schleife, einsprung restart, einsprung init).

2014.02.19 13:41:35.192 0: HMLAN_Send:  HMLAN1 S:S4A2A621A stat:  00 t:00000000 d:01 r:4A2A621A m:8A A258 B4B4B4 1CE9F5 03B3
2014.02.19 13:41:35.758 0: HMLAN_Parse: HMLAN1 R:R4A2A621A stat:0008 t:00000000 d:FF r:7FFF     m:8A A258 B4B4B4 1CE9F5 03B3
2014.02.19 13:41:35.761 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:41:35.766 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:0D3C5136 d:FF r:FFC3     m:8A 8202 1CE9F5 B4B4B4 010186103F
2014.02.19 13:41:49.173 0: HMLAN_Send:  HMLAN1 S:S4A2A98B8 stat:  00 t:00000000 d:01 r:4A2A98B8 m:CE A258 B3B3B3 193A9A 0042
2014.02.19 13:41:49.558 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:0D3C870D d:FF r:FFB4     m:CE 8202 193A9A B3B3B3 010134004A
2014.02.19 13:41:49.739 0: HMLAN_Parse: HMLAN1 R:R4A2A98B8 stat:0008 t:00000000 d:FF r:7FFF     m:CE A258 B3B3B3 193A9A 0042
2014.02.19 13:41:49.741 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 13:41:55.637 0: HMLAN_Send:  HMLAN1 S:S4A2AB1F7 stat:  00 t:00000000 d:01 r:4A2AB1F7 m:1F A258 B5B5B5 1C4E25 0000
2014.02.19 13:41:56.019 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:0D3CA04A d:FF r:FFB2     m:1F 8202 1C4E25 B5B5B5 010100004D
2014.02.19 13:41:56.199 0: HMLAN_Parse: HMLAN1 R:R4A2AB1F7 stat:0008 t:00000000 d:FF r:7FFF     m:1F A258 B5B5B5 1C4E25 0000
2014.02.19 13:41:56.203 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:43:54.070 0: HMLAN_Send:  HMLAN1 S:S4A2C8099 stat:  00 t:00000000 d:01 r:4A2C8099 m:AD A258 B1B1B1 1BFC52 00FD
2014.02.19 13:43:54.257 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:0D3E6E37 d:FF r:FFB6     m:AD 8202 1BFC52 B1B1B1 0101C60049
2014.02.19 13:43:54.636 0: HMLAN_Parse: HMLAN1 R:R4A2C8099 stat:0008 t:00000000 d:FF r:7FFF     m:AD A258 B1B1B1 1BFC52 00FD
2014.02.19 13:43:54.639 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:44:14.657 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 13:44:14.660 0: HMLAN_Send:  HMLAN1 S:S4A2CD103 stat:  00 t:00000000 d:01 r:4A2CD103 m:9F A258 B2B2B2 1DFC2F 0323
2014.02.19 13:44:15.044 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:0D3EBF6D d:FF r:FFC9     m:9F 8202 1DFC2F B2B2B2 0101161034
2014.02.19 13:44:15.243 0: HMLAN_Parse: HMLAN1 R:R4A2CD103 stat:0008 t:00000000 d:FF r:7FFF     m:9F A258 B2B2B2 1DFC2F 0323
2014.02.19 13:44:15.246 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F


2014.02.19 13:44:15.749 0: Server shutdown
2014.02.19 13:44:19.786 1: Including fhem.cfg
2014.02.19 13:44:24.098 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.19 13:44:24.151 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.19 13:44:35.428 1: Including ./log/fhem.save
2014.02.19 13:44:37.842 1: HCS BROETJE monitoring of devices started
2014.02.19 13:44:39.291 0: Server started with 298 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 7585)
2014.02.19 13:44:39.905 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.19 13:44:41.874 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: restart
2014.02.19 13:44:41.885 1: ##### restart ##### n:VentilControler.AZ.Nord_Btn1 c:30 t:1392813715631
2014.02.19 13:44:42.043 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.19 13:44:42.054 1: ##### restart ##### n:VentilControler.Bad_Btn1 c:205 t:1392813709167
2014.02.19 13:44:42.221 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: restart
2014.02.19 13:44:42.232 1: ##### restart ##### n:VentilControler.Kueche_Btn1 c:172 t:1392813834063
2014.02.19 13:44:42.388 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: restart
2014.02.19 13:44:42.400 1: ##### restart ##### n:VentilControler.SZ_Btn1 c:157 t:1392813689139
2014.02.19 13:44:42.561 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: restart
2014.02.19 13:44:42.571 1: ##### restart ##### n:VentilControler.WZ_Btn1 c:137 t:1392813695183
2014.02.19 13:44:46.616 1: VD-test B2B2B201 c:158 t:1392813834139 x:145000
2014.02.19 13:44:46.618 1: VD-test B2B2B201 c:159 t:1392813964639 x:130500
2014.02.19 13:44:46.658 1: VD-test B4B4B401 c:138 t:1392813872683 x:177500
2014.02.19 13:44:46.660 1: VD-test B4B4B401 c:139 t:1392814035683 x:163000
2014.02.19 13:44:46.700 1: VD-test B3B3B301 c:206 t:1392813865917 x:156750
2014.02.19 13:44:46.702 1: VD-test B3B3B301 c:207 t:1392814008167 x:142250
2014.02.19 13:44:46.742 1: VD-test B5B5B501 c:31 t:1392813836381 x:120750
2014.02.19 13:44:46.744 1: VD-test B5B5B501 c:32 t:1392814006631 x:170250
2014.02.19 13:44:46.785 1: VD-test B1B1B101 c:173 t:1392813954813 x:120750
2014.02.19 13:44:46.826 1: Perfmon: possible freeze starting at 13:44:40, delay is 6.825
2014.02.19 13:44:46.946 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.19 13:44:46.957 1: ##### init ##### n:VentilControler.SZ_Btn1 c:159 t:1392813964639
2014.02.19 13:44:46.968 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 13:44:46.971 0: HMLAN_Send:  HMLAN1 S:S4A2D4F3A stat:  00 t:00000000 d:01 r:4A2D4F3A m:9F A258 B2B2B2 1DFC2F 0323
2014.02.19 13:44:47.259 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.19 13:44:47.270 1: ##### init ##### n:VentilControler.Bad_Btn1 c:207 t:1392814008167
2014.02.19 13:44:47.281 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.19 13:44:47.283 0: HMLAN_Send:  HMLAN1 S:S4A2D5073 stat:  00 t:00000000 d:01 r:4A2D5073 m:CF A258 B3B3B3 193A9A 0338
2014.02.19 13:44:47.608 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.19 13:44:47.618 1: ##### init ##### n:VentilControler.WZ_Btn1 c:139 t:1392814035683
2014.02.19 13:44:47.629 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.19 13:44:47.631 0: HMLAN_Send:  HMLAN1 S:S4A2D51CF stat:  00 t:00000000 d:01 r:4A2D51CF m:8B A258 B4B4B4 1CE9F5 03B5
2014.02.19 13:44:47.941 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.19 13:44:47.952 1: ##### init ##### n:VentilControler.AZ.Nord_Btn1 c:32 t:1392814006631
2014.02.19 13:44:47.962 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.19 13:44:47.965 0: HMLAN_Send:  HMLAN1 S:S4A2D531C stat:  00 t:00000000 d:01 r:4A2D531C m:20 A258 B5B5B5 1C4E25 0300
2014.02.19 13:44:48.164 0: HMLAN_Parse: HMLAN1 R:R4A2D4F3A stat:0008 t:00000000 d:FF r:7FFF     m:9F A258 B2B2B2 1DFC2F 0323
2014.02.19 13:44:48.167 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 13:44:48.170 0: HMLAN_Parse: HMLAN1 R:R4A2D5073 stat:0008 t:00000000 d:FF r:7FFF     m:CF A258 B3B3B3 193A9A 0338
2014.02.19 13:44:48.173 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 13:44:48.188 1: Perfmon: possible freeze starting at 13:44:47, delay is 1.187
2014.02.19 13:44:48.262 0: HMLAN_Parse: HMLAN1 R:R4A2D51CF stat:0008 t:00000000 d:FF r:7FFF     m:8B A258 B4B4B4 1CE9F5 03B5
2014.02.19 13:44:48.265 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:44:48.572 0: HMLAN_Parse: HMLAN1 R:R4A2D531C stat:0008 t:00000000 d:FF r:7FFF     m:20 A258 B5B5B5 1C4E25 0300
2014.02.19 13:44:48.575 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:44:57.029 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.19 13:44:57.341 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.19 13:44:57.689 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.19 13:44:58.022 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.19 13:45:39.524 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.19 13:45:39.536 1: ##### init ##### n:VentilControler.Kueche_Btn1 c:173 t:1392813954813
2014.02.19 13:45:39.546 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.19 13:45:39.549 0: HMLAN_Send:  HMLAN1 S:S4A2E1C9C stat:  00 t:00000000 d:01 r:4A2E1C9C m:AD A258 B1B1B1 1BFC52 03FD
2014.02.19 13:45:41.088 0: HMLAN_Parse: HMLAN1 R:R4A2E1C9C stat:0008 t:00000000 d:FF r:7FFF     m:AD A258 B1B1B1 1BFC52 03FD
2014.02.19 13:45:41.093 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:45:41.124 1: Perfmon: possible freeze starting at 13:45:40, delay is 1.102
2014.02.19 13:45:49.609 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.19 13:45:54.823 1: VD-test B1B1B101 c:174 t:1392814098563 x:143750
2014.02.19 13:45:54.831 0: HMLAN_Send:  HMLAN1 S:S4A2E5852 stat:  00 t:00000000 d:01 r:4A2E5852 m:AE A258 B1B1B1 1BFC52 03FD
2014.02.19 13:45:55.440 0: HMLAN_Parse: HMLAN1 R:R4A2E5852 stat:0008 t:00000000 d:FF r:7FFF     m:AE A258 B1B1B1 1BFC52 03FD
2014.02.19 13:45:55.445 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:46:04.650 1: VD-test B2B2B201 c:160 t:1392814101139 x:136500
2014.02.19 13:46:04.658 0: HMLAN_Send:  HMLAN1 S:S4A2E7EB4 stat:  00 t:00000000 d:01 r:4A2E7EB4 m:A0 A258 B2B2B2 1DFC2F 0323
2014.02.19 13:46:04.894 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.19 13:46:05.267 0: HMLAN_Parse: HMLAN1 R:R4A2E7EB4 stat:0008 t:00000000 d:FF r:7FFF     m:A0 A258 B2B2B2 1DFC2F 0323
2014.02.19 13:46:05.271 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 13:46:15.574 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.19 13:46:46.640 1: VD-test B5B5B501 c:33 t:1392814131631 x:125000
2014.02.19 13:46:46.648 0: HMLAN_Send:  HMLAN1 S:S4A2F22BA stat:  00 t:00000000 d:01 r:4A2F22BA m:21 A258 B5B5B5 1C4E25 0300
2014.02.19 13:46:47.255 0: HMLAN_Parse: HMLAN1 R:R4A2F22BA stat:0008 t:00000000 d:FF r:7FFF     m:21 A258 B5B5B5 1C4E25 0300
2014.02.19 13:46:47.258 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:46:48.177 1: VD-test B3B3B301 c:208 t:1392814139417 x:131250
2014.02.19 13:46:48.185 0: HMLAN_Send:  HMLAN1 S:S4A2F28BB stat:  00 t:00000000 d:01 r:4A2F28BB m:D0 A258 B3B3B3 193A9A 0338
2014.02.19 13:46:48.793 0: HMLAN_Parse: HMLAN1 R:R4A2F28BB stat:0008 t:00000000 d:FF r:7FFF     m:D0 A258 B3B3B3 193A9A 0338
2014.02.19 13:46:48.796 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 13:46:56.710 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.19 13:46:58.245 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_2
2014.02.19 13:47:15.698 1: VD-test B4B4B401 c:140 t:1392814170433 x:134750
2014.02.19 13:47:15.710 0: HMLAN_Send:  HMLAN1 S:S4A2F943F stat:  00 t:00000000 d:01 r:4A2F943F m:8C A258 B4B4B4 1CE9F5 03B5
2014.02.19 13:47:16.317 0: HMLAN_Parse: HMLAN1 R:R4A2F943F stat:0008 t:00000000 d:FF r:7FFF     m:8C A258 B4B4B4 1CE9F5 03B5
2014.02.19 13:47:16.320 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:47:25.830 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.19 13:48:18.573 1: VD-test B1B1B101 c:175 t:1392814228063 x:129500
2014.02.19 13:48:18.581 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.19 13:48:18.583 0: HMLAN_Send:  HMLAN1 S:S4A3089D7 stat:  00 t:00000000 d:01 r:4A3089D7 m:AF A258 B1B1B1 1BFC52 00FD
2014.02.19 13:48:19.190 0: HMLAN_Parse: HMLAN1 R:R4A3089D7 stat:0008 t:00000000 d:FF r:7FFF     m:AF A258 B1B1B1 1BFC52 00FD
2014.02.19 13:48:19.192 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:48:21.148 1: VD-test B2B2B201 c:161 t:1392814223389 x:122250
2014.02.19 13:48:21.156 0: HMLAN_Send:  HMLAN1 S:S4A3093E6 stat:  00 t:00000000 d:01 r:4A3093E6 m:A1 A258 B2B2B2 1DFC2F 032E
2014.02.19 13:48:21.762 0: HMLAN_Parse: HMLAN1 R:R4A3093E6 stat:0008 t:00000000 d:FF r:7FFF     m:A1 A258 B2B2B2 1DFC2F 032E
2014.02.19 13:48:21.766 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 13:48:28.642 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.19 13:48:31.219 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.19 13:48:51.641 1: VD-test B5B5B501 c:34 t:1392814306131 x:174500
2014.02.19 13:48:51.649 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.19 13:48:51.651 0: HMLAN_Send:  HMLAN1 S:S4A310B03 stat:  00 t:00000000 d:01 r:4A310B03 m:22 A258 B5B5B5 1C4E25 0000
2014.02.19 13:48:52.258 0: HMLAN_Parse: HMLAN1 R:R4A310B03 stat:0008 t:00000000 d:FF r:7FFF     m:22 A258 B5B5B5 1C4E25 0000
2014.02.19 13:48:52.261 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:48:59.427 1: VD-test B3B3B301 c:209 t:1392814320167 x:180750
2014.02.19 13:48:59.435 0: HMLAN_Send:  HMLAN1 S:S4A31296D stat:  00 t:00000000 d:01 r:4A31296D m:D1 A258 B3B3B3 193A9A 0340
2014.02.19 13:49:00.324 0: HMLAN_Parse: HMLAN1 R:R4A31296D stat:0008 t:00000000 d:FF r:7FFF     m:D1 A258 B3B3B3 193A9A 0340
2014.02.19 13:49:00.327 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 13:49:01.711 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_3
2014.02.19 13:49:09.564 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_3
2014.02.19 13:49:30.444 1: VD-test B4B4B401 c:141 t:1392814290933 x:120500
2014.02.19 13:49:30.452 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.19 13:49:30.454 0: HMLAN_Send:  HMLAN1 S:S4A31A296 stat:  00 t:00000000 d:01 r:4A31A296 m:8D A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:49:31.062 0: HMLAN_Parse: HMLAN1 R:R4A31A296 stat:0008 t:00000000 d:FF r:7FFF     m:8D A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:49:31.066 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:49:40.580 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.19 13:50:23.404 1: VD-test B2B2B201 c:162 t:1392814395139 x:171750
2014.02.19 13:50:23.414 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 13:50:23.418 0: HMLAN_Send:  HMLAN1 S:S4A327178 stat:  00 t:00000000 d:01 r:4A327178 m:A2 A258 B2B2B2 1DFC2F 002E
2014.02.19 13:50:24.026 0: HMLAN_Parse: HMLAN1 R:R4A327178 stat:0008 t:00000000 d:FF r:7FFF     m:A2 A258 B2B2B2 1DFC2F 002E
2014.02.19 13:50:24.030 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 13:50:28.072 1: VD-test B1B1B101 c:176 t:1392814407063 x:179000
2014.02.19 13:50:28.080 0: HMLAN_Send:  HMLAN1 S:S4A3283B2 stat:  00 t:00000000 d:01 r:4A3283B2 m:B0 A258 B1B1B1 1BFC52 00FD
2014.02.19 13:50:28.686 0: HMLAN_Parse: HMLAN1 R:R4A3283B2 stat:0008 t:00000000 d:FF r:7FFF     m:B0 A258 B1B1B1 1BFC52 00FD
2014.02.19 13:50:28.690 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:50:33.521 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_4
2014.02.19 13:50:38.143 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_4
2014.02.19 13:51:30.943 1: VD-test B4B4B401 c:142 t:1392814460933 x:170000
2014.02.19 13:51:30.951 0: HMLAN_Send:  HMLAN1 S:S4A337949 stat:  00 t:00000000 d:01 r:4A337949 m:8E A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:51:31.558 0: HMLAN_Parse: HMLAN1 R:R4A337949 stat:0008 t:00000000 d:FF r:7FFF     m:8E A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:51:31.561 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:51:41.013 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_4
2014.02.19 13:51:46.140 1: VD-test B5B5B501 c:35 t:1392814466131 x:160000
2014.02.19 13:51:46.148 0: HMLAN_Send:  HMLAN1 S:S4A33B4A6 stat:  00 t:00000000 d:01 r:4A33B4A6 m:23 A258 B5B5B5 1C4E25 0000
2014.02.19 13:51:46.756 0: HMLAN_Parse: HMLAN1 R:R4A33B4A6 stat:0008 t:00000000 d:FF r:7FFF     m:23 A258 B5B5B5 1C4E25 0000
2014.02.19 13:51:46.759 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:51:56.209 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4
2014.02.19 13:52:00.177 1: VD-test B3B3B301 c:210 t:1392814486417 x:166250
2014.02.19 13:52:00.185 0: HMLAN_Send:  HMLAN1 S:S4A33EB7B stat:  00 t:00000000 d:01 r:4A33EB7B m:D2 A258 B3B3B3 193A9A 034A
2014.02.19 13:52:00.792 0: HMLAN_Parse: HMLAN1 R:R4A33EB7B stat:0008 t:00000000 d:FF r:7FFF     m:D2 A258 B3B3B3 193A9A 034A
2014.02.19 13:52:00.796 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.19 13:52:10.281 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_4
2014.02.19 13:53:15.154 1: VD-test B2B2B201 c:163 t:1392814552389 x:157250
2014.02.19 13:53:15.162 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.19 13:53:15.167 0: HMLAN_Send:  HMLAN1 S:S4A35105C stat:  00 t:00000000 d:01 r:4A35105C m:A3 A258 B2B2B2 1DFC2F 0323
2014.02.19 13:53:15.817 0: HMLAN_Parse: HMLAN1 R:R4A35105C stat:0008 t:00000000 d:FF r:7FFF     m:A3 A258 B2B2B2 1DFC2F 0323
2014.02.19 13:53:15.821 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.19 13:53:25.267 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_5
2014.02.19 13:53:27.073 1: VD-test B1B1B101 c:177 t:1392814571563 x:164500
2014.02.19 13:53:27.081 0: HMLAN_Send:  HMLAN1 S:S4A353EEB stat:  00 t:00000000 d:01 r:4A353EEB m:B1 A258 B1B1B1 1BFC52 00FD
2014.02.19 13:53:27.696 0: HMLAN_Parse: HMLAN1 R:R4A353EEB stat:0008 t:00000000 d:FF r:7FFF     m:B1 A258 B1B1B1 1BFC52 00FD
2014.02.19 13:53:27.699 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.19 13:53:37.142 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_5
2014.02.19 13:54:20.943 1: VD-test B4B4B401 c:143 t:1392814616433 x:155500
2014.02.19 13:54:20.952 0: HMLAN_Send:  HMLAN1 S:S4A36115A stat:  00 t:00000000 d:01 r:4A36115A m:8F A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:54:21.559 0: HMLAN_Parse: HMLAN1 R:R4A36115A stat:0008 t:00000000 d:FF r:7FFF     m:8F A258 B4B4B4 1CE9F5 00B5
2014.02.19 13:54:21.561 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.19 13:54:26.140 1: VD-test B5B5B501 c:36 t:1392814611881 x:145750
2014.02.19 13:54:26.148 0: HMLAN_Send:  HMLAN1 S:S4A3625A5 stat:  00 t:00000000 d:01 r:4A3625A5 m:24 A258 B5B5B5 1C4E25 0000
2014.02.19 13:54:26.755 0: HMLAN_Parse: HMLAN1 R:R4A3625A5 stat:0008 t:00000000 d:FF r:7FFF     m:24 A258 B5B5B5 1C4E25 0000
2014.02.19 13:54:26.758 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.19 13:54:31.014 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_5
2014.02.19 13:54:32.353 1: Perfmon: possible freeze starting at 13:54:31, delay is 1.352
2014.02.19 13:54:36.312 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_5


ich sehe mehrere probleme:
1. msgctr vor und nach restart.
2. das erste event aller vd wird quasi gleichzeitig rausgehauen. zeitpunkte können nicht stimmen.
3. die abstände zwischen 1. und 2. event können offensichtlich bei einigen vtc nicht stimmen.

meiner meinung nach erzeugt restart das erste event mit falscher nummer plus falschem zeitpunkt. dann kommt init, erzeugt aus den restart daten ein neues event , das nun eventuell zum richtigen zeitpunkt (zumindestens sind die abstände zum letzten event vor shutdown im rahmen, der absolute zeitpunkt kann ja nicht stimmen), aber mit nun doppelt falscher msg nummer gesendet wird.

selbst wenn das rausgehauene restart-event die richtige nummer hätte, wäre das folgende init-event falsch, da es auf den daten des restart-events aufbaut.

Zitatsomit muss das "-1" raus.
kann eigentlich nicht funktionieren. es sei denn, du hast die logik umgebaut.

bisher galt: ausserhalb der funktionen ist msgCtr die zahl, mit welcher aus dem aktuellen zeitpunkt (altes next) das nächste next berechnet wird. wenn wir also nach cul_hm_valveposupd kommen, ist in next der augenblickliche zeitpunkt (wir sind dabei das event zu senden) enthalten. in msgCtr aber die nummer des vorherigen events. sozusagen ist msgCtr immer um ein event verschoben gegenüber next, sofern sie synchron sind.
genauso wird msgCtr und next gespeichert. in next der zeitpunkt des letzten erfolgreichen events und in msgCtr die nummer des davor gesendeten events.
letztendlich egal welche msgCtr gespeichert wird. muss nur passen.

am einfachsten würde man es sich bestimmt machen, wenn die berechnung des nächsten eventzeitpunktes in eine eigene funktion ausgelagert wäre. dadurch kann auf einfache weise die berechnung und das senden getrennt behandelt werden. man übergibt ein beliebiges msgCtr/next-paar und bekommt ein entprechendes päarchen mit zukünftigem sendetermin zurück.

ist denn der zusätzliche einsprung aus culhmconfig nötig?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 19 Februar 2014, 17:13:03
Hi Frank,

die Logic ist nicht geaendert - solltest du aus den Code lesen koennen.
Es wird gespeichert(nach Readings): der Zeitpunkt des letzten Sendens und der entsprechende msgCount wenn es ein ACK gegeben hat. Das ist das gleiche Konzept.
Durch die umstellung auf die while-schleifen kann man die Prozedur endlos aufrufen, Zaehlern und zeitpunkt muessen stabil bleiben. Es wird erst weiter gerechnet, wenn wir in der Vergangenheit sind.
Das hat gestern noch funktioniert - und das ist Basis des Konzepts.

Somit muss man - wir von dir vorgesehen in der Schleifen - aus den Reading werden den naechsten in der Zukunft liegenden Wert errechnen koennen.
Die Logs der Schleife vor und nach dem Restart muessen zum gleichen Ergebniss kommen. Vor dem Restart sind leider keine logs der Schleife enthalten - werde ich selbst machen. Da muss man nur die Werte vergleichen - die muessen 100% uebereinstimmen. Sollte einfach zu vergleiche sein - dauert nur immer 10 min je test ;)

Zitatist denn der zusätzliche einsprung aus culhmconfig nötig?
verstrehe ich nicht - was ist das?
Und nein, ein neuer Einsprung ist nicht notwendig. Auch eine separate Berechnung nicht.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Februar 2014, 07:13:24
Hi Frank,

habe gestern einen neuen Versuch eingecheckt. ist ein klein wenig getunt. Hat bei 3 restarts ohne Probleme funktioniert. Aktuell ist ein Log drin - mit verbose 5 des VTC solltest du es einschalten koennen. Damit sollte das korrekte timerhandling tracebar sein.
Nach dem reboot koennte noch eine message zu viel kommen - habe ich noch nicht untersucht. Kann damit zusammen haengen, dass ich im fhem.cfg ein Kommando absetze - das kommt demnach vor dem Init... Wirkliche Probleme macht das jetzt auch nicht mehr (bei mir)

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 11:06:11
hallo martin,

das positive vorweg.
v4992 hatte beim resetversuch die besten rahmenbedingungen aller versuche. in den 8 std vom einspielen bis zum restart gab es genau 5 miss mit 5 vd. also pro vd einer in 8 std. die system verzögerungen wurden bei mir durch häufige aufrufe von GetHttpFile hervorgerufen. durch austausch mit HttpUtils_NonblockingGet sind meine miss quasi verschwunden.

jetzt das negative.
es hat nur 1 vd überlebt. beim einspielen gestern nacht auch schon. die dann allerdings beim ersten echten event (2.). seltsam ist die berechnung des selben events bei B4B4B401 vor und nach shutdown.

2014.02.20 09:23:57.062 1: VD-test B4B4B401 c:147 t:1392884798802 x:161750
2014.02.20 09:23:57.070 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.20 09:23:57.072 0: HMLAN_Send:  HMLAN1 S:S4E64DED0 stat:  00 t:00000000 d:01 r:4E64DED0 m:93 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:23:57.223 0: HMLAN_Parse: HMLAN1 R:R4E64DD32 stat:0008 t:00000000 d:FF r:7FFF     m:C6 A258 B3B3B3 193A9A 0042
2014.02.20 09:23:57.226 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 09:23:57.256 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:1176F19F d:FF r:FFBA     m:93 8202 1CE9F5 B4B4B4 0101C60047
2014.02.20 09:23:57.637 0: HMLAN_Parse: HMLAN1 R:R4E64DED0 stat:0008 t:00000000 d:FF r:7FFF     m:93 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:23:57.639 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 09:25:00.063 1: VD-test B1B1B101 c:25 t:1392884881053 x:181000
2014.02.20 09:25:00.072 0: HMLAN_Send:  HMLAN1 S:S4E65D4EA stat:  00 t:00000000 d:01 r:4E65D4EA m:19 A258 B1B1B1 1BFC52 03FD
2014.02.20 09:25:00.258 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:1177E7C1 d:FF r:FFB5     m:19 8202 1BFC52 B1B1B1 01011A104A
2014.02.20 09:25:00.638 0: HMLAN_Parse: HMLAN1 R:R4E65D4EA stat:0008 t:00000000 d:FF r:7FFF     m:19 A258 B1B1B1 1BFC52 03FD
2014.02.20 09:25:00.641 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 09:25:13.075 1: VD-test B2B2B201 c:193 t:1392884885815 x:172750
2014.02.20 09:25:13.083 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.20 09:25:13.086 0: HMLAN_Send:  HMLAN1 S:S4E6607BD stat:  00 t:00000000 d:01 r:4E6607BD m:C1 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:25:13.269 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:11781A96 d:FF r:FFC8     m:C1 8202 1DFC2F B2B2B2 0101081035
2014.02.20 09:25:13.650 0: HMLAN_Parse: HMLAN1 R:R4E6607BD stat:0008 t:00000000 d:FF r:7FFF     m:C1 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:25:13.652 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 09:25:37.600 1: VD-test B5B5B501 c:15 t:1392884866093 x:128500
2014.02.20 09:25:37.608 0: HMLAN_Send:  HMLAN1 S:S4E66678A stat:  00 t:00000000 d:01 r:4E66678A m:0F A258 B5B5B5 1C4E25 0007
2014.02.20 09:25:37.789 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:11787A62 d:FF r:FFB3     m:0F 8202 1C4E25 B5B5B5 010106004C
2014.02.20 09:25:38.170 0: HMLAN_Parse: HMLAN1 R:R4E66678A stat:0008 t:00000000 d:FF r:7FFF     m:0F A258 B5B5B5 1C4E25 0007
2014.02.20 09:25:38.174 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 09:26:24.168 1: VD-test B3B3B301 c:199 t:1392884917147 x:133000
2014.02.20 09:26:24.186 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.20 09:26:24.189 0: HMLAN_Send:  HMLAN1 S:S4E671D7D stat:  00 t:00000000 d:01 r:4E671D7D m:C7 A258 B3B3B3 193A9A 033A
2014.02.20 09:26:24.376 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:11793060 d:FF r:FFB5     m:C7 8202 193A9A B3B3B3 0101342049
2014.02.20 09:26:24.754 0: HMLAN_Parse: HMLAN1 R:R4E671D7D stat:0008 t:00000000 d:FF r:7FFF     m:C7 A258 B3B3B3 193A9A 033A
2014.02.20 09:26:24.757 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 09:26:38.822 1: VD-test B4B4B401 c:148 t:1392884946311 x:147500


2014.02.20 09:27:35.749 0: Server shutdown
2014.02.20 09:27:35.779 4: CUL_send:  cul868X0 0     
2014.02.20 09:27:40.541 1: Including fhem.cfg
2014.02.20 09:27:45.570 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.20 09:27:45.626 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.20 09:27:56.335 1: Including ./log/fhem.save
2014.02.20 09:27:58.770 1: HCS BROETJE monitoring of devices started
2014.02.20 09:27:59.151 0: Server started with 298 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 6710)
2014.02.20 09:27:59.159 1: Perfmon: possible freeze starting at 09:27:42, delay is 17.159
2014.02.20 09:28:00.183 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.20 09:28:03.237 1: Perfmon: possible freeze starting at 09:28:00, delay is 3.236
2014.02.20 09:28:04.967 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: restart
2014.02.20 09:28:04.982 1: ##### restart ##### n: c:15 t:1392884866099
2014.02.20 09:28:05.179 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.20 09:28:05.192 1: ##### restart ##### n: c:199 t:1392884917167
2014.02.20 09:28:05.388 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: restart
2014.02.20 09:28:05.399 1: ##### restart ##### n: c:25 t:1392884881062
2014.02.20 09:28:05.561 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: restart
2014.02.20 09:28:05.571 1: ##### restart ##### n: c:193 t:1392884885824
2014.02.20 09:28:05.726 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: restart
2014.02.20 09:28:05.737 1: ##### restart ##### n: c:147 t:1392884798811
2014.02.20 09:28:06.586 1: VD-test B5B5B501 c:16 t:1392885011349 x:145250
2014.02.20 09:28:06.628 1: VD-test B1B1B101 c:26 t:1392885010062 x:129000
2014.02.20 09:28:06.668 1: VD-test B4B4B401 c:148 t:1392884960061 x:161250
2014.02.20 09:28:06.708 1: VD-test B2B2B201 c:194 t:1392885023574 x:137750
2014.02.20 09:28:06.891 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.20 09:28:06.906 1: ##### init ##### n:1DFC2F c:194 t:1392885023574
2014.02.20 09:28:06.917 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.20 09:28:06.919 0: HMLAN_Send:  HMLAN1 S:S4E68AEC7 stat:  00 t:00000000 d:01 r:4E68AEC7 m:C2 A258 B2B2B2 1DFC2F 030A
2014.02.20 09:28:07.385 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.20 09:28:07.398 1: ##### init ##### n:193A9A c:199 t:1392884917167
2014.02.20 09:28:07.411 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.20 09:28:07.416 0: HMLAN_Send:  HMLAN1 S:S4E68B0B3 stat:  00 t:00000000 d:01 r:4E68B0B3 m:C7 A258 B3B3B3 193A9A 033A
2014.02.20 09:28:07.654 1: Perfmon: possible freeze starting at 09:28:04, delay is 3.653
2014.02.20 09:28:07.805 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.20 09:28:07.820 1: ##### init ##### n:1CE9F5 c:148 t:1392884960061
2014.02.20 09:28:07.831 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.20 09:28:07.834 0: HMLAN_Send:  HMLAN1 S:S4E68B259 stat:  00 t:00000000 d:01 r:4E68B259 m:94 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:28:08.219 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.20 09:28:08.230 1: ##### init ##### n:1C4E25 c:16 t:1392885011349
2014.02.20 09:28:08.243 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.20 09:28:08.245 0: HMLAN_Send:  HMLAN1 S:S4E68B3F5 stat:  00 t:00000000 d:01 r:4E68B3F5 m:10 A258 B5B5B5 1C4E25 0307
2014.02.20 09:28:08.452 0: HMLAN_Parse: HMLAN1 R:R4E68AEC7 stat:0008 t:00000000 d:FF r:7FFF     m:C2 A258 B2B2B2 1DFC2F 030A
2014.02.20 09:28:08.455 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 09:28:08.459 0: HMLAN_Parse: HMLAN1 R:R4E68B0B3 stat:0008 t:00000000 d:FF r:7FFF     m:C7 A258 B3B3B3 193A9A 033A
2014.02.20 09:28:08.461 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 09:28:08.484 0: HMLAN_Parse: HMLAN1 R:R4E68B259 stat:0008 t:00000000 d:FF r:7FFF     m:94 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:28:08.487 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 09:28:08.872 0: HMLAN_Parse: HMLAN1 R:R4E68B3F5 stat:0008 t:00000000 d:FF r:7FFF     m:10 A258 B5B5B5 1C4E25 0307
2014.02.20 09:28:08.875 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 09:28:17.002 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.20 09:28:17.468 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.20 09:28:17.889 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.20 09:28:18.304 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.20 09:28:37.177 1: VD-test B3B3B301 c:200 t:1392885099667 x:182500
2014.02.20 09:28:37.185 0: HMLAN_Send:  HMLAN1 S:S4E692503 stat:  00 t:00000000 d:01 r:4E692503 m:C8 A258 B3B3B3 193A9A 033A
2014.02.20 09:28:37.570 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:117B38BE d:FF r:FFB5     m:C8 8202 193A9A B3B3B3 01012C004A
2014.02.20 09:28:37.750 0: HMLAN_Parse: HMLAN1 R:R4E692503 stat:0008 t:00000000 d:FF r:7FFF     m:C8 A258 B3B3B3 193A9A 033A
2014.02.20 09:28:37.753 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 09:28:47.250 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok
2014.02.20 09:28:59.401 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.20 09:28:59.413 1: ##### init ##### n:1BFC52 c:26 t:1392885010062
2014.02.20 09:28:59.423 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.20 09:28:59.426 0: HMLAN_Send:  HMLAN1 S:S4E697BE2 stat:  00 t:00000000 d:01 r:4E697BE2 m:1A A258 B1B1B1 1BFC52 03FD
2014.02.20 09:29:00.034 0: HMLAN_Parse: HMLAN1 R:R4E697BE2 stat:0008 t:00000000 d:FF r:7FFF     m:1A A258 B1B1B1 1BFC52 03FD
2014.02.20 09:29:00.036 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 09:29:09.559 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.20 09:29:20.071 1: VD-test B4B4B401 c:149 t:1392885093061 x:133000
2014.02.20 09:29:20.079 0: HMLAN_Send:  HMLAN1 S:S4E69CC92 stat:  00 t:00000000 d:01 r:4E69CC92 m:95 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:29:20.688 0: HMLAN_Parse: HMLAN1 R:R4E69CC92 stat:0008 t:00000000 d:FF r:7FFF     m:95 A258 B4B4B4 1CE9F5 03FD
2014.02.20 09:29:20.691 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 09:29:30.141 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.20 09:30:10.073 1: VD-test B1B1B101 c:27 t:1392885162062 x:152000
2014.02.20 09:30:10.081 0: HMLAN_Send:  HMLAN1 S:S4E6A8FE3 stat:  00 t:00000000 d:01 r:4E6A8FE3 m:1B A258 B1B1B1 1BFC52 03FD
2014.02.20 09:30:10.688 0: HMLAN_Parse: HMLAN1 R:R4E6A8FE3 stat:0008 t:00000000 d:FF r:7FFF     m:1B A258 B1B1B1 1BFC52 03FD
2014.02.20 09:30:10.691 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 09:30:11.359 1: VD-test B5B5B501 c:17 t:1392885175099 x:163750
2014.02.20 09:30:11.367 0: HMLAN_Send:  HMLAN1 S:S4E6A94EA stat:  00 t:00000000 d:01 r:4E6A94EA m:11 A258 B5B5B5 1C4E25 0307
2014.02.20 09:30:11.975 0: HMLAN_Parse: HMLAN1 R:R4E6A94EA stat:0008 t:00000000 d:FF r:7FFF     m:11 A258 B5B5B5 1C4E25 0307
2014.02.20 09:30:11.977 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 09:30:20.142 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.20 09:30:21.430 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.20 09:30:23.838 1: VD-test B2B2B201 c:195 t:1392885167324 x:143750
2014.02.20 09:30:23.845 0: HMLAN_Send:  HMLAN1 S:S4E6AC5A7 stat:  00 t:00000000 d:01 r:4E6AC5A7 m:C3 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:30:24.455 0: HMLAN_Parse: HMLAN1 R:R4E6AC5A7 stat:0008 t:00000000 d:FF r:7FFF     m:C3 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:30:24.460 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 09:30:33.907 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.20 09:31:33.070 1: VD-test B4B4B401 c:150 t:1392885275561 x:182500
2014.02.20 09:31:33.079 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.20 09:31:33.082 0: HMLAN_Send:  HMLAN1 S:S4E6BD419 stat:  00 t:00000000 d:01 r:4E6BD419 m:96 A258 B4B4B4 1CE9F5 00FD
2014.02.20 09:31:33.715 0: HMLAN_Parse: HMLAN1 R:R4E6BD419 stat:0008 t:00000000 d:FF r:7FFF     m:96 A258 B4B4B4 1CE9F5 00FD
2014.02.20 09:31:33.717 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 09:31:39.686 1: VD-test B3B3B301 c:201 t:1392885267676 x:168000
2014.02.20 09:31:43.142 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.20 09:32:42.073 1: VD-test B1B1B101 c:28 t:1392885299812 x:137750
2014.02.20 09:32:42.082 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.20 09:32:42.084 0: HMLAN_Send:  HMLAN1 S:S4E6CE1A4 stat:  00 t:00000000 d:01 r:4E6CE1A4 m:1C A258 B1B1B1 1BFC52 00FD
2014.02.20 09:32:42.691 0: HMLAN_Parse: HMLAN1 R:R4E6CE1A4 stat:0008 t:00000000 d:FF r:7FFF     m:1C A258 B1B1B1 1BFC52 00FD
2014.02.20 09:32:42.694 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 09:32:47.334 1: VD-test B2B2B201 c:196 t:1392885296824 x:129500
2014.02.20 09:32:47.342 0: HMLAN_Send:  HMLAN1 S:S4E6CF630 stat:  00 t:00000000 d:01 r:4E6CF630 m:C4 A258 B2B2B2 1DFC2F 030A
2014.02.20 09:32:47.949 0: HMLAN_Parse: HMLAN1 R:R4E6CF630 stat:0008 t:00000000 d:FF r:7FFF     m:C4 A258 B2B2B2 1DFC2F 030A
2014.02.20 09:32:47.952 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 09:32:52.142 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.20 09:32:55.109 1: VD-test B5B5B501 c:18 t:1392885324349 x:149250
2014.02.20 09:32:55.118 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.20 09:32:55.121 0: HMLAN_Send:  HMLAN1 S:S4E6D1491 stat:  00 t:00000000 d:01 r:4E6D1491 m:12 A258 B5B5B5 1C4E25 0007
2014.02.20 09:32:55.728 0: HMLAN_Parse: HMLAN1 R:R4E6D1491 stat:0008 t:00000000 d:FF r:7FFF     m:12 A258 B5B5B5 1C4E25 0007
2014.02.20 09:32:55.731 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 09:32:57.460 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.20 09:33:05.181 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_3
2014.02.20 09:34:27.686 1: VD-test B3B3B301 c:202 t:1392885421426 x:153750
2014.02.20 09:34:27.694 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.20 09:34:27.697 0: HMLAN_Send:  HMLAN1 S:S4E6E7E31 stat:  00 t:00000000 d:01 r:4E6E7E31 m:CA A258 B3B3B3 193A9A 003A
2014.02.20 09:34:27.883 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:11809155 d:FF r:FFB5     m:CA 8202 193A9A B3B3B3 01012C004A
2014.02.20 09:34:28.261 0: HMLAN_Parse: HMLAN1 R:R4E6E7E31 stat:0008 t:00000000 d:FF r:7FFF     m:CA A258 B3B3B3 193A9A 003A
2014.02.20 09:34:28.264 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 09:34:35.571 1: VD-test B4B4B401 c:151 t:1392885443811 x:168250
2014.02.20 09:34:35.579 0: HMLAN_Send:  HMLAN1 S:S4E6E9CFE stat:  00 t:00000000 d:01 r:4E6E9CFE m:97 A258 B4B4B4 1CE9F5 00FD
2014.02.20 09:34:36.187 0: HMLAN_Parse: HMLAN1 R:R4E6E9CFE stat:0008 t:00000000 d:FF r:7FFF     m:97 A258 B4B4B4 1CE9F5 00FD
2014.02.20 09:34:36.189 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 09:34:45.640 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_4
2014.02.20 09:34:56.838 1: VD-test B2B2B201 c:197 t:1392885475824 x:179000
2014.02.20 09:34:56.851 0: HMLAN_Send:  HMLAN1 S:S4E6EF013 stat:  00 t:00000000 d:01 r:4E6EF013 m:C5 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:34:57.459 0: HMLAN_Parse: HMLAN1 R:R4E6EF013 stat:0008 t:00000000 d:FF r:7FFF     m:C5 A258 B2B2B2 1DFC2F 0311
2014.02.20 09:34:57.461 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 09:34:59.901 1: VD-test B1B1B101 c:29 t:1392885423062 x:123250
2014.02.20 09:34:59.916 0: HMLAN_Send:  HMLAN1 S:S4E6EFC0E stat:  00 t:00000000 d:01 r:4E6EFC0E m:1D A258 B1B1B1 1BFC52 00FD
2014.02.20 09:35:00.524 0: HMLAN_Parse: HMLAN1 R:R4E6EFC0E stat:0008 t:00000000 d:FF r:7FFF     m:1D A258 B1B1B1 1BFC52 00FD
2014.02.20 09:35:00.527 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 09:35:06.962 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_4
2014.02.20 09:35:09.971 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_4
2014.02.20 09:35:24.361 1: VD-test B5B5B501 c:19 t:1392885459349 x:135000
2014.02.20 09:35:24.370 0: HMLAN_Send:  HMLAN1 S:S4E6F5B93 stat:  00 t:00000000 d:01 r:4E6F5B93 m:13 A258 B5B5B5 1C4E25 0007
2014.02.20 09:35:25.372 0: HMLAN_Parse: HMLAN1 R:R4E6F5B93 stat:0008 t:00000000 d:FF r:7FFF     m:13 A258 B5B5B5 1C4E25 0007
2014.02.20 09:35:25.375 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 09:35:34.512 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4


bei meinen log zeilen init und reset hatte ich umgestellt und wollte $hash->{helper}{vd}{id} anzeigen lassen. bei init wirds angezeigt bei restart nicht?  ???

ist verbose 5 auch noch nötig? habe ich gerade erst gesehen.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 11:38:38
hallo martin,

ich sehe gerade das du das speichern umgestellt hast. dann war der gerettete vd von heute nacht auf alle fälle zufall.

asserdem speicherst du nun einen zukünftiges meeting und kein verifiziertes. mit viel glück kann man so einen shutdown restart überleben, aber bestimmt keinen strom ausfall mehr.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Februar 2014, 12:18:31
Hi Frank,

Zitatmit viel glück kann man so einen shutdown
verstehe ich nicht. gespeichert wird der naechste nach einem erfolgreichen - und nur der. Der wird in jedem Fall als naechster errechnet werden.
Der Log ist offensichtlich nicht der aus dem aktuellen File - verbose 5 der VTCs. warum nicht?

Im normal Fall wird in CUL_HM_valvePosUpdt mit $hashVd->{msgCnt} und$hashVd->{nextM} gerechnet. Im Fehlerfall muss auf die idenitschen Werte aufgesetzt werden.

hm - warum klappt es immer bei dir nicht, wenn es bei mir gut geht.
Fuer die Uebersicht ist gerade grenzwertig, dass dein System 2min30 bis 3min zum booten braucht. faellt genau in den Zeitraum einer Periode...

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 13:16:33
hallo martin,

hier nochmal verbose5. 2 vd genau beim 1.echten versuch reannimiert.

es sieht ganz danach aus, dass nur die vd überleben, bei denen durch shutdown kein vd-fenster ausgelassen worden ist.

2014.02.20 12:22:07.304 5: CUL_HM VentilControler.Kueche_Btn1 m:94 ->95 t:1392895327.29249->1392895458.54249  M:1392895327.30165 :131.25
2014.02.20 12:22:07.311 0: HMLAN_Send:  HMLAN1 S:S4F07FD92 stat:  00 t:00000000 d:01 r:4F07FD92 m:5F A258 B1B1B1 1BFC52 00FD
2014.02.20 12:22:07.496 0: HMLAN_Parse: HMLAN1 R:E1BFC52   stat:0000 t:121A15F7 d:FF r:FFB8     m:5F 8202 1BFC52 B1B1B1 0101C60047
2014.02.20 12:22:07.876 0: HMLAN_Parse: HMLAN1 R:R4F07FD92 stat:0008 t:00000000 d:FF r:7FFF     m:5F A258 B1B1B1 1BFC52 00FD
2014.02.20 12:22:07.879 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 12:22:24.560 5: CUL_HM VentilControler.SZ_Btn1 m:6 ->7 t:1392895344.54782->1392895512.04782  M:1392895344.55771 :167.5
2014.02.20 12:22:24.567 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.20 12:22:24.569 0: HMLAN_Send:  HMLAN1 S:S4F0840F9 stat:  00 t:00000000 d:01 r:4F0840F9 m:07 A258 B2B2B2 1DFC2F 0007
2014.02.20 12:22:24.755 0: HMLAN_Parse: HMLAN1 R:E1DFC2F   stat:0000 t:121A5964 d:FF r:FFC8     m:07 8202 1DFC2F B2B2B2 0101060035
2014.02.20 12:22:25.135 0: HMLAN_Parse: HMLAN1 R:R4F0840F9 stat:0008 t:00000000 d:FF r:7FFF     m:07 A258 B2B2B2 1DFC2F 0007
2014.02.20 12:22:25.138 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 12:22:33.324 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:84 ->85 t:1392895353.3124->1392895496.3124  M:1392895353.32147 :143
2014.02.20 12:22:33.331 0: HMLAN_Send:  HMLAN1 S:S4F086335 stat:  00 t:00000000 d:01 r:4F086335 m:55 A258 B5B5B5 1C4E25 0000
2014.02.20 12:22:33.513 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:121A7B9B d:FF r:FFB3     m:55 8202 1C4E25 B5B5B5 010100004D
2014.02.20 12:22:33.893 0: HMLAN_Parse: HMLAN1 R:R4F086335 stat:0008 t:00000000 d:FF r:7FFF     m:55 A258 B5B5B5 1C4E25 0000
2014.02.20 12:22:33.896 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 12:23:41.003 5: CUL_HM VentilControler.Bad_Btn1 m:12 ->13 t:1392895420.98777->1392895548.73777  M:1392895421.00124 :127.75
2014.02.20 12:23:51.557 2: CUL_HM set VentilControler.WZ_Btn1 valvePos 54
2014.02.20 12:23:55.835 5: CUL_HM VentilControler.WZ_Btn1 m:217 ->218 t:1392895435.8224->1392895597.5724  M:1392895435.83237 :161.75
2014.02.20 12:23:55.842 0: HMLAN_Send:  HMLAN1 S:S4F09A584 stat:  00 t:00000000 d:01 r:4F09A584 m:DA A258 B4B4B4 1CE9F5 038A
2014.02.20 12:23:56.026 0: HMLAN_Parse: HMLAN1 R:E1CE9F5   stat:0000 t:121BBDF7 d:FF r:FFBF     m:DA 8202 1CE9F5 B4B4B4 0101742042
2014.02.20 12:23:56.406 0: HMLAN_Parse: HMLAN1 R:R4F09A584 stat:0008 t:00000000 d:FF r:7FFF     m:DA A258 B4B4B4 1CE9F5 038A
2014.02.20 12:23:56.409 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 12:24:18.575 5: CUL_HM VentilControler.Kueche_Btn1 m:95 ->96 t:1392895458.55165->1392895639.30165  M:1392895458.56897 :180.75
2014.02.20 12:24:56.333 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:85 ->86 t:1392895496.32147->1392895624.82147  M:1392895496.3308 :128.5
2014.02.20 12:25:12.070 5: CUL_HM VentilControler.SZ_Btn1 m:7 ->8 t:1392895512.05771->1392895665.05771  M:1392895512.06692 :153
2014.02.20 12:25:48.754 5: CUL_HM VentilControler.Bad_Btn1 m:13 ->14 t:1392895548.73777->1392895725.98777  M:1392895548.75064 :177.25
2014.02.20 12:25:48.764 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.20 12:25:48.768 0: HMLAN_Send:  HMLAN1 S:S4F0B5E9D stat:  00 t:00000000 d:01 r:4F0B5E9D m:0E A258 B3B3B3 193A9A 004F
2014.02.20 12:25:48.954 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:121D7726 d:FF r:FFB5     m:0E 8202 193A9A B3B3B3 01013E0048
2014.02.20 12:25:49.334 0: HMLAN_Parse: HMLAN1 R:R4F0B5E9D stat:0008 t:00000000 d:FF r:7FFF     m:0E A258 B3B3B3 193A9A 004F
2014.02.20 12:25:49.337 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 12:26:37.595 5: CUL_HM VentilControler.WZ_Btn1 m:218 ->219 t:1392895597.58237->1392895744.83237  M:1392895597.59243 :147.25
2014.02.20 12:26:52.333 2: CUL_HM set VentilControler.WZ_Btn1 valvePos 58
2014.02.20 12:27:04.834 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:86 ->87 t:1392895624.82147->1392895802.82147  M:1392895624.83163 :178
2014.02.20 12:27:04.842 0: HMLAN_Send:  HMLAN1 S:S4F0C87CC stat:  00 t:00000000 d:01 r:4F0C87CC m:57 A258 B5B5B5 1C4E25 0000
2014.02.20 12:27:05.024 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:121EA058 d:FF r:FFB3     m:57 8202 1C4E25 B5B5B5 010100004D
2014.02.20 12:27:05.405 0: HMLAN_Parse: HMLAN1 R:R4F0C87CC stat:0008 t:00000000 d:FF r:7FFF     m:57 A258 B5B5B5 1C4E25 0000
2014.02.20 12:27:05.408 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25


2014.02.20 12:27:18.102 0: Server shutdown
2014.02.20 12:27:18.145 4: CUL_send:  cul868X0 0     
2014.02.20 12:27:23.203 1: Including fhem.cfg
2014.02.20 12:27:28.097 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.20 12:27:28.153 1: HMLAN_Parse: HMLAN1 new condition init
2014.02.20 12:27:39.071 1: Including ./log/fhem.save
2014.02.20 12:27:41.370 1: HCS BROETJE monitoring of devices started
2014.02.20 12:27:41.822 0: Server started with 299 defined entities (version $Id: fhem.pl 4935 2014-02-15 08:34:09Z rudolfkoenig $, os linux, user root, pid 7920)
2014.02.20 12:27:41.833 1: Perfmon: possible freeze starting at 12:27:25, delay is 16.833
2014.02.20 12:27:42.247 1: HMLAN_Parse: HMLAN1 new condition ok
2014.02.20 12:27:47.143 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: restart
2014.02.20 12:27:47.311 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: restart
2014.02.20 12:27:47.483 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: restart
2014.02.20 12:27:47.652 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: restart
2014.02.20 12:27:47.819 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: restart
2014.02.20 12:27:47.847 1: Perfmon: possible freeze starting at 12:27:43, delay is 4.847
2014.02.20 12:27:47.874 5: CUL_HM VentilControler.SZ_Btn1 m:7 ->9 t:1392895512.05771->1392895826.55771  M:1392895667.86996 :182
2014.02.20 12:27:47.914 5: CUL_HM VentilControler.Bad_Btn1 m:14 ->14 t:1392895726.00064->1392895726.00064  M:1392895667.91365 :
2014.02.20 12:27:47.953 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:87 ->87 t:1392895802.83163->1392895802.83163  M:1392895667.95267 :
2014.02.20 12:27:47.996 5: CUL_HM VentilControler.Kueche_Btn1 m:95 ->97 t:1392895458.55165->1392895730.55165  M:1392895667.99236 :128.75
2014.02.20 12:27:48.051 5: CUL_HM VentilControler.WZ_Btn1 m:218 ->219 t:1392895597.58237->1392895758.83237  M:1392895668.04884 :161.25
2014.02.20 12:27:48.210 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: init
2014.02.20 12:27:48.223 5: CUL_HM VentilControler.SZ_Btn1 m:9 ->9 t:1392895826.55771->1392895826.55771  M:1392895668.22316 :
2014.02.20 12:27:48.234 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.20 12:27:48.236 0: HMLAN_Send:  HMLAN1 S:S4F0D314C stat:  00 t:00000000 d:01 r:4F0D314C m:09 A258 B2B2B2 1DFC2F 0307
2014.02.20 12:27:48.360 2: CUL_HM set VentilControler.SZ_Btn1 valvePos 3
2014.02.20 12:27:48.549 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: init
2014.02.20 12:27:48.565 5: CUL_HM VentilControler.Bad_Btn1 m:14 ->14 t:1392895726.00064->1392895726.00064  M:1392895668.56422 :
2014.02.20 12:27:48.575 0: HMLAN_Send:  HMLAN1 S:+193A9A,00,01,
2014.02.20 12:27:48.577 0: HMLAN_Send:  HMLAN1 S:S4F0D32A2 stat:  00 t:00000000 d:01 r:4F0D32A2 m:0E A258 B3B3B3 193A9A 034F
2014.02.20 12:27:48.761 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 31
2014.02.20 12:27:48.979 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: init
2014.02.20 12:27:49.002 5: CUL_HM VentilControler.WZ_Btn1 m:219 ->219 t:1392895758.83237->1392895758.83237  M:1392895669.0016 :
2014.02.20 12:27:49.012 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.20 12:27:49.015 0: HMLAN_Send:  HMLAN1 S:S4F0D3456 stat:  00 t:00000000 d:01 r:4F0D3456 m:DB A258 B4B4B4 1CE9F5 0394
2014.02.20 12:27:49.186 2: CUL_HM set VentilControler.WZ_Btn1 valvePos 58
2014.02.20 12:27:49.415 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: init
2014.02.20 12:27:49.430 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:87 ->87 t:1392895802.83163->1392895802.83163  M:1392895669.42955 :
2014.02.20 12:27:49.441 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.20 12:27:49.443 0: HMLAN_Send:  HMLAN1 S:S4F0D3603 stat:  00 t:00000000 d:01 r:4F0D3603 m:57 A258 B5B5B5 1C4E25 0300
2014.02.20 12:27:49.585 2: CUL_HM set VentilControler.AZ.Nord_Btn1 valvePos 0
2014.02.20 12:27:49.674 0: HMLAN_Parse: HMLAN1 R:R4F0D314C stat:0008 t:00000000 d:FF r:7FFF     m:09 A258 B2B2B2 1DFC2F 0307
2014.02.20 12:27:49.677 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 12:27:49.680 0: HMLAN_Parse: HMLAN1 R:R4F0D32A2 stat:0008 t:00000000 d:FF r:7FFF     m:0E A258 B3B3B3 193A9A 034F
2014.02.20 12:27:49.683 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 12:27:49.686 0: HMLAN_Parse: HMLAN1 R:R4F0D3456 stat:0008 t:00000000 d:FF r:7FFF     m:DB A258 B4B4B4 1CE9F5 0394
2014.02.20 12:27:49.689 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 12:27:49.709 1: Perfmon: possible freeze starting at 12:27:48, delay is 1.708
2014.02.20 12:27:50.052 0: HMLAN_Parse: HMLAN1 R:R4F0D3603 stat:0008 t:00000000 d:FF r:7FFF     m:57 A258 B5B5B5 1C4E25 0300
2014.02.20 12:27:50.055 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 12:27:58.233 5: CUL_HM VentilControler.SZ_Btn1 virtualTC use fail-timer
2014.02.20 12:27:58.293 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_1
2014.02.20 12:27:58.583 5: CUL_HM VentilControler.Bad_Btn1 virtualTC use fail-timer
2014.02.20 12:27:58.694 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: miss_1
2014.02.20 12:27:59.015 5: CUL_HM VentilControler.WZ_Btn1 virtualTC use fail-timer
2014.02.20 12:27:59.111 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_1
2014.02.20 12:27:59.439 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.20 12:27:59.501 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_1
2014.02.20 12:28:42.073 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: init
2014.02.20 12:28:42.087 5: CUL_HM VentilControler.Kueche_Btn1 m:97 ->97 t:1392895730.55165->1392895730.55165  M:1392895722.08654 :
2014.02.20 12:28:42.097 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.20 12:28:42.099 0: HMLAN_Send:  HMLAN1 S:S4F0E03B3 stat:  00 t:00000000 d:01 r:4F0E03B3 m:61 A258 B1B1B1 1BFC52 03FD
2014.02.20 12:28:42.230 2: CUL_HM set VentilControler.Kueche_Btn1 valvePos 99
2014.02.20 12:28:42.707 0: HMLAN_Parse: HMLAN1 R:R4F0E03B3 stat:0008 t:00000000 d:FF r:7FFF     m:61 A258 B1B1B1 1BFC52 03FD
2014.02.20 12:28:42.710 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 12:28:46.014 5: CUL_HM VentilControler.Bad_Btn1 m:14 ->15 t:1392895726.00064->1392895888.75064  M:1392895726.01125 :162.75
2014.02.20 12:28:46.032 0: HMLAN_Send:  HMLAN1 S:S4F0E1307 stat:  00 t:00000000 d:01 r:4F0E1307 m:0F A258 B3B3B3 193A9A 034F
2014.02.20 12:28:46.216 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:12202BAE d:FF r:FFB5     m:0F 8202 193A9A B3B3B3 01013E204A
2014.02.20 12:28:46.596 0: HMLAN_Parse: HMLAN1 R:R4F0E1307 stat:0008 t:00000000 d:FF r:7FFF     m:0F A258 B3B3B3 193A9A 034F
2014.02.20 12:28:46.599 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 12:28:49.412 2: CUL_HM set VentilControler.WZ_Btn1 valvePos 54
2014.02.20 12:28:52.096 5: CUL_HM VentilControler.Kueche_Btn1 virtualTC use fail-timer
2014.02.20 12:28:52.164 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_1
2014.02.20 12:28:52.199 5: CUL_HM VentilControler.Kueche_Btn1 m:97 ->98 t:1392895730.55165->1392895882.55165  M:1392895732.19775 :152
2014.02.20 12:28:52.207 0: HMLAN_Send:  HMLAN1 S:S4F0E2B31 stat:  00 t:00000000 d:01 r:4F0E2B31 m:62 A258 B1B1B1 1BFC52 03FD
2014.02.20 12:28:52.814 0: HMLAN_Parse: HMLAN1 R:R4F0E2B31 stat:0008 t:00000000 d:FF r:7FFF     m:62 A258 B1B1B1 1BFC52 03FD
2014.02.20 12:28:52.817 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 12:28:56.073 1: ----- VD-STATUS ----- VentilControler.Bad_Btn1 valveCtrl: ok
2014.02.20 12:29:02.207 5: CUL_HM VentilControler.Kueche_Btn1 virtualTC use fail-timer
2014.02.20 12:29:02.269 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_2
2014.02.20 12:29:18.849 5: CUL_HM VentilControler.WZ_Btn1 m:219 ->220 t:1392895758.83237->1392895891.83237  M:1392895758.84648 :133
2014.02.20 12:29:18.860 0: HMLAN_Send:  HMLAN1 S:S4F0E934D stat:  00 t:00000000 d:01 r:4F0E934D m:DC A258 B4B4B4 1CE9F5 038A
2014.02.20 12:29:19.467 0: HMLAN_Parse: HMLAN1 R:R4F0E934D stat:0008 t:00000000 d:FF r:7FFF     m:DC A258 B4B4B4 1CE9F5 038A
2014.02.20 12:29:19.470 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 12:29:28.862 5: CUL_HM VentilControler.WZ_Btn1 virtualTC use fail-timer
2014.02.20 12:29:28.972 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_2
2014.02.20 12:30:02.843 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:87 ->88 t:1392895802.83163->1392895966.58163  M:1392895802.84134 :163.75
2014.02.20 12:30:02.851 0: HMLAN_Send:  HMLAN1 S:S4F0F3F25 stat:  00 t:00000000 d:01 r:4F0F3F25 m:58 A258 B5B5B5 1C4E25 0300
2014.02.20 12:30:03.033 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:122157C9 d:FF r:FFB3     m:58 8202 1C4E25 B5B5B5 010100004D
2014.02.20 12:30:03.413 0: HMLAN_Parse: HMLAN1 R:R4F0F3F25 stat:0008 t:00000000 d:FF r:7FFF     m:58 A258 B5B5B5 1C4E25 0300
2014.02.20 12:30:03.416 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 12:30:12.915 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.20 12:30:26.569 5: CUL_HM VentilControler.SZ_Btn1 m:9 ->10 t:1392895826.55771->1392895950.80771  M:1392895826.5674 :124.25
2014.02.20 12:30:26.577 0: HMLAN_Send:  HMLAN1 S:S4F0F9BD3 stat:  00 t:00000000 d:01 r:4F0F9BD3 m:0A A258 B2B2B2 1DFC2F 0307
2014.02.20 12:30:27.185 0: HMLAN_Parse: HMLAN1 R:R4F0F9BD3 stat:0008 t:00000000 d:FF r:7FFF     m:0A A258 B2B2B2 1DFC2F 0307
2014.02.20 12:30:27.188 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 12:30:36.578 5: CUL_HM VentilControler.SZ_Btn1 virtualTC use fail-timer
2014.02.20 12:30:36.690 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_2
2014.02.20 12:30:48.781 2: CUL_HM set VentilControler.SZ_Btn1 valvePos 7
2014.02.20 12:31:22.563 5: CUL_HM VentilControler.Kueche_Btn1 m:98 ->99 t:1392895882.55165->1392896020.05165  M:1392895882.56112 :137.5
2014.02.20 12:31:22.570 0: HMLAN_Send:  HMLAN1 S:+1BFC52,00,01,
2014.02.20 12:31:22.573 0: HMLAN_Send:  HMLAN1 S:S4F10768D stat:  00 t:00000000 d:01 r:4F10768D m:63 A258 B1B1B1 1BFC52 00FD
2014.02.20 12:31:23.180 0: HMLAN_Parse: HMLAN1 R:R4F10768D stat:0008 t:00000000 d:FF r:7FFF     m:63 A258 B1B1B1 1BFC52 00FD
2014.02.20 12:31:23.183 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 12:31:28.781 5: CUL_HM VentilControler.Bad_Btn1 m:15 ->16 t:1392895888.76125->1392896037.26125  M:1392895888.77627 :148.5
2014.02.20 12:31:31.843 5: CUL_HM VentilControler.WZ_Btn1 m:220 ->221 t:1392895891.83237->1392896074.33237  M:1392895891.84125 :182.5
2014.02.20 12:31:31.850 0: HMLAN_Send:  HMLAN1 S:+1CE9F5,00,01,
2014.02.20 12:31:31.853 0: HMLAN_Send:  HMLAN1 S:S4F109ACD stat:  00 t:00000000 d:01 r:4F109ACD m:DD A258 B4B4B4 1CE9F5 008A
2014.02.20 12:31:32.460 0: HMLAN_Parse: HMLAN1 R:R4F109ACD stat:0008 t:00000000 d:FF r:7FFF     m:DD A258 B4B4B4 1CE9F5 008A
2014.02.20 12:31:32.463 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 12:31:32.570 5: CUL_HM VentilControler.Kueche_Btn1 virtualTC use fail-timer
2014.02.20 12:31:32.632 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_3
2014.02.20 12:31:41.850 5: CUL_HM VentilControler.WZ_Btn1 virtualTC use fail-timer
2014.02.20 12:31:41.912 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_3
2014.02.20 12:32:30.832 5: CUL_HM VentilControler.SZ_Btn1 m:10 ->11 t:1392895950.80771->1392896124.55771  M:1392895950.82683 :173.75
2014.02.20 12:32:30.839 0: HMLAN_Send:  HMLAN1 S:S4F118139 stat:  00 t:00000000 d:01 r:4F118139 m:0B A258 B2B2B2 1DFC2F 0311
2014.02.20 12:32:31.452 0: HMLAN_Parse: HMLAN1 R:R4F118139 stat:0008 t:00000000 d:FF r:7FFF     m:0B A258 B2B2B2 1DFC2F 0311
2014.02.20 12:32:31.466 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 12:32:40.847 5: CUL_HM VentilControler.SZ_Btn1 virtualTC use fail-timer
2014.02.20 12:32:40.958 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_3
2014.02.20 12:32:46.603 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:88 ->89 t:1392895966.59134->1392896115.84134  M:1392895966.60057 :149.25
2014.02.20 12:33:40.064 5: CUL_HM VentilControler.Kueche_Btn1 m:99 ->100 t:1392896020.05165->1392896143.30165  M:1392896020.06147 :123.25
2014.02.20 12:33:40.072 0: HMLAN_Send:  HMLAN1 S:S4F128FAA stat:  00 t:00000000 d:01 r:4F128FAA m:64 A258 B1B1B1 1BFC52 00FD
2014.02.20 12:33:40.679 0: HMLAN_Parse: HMLAN1 R:R4F128FAA stat:0008 t:00000000 d:FF r:7FFF     m:64 A258 B1B1B1 1BFC52 00FD
2014.02.20 12:33:40.688 0: HMLAN_Parse: HMLAN1 no ACK from 1BFC52
2014.02.20 12:33:49.364 2: CUL_HM set VentilControler.Bad_Btn1 valvePos 28
2014.02.20 12:33:50.071 5: CUL_HM VentilControler.Kueche_Btn1 virtualTC use fail-timer
2014.02.20 12:33:50.135 1: ----- VD-STATUS ----- VentilControler.Kueche_Btn1 valveCtrl: miss_4
2014.02.20 12:33:57.275 5: CUL_HM VentilControler.Bad_Btn1 m:16 ->17 t:1392896037.26125->1392896171.26125  M:1392896037.27297 :134
2014.02.20 12:33:57.283 0: HMLAN_Send:  HMLAN1 S:S4F12D2E5 stat:  00 t:00000000 d:01 r:4F12D2E5 m:11 A258 B3B3B3 193A9A 0347
2014.02.20 12:33:57.468 0: HMLAN_Parse: HMLAN1 R:E193A9A   stat:0000 t:1224EBAD d:FF r:FFB5     m:11 8202 193A9A B3B3B3 01013E2048
2014.02.20 12:33:57.848 0: HMLAN_Parse: HMLAN1 R:R4F12D2E5 stat:0008 t:00000000 d:FF r:7FFF     m:11 A258 B3B3B3 193A9A 0347
2014.02.20 12:33:57.851 0: HMLAN_Parse: HMLAN1 no ACK from 193A9A
2014.02.20 12:34:34.344 5: CUL_HM VentilControler.WZ_Btn1 m:221 ->222 t:1392896074.33237->1392896242.33237  M:1392896074.34161 :168
2014.02.20 12:34:34.352 0: HMLAN_Send:  HMLAN1 S:S4F1363B2 stat:  00 t:00000000 d:01 r:4F1363B2 m:DE A258 B4B4B4 1CE9F5 008A
2014.02.20 12:34:34.959 0: HMLAN_Parse: HMLAN1 R:R4F1363B2 stat:0008 t:00000000 d:FF r:7FFF     m:DE A258 B4B4B4 1CE9F5 008A
2014.02.20 12:34:34.963 0: HMLAN_Parse: HMLAN1 no ACK from 1CE9F5
2014.02.20 12:34:44.351 5: CUL_HM VentilControler.WZ_Btn1 virtualTC use fail-timer
2014.02.20 12:34:44.414 1: ----- VD-STATUS ----- VentilControler.WZ_Btn1 valveCtrl: miss_4
2014.02.20 12:35:15.853 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:89 ->90 t:1392896115.84134->1392896250.59134  M:1392896115.85072 :134.75
2014.02.20 12:35:15.860 0: HMLAN_Send:  HMLAN1 S:+1C4E25,00,01,
2014.02.20 12:35:15.863 0: HMLAN_Send:  HMLAN1 S:S4F1405D6 stat:  00 t:00000000 d:01 r:4F1405D6 m:5A A258 B5B5B5 1C4E25 0000
2014.02.20 12:35:16.043 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:12261EA7 d:FF r:FFB3     m:5A 8202 1C4E25 B5B5B5 010100004D
2014.02.20 12:35:16.424 0: HMLAN_Parse: HMLAN1 R:R4F1405D6 stat:0008 t:00000000 d:FF r:7FFF     m:5A A258 B5B5B5 1C4E25 0000
2014.02.20 12:35:16.426 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.20 12:35:24.569 5: CUL_HM VentilControler.SZ_Btn1 m:11 ->12 t:1392896124.55771->1392896283.80771  M:1392896124.56674 :159.25
2014.02.20 12:35:24.576 0: HMLAN_Send:  HMLAN1 S:+1DFC2F,00,01,
2014.02.20 12:35:24.578 0: HMLAN_Send:  HMLAN1 S:S4F1427E2 stat:  00 t:00000000 d:01 r:4F1427E2 m:0C A258 B2B2B2 1DFC2F 0011
2014.02.20 12:35:25.186 0: HMLAN_Parse: HMLAN1 R:R4F1427E2 stat:0008 t:00000000 d:FF r:7FFF     m:0C A258 B2B2B2 1DFC2F 0011
2014.02.20 12:35:25.188 0: HMLAN_Parse: HMLAN1 no ACK from 1DFC2F
2014.02.20 12:35:34.577 5: CUL_HM VentilControler.SZ_Btn1 virtualTC use fail-timer
2014.02.20 12:35:34.638 1: ----- VD-STATUS ----- VentilControler.SZ_Btn1 valveCtrl: miss_4


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Februar 2014, 14:46:43
Hi Frank,

hier muss das Problem liegen:
vor restart ist   
$hashVd->{msgCnt} = 95, $hashVd->{next} = xx458.55 => $nextTimer=180.75
12:24:18.575  CUL_HM B1B1B1 m:95  ->96 t:xx458.55->xx639.30  M:xx458.56 :180.75

nach dem restart muss 2 Schritte regechnet werden um das zeitfenster zu erreichen:
mit msgCnt+95 wird begonnen, bassierend auf next=xx458.55
step 1 muss zum gleichen ergebniss wie vorreboot kommen, $nextTimer=180.75
Step 2 wird angezeigt als 128.75 
=>$hashVd->{next} + step1 + step2 = nextF  =>768,05.
Der log zeigt aber 730.55 
12:27:47.996  CUL_HM B1B1B1 m:95  ->97 t:xx458.55->xx730.55  M:xx667.99 :128.75

Da alle Inputparameter identisch sind kann es nicht sein.
Wir haben aber noch
$hashVd->{idh} und $hashVd->{idl}

Ich gehe einmal davon aus, dass diese Werte nicht oder falsch initialisiert sind, da sonst keine Variablen mehr in der Berechnung vorkommen.
Sobald die Berechnung neu angestellt wurde ging sie schief. Koennte man jetzt loggen...
Im Update sollte ein set valvePos eigentlich das noetige tun...
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 15:00:13
hallo martin,

ZitatIch gehe einmal davon aus, dass diese Werte nicht oder falsch initialisiert sind, da sonst keine Variablen mehr in der Berechnung vorkommen.

Zitatbei meinen log zeilen init und reset hatte ich umgestellt und wollte $hash->{helper}{vd}{id} anzeigen lassen. bei init wirds angezeigt bei restart nicht?  ???

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Februar 2014, 15:36:41
Hi Frank,

habe es einmal nachgerechnet. Das genau ist der Fehler - die beiden Werte sind offensichtlich '0'.

Wie gesagt ist die Idee, dass vor dem ersten Timer ein valvePos kommando kommt, dann wird es initialisiert und alles sollte passen.
Das wird auch der Unterschied zu meinem Setup sein, da kommt ein solches Kommando im config vor, wie erwaehnt (ist noch historisch... egal).
Es ist also zu untersuchen, wie es sein kann, dass in deinem Setup der Timer vor einem valvePos aufgerufen wird.
Ein start kann erfolgen nach
- nach CUL_HM_updateConfig => hier wird ein entsprechendes Kommando aufgerufen - wichtig waere, dass das Reading "valvePosTC" schon gelesen ist => log an dieser Stelle einbauen
- durch ein external kommando - hier sollte alles ok sein-> kann aber nicht uunder falls ein, da sonst msgCnt = 0 waere
- durch eine timer, der beim restart nicht gestoppt wird - keine Ahnung, ob FHEM hier vorkehrungen trifft

Waere also gut, logs einzubauen im Update und im set. Es muss das set aus dem Update kommen und vorher kein Aufruf.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 16:07:50
hallo martin,

ich glaube ich kann dir nicht folgen.

ZitatWie gesagt ist die Idee, dass vor dem ersten Timer ein valvePos kommando kommt, dann wird es initialisiert und alles sollte passen.

den ersten timer initilisierst du doch aber bereits in cul_hm_config. und wie meine logeinträge gezeigt haben "gewinnt" dieser einsprung nach cul_hm_valveposupdt vor dem set einsprung. und hier scheint $hash->{helper}{vd}{id} nicht definiert zu sein. siehe meine logs heute morgen ohne verbose5.  ???

    elsif ($st eq "virtual" ) {#setup virtuals
      $hash->{helper}{role}{vrt} = 1;
      if (   $hash->{helper}{fkt}
          && $hash->{helper}{fkt} =~ m/^(vdCtrl|virtThSens)$/){
        my $vId = substr($id."01",0,8);
        $hash->{helper}{virtTC} = "00";
        $hash->{helper}{vd}{msgRed}= 0                                        if(!defined $hash->{helper}{vd}{msgRed});
        $hash->{helper}{vd}{msgCnt}= ReadingsVal($name,".msgCnt",0)           if(!defined $hash->{helper}{vd}{msgCnt});
        $hash->{helper}{vd}{next}  = ReadingsVal($name,".next",gettimeofday())if(!defined $hash->{helper}{vd}{next});

        CUL_HM_Set($hash,$name,"valvePos",ReadingsVal($name,"valvePosTC",""));
        CUL_HM_Set($hash,$name,"virtTemp",ReadingsVal($name,"temperature",""));
        CUL_HM_Set($hash,$name,"virtHum" ,ReadingsVal($name,"humidity",""));
        RemoveInternalTimer("valvePos:$vId");
        RemoveInternalTimer("valveTmr:$vId");
        CUL_HM_UpdtReadSingle($hash,"valveCtrl","restart",1) if (ReadingsVal($name,"valvePosTC",""));
Log 1,"##### restart ##### n:".$hash->{helper}{vd}{id}." c:".$hash->{helper}{vd}{msgCnt}." t:".int($hash->{helper}{vd}{next}*1000);
{vd}{msgCnt}." t:".int($hash->{helper}{vd}{next}*1000);
        InternalTimer(ReadingsVal($name,".next",1)
                     ,"CUL_HM_valvePosUpdt","valvePos:$vId",0);
      }
    }


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 20 Februar 2014, 19:03:27
Hi Frank,

habe gerade eingecheckt.
Das Problem war wie vermutet nicht bei den Zaehlern. Beim set im update war das Prozent des 40% schuld, dass es nicht ausgefuehrt und die fehlenden Variablen die Berechnung korumpierten. MsgCnt und Next waren ok, wie die Logs schon gezeigt hatten.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 21:50:49
hallo martin,


:) :) :)  ich bin ... begeistert   :) :) :)



hoffentlich kann ich die tage noch mit "restlos" ergänzen.  ;)

nach dem 1. shutdown, direkt nach einspielen der v5001, sind erst alle vd reannimiert worden. doch kurze zeit später sind 2 vd über miss2, ... , miss5, lost eingeschlafen! so ein verhalten hat es nach beseitigung des moulo256-bugs nicht mehr gegeben.
im moment hoffe ich, dass es am wechsel der version lag. vielleicht musste sich erstmal etwas "einlaufen". seit einem erneuten shutdown restart, mit 100% trefferquote im ersten versuch, gibt es in meinem "miss-plot" nichts mehr zu sehen (wie langweilig).

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 20 Februar 2014, 21:56:52
der timer in cul_hm_config sollte wegen dem neuen ".next" wohl noch angepasst werden.

        InternalTimer(ReadingsVal($name,".next",1)
                     ,"CUL_HM_valvePosUpdt","valvePos:$vId",0);


gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Februar 2014, 06:38:23
richtig, danke done
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Februar 2014, 10:53:39
hallo martin,

ein vd ist gerade eingeschlafen.

in zeile 7 wird msgctr nicht hochgezählt. dann stimmen die meetings nicht mehr

2014.02.21 09:37:05.011 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:48 ->49 t:1392971825.00149->1392971975.25149  M:1392971825.01123 :150.25
2014.02.21 09:37:05.019 0: HMLAN_Send:  HMLAN1 S:S539740BD stat:  00 t:00000000 d:01 r:539740BD m:31 A258 B5B5B5 1C4E25 000C
2014.02.21 09:37:05.202 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:020EFFD8 d:FF r:FFB1     m:31 8202 1C4E25 B5B5B5 01010A004D
2014.02.21 09:37:05.582 0: HMLAN_Parse: HMLAN1 R:R539740BD stat:0008 t:00000000 d:FF r:7FFF     m:31 A258 B5B5B5 1C4E25 000C
2014.02.21 09:37:05.585 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:39:35.271 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:49 ->50 t:1392971975.26123->1392972111.01122  M:1392971975.27105 :135.75

2014.02.21 09:41:51.010 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:50 ->50 t:1392972111.01122->1392972111.01122  M:1392972111.00978 :

2014.02.21 09:41:51.018 0: HMLAN_Send:  HMLAN1 S:S539B9DEC stat:  00 t:00000000 d:01 r:539B9DEC m:32 A258 B5B5B5 1C4E25 000C
2014.02.21 09:41:51.199 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:02135D2D d:FF r:FFB2     m:32 8202 1C4E25 B5B5B5 01010A004E
2014.02.21 09:41:51.580 0: HMLAN_Parse: HMLAN1 R:R539B9DEC stat:0008 t:00000000 d:FF r:7FFF     m:32 A258 B5B5B5 1C4E25 000C
2014.02.21 09:41:51.583 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:42:01.038 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:50 ->51 t:1392972111.00978->1392972232.25978  M:1392972121.03809 :121.25
2014.02.21 09:43:52.270 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:51 ->52 t:1392972232.25978->1392972403.25978  M:1392972232.26947 :171
2014.02.21 09:43:52.278 0: HMLAN_Send:  HMLAN1 S:S539D7797 stat:  00 t:00000000 d:01 r:539D7797 m:34 A258 B5B5B5 1C4E25 000C
2014.02.21 09:43:52.885 0: HMLAN_Parse: HMLAN1 R:R539D7797 stat:0008 t:00000000 d:FF r:7FFF     m:34 A258 B5B5B5 1C4E25 000C
2014.02.21 09:43:52.889 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:44:02.279 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.21 09:44:02.346 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_2
2014.02.21 09:46:43.270 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:52 ->53 t:1392972403.25978->1392972559.75978  M:1392972403.26953 :156.5
2014.02.21 09:46:43.277 0: HMLAN_Send:  HMLAN1 S:S53A0138F stat:  00 t:00000000 d:01 r:53A0138F m:35 A258 B5B5B5 1C4E25 000C
2014.02.21 09:46:43.885 0: HMLAN_Parse: HMLAN1 R:R53A0138F stat:0008 t:00000000 d:FF r:7FFF     m:35 A258 B5B5B5 1C4E25 000C
2014.02.21 09:46:43.888 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:46:53.280 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.21 09:46:53.347 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_3
2014.02.21 09:49:19.770 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:53 ->54 t:1392972559.75978->1392972701.75978  M:1392972559.7696 :142
2014.02.21 09:49:19.782 0: HMLAN_Send:  HMLAN1 S:S53A276E6 stat:  00 t:00000000 d:01 r:53A276E6 m:36 A258 B5B5B5 1C4E25 000C
2014.02.21 09:49:20.391 0: HMLAN_Parse: HMLAN1 R:R53A276E6 stat:0008 t:00000000 d:FF r:7FFF     m:36 A258 B5B5B5 1C4E25 000C
2014.02.21 09:49:20.394 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:49:29.781 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.21 09:49:29.874 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_4
2014.02.21 09:51:41.771 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:54 ->55 t:1392972701.75978->1392972829.50978  M:1392972701.77114 :127.75
2014.02.21 09:51:41.779 0: HMLAN_Send:  HMLAN1 S:S53A4A195 stat:  00 t:00000000 d:01 r:53A4A195 m:37 A258 B5B5B5 1C4E25 000C
2014.02.21 09:51:42.387 0: HMLAN_Parse: HMLAN1 R:R53A4A195 stat:0008 t:00000000 d:FF r:7FFF     m:37 A258 B5B5B5 1C4E25 000C
2014.02.21 09:51:42.389 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:51:51.781 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.21 09:51:51.853 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: miss_5
2014.02.21 09:51:53.455 1: Perfmon: possible freeze starting at 09:51:52, delay is 1.454
2014.02.21 09:53:49.520 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:55 ->56 t:1392972829.50978->1392973006.75978  M:1392972829.5201 :177.25
2014.02.21 09:53:49.528 0: HMLAN_Send:  HMLAN1 S:S53A6949A stat:  00 t:00000000 d:01 r:53A6949A m:38 A258 B5B5B5 1C4E25 000C
2014.02.21 09:53:50.136 0: HMLAN_Parse: HMLAN1 R:R53A6949A stat:0008 t:00000000 d:FF r:7FFF     m:38 A258 B5B5B5 1C4E25 000C
2014.02.21 09:53:50.139 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:53:59.530 5: CUL_HM VentilControler.AZ.Nord_Btn1 virtualTC use fail-timer
2014.02.21 09:53:59.598 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: lost
2014.02.21 09:56:46.771 5: CUL_HM VentilControler.AZ.Nord_Btn1 m:56 ->57 t:1392973006.75978->1392973169.50978  M:1392973006.77056 :162.75
2014.02.21 09:56:46.779 0: HMLAN_Send:  HMLAN1 S:S53A948FD stat:  00 t:00000000 d:01 r:53A948FD m:39 A258 B5B5B5 1C4E25 000C
2014.02.21 09:56:46.961 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:022108B7 d:FF r:FFB1     m:39 8202 1C4E25 B5B5B5 01011E004F
2014.02.21 09:56:47.296 0: HMLAN_Parse: HMLAN1 R:R53A948FD stat:0008 t:00000000 d:FF r:7FFF     m:39 A258 B5B5B5 1C4E25 000C
2014.02.21 09:56:47.299 0: HMLAN_Parse: HMLAN1 no ACK from 1C4E25
2014.02.21 09:56:47.305 0: HMLAN_Parse: HMLAN1 R:E1C4E25   stat:0000 t:02210A19 d:FF r:FFB1     m:39 8202 1C4E25 B5B5B5 01011E004E
2014.02.21 09:56:56.853 1: ----- VD-STATUS ----- VentilControler.AZ.Nord_Btn1 valveCtrl: ok
2014.02.21 09:56:58.176 1: Perfmon: possible freeze starting at 09:56:57, delay is 1.175


ist noch v5001 ohne den fix von heute morgen. sollte doch aber keinen einfluss auf diesen fehler haben?

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Februar 2014, 12:02:35
hallo martin,

ich vermute das liegt hier begraben:

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

es lief ja 12 std alles normal. nur 2 mal miss2 und weiter.
im normal fall ist $nextF ~ $tn. sollte nun durch rundungsfehler oder ähnliches nextF ein hauch grösser werden als tn, gibts ärger.

ich würde folgendes vorschlagen. dann berücksichtigt man zusätzlich bei restart die 10sec verzögerung und ist auf alle fälle auf der richtigen seite.

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

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Februar 2014, 12:37:25
Hi Frank,

ja, da hast du recht. Der Timer kommt 1,4ms zu frueh.
12sec ist daher uebertrieben - wir muessen nur die Genauigkeit der internen Berechnung beruecksichtigen - mit voreileng hatte ich nicht gerechnet. Ein Select hat nach meinen Messungen Ungenauigkeiten ab kleiner 10ms. Wenn wir also diese Tolleranz mit Faktor 5 (oder 10 wenn du willst) beruecksichtigen sollte alles laufen. Also nicht meht also 100ms, besser 50ms

Es koennte auf der anderen Seite Probleme geben, wenn du waehren dieser Tolleranz ein die Funktion aufrufst, also ein set kommt. daher das Fenster so klein als moeglich.
  while ($nextF < ($tn + 0.05)) {# calculate next time from last successful
Ansonsten hast du absolut recht.

p.s. das Problem tritt nicht auf, wenn FHEM verzeogert wird, sondern ausschliesslich wenn der timer zu schnell ist. Das ist mit sicherheit selten und nur in sehr kleinen Einheiten
Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Februar 2014, 13:00:14
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
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 21 Februar 2014, 14:38:52
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.
Titel: Antw:TC emulieren
Beitrag von: frank am 21 Februar 2014, 15:48:10
ZitatDie Abwaegung ist somit sehr einfach.

na dann.


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

gruss frank
Titel: Antw:TC emulieren
Beitrag von: frank am 22 Februar 2014, 15:21:42
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
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 22 Februar 2014, 16:37:37
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
Titel: Antw:TC emulieren
Beitrag 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.

Gruss Martin
Titel: Antw:TC emulieren
Beitrag von: frank am 23 Februar 2014, 23:07:54
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
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 24 Februar 2014, 10:05:27
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
Titel: Antw:TC emulieren
Beitrag von: frank am 24 Februar 2014, 10:44:01
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
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 24 Februar 2014, 10:54:27
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
Titel: Antw:TC emulieren
Beitrag von: frank am 24 Februar 2014, 11:30:12
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
Titel: Antw:TC emulieren
Beitrag von: frank am 07 Juni 2014, 17:55:44
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
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 08 Juni 2014, 14:53:15
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}++;
  }
Titel: Antw:TC emulieren
Beitrag von: frank am 08 Juni 2014, 19:04:12
hat leider noch gar nichts bewirkt. muss wohl an eine andere stelle. mal schauen.
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 10 Juni 2014, 13:11:15
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
Titel: Antw:TC emulieren
Beitrag von: frank am 27 Juni 2014, 17:30:59
hi martin,

ich habe gerade ein update force gemacht und wollte mal testen, doch fhem überrascht mich auf der startseite mit (auch nach shutdown restart):

ZitatError messages while initializing FHEM:
configfile: attribut param msgReduce:2 not valid for VentilControler.SZ_Btn1
attribut param msgReduce:2 not valid for VentilControler.Bad_Btn1
attribut param msgReduce:2 not valid for VentilControler.Kueche_Btn1
attribut param msgReduce:2 not valid for VentilControler.WZ_Btn1
attribut param msgReduce:2 not valid for VentilControler.AZ.Nord_Btn1

habe ich etwas übersehen, da ich eine weile nicht regelmässig dem forum folgen konnte?

edit: da msgloadest vom sendenden hmlan nun etwa den 3-fachen erwarteten traffic signalisiert, ist das feature wohl gecancelt!?!

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 27 Juni 2014, 19:52:01
nicht gecancelt...
kannst du einmal die definition des device und channel schicken?
Titel: Antw:TC emulieren
Beitrag von: frank am 27 Juni 2014, 20:05:53
bitte sehr...

define VentilControler.AZ.Nord CUL_HM B5B5B5
attr VentilControler.AZ.Nord IODev hmlan1
attr VentilControler.AZ.Nord IOgrp ccu:hmlan1
attr VentilControler.AZ.Nord autoReadReg 5_readMissing
attr VentilControler.AZ.Nord event-on-update-reading state
attr VentilControler.AZ.Nord expert 2_full
attr VentilControler.AZ.Nord group Heizung.AZ
attr VentilControler.AZ.Nord model virtual_1
attr VentilControler.AZ.Nord msgRepeat 0
attr VentilControler.AZ.Nord room 20_AZ
attr VentilControler.AZ.Nord subType virtual
attr VentilControler.AZ.Nord webCmd press short:press long
define VentilControler.AZ.Nord_Btn1 CUL_HM B5B5B501
attr VentilControler.AZ.Nord_Btn1 alias 30. Controler
attr VentilControler.AZ.Nord_Btn1 event-on-change-reading .*
attr VentilControler.AZ.Nord_Btn1 event-on-update-reading state,valvePosTC
attr VentilControler.AZ.Nord_Btn1 expert 1_on
attr VentilControler.AZ.Nord_Btn1 group Heizung.AZ
attr VentilControler.AZ.Nord_Btn1 model virtual_1
attr VentilControler.AZ.Nord_Btn1 param msgReduce:2
attr VentilControler.AZ.Nord_Btn1 peerIDs 1C4E2501,
attr VentilControler.AZ.Nord_Btn1 room 98_Ventile
attr VentilControler.AZ.Nord_Btn1 stateFormat Vsoll:valvePosTC, Status:state, Kommunikation:valveCtrl, ErrCtr:errorCtr, Modus:msgReduce
attr VentilControler.AZ.Nord_Btn1 userReadings msgReduce {AttrVal($name,"param","???")}
attr VentilControler.AZ.Nord_Btn1 webCmd press short:press long
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 28 Juni 2014, 07:53:21
wenn ich das eingeben kommt kein Fehler.
kommt das beim rebooten?
kannst du den parameter manuell setzen?
Titel: Antw:TC emulieren
Beitrag von: frank am 28 Juni 2014, 08:36:31
also manuelle eingabe funktioniert ohne meckern. auch die userreadings
attr VentilControler.AZ.Nord_Btn1 userReadings msgReduce {AttrVal($name,"param","???")}
haben anschliessend wieder einen wert, vorher "???". (drei fragezeichen)

wie gesagt, seit gestern nach update force.
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 28 Juni 2014, 20:28:28
Es könnte nur passieren, wenn die Entity nicht "virtuell" ist. Also "subType" noch nicht gesetzt wurde.
Das ist es wohl... die Reihenfolge im Config
Titel: Antw:TC emulieren
Beitrag von: frank am 29 Juni 2014, 20:43:14
Zitat von: martinp876 am 28 Juni 2014, 20:28:28
Es könnte nur passieren, wenn die Entity nicht "virtuell" ist. Also "subType" noch nicht gesetzt wurde.
Das ist es wohl... die Reihenfolge im Config
komisch. wenn es an der reihenfolge liegt, sollte es bei dir auch nicht funktionieren, meine ich.

nach manueller eingabe hatte es bei mir ja funktioniert. gerade mal erneut shutdown restart gemacht => fehler erneut da.

welche reihenfolge meinst du genau?
weil subType=virtual beim device kommt ja vor param=msgReduce:2 beim channel.

gruss frank
Titel: Antw:TC emulieren
Beitrag von: martinp876 am 30 Juni 2014, 07:44:02
habe es repariert
Titel: Antw:TC emulieren
Beitrag von: frank am 03 Juli 2014, 11:45:12
Zitat von: martinp876 am 30 Juni 2014, 07:44:02
habe es repariert
danke. attr param msgReduce funktioniert jetzt wieder.

nun gibt es immer noch das problem, dass es fehler miss_1 gefolgt von miss_3 gibt. bei einstellung msgReduce:2. ich muss erst noch auf geeignete logs warten.

gruss frank