Hallo,
leider funktioniert bei meinen threeStateSensoren von Homematic (HM-Sec-SC-2) das event-min-interval nicht.
Es kommen immer nur events wenn der Kontakt betätigt wird.
Weiss jemand woran das liegen kann?
Internals:
DEF 24D132
HMLAN1_MSGCNT 48
HMLAN1_RAWMSG E24D132,0040,0B8D6964,04,FFCD,80A24124D132257868013BC8
HMLAN1_RSSI -51
HMLAN1_TIME 2015-11-29 16:32:10
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 48
NAME Sensor_Badtuer
NR 187
NTFY_ORDER 50-Sensor_Badtuer
STATE open
TYPE CUL_HM
lastMsg No:80 - t:41 s:24D132 d:257868 013BC8
peerList Heizkoerper_Bad_WindowRec,
protEvt_AESCom-ok 12 last_at:2015-11-29 16:32:10
protLastRcv 2015-11-29 16:32:10
protSnd 12 last_at:2015-11-29 16:32:10
protState CMDs_done
rssi_at_HMLAN1 avg:-48.37 min:-57 max:-45 lst:-51 cnt:24
Readings:
2015-11-29 14:30:43 Activity alive
2015-10-14 08:11:50 CommandAccepted yes
2015-10-14 08:07:05 D-firmware 2.2
2015-10-14 08:07:05 D-serialNr KEQ0951296
2015-10-14 08:11:50 PairedTo 0x257868
2015-10-14 08:12:01 R-Heizkoerper_Bad_WindowRec-expectAES on
2015-10-14 08:12:01 R-Heizkoerper_Bad_WindowRec-peerNeedsBurst on
2015-07-11 12:42:42 R-cyclicInfoMsg on
2015-07-11 12:42:43 R-eventDlyTime 0 s
2015-07-11 12:42:42 R-pairCentral 0x257868
2015-07-11 12:42:42 R-sabotageMsg on
2015-07-11 12:42:43 R-sign on
2015-10-14 08:11:50 RegL_00: 02:01 09:01 0A:25 0B:78 0C:68 10:01 14:06 00:00
2015-10-14 08:11:51 RegL_01: 08:01 20:60 21:00 22:64 30:06 00:00
2015-10-14 08:12:01 RegL_04:Heizkoerper_Bad_WindowRec 01:81 00:00
2015-11-29 16:32:10 aesCommToDev ok
2015-10-14 08:11:49 aesKeyNbr 08
2015-11-28 06:48:49 alive yes
2015-11-29 16:32:10 battery ok
2015-11-29 16:32:10 contact open (to HMLAN1)
2015-11-29 14:30:43 peerList Heizkoerper_Bad_WindowRec,
2015-11-28 06:48:49 recentStateType info
2015-11-28 06:48:49 sabotageError off
2015-11-29 16:32:10 state open
2015-11-29 16:32:10 trigDst_257868 noConfig
2015-11-29 16:32:10 trig_aes_HMLAN1 ok:59
2015-11-29 16:32:10 trigger_cnt 59
Helper:
HM_CMDNR 128
mId 00B1
rxType 28
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +24D132,01,04,02
nextSend 1448811129.54812
prefIO
rxt 2
vccu
p:
24D132
01
04
02
Mrssi:
mNo 80
Io:
HMLAN1 -49
Prt:
bErr 0
sProc 0
sleeping 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rpt:
IO HMLAN1
flg A
ts 1448811130.49441
ack:
HASH(0x188b8d0)
80800225786824D1320101C800
Rssi:
At_hmlan1:
avg -48.375
cnt 24
lst -51
max -45
min -57
Shadowreg:
Role:
Attributes:
IODev HMLAN1
actCycle 028:00
actStatus alive
aesCommReq 1
autoReadReg 4_reqStatus
devStateIcon open:fts_door_open@red closed:fts_door@green .*:fts_door@orange
event-min-interval .*:900
event-on-change-reading .*
expert 2_full
firmware 2.2
fp_Grundriss 359,1037,0,,
model HM-SEC-SC-2
peerIDs 00000000,30971E03,
room Bad
serialNr KEQ0951296
subType threeStateSensor
natürlich funktionieren die attribute. wann soll denn sonst ein event kommen?
fhem 'erfindet' keine events. die beiden attribute beeinflussen nur wie die events weiterverarbeitet werden wenn dein device welche liefert. wenn das device nichts sendet passiert auch nichts.
gruss
andre
interessant ist nur dabei dass bei dem 'attribut event-min-intervall' auch ein event gesendet werden soll wenn das device keinen event sendet !!
und dieses passiert eben nicht ...
bei anderen devices funktioniert dies, aber eben nur bei diesem einen Devicetyp nicht.
Zitatbei anderen devices funktioniert dies,
kann nicht sein. liefere beweise.
hier ein Auszug aus der connadref:
Zitat
event-min-interval
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.
hier funktioniert es :
Internals:
CHANGED
NAME USV
NR 17
SMBus_exists 1
STATE RPI / 4.12 V (Bat) / 5.02 V (PRI)/ 33 °C
TYPE UPSPICO
Readings:
2015-11-29 17:50:36 BatTemp 33
2015-11-29 17:50:36 ErrorCode 00000000
2015-11-29 17:50:36 FanSpeed 0
2015-11-29 17:50:36 FanTemp e8
2015-11-29 17:50:36 LED_Blue 0
2015-11-29 17:50:36 LED_Red 0
2015-11-29 17:50:36 PowerSource RPI
2015-11-29 17:50:36 VoltageBAT 4.12
2015-11-29 17:50:36 VoltageRPI 5.02
2015-11-29 17:50:36 logging1 1 4.12 5.02 33
2015-11-29 17:46:32 powerstatus_last RPI
Attributes:
event-min-interval .*:900
event-on-change-reading Power.*,Voltage.*:0.4,BatTemp:5,Error.*
poll_interval 5
room Geräte Status,System
stateFormat PowerSource / VoltageBAT V (Bat) / VoltageRPI V (PRI)/ BatTemp °C
fhem erzeugt oder erfindet keine events. wenn das device nichts sendet gibt es keine events. niemals.
die beiden attribute beeinflussen nur was mit den events passiert die vom device kommen. welche ausgefiltert und welche weitergeleitet werden. wenn von device nichts kommt wird auch nichts weitergeleitet.
wenn du bei deiner usv das attribut löschst wirst du sehen das sie minütlich ein event erzeugt. mit gesetztem attribut wird dann so ausgefiltert das nur noch alle 15 minuten eines durchgelassen wird. wenn du deine usv abziehst kommen auch keine events mehr. auch nicht alle 15 minuten.
stimmt,
und ich dachte immer dass event-min-interval auch dann einen event erzeugt wenn das device mal keinen event sendet ....
dann muss ich das irgendwie nachbilden damit die plotabrisse minimiert werden ...
hier ,
http://forum.fhem.de/index.php/topic,29970.msg226690.html#msg226690
wird es aber irgndwie anders erklärt .... ?????
oder versteh ich das völlig falsch ?
Schau dir mal LogProxy an
Habe es jetzt anders gelöst und lass über eine Funktion aller 15 minuten prüft ob das reading was ich plotten möchte länger als 15 Minuten keine Änderung erfahren hat.
Wenn ja wird dann ein Logeintrag mit "trigger device reading" erzeugt.
99_myUtils.pm
sub set_log_hm($$){
my ($device,$reading)=@_;
my $zeit=900; #aktualisierungszeit
my $logentry = ReadingsVal($device,$reading,"addLog: invalid reading");
my $last_time = ReadingsTimestamp($device,$reading,'1970-01-01 01:00:01');
$last_time = time_str2num($last_time);
if (time() - $last_time > $zeit) { # 900 secunden = 15Minuten
# wenn aenderungszeit laenger als 15 minten her ist dann einen trigger auf das Geraet ausloesen um einen Logeintrag zu bekommen
if ($reading =~ m,state,i) {
fhem "trigger $device $logentry << addLog";
} else {
fhem "trigger $device $reading: $logentry << addLog";
}
}
}
at device:
define set_log_hm_at at +*00:15:00 {
set_log_hm('Sensor_Badtuer','state');
set_log_hm('Sensor_Wohnungstuer','state');
}
Vielleicht hilf es jemanden ...
siehe auch hier: http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden (http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden).
gruss
andre