FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: stromer-12 am 05 August 2014, 11:54:30

Titel: KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 05 August 2014, 11:54:30
Hallo,

nach den letzten Regenfällen ist bei mir das Wasser im Brunnen stark angestiegen. Sobald der Pegel im Brunnen einen Wert übersteigt werden negative Werte ausgegeben und die Umrechnung findet nicht statt.

Was kann ich tun?
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: wibi_ am 05 August 2014, 15:24:05
Ist bei mir auch so. Den Sensor soweit rausziehen, bis keine negativen Werte mehr gemeldet werden.
Ich nutze die negativen Werte allerdings, um "Alarm" zu geben, dass die Zisterne langsam überläuft.

Gruß
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 05 August 2014, 20:36:22
könnt ihr dazu logs schicken - mit beschreibung? Evtl stimmt der Wertebereich des Readings nicht...
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 05 August 2014, 21:50:48
Hier zB. hatte es sehr geregnet.

2014-08-03 01:15:07: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 355
2014-08-03 01:46:03: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 355
2014-08-03 02:16:43: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 359
2014-08-03 02:47:46: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 362
2014-08-03 03:18:33: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 377
2014-08-03 03:49:37: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -109
2014-08-03 04:20:25: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -109
2014-08-03 04:51:28: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -112
2014-08-03 05:22:23: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -122
2014-08-03 05:53:02: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 383
2014-08-03 06:23:41: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 380
2014-08-03 06:54:38: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 376


2014-08-03 20:00:18: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 361
2014-08-03 20:31:06: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 362
2014-08-03 21:01:45: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 373
2014-08-03 21:32:40: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -120
2014-08-03 22:03:19: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -118
2014-08-03 22:34:15: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -121
2014-08-03 23:04:55: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 359
2014-08-03 23:35:58: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 368
2014-08-04 00:06:45: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 372
2014-08-04 00:37:49: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 373
2014-08-04 01:08:37: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 373
2014-08-04 01:39:41: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 374
2014-08-04 02:10:36: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 380
2014-08-04 02:41:15: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -104
2014-08-04 03:12:11: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -106
2014-08-04 03:42:51: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -106
2014-08-04 04:13:46: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -113
2014-08-04 04:44:33: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -119
2014-08-04 05:15:36: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -122
2014-08-04 05:46:24: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -124
2014-08-04 06:17:28: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -126
2014-08-04 06:48:15: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -126
2014-08-04 07:18:54: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -127
2014-08-04 07:49:49: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -127
2014-08-04 08:20:29: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: -127
2014-08-04 08:51:24: CUL_HM_KFM100_Sensor_1D9A46, CUL_HM, rawValue: 379


Das Wasser hat im Brunnen einen Pegel meist von 355 was ca. 2,20m entspricht.
Bei 383 ist der letzte positive Wert gewesen, danach geht es mit -127...-100 weiter.
Die -100 müssten dann ca. 3m sein.

Bei lastMsg stand was von d:1159198141020000FF43 und rawValue zeigte -127
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 07 August 2014, 19:37:26
das sind seltsame werte. Die Berechnung habe ich nie verstanden.
Kannst du einmal die rohmessages dazu aufnehmen?
Gerne eine lange Messreihe. Dazu die Definition des Gefäßes, also die Register

FF43 sollte -127 anzeigen

wenn 355=2,2m sind, 384 dann 3m folgt: 29 = 80cm.
Hast du ein nicht-homogenes Gefäss definiert?
-100 bekommt man mit E443
355 muss 1D42 sein
Einige Bits scheinen nicht genutzt zu sein - es gibt also Varianten.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 07 August 2014, 22:42:02
Hier mal das List vom CUL_HM_KFM100_Sensor_1D9A46
Internals:
   DEF        1D9A46
   IODev      hmlan_1
   LASTInputDev hmlan_1
   MSGCNT     274
   NAME       CUL_HM_KFM100_Sensor_1D9A46
   NR         57
   STATE      227.9 cm
   TYPE       CUL_HM
   hmlan_1_MSGCNT 274
   hmlan_1_RAWMSG E1D9A46,0000,7581E228,FF,FFB8,F3A0531D9A46115919814B0200801A44
   hmlan_1_RSSI -72
   hmlan_1_TIME 2014-08-07 22:04:47
   lastMsg    No:F3 - t:53 s:1D9A46 d:115919 814B0200801A44
   protCmdDel 4
   protLastRcv 2014-08-07 22:04:47
   protResnd  6 last_at:2014-08-06 07:36:59
   protResndFail 2 last_at:2014-08-06 07:37:03
   protSnd    2 last_at:2014-08-06 07:36:44
   protState  CMDs_done_Errors:1
   rssi_at_hmlan_1 avg:-76.78 min:-83 max:-72 lst:-72 cnt:274
   CHANGETIME:
   Helper:
     Dblog:
       Activity:
         Mydblog:
           TIME       1407303376.35981
           VALUE      alive
       Sequence:
         Mydblog:
           TIME       1407441886.8559
           VALUE      11
       Content:
         Mydblog:
           TIME       1407441886.8559
           VALUE      227.9 cm
       Rawvalue:
         Mydblog:
           TIME       1407441886.8559
           VALUE      358
       State:
         Mydblog:
           TIME       1407441886.8559
           VALUE      227.9 cm
   Readings:
     2014-08-06 07:36:16   Activity        alive
     2014-06-08 13:41:40   D-serialNr      JAA0166620
     2014-08-06 07:59:55   RegL_00:
     2014-08-07 22:04:46   Sequence        11
     2014-08-07 22:04:46   content         227.9 cm
     2014-08-07 22:04:46   rawValue        358
     2014-08-04 09:22:03   rawValueMax     383
     2014-08-04 08:20:29   rawValueMin     -127
     2014-08-07 22:04:46   state           227.9 cm
   Helper:
     cSnd       017139021D9A4600040000000000
     getCfgList all
     getCfgListNo ,3
     mId        0047
     rxType     1
     Io:
       newChn     +1D9A46,00,01,00
       nextSend   1407441887.37667
       prefIO
       rxt        0
       vccu       hmlan_ccu
       p:
         1D9A46
         00
         01
         00
     Mrssi:
       mNo        F3
       Io:
         hmlan_1    -70
     Prt:
       bErr       0
       sProc      0
     Q:
       qReqConf
       qReqStat
     Role:
       chn        1
       dev        1
     Rssi:
       At_hmlan_1:
         avg        -76.7810218978102
         cnt        274
         lst        -72
         max        -72
         min        -83
     Shadowreg:
Attributes:
   DbLogExclude [DR]-.*
   IODev      hmlan_1
   IOgrp      hmlan_ccu
   actCycle   001:10
   actStatus  alive
   alias      Brunnen Pegelstand
   autoReadReg 4_reqStatus
   devStateIcon {my $V=int(ReadingsVal("$name","rawValue",0)*1);;my $M=int(ReadingsVal("$name","rawValueMax",350)*1);;my $c=ReadingsVal("$name","content",0);;'<div style="width:'.$M.'px;;height:20px;;background-color:grey"><div style="width:'.$V.'px;;height:20px;;background-color:blue">'.$V.' (max. '.$M.')/ '.$c.'</div>'}
   expert     2_full
   model      KFM-Sensor
   rawToReadable 1:0 10:30 240:110 297:150 337:190 383:273
   room       8_2_Brunnen,9_8_ESA,9_8_HM
   serialNr   JAA0166620
   subType    KFM100
   unit       cm
   userReadings rawValueMin:rawValue {my $r=ReadingsVal($name,"rawValue",360);;my $rl=ReadingsVal($name,"rawValueMin",$r);;if($r<=$rl){$r}else{}}, rawValueMax:rawValue {my $r=ReadingsVal($name,"rawValue",0);;my $rh=ReadingsVal($name,"rawValueMax",$r);;if($r>=$rh){$r}else{}}


Gefäß habe ich keines definiert.
355 ist 1D44.

Warum bringt er nach 3/4 der Füllhöhe negative Raw Werte.
Das Grundwasser ist jetzt wieder fast auf Normalpegel.
Um die Messreihe zu machen müsste ich den Sensor tiefer hängen.
Messreihe wird erst nächste Woche, da ich bis Montag weg bin.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 08 August 2014, 08:27:04
die errechnung der Werte ist seltsam - das ist nicht eQ3 Stil. Schon möglich, dass es korrekt ist. Es scheint kein eQ3 eigenes Device zu sein....
Wenn es mehr Werte gibt kann man versuchen, es zu ergründen.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 05 September 2014, 14:20:23
Pegelmessung habe ich noch nicht gemacht, aber die Low Batt Meldung müsste ich gefunden haben:

No:00 - t:53 s:1D9A46 d:000000 01420200002844
-----------------------------------^----------------  batterie ok
No:EA - t:53 s:1D9A46 d:000000 81420200C02944
-----------------------------------^----------------  batterie low
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 06 September 2014, 08:44:54
ist eingebaut
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 06 September 2014, 19:57:07
So, Messungen soweit durch, Pegel steigt von erster zu letzter Zeile an.

No:80 - t:53 s:1D9A46 d:000000 014E0200300245   126
No:DA - t:53 s:1D9A46 d:000000 014E0200100045   128

No:3F - t:53 s:1D9A46 d:000000 0147020000FF44   129
No:08 - t:53 s:1D9A46 d:000000 014A020000FE44   130
No:F2 - t:53 s:1D9A46 d:000000 0146020000FD44   131
No:6B - t:53 s:1D9A46 d:000000 0149020000FC44   132
.....
No:4D - t:53 s:1D9A46 d:000000 014B0200C00244   382
No:7E - t:53 s:1D9A46 d:000000 014F0200800144   383
No:A1 - t:53 s:1D9A46 d:000000 01450200800044   384

hier springt er auf negative Werte

No:EB - t:53 s:1D9A46 d:000000 0144020000FF43   -127   (385)
No:63 - t:53 s:1D9A46 d:000000 0147020000FE43   -126   (386)
No:62 - t:53 s:1D9A46 d:000000 0146020000FD43   -125   (387)
No:61 - t:53 s:1D9A46 d:000000 0145020000FB43   -123   (389)

Im Programm habe ich eine Auswertung 43/44 gesehen, die 45 wird da aber wie 43 betrachtet.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 07 September 2014, 14:53:40
Ich habe bei mir jetzt mal folgendes geändert:

my $v = 128-$k_v2;                  # FIXME: calibrate
$v += 256 if(!($k_v3 & 1));

in
my $v = 128-$k_v2;                  # FIXME: calibrate
$v += 256 if(($k_v3 & 0x03) == 0);  # $k_v3 = 44 Pegel ca. 0.4m < $v < 2.5m
$v += 512 if(($k_v3 & 0x03) == 3);  # $k_v3 = 43 Pegel ca. 2.5m < $v


Damit zeigt er mir die kompletten 3m an.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 07 September 2014, 20:00:01
Es scheint sich um einen 11 oder 12 bit wert zu handel, der in die entgegengesetzte Richtung läuft.

FF 43 ist dann 3ff.
der wert, der sich ergibt ist
$v = 1408 - (($k_v3 & 0x07)<<8 + $k_v2)
oder
$v = 1408 - (($k_v3 & 0x07)*256 + $k_v2)

Klappt das? Ist besser als die ganzen ifs
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 07 September 2014, 22:31:19
Zitat von: martinp876 am 07 September 2014, 20:00:01
Es scheint sich um einen 11 oder 12 bit wert zu handel, der in die entgegengesetzte Richtung läuft.

FF 43 ist dann 3ff.
der wert, der sich ergibt ist
$v = 1408 - (($k_v3 & 0x07)*256 + $k_v2)

Klappt das? Ist besser als die ganzen ifs

Mit mehr als 8bit habe ich es noch nicht betrachtet. Mit mehreren Werten durchgerechnet.
Und weniger if Bedingungen sind besser.

Beim durchgehen der beobachteten Werte könnten es sogar noch mehr als 11bit sein.
$k_v1 könnte noch niederwertigere Bits enthalten.

01450200800044   384
01460200000144
014F0200800144   383
014A0200000244
014B0200C00244   382
01450200400344   381
014F0200400444
014B0200C00444   380
014D0200800544   379
014F0200000644
014A0200800644   378
014A0200C00744   377
01410200400844   376
01420200000944
014F0200800944   375
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 07 September 2014, 23:14:02
Zitat von: martinp876 am 07 September 2014, 20:00:01
$v = 1408 - (($k_v3 & 0x07)<<8 + $k_v2)
hier braucht es noch eine Klammer

$v = 1408 - ((($k_v3 & 0x07)<<8) + $k_v2)
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: martinp876 am 08 September 2014, 20:31:23
eingebaut
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: fiedel am 11 September 2014, 11:16:43
Noch ein kleiner Hinweis zu einem Problem was hier her passt:

Ich habe mich lange Zeit gewundert, warum mein Sensor (bzw. das HM- Modul) mal den Wert "content" liefert und mal nicht.

Jetzt habe ich angeregt durch diesen Thread mal den Code im Modul untersucht und Folgendes gefunden:
Gibt man bei "attr rawToReadable" als höchsten oder niedrigsten raw-Wert einen Wert an, der dann in der Praxis gelegentlich unter- oder überschritten wird, reicht der Code (Vergleicher auf Bereich von - bis) den Wert nicht mehr weiter.

Verhindern lässt sich das z.B. in dem man zuerst die realen Werte misst/berechnet und dann per Dreisatz zwei Werte ermittelt, die etwas unter- und oberhalb der zuvor ermittelten Min/Max- Werte liegen. Trägt man diese nun in "attr rawToReadable" ein, wird der Füllstand immer noch richtig berechnet, aber die "Endlagen" werden nicht mehr erreicht und "content" somit immer geliefert.

Dazu habe ich diesen Rechner (http://www.ehtam-mathe.de/Rechner/dreisatz.htm) benutzt. Beispiel : mein Max- Wertepaar: 330:8.16 -> Berechnung eines "Headroom": 350:8.65

Gruß

Frank
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: stromer-12 am 27 November 2015, 18:14:11
So, diese Woche kam meine 1. reguläre Low Bat-meldung vom Sensor. Dieser Batteriesatz hat 15Monate gehalten.
Titel: Antw:KFM-Sensor zeigt negative rawValue
Beitrag von: fiedel am 28 November 2015, 08:52:01
Haste wieder den 50er Satz für 1 Euro bei Tedi gekauft, was!?  ;D Bei mir kommen in Sensoren die ich einfach vergessen können möchte immer die Lithium von Energizer rein. Das läuft dann über viele Jahre durch.