Jeelink mit LaCrosse => PERL WARNING

Begonnen von frober, 24 Oktober 2014, 09:45:42

Vorheriges Thema - Nächstes Thema

frober

Hallo an alle,

Ich habe einen Jeelink Clone mit dem Allinone-Sketch von Ulli in Fhem eingerichtet.
Beim Anlernen der TX29DHT-IT sind mir ein paar Fehler unterlaufen: Falsche ID, Batterien mehrmals entfernt.
Jetzt läuft alles soweit, bis auf folgende Perl Warnung die mir sekundenweise das Log zu müllt:

2014.10.23 15:08:48 1: PERL WARNING: Argument "1C" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
2014.10.23 15:13:39 1: PERL WARNING: Argument "2D" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
2014.10.23 15:13:39 1: PERL WARNING: Argument "1C" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
2014.10.23 15:13:47 1: PERL WARNING: Argument "2D" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
2014.10.23 15:18:34 1: PERL WARNING: Argument "1C" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
2014.10.23 15:18:39 1: PERL WARNING: Argument "2D" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.


Die 5 Min Pause kommen daher, dass ich automatisch zwischen Lacrosse (FSK) alle 5 Min für 10 Sek. und FS20 (OOK) umschalte.

Wie bekomme ich die Meldungen wieder weg?

Gruß und danke
Frober
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

justme1968

welche version des sketch ist das? schalte mal bitte verbose 5 ein. die nachrichten die ankommen sollten dezimal zahlen enthalten und keine hex zahlen.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frober

2014.10.24 19:28:44 5: JeeLink/RAW: /F019B447657
2014.10.24 19:28:44 5: Jeelink868 dispatch OK 9 2D 1 4 52 87
2014.10.24 19:28:44 1: PERL WARNING: Argument "2D" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.
.
.
.
2014.10.24 19:28:46 5: JeeLink/RAW: /F019704996A
2014.10.24 19:28:46 5: Jeelink868 dispatch OK 9 1C 1 4 75 106
2014.10.24 19:28:46 1: PERL WARNING: Argument "1C" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.


Die Version müsste das aktuelle HEX von Seite 1des Threads "Allinone...." sein.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

justme1968

das modul erwartet alle werte als int. wenn der sketch hex sendet ist hier das problem.

nimm mal bitte den LaCrosse sketch aus dem firmware verzeichniss.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frober

Danke Andre,
komme aber erst morgen dazu.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#5
Hallo Andre,

ich habe jetzt alles getestet:

Logdaten vom OllinOne-Sketch:

2014.10.24 19:28:33 5: JeeLink/RAW: /F019906083A
2014.10.24 19:28:33 5: Jeelink868 dispatch OK 9 24 1 4 184 58

2014.10.24 19:28:33 5: JeeLink/RAW: /F019C05024D
2014.10.24 19:28:33 5: Jeelink868 dispatch OK 9 30 1 4 78 77

2014.10.24 19:28:35 5: JeeLink/RAW: /F019B447657
2014.10.24 19:28:35 5: Jeelink868 dispatch OK 9 2D 1 4 52 87
2014.10.24 19:28:35 1: PERL WARNING: Argument "2D" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.

2014.10.24 19:28:36 5: JeeLink/RAW: /F0190C5004F
2014.10.24 19:28:36 5: Jeelink868 dispatch OK 9 03 1 4 76 79

2014.10.24 19:28:38 5: JeeLink/RAW: /F019704996A
2014.10.24 19:28:38 5: Jeelink868 dispatch OK 9 1C 1 4 75 106
2014.10.24 19:28:38 1: PERL WARNING: Argument "1C" isn't numeric in sprintf at ./FHEM/36_LaCrosse.pm line 173.


Definiert sind folgende Addr.: 03; 1E; 18; 01; 02


Logdaten von Lacrosse-Sketch:

2014.10.25 12:19:19 5: JeeLink/RAW: /OK 9 28 1 4 114 106
2014.10.25 12:19:19 5: Jeelink433 dispatch OK 9 28 1 4 114 106
2014.10.25 12:19:19 3: LaCrosse: Unknown device 1C, please define it

2014.10.25 12:19:20 5: JeeLink/RAW: /OK 9 48 1 4 99 73
2014.10.25 12:19:20 5: Jeelink433 dispatch OK 9 48 1 4 99 73
2014.10.25 12:19:20 3: LaCrosse: Unknown device 30, please define it

2014.10.25 12:19:21 5: JeeLink/RAW: /OK 9 36 1 4 181 61
2014.10.25 12:19:21 5: Jeelink433 dispatch OK 9 36 1 4 181 61
2014.10.25 12:19:21 3: LaCrosse: Unknown device 24, please define it

2014.10.25 12:19:22 5: JeeLink/RAW: /OK 9 3 1 4 98 81
2014.10.25 12:19:22 5: Jeelink433 dispatch OK 9 3 1 4 98 81

2014.10.25 12:19:28 5: JeeLink/RAW: /OK 9 45 1 4 138 74
2014.10.25 12:19:28 5: Jeelink433 dispatch OK 9 45 1 4 138 74
2014.10.25 12:19:28 3: LaCrosse: Unknown device 2D, please define it


Ich habe 4 TX29DHT und empfange einen von Nachbar.
Was ich nicht verstehe die beiden Sketches zeigen unterschiedliche Addr. der Sensoren an und genau die Addr. vom Perl Warning beim Allinone möchte der Lacrosse definiert haben.

Laut Event Monitor werden trotz Perl Warning alle Sensoren bei Allinone empfangen (Ausnahme: Nachbar ist ignore 1):


2014-10-25 12:40:08 LaCrosse TH_Aussen battery: ok
2014-10-25 12:40:09 LaCrosse Garage battery: ok
2014-10-25 12:40:11 LaCrosse Werkstatt battery: ok
2014-10-25 12:40:13 LaCrosse Garage temperature: 12.7
2014-10-25 12:40:13 LaCrosse Garage humidity: 80
2014-10-25 12:40:13 LaCrosse Garage T: 12.7 H: 80
2014-10-25 12:40:13 LaCrosse Garage battery: ok
2014-10-25 12:40:15 LaCrosse Bad battery: ok
2014-10-25 12:40:17 LaCrosse TH_Aussen temperature: 16.2
2014-10-25 12:40:17 LaCrosse TH_Aussen humidity: 72
2014-10-25 12:40:17 LaCrosse TH_Aussen T: 16.2 H: 72
2014-10-25 12:40:17 LaCrosse TH_Aussen battery: ok
2014-10-25 12:40:20 LaCrosse Werkstatt temperature: 12.5
2014-10-25 12:40:20 LaCrosse Werkstatt humidity: 73
2014-10-25 12:40:20 LaCrosse Werkstatt T: 12.5 H: 73
2014-10-25 12:40:20 LaCrosse Werkstatt battery: ok
2014-10-25 12:40:24 LaCrosse Bad temperature: 20.5
2014-10-25 12:40:24 LaCrosse Bad humidity: 61
2014-10-25 12:40:24 LaCrosse Bad T: 20.5 H: 61
2014-10-25 12:40:24 LaCrosse Bad battery: ok


Gruss
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

justme1968

#6
es gibt/gab probleme mit der adressberechnung. und das lässt sich nicht mehr rückwärts kompatibel reparieren. zusätzlich scheinen die beiden sketches auch noch ein unterschiedliches ausgabe format zu verwenden. der lacrosse sketch gibt nur integer daten aus und das modul erwartet integer daten. auch hier kann man es nicht wirklich rückwärts kompatibel fixen.

da beide sketches unterschiedliche formate verwenden passen die adressen der devices die du mit dem all in one sketch erzeugt hast nicht zu den adressen die der lacrosse sketch erzeugen würde. du musst also die adressen der fhem devices anpassen. dabei kann dir jeweils ein set replaceBatteryForSec helfen.

ich glaube der lacrosse sketch ist der weiter verbreitete und mit mehr features. die hex daten im all in one sketch sind auf jeden fall nicht das was das modul erwartet. hier müsste nachgebessert werden. und das hätte auch hier geänderte adressen zur folge.

ich könnte höchstens die warnung vermeiden. die adressen wären aber intern z.t. falsch und es könnte konflikte geben. den sketch zu reparieren und die devices adressen zu ändern ist glaube ich besser.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frober

Danke für die Erklärung.

Ich habe mich für den Allinone Sketch entschieden, da ich auch FS20 nutze, d.h. ich schalte zeitlich zwischen OOK und FSK hin und her.
Ich werde mich mal an Ulli wenden, er wird mir auch die FS20 Sendefunktion integrieren.

Gruss
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Ich habe nochmals weitergesucht und bin auf folgendes gestossen:

Im 36_JeeLink.pm wir das Ausgabeformat des Allinone in das Standardformat des LaCrosse umgewandelt. Dabei wird die Addr. in Hex gewandelt.
Im 36_LaCrosse.pm wird die Addr. nochmals in Hex gewandelt. Daher die Probleme.

Im 36_JeeLink.pm müsste das doch einfach zu korrigieren zu sein. Anstatt in Hex wandelt man in Integer.

Leider sind meine Perl Kenntnisse noch am Anfang. Aber das Modul stammt ja eh von dir.

Wäre super wenn man das dauerhaft anpassen könnte.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

justme1968

ah. ok. den teil hatte mir ulli als patch geschickt.

ersetz mal die zeile 762 durch die folgende version:$addr = ((hex(substr($dmsg,3,2)) & 0x0F) << 2) | ((hex(substr($dmsg,5,2)) & 0xC0) >> 6);also ohne das sprintf.

die adressen deiner sensoren werden sich wie oben erklärt ändern.

wenn es bei dir geht müssen wir noch rausfinden ob wir das so einchecken weil die adressänderung jeden betrifft der den sketch benutzt. vielleicht kannst du im all in one thread mal drauf hinweisen.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frober

Super, das funktioniert.
Ich werde es eine Zeit lang beobachten. Wenn es weiterhin keine Probleme gibt weise ich im Allinone Thread darauf hin und informierte dich danach.

Nochmals danke für die Hilfe.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Über Nacht hatte ich kein Perl Warnung mehr.
Jedoch scheint irgendwo noch ein Problem zu sein, ich bekomme sporatisch zu große Daten geliefert (war auch schon vor der Korrektur):

2014.10.25 23:15:47 3: Jeelink868: Unknown code Received data to big for ringbuffer.F0190C5224EA6AAAA000095B6980606C3FF9722688A2DEF79E97345197EB3E8, help me!
2014.10.26 00:51:05 3: Jeelink868: Unknown code Received data to big for ringbuffer.F0190C5204E7FAAAA000199C03E154625E3168B03C384634123243CB839B53C, help me!
2014.10.26 02:01:01 3: Jeelink868: Unknown code Received data to big for ringbuffer.F019B45165A4500000001CFE6BABFBE703902D7A0F939FFE71F4E8362C0F35D, help me!
2014.10.26 02:40:54 3: Jeelink868: Unknown code Received data to big for ringbuffer.F019B45175AB1000000001216F72CA3C38CD08F930C903A21BD203389ED1D93, help me!


Vielleicht ist es möglich dies gleich mit zu korrigieren?
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Hallo Andre,

Im AllinOneThread habe ich auf die Korrektur hingewiesen.
Ich denke, das du die Korrektur dauerhaft einchecken kannst.

Sonst wird früher oder später,  z.B. bei einem Batterie Wechsel, jeder AllinOne Nutzer auf dieses Problem stoßen.

Zu oben:
Kann man den Ringbuffer vergrößern (was ist das überhaupt)? Er scheint mit den Prüfcode zusammen zu hängen, der an allen gesendeten LaCrosse Daten hängt.

Gruß und danke
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ulli

Hallo zusammen,

das ist eigenartig. Ich hatte nie das Problem mit der scheinbar zweimaligen Umwandlung von Hex<->Int.
Habe gestern mal wieder ein FHEM update gemacht. Jetzt habe ich den selben Fehler wie frober....wurde da mal ein update gefahren Andre?

@Frober: Die Nachrichten wie
" Jeelink868: Unknown code Received data to big for ringbuffer.F0190C5224EA6AAAA000095B6980606C3FF9722688A2DEF79E97345197EB3E8, help me!"
sind eigentlich Debug Nachrichten. Die Nachrichtenlänge wird automatisch korrigiert wenn ein LaCross Kommando erkannt wurde.
Bei der Initializierung über das FHEM Modul wird q1 gesetzt was den JeeNode in einen Art "quite" Mode versetzt....

justme1968

im JeeLink modul wurde an der stelle nichts geändert. hab eben noch mal im svn nachgeschaut. das LaCrosse modul erwartet immer schon interger werte. d.h. das printf um die adresse nach hex zu wandeln war noch nie richtig. es fällt nur bei adressen die keine buchstaben enthalten nicht auf.

es kann sein das die warnungen früher nach stderr verschwunden sind und mit dem letzen patch für den stacktrace jetzt erst sichbar werden.

ich weiss leider nicht wie viele deinen sketch benutzen und probleme bekommen wenn ich die reparierte version einchecke. ich würde gerne noch ein paar tage warten. ausser du hast eine bessere idee.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968