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
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
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.
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
Danke Andre,
komme aber erst morgen dazu.
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
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
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
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.
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
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.
Ü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?
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
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....
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.
ich habe die oben angesprochene korrektur für die adress berechnung für die all-in-one/lacrosse umrechnung eben eingecheckt.
gruss
andre
Hallo
Habe eben ein Update gemacht.
Jetzt kommen folgende Fehler:
Error messages while initializing FHEM:
configfile: Cannot load module JeeLink
C:\fhem-5.5>perl fhem.pl fhem.cfg
Subroutine JeeLink_Initialize redefined at ./FHEM/36_JeeLink.pm line 62, <$fh> line 90.
Subroutine JeeLink_Fingerprint redefined at ./FHEM/36_JeeLink.pm line 90, <$fh> line 90.
Subroutine JeeLink_Define redefined at ./FHEM/36_JeeLink.pm line 97, <$fh> line 90.
Subroutine JeeLink_Undef redefined at ./FHEM/36_JeeLink.pm line 131, <$fh> line 90.
Subroutine JeeLink_Shutdown redefined at ./FHEM/36_JeeLink.pm line 154, <$fh> line 90.
Subroutine JeeLink_RemoveLaCrossePair redefined at ./FHEM/36_JeeLink.pm line 162, <$fh> line 90.
Subroutine JeeLink_Set redefined at ./FHEM/36_JeeLink.pm line 170, <$fh> line 90.
Subroutine JeeLink_Get redefined at ./FHEM/36_JeeLink.pm line 354, <$fh> line 90.
Subroutine JeeLink_Clear redefined at ./FHEM/36_JeeLink.pm line 395, <$fh> line 90.
Subroutine JeeLink_DoInit redefined at ./FHEM/36_JeeLink.pm line 410, <$fh> line 90.
Subroutine JeeLink_ReadAnswer redefined at ./FHEM/36_JeeLink.pm line 434, <$fh> line 90.
Subroutine JeeLink_XmitLimitCheck redefined at ./FHEM/36_JeeLink.pm line 490, <$fh> line 90.
Subroutine JeeLink_Write redefined at ./FHEM/36_JeeLink.pm line 521, <$fh> line 90.
Subroutine JeeLink_SendFromQueue redefined at ./FHEM/36_JeeLink.pm line 539, <$fh> line 90.
Subroutine JeeLink_AddQueue redefined at ./FHEM/36_JeeLink.pm line 570, <$fh> line 90.
Subroutine JeeLink_HandleWriteQueue redefined at ./FHEM/36_JeeLink.pm line 584, <$fh> line 90.
Subroutine JeeLink_Read redefined at ./FHEM/36_JeeLink.pm line 606, <$fh> line 90.
Kann mir jemand weiterhelfen?
Vielen Dank
Chres
ich habe beim einchecken nicht aufgepasst und es war noch ein fehler in der version.
habe es eben repariert. ab morgen gibt es diese version dann im update. oder du holst sie direkt aus dem svn.
gruss
andre
Super, vielen Dank Andre.
Es läuft wieder alles.
Gruss Chres
Hallo, habe seit dem heutigen Update folgendes Problem :
2014.11.05 16:26:38 1: reload: Error:Modul 36_JeeLink deactivated:
syntax error at ./FHEM/36_JeeLink.pm line 762, near "2) "
2014.11.05 16:26:38 0: syntax error at ./FHEM/36_JeeLink.pm line 762, near "2) "
2014.11.05 16:26:38 3: Please define JeeLink first
2014.11.05 16:26:40 1: LaCrosse_09: no I/O device
2014.11.05 16:26:40 3: LaCrosse_09: unknown IODev specified
2014.11.05 16:26:40 1: Including ./log/fhem.save
2014.11.05 16:26:41 1: configfile: Cannot load module JeeLink
Please define JeeLink first
LaCrosse_09: unknown IODev specified
2014.11.05 16:26:43 3: No I/O device found for LaCrosse_09
2014.11.05 16:26:43 2: Error messages while initializing FHEM: configfile: Cannot load module JeeLink Please define JeeLink first LaCrosse_09: unknown IODev specified
Bitte um Hilfe.
BTW: Was ist SVN?
Danke.
mit dem update morgen geht es wieder.
Andre, jetzt hast du aber nochmal einen Fehler im 36_Jeelink Modul eingebaut.
Ursprünglich war es folgendes:
$addr = sprintf( "%02X", ((hex(substr($dmsg,5,2)) & 0x0F) << 2) | ((hex(substr($dmsg,7,2)) & 0xC0) >> 6) );
Du hast es zu folgendem gemacht:
$addr = ((hex(substr($dmsg,3,2)) & 0x0F) << 2) | ((hex(substr($dmsg,5,2)) & 0xC0) >> 6);
Es muss aber wie folgt heißen:
$addr = (((hex(substr($dmsg,5,2)) & 0x0F) << 2) | ((hex(substr($dmsg,7,2)) & 0xC0) >> 6));
(c:
die version$addr = ((hex(substr($dmsg,3,2)) & 0x0F) << 2) | ((hex(substr($dmsg,5,2)) & 0xC0) >> 6);
ist 'schon immer' im code.
ich habe es eben für meine beiden letzten commits und stichpunktartig für eine reihe älterer geprüft.
auch in der version die ich 18.04.2014 mit deinem ursprünglichen patch eingecheckt hatte. ist es 3,2 und 5,2.
wo hast du die version gefunden die du ursprünglich nennst?
gruss
andre
Hallo Ulli, hallo Andre,
Wenn ihr schon dabei seid, ich bekomme massenhaft Debugmeldungen:
2014.11.12 09:04:51 3: Jeelink868: Unknown code Received data to big for ringbuffer.F019B44935A57000000005A3FFE9801F05D65E7804A75E2C3E1D1DEAB040624, help me!
2014.11.12 09:06:22 3: Jeelink868: Unknown code Received data to big for ringbuffer.F0190C48052F8AAAA00006130A13DE5F7EFABF2B079B046E25F826824730D32, help me!
2014.11.12 09:10:35 3: Jeelink868: Unknown code Received data to big for ringbuffer.F019B44945AF90000000349340CD3054213090C9345472179EE380E99B7FC2D, help me!
Den Code habe ich mir angeschaut, die Erkennung ist F01 und dann 8 Zeichen von 0-9 oder A-Z.
Die Meldungen entsprechen dieser Erkennung, wieso werden sie nicht ausgewertet?
Mein Logfile ist total zugemüllt (mehrere Einträge pro Stunde).