Nachdem gestern mein altes Grillthermometer den Geist aufgegeben hat, muss ich etwas neues kaufen. Und will natürlich etwas haben, das an die Haussteuerung angebunden ist.
Leider ist die Datenlage sowohl im Forum, als auch im FHEMWiki mangelhaft.
An einer Stelle heißt es, dass die Maverick Funkthermometer mit 433 MHz mit einem Signalduino empfangen und ausgewertet werden können. Prima, aber welche Modelle? Und brauche ich wirklich extra einen Signalduino, oder tut es auch ein CUL 433 mit V 1.26.05 a-culfw?
An anderer Stelle habe ich ähnlich vage Informationen über Funkthermometer von Inkbird gelesen (eingebunden über WLAN). Hat jemand dessen Protokoll entschlüsselt?
Würde mich über jeden Input freuen und sammele diesen in einer neuen Wiki-Seite
LG
pah
Du kannst den CUL zu einem Signdduino umflashen.
Von Maverick geht:
ET-733
Andere Modelle müssten ggf. noch implementiert werden, das wäre dann auf gut Glück.
Grüße Sidey
Danke. Nachteil ist, dass der Maverick ET 733 nicht mehr zu bekommen ist.
Zum Interface: Meine CUL 433 sind allerdings Bestandteile von je einem MapleCUN mit 4 Transceivern. Dafür fehlt im WIki eine Anleitung - und mir fehlt gegenwärtig die Zeit, mich in die diversen Firmware-Versionen und Flashvorgänge wieder einzugraben. Ich werde also versuchen, einen fertigen Signalduino zu bekommen. Hat jemand eine Bezugsquelle für die LAN-Version?
LG
pah
Zitat von: Prof. Dr. Peter Henning am 06 Juni 2022, 12:42:24
Danke. Nachteil ist, dass der Maverick ET 733 nicht mehr zu bekommen ist.
Schau mal bei Ebay Kleinanzeigen, da gibt es zumindest gebrauchte Teile.
Viele Grüße Gisbert
Schon gemacht - allerdings wollte ich keine gebrauchten haben...
LG
pah
So, ich habe mir jetzt mal dieses Teil hier gekauft:
https://www.amazon.de/gp/product/B08NPMH2NS/ref=ppx_yo_dt_b_asin_title_o01_s00
Wird vom SignalDuino auf 433 MHz bestens empfangen. Jetzt muss ich "nur noch" das Protokoll dekodieren. Wird ne Weile dauern...
LG
pah
Wird es auch schon demoduliert oder braucht es noch ein Protokoll dazu?
Der Sensor wird gemeldet als
Zitat2022.06.09 15:31:06 1: SigDuino: SD_UT_Parse UNDEFINED sensor unknown detected, protocol 34, data 09655, code 096
Im weiteren Verlauf wird zunächst Protokoll 34 nicht gefunden (im nachfolgenden Text sind alle Zeilen mit "not found, aborting" herausgelassen):
Zitat2022.06.09 15:56:37 5: SigDuino: Read, RAW rmsg: Mu;��;���;���;D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;C1;R28;
2022.06.09 15:56:37 4: SigDuino: Read, msg READredu: MU;P0=-1510;P1=564;P2=-536;D=010101010101010101210101210121210101010101010101012101012101212101010101010101010121010121012121010121212121212121210101010121212121210121012101210121012101212121210101012121012121;CP=1;R=40;
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){43,})) did not match
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 31 -> LTECH matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:121210)((?:12|12){8,})) did not match
2022.06.09 15:56:37 5: SigDuino: Parse_MU, for MU protocol id 39, applying filterfunc SIGNALduino_compPattern
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 61 -> FS10 matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){30,})) did not match
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 70 -> FHT80TF matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){50,})) did not match
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 73 -> FHT80 matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){59,})) did not match
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 74 -> FS20 matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){50,})) did not match
2022.06.09 15:56:37 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 80 -> EM1000WZ matches, trying to demodulate
2022.06.09 15:56:37 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:12|12){104,})) did not match
Dann gibt es aber auch Messages, in denen anscheinend das Protokoll Nr. 34 doch gesehen wird:
Zitat2022.06.09 15:56:38 5: SigDuino: Read, RAW rmsg: Mu;���;���;���;���;���;���;���;�;D!!!!!!!4VWWVWWVWWVVWWWVVVVVVVVVWVVWVWWVVVVVVVVVWVVWVWWVVVVVVVVVWVVWVWWVVWWWWWWWWVVVVWWWWWVWVWVWVWVWVWWWWVVVWWVWWV!!!!!!!!4VWWV;C5;R29;O;
2022.06.09 15:56:38 4: SigDuino: Read, msg READredu: MU;P0=1392;P1=-1013;P2=1067;P3=4738;P4=-2966;P5=501;P6=-1555;P7=-590;D=01212121212121213456575756575756575756565757575656565656565656565756565756575756565656565656565657565657565757565656565656565656575656575657575656575757575757575756565656575757575756575657565756575657565757575756565657575657575621212121212121213456575756;CP=5;R=41;O;
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|21){43,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 9 -> weather matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|01){60,}(?:5|0)?)) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 31 -> LTECH matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:575756)((?:57|57){8,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 34 -> QUIGG | LIBRA | Mandolyn | Pollin ISOTRONIC matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:5)((?:12|65){19,}(?:1|6)?)) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 42 -> wireless doorbell matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:575757)((?:57|21){28,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 50 -> Opus_XT300 matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|01){47,}(?:5|0)?)) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 61 -> FS10 matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|57){30,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 64 -> WH2 matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|01){48,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 70 -> FHT80TF matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|57){50,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 71 -> PEARL matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:21|01){48,})) did not match
2022.06.09 15:56:38 5: SigDuino: Parse_MU, start pattern for MU protocol id 72 -> Siro shutter not found, aborting
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 73 -> FHT80 matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|57){59,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 74 -> FS20 matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|57){50,})) did not match
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 80 -> EM1000WZ matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:)((?:57|57){104,})) did not match
2022.06.09 15:56:38 5: SigDuino: Parse_MU, start pattern for MU protocol id 86 -> BOSCH | CAME | Novy | Neff | Refsta Topdraft not found, aborting
2022.06.09 15:56:38 4: SigDuino: Parse_MU, Fingerprint for MU protocol id 91 -> Atlantic security matches, trying to demodulate
2022.06.09 15:56:38 5: SigDuino: Parse_MU, 0. try, regex ((?:45)((?:75|75){35,}(?:7)?)) did not match
LG
pah
Da brauchen wir ein paar mehr MU Nachrichten von dem Thermometer, so auf Anhieb würde ich sagen wir brauchen da vermutlich noch was :)
Liefer ich gerne und bin für jede Unterstützung dankbar.
Welche sind nützlicher:
Zitat2022.06.09 15:56:38 5: SigDuino: Read, RAW rmsg: Mu;...
oder diese hier
Zitat2022.06.09 15:56:38 4: SigDuino: Read, msg READredu:...
LG
pah
Zitat von: Prof. Dr. Peter Henning am 09 Juni 2022, 19:30:42
Welche sind nützlicher:
Die mit
READredu
sind leichter zu lesen, da die anderen auch nicht lesbare Steuerzeichen enthalten können (Darstellungsseitig im Logfile)
Grüße Sidey
Na, dann liefern wir doch mal.
Anbei eine Aufzeichung diverser READredu messages. Außer dem Grillthermometer empfängt der SD noch einen kombinierten Temperatur/Feuchtesensor aus der Nachbarschaft, den ich leider nicht abstellen kann. Soweit ich den Code bisher verstehe, sind das die Messages "Read, msg READredu: MS;..."
Wenn ich das Grillthermometer totlege, gibt es keine MU-Message. Der gesamte Rest stammt also vom Grillthermometer.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 10 Juni 2022, 08:44:47
Wenn ich das Grillthermometer totlege, gibt es keine MU-Message. Der gesamte Rest stammt also vom Grillthermometer.
Super, ein paar waren anders, aber ich vermute mal wir haben die richtigen erwischt.
Demoduliert wird es. Das Bit 0 oder 1 könnte vertauscht sein, ich denke aber es stimmt.
Hier das update um das Protokoll demodulieren zu können:
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/temola_tm40/controls_signalduino.txt
Die Ausgabe der Bits ist leider eine Debug Ausgabe die über das Attribut debug aktiviert werden muss:
2022.06.11 00:36:11.371 1: DEBUG>dummyDuino: demodulated message raw (0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0), 105 bits
Die Einstellung eher nicht dauerhaft laufen lassen.
Um die Daten auswerten zu können, müssten halt die Temperatur Sensoren auf einen anderen Wert gebracht werden.
Irgendwas an der Nachricht wird sich dann verändern :)
Herzlichen Dank für die Unterstützung !
OK, hier mal 2 logs mit debug=1
Im ersten Fall waren alle 4 Temperatursensoren auf 22 Grad Celsius
Im zweiten Fall haben ich einen der 4 Sensoren auf 83 Grad gebracht, langsam fallend bis auf 81 Grad.
LG
pah
Die Logs werden gigantisch damit - muss ich nachher hier wieder vom Server löschen
Wir haben die Definition etwas geändert. Bitte nochmal ein Update durchführen.
Mit dieser Definition scheinen die Werte plausibel zu sein:
wahrscheinlich nur ein Sensor angeschlossen?
hex dez
9263
FED3 65235
FED3 65235
FED3 65235
00F0 240
5550
E4
8
alle 22 °C
hex dez
9263
00DC 220
00DC 220
00DC 220
00DC 220
0000
24
8
83 °C und 22 °C
hex dez
9263
00DC 220
00DC 220
00DC 220
033E 830
0000
DE
8
82 °C und 22 °C
hex dez
9263
00DC 220
00DC 220
00DC 220
0334 820
0000
5C
8
Mit dieser Definition müsste dir dann ein Gerät "SIGNALduino_unknown_122" angelegt werden. Dazu muss aber wahrscheinlich das Attribut "development" beim SIGNALduino auf den Wert 1 gesetzt sein. Dann braucht es auch kein Attribut "debug" mehr.
Falls das so passt, wäre interessant zu wissen, welcher Wert zu welchem Sensor gehört. Eine Batteriemeldung vom Sensor gibt es offensichtlich auch.
Noch einmal danke für die Unterstützung, das geht ja echt flott!
Hier der Testbericht.
Zitatwahrscheinlich nur ein Sensor angeschlossen?
hex dez
Kann sein, ich habe das Ding kurz angehabt, als nur ein Sensor dran war.
Ich habe jetzt zwei neue Devices. Erstens den gewünschten SIGNALduino_unknown_122 mit list
ZitatInternals:
CFGFN
DEF SIGNALduino_unknown_122
FUUID 62a493aa-f33f-a726-ea73-4d104f0cf6db1213
IODev SigDuino
LASTInputDev SigDuino
MSGCNT 145
NAME SIGNALduino_unknown_122
NR 137
STATE 926301360136014001680000B88 | 2022-06-11 15:12:17
SigDuino_DMSG u122#926301360136014001680000B88
SigDuino_MSGCNT 145
SigDuino_Protocol_ID 122
SigDuino_RAWMSG MU;P0=3412;P1=-1029;P2=1043;P3=4706;P4=-2986;P5=549;P6=-1510;P7=-562;D=01212121212121213456575756575756575756565757575656575757575757575657575656575656575757575757575756575756565756565757575757575757565756575757575757575757575757575657565657565757575757575757575757575757575757575756575656565757575621212121212121213456575756;CP=5;R=2;O;
SigDuino_RSSI -73
SigDuino_TIME 2022-06-11 15:12:17
TYPE SIGNALduino_un
bitMSG 100100100110001100000001001101100000000100110110000000010100000000000001011010000000000000000000101110001000
lastMSG 926301360136014001680000B88
READINGS:
2022-06-11 15:07:54 IODev SigDuino
2022-06-11 15:12:17 bitCount 108
2022-06-11 15:12:17 bitCountLength 108 to 20
2022-06-11 15:12:17 bitMsg 100100100110001100000001001101100000000100110110000000010100000000000001011010000000000000000000101110001000
2022-06-11 15:12:17 bitMsg_invert 011011011001110011111110110010011111111011001001111111101011111111111110100101111111111111111111010001110111
2022-06-11 15:12:17 hexCount_or_nibble 27
2022-06-11 15:12:17 hexMsg 926301360136014001680000B88
2022-06-11 15:12:17 hexMsg_invert 6D9CFEC9FEC9FEBFFE97FFFF477
2022-06-11 15:12:17 lastInputDev SigDuino
2022-06-11 15:12:17 past_seconds 1
2022-06-11 15:12:17 state 926301360136014001680000B88
Attributes:
room SIGNALduino_un
stateFormat {ReadingsVal('SIGNALduino_unknown_122', 'state', '').' | '.ReadingsTimestamp('SIGNALduino_unknown_122', 'state', '-');}
Zweitens einen SIGNALduino_unknown_40, mit list
ZitatInternals:
CFGFN
DEF SIGNALduino_unknown_40
FUUID 62a493aa-f33f-a726-6709-f1301f3422b6a2b4
IODev SigDuino
LASTInputDev SigDuino
MSGCNT 91
NAME SIGNALduino_unknown_40
NR 138
STATE 0000 | 2022-06-11 15:10:41
SigDuino_DMSG u40#0000
SigDuino_MSGCNT 129
SigDuino_Protocol_ID 40
SigDuino_RAWMSG MU;P0=8228;P1=-1035;P2=1047;P3=4704;P4=-2986;P5=538;P6=-1545;P7=-560;D=01212121212121213456575756575756575756565757575656575757575757575657575656575656575757575757575756575756565756565757575757575757565756575757575757575757575757575657565756565656575757575757575757575757575757575756565756565757575621212121212121213456575756;CP=5;R=25;O;
SigDuino_RSSI -61.5
SigDuino_TIME 2022-06-11 15:10:41
TYPE SIGNALduino_un
bitMSG 0000000000000000
lastMSG 0000
READINGS:
2022-06-11 15:07:54 IODev SigDuino
2022-06-11 15:10:41 bitCount 16
2022-06-11 15:10:41 bitCountLength 12 to 16
2022-06-11 15:10:41 bitMsg 0000000000000000
2022-06-11 15:10:41 bitMsg_invert 1111111111111111
2022-06-11 15:10:41 hexCount_or_nibble 4
2022-06-11 15:10:41 hexMsg 0000
2022-06-11 15:10:41 hexMsg_invert FFFF
2022-06-11 15:10:41 lastInputDev SigDuino
2022-06-11 15:10:41 past_seconds 0
2022-06-11 15:10:41 state 0000
Attributes:
room SIGNALduino_un
stateFormat {ReadingsVal('SIGNALduino_unknown_40', 'state', '').' | '.ReadingsTimestamp('SIGNALduino_unknown_40', 'state', '-');}
Die Umrechung auf die Temperatur stimmt auch, wenn ich zunächst alle Sensoren bei 31 oder 32 Grad halte, und dann den 2. Sensr auf 72 Grad hochdrehe, erhalte ich
demodulatedmessageraw(1001001001100011.0000000100110110.0000000100110110.0000000101000000.0000000101000000.0000000000000000000001001),105bits
0x0136 = 310 0x0136 =310 0x0140 = 320 0x0140 = 320
demodulatedmessageraw(1001001001100011.0000000100110110.0000000100110110.0000001011010000.0000000100110110.0000000000000000101101001),105bits
0x0136 = 310 0x0136 =310 0x0140 = 720 0x0140 = 310
Sensor 4 Sensor 3 Sensor 2 Sensor 1
dez. 320 = 0x0140 = 0000.0001.0100.0000
dez. 310 = 0x0136 = 0000.0001.0011.0110
dez. 720 = 0x02D0 = 0000.0010.1101.0000
Damit ist dann die Zuordnung derWerte zu den Sensoren geklärt.
Edit: Damit klärt sich auch die Bedeutung der nächsten 16 Bit nach den Temperaturwerten, das sind offenbar 4 Status-Nibbles. 5 = Kein Sensor an dem Port angeschlossen, 0 = Sensor OK.
demodulatedmessageraw(1001001001100011.0000000100110110.0000000100110110.0000001011010000.0000000100110110.0000.0000.0000.0000.1011.01001),105bits
9263 0x0136 = 310 0x0136 =310 0x0140 = 720 0x0140 = 310 0 0 0 0
Sensor 4 Sensor 3 Sensor 2 Sensor 1 St4 St3 St2 St1
LG
pah
Dann können wir doch direkt zum Modul übergehen :-)
Nach dem nächsten Update sollte es dir einen Sensor "SD_WS_122_T" anlegen.
Protokoll 40 kannst du ignorieren.
Zu klären wären noch die ersten 2 Byte. Ich schätze, das ist eine feste Ident. Bisher habe ich da nur 0x9263 gesehen.
Die 4 Status-Nibble (5 = Kein Sensor an dem Port angeschlossen, 0 = Sensor OK) müssten auch noch genauer geprüft werden.
Das letzte Byte ist sicher irgendeine Prüfung. Das Verfahren habe ich noch nicht heraus bekommen.
Irgendwo muss sich auch noch der Batteriezustand verstecken.
Prima, läuft!
Und noch einmal danke - ich hätte sicher etliche Tage gebraucht, um mich in den SignalDuino-Kram einzulesen..
Ich werde noch etwas mit den Statusbytes herumspielen, und versuchen, den Batteriezustand zu isolieren. Man kann das Teil jetzt aber anderen empfehlen, schon mal nicht schlecht.
LG
pah
Bist du denn mittlerweile dazu gekommen, die restlichen Fragen zu klären?
Nein. Ersaufe gerade in Arbeit für die DELFI-Konferenz. In den nächsten Tagen wird es hoffentlich besser....
Bisher habe ich nur bestätigen können, dass de Statuscode 5 für "Not connected" steht. Meine gepatchte Version dafür
122 => {
# TM40, Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors
# -----------------------------------------------------------------------------
# 0 4 | 8 12 | 16 20 | 24 28 | 32 36 | 40 44 | 48 52 | 56 60 | 64 68 | 72 76 | 80 84 | 88 92 | 96 100 | 104
# 1001 0010 | 0110 0011 | 0000 0001 | 0011 0110 | 0000 0001 | 0011 0110 | 0000 0001 | 0100 0000 | 0000 0001 | 0110 1000 | 0000 0000 | 0000 0000 | 1011 1000 | 1000
# iiii iiii | iiii iiii | 4444 4444 | 4444 4444 | 3333 3333 | 3333 3333 | 2222 2222 | 2222 2222 | tttt tttt | tttt tttt | S4 S3 | S2 S1 | CCCC CCCC | 1
# i: 16 bit id => 9263 in example device
# 4: 16 bit unsigned 10x temperature 4 in Celsius
# 3: 16 bit unsigned 10x temperature 3 in Celsius
# 2: 16 bit unsigned 10x temperature 2 in Celsius
# t: 16 bit unsigned 10x temperature 1 in Celsius
# ?: 16 bit flags denoting sensor status S. 5 = not connected or low temp, 0 = connected
# temp higher than 100 degrees result in another reading not yet tested
# C: 8 bit check???, changes in every message. Should contain battery reading??
sensortype => 'TM40',
model => 'SD_WS_122_T',
prematch => sub { return 1; }, # no precheck known
id => sub { my ($rawData,undef) = @_; return substr($rawData,0,4); },
temp4 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,80,4) eq '0101');
return SD_WS_binaryToNumber($bitData,16,31) / 10;
},
temp3 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,84,4) eq '0101');
return SD_WS_binaryToNumber($bitData,32,47) / 10;
},
temp2 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,88,4) eq '0101');
return SD_WS_binaryToNumber($bitData,48,63) / 10;
},
temp => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,92,4) eq '0101');
return SD_WS_binaryToNumber($bitData,64,79) / 10;
},
crcok => sub {return 1;}, # Check could not be determined yet.
},
);
Ich bleibe dran.
LG
pah
Setzt du mal bitte bei deinem SIGNALduino das Attribut "addvaltrigger" auf den Wert 1, damit auch DMSG und RAWMSG ins Log geschrieben werden und lädst nach der nächsten Benutzung des Sensors das Log vom Sensor hoch. Mit mehreren Nachrichten kommen wir vielleicht weiter..
Inzwischen habe ich auch so ein Thermometer. Signalduino auch (hatte ich schon).
wie muss ich denn das Thermometer definieren?
Wenn du dieses Update
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/temola_tm40/controls_signalduino.txt
durchgeführt hast, sollte es dir nach einem Neustart von FHEM und anschließender Aktivierung von Protokoll 122 eigentlich das Gerät per autocreate anlegen.
Danke für die schnelle Antwort.
Muss ich Protokoll 122 per Whitelist freigeben?
Bei mir wurde nichts erkannt. Das Update und den Neustart hatte ich gemacht.
Vielleicht meine Firmware?
version
V 3.3.2.1-rc9 SIGNALduino cc1101 - compiled at Jun 16 2019 20:18:01
versionProtocols
1.46
versionmodul
3.5.4+20220614
Zitat von: Invers am 08 August 2022, 17:11:55
Muss ich Protokoll 122 per Whitelist freigeben?
Ja
Zitat von: Invers am 08 August 2022, 17:11:55
Vielleicht meine Firmware?
version V 3.3.2.1-rc9 SIGNALduino cc1101 - compiled at Jun 16 2019 20:18:01
versionProtocols 1.46
versionmodul 3.5.4+20220614
Die Firmware ist allerdings "steinalt" :-) Bitte Update durchführen. Aktuell ist diese:
version V 3.5.0 SIGNALduino cc1101 (chip CC1101) - compiled at Jul 8 2022 18:09:56
versionProtocols 1.46
versionmodul 3.5.4+20220614
Danke. Weist du zufällig, ob mit der anderen Firm meine Siro noch laufen?
falls nicht, hätte ich noch einen zwieiten SD, den ich nutzen könnte.
Das kann ich nicht beantworten. Probiere es einfach. Zur Not hast du ja sicher noch ein File der alten Firmware.
OK, probier ich morgen. Vielen Dank für die Hilfe.
Habs doch sofort probiert. Geht leider nicht.
Kannst du erkennen, woran das liegt?
2022.08.08 22:33:02.825 2: sduino: SD_WS_Parse unknown message, please report. converted to bits: 100100100110011111111110110100111111111011010011111111101101001100000001000011100101010101010000010000001000
2022.08.08 22:33:02.841 3: sduino: Unknown code W122#9267FED3FED3FED3010E5550408, help me!
nternals:
Clients :CUL_EM:CUL_FHTTK:CUL_TCM97001:CUL_TX:CUL_WS:Dooya:FHT:FLAMINGO:FS10:FS20: :Fernotron:Hideki:IT:KOPP_FC:LaCrosse:OREGON:PCA301:RFXX10REC:Revolt:SD_AS:SD_Rojaflex: :SD_BELL:SD_GT:SD_Keeloq:SD_RSL:SD_UT:SD_WS07:SD_WS09:SD_WS:SD_WS_Maverick:SOMFY: :Siro:SIGNALduino_un:
DEF /dev/serial/by-id/usb-SHK_SIGNALduino_433-if00-port0@57600
DMSG W122#9267FED3FED3FED3010E5550408
DevState initialized
DeviceName /dev/serial/by-id/usb-SHK_SIGNALduino_433-if00-port0@57600
FD 63
FUUID 61e71e47-f33f-8098-ac1b-f4024a7c11293a54
LASTDMSG W122#9267FED3FED3FED3010E5550408
LASTDMSGID 122
MSGCNT 33
NAME sduino
NR 475
PARTIAL
RAWMSG MU;P0=22624;P1=-1025;P2=1047;P3=4708;P4=-2984;P5=546;P6=-1531;P7=-550;D=01212121212121213456575756575756575756565757565656565656565656565756565756575756565656565656565657565657565757565656565656565656575656575657575656575757575757575657575757565656575756575657565756575657565757575757565757575757575621212121212121213456575756;CP=5;R=53;O;
RSSI -47.5
STATE opened
TIME 1659990782.82275
TYPE SIGNALduino
cc1101_available 1
eventCount 40
sendworking 0
version V 3.5.0 SIGNALduino cc1101 (chip CC1101) - compiled at Jul 8 2022 18:09:56
versionProtocols 1.46
versionmodul 3.5.4+20220614
DoubleMsgIDs:
MatchList:
10:SD_WS07 ^P7#[A-Fa-f0-9]{6}[AFaf][A-Fa-f0-9]{2,3}
11:SD_WS09 ^P9#F[A-Fa-f0-9]+
12:SD_WS ^W\d+x{0,1}#.*
13:RFXX10REC ^(20|29)[A-Fa-f0-9]+
14:Dooya ^P16#[A-Fa-f0-9]+
15:SOMFY ^Ys[0-9A-F]+
16:SD_WS_Maverick ^P47#[A-Fa-f0-9]+
17:SD_UT ^P(?:14|20|24|26|29|30|34|46|56|68|69|76|78|81|83|86|90|91|91.1|92|93|95|97|99|104|105|114|118|121)#.*
18:FLAMINGO ^P13\.?1?#[A-Fa-f0-9]+
19:CUL_WS ^K[A-Fa-f0-9]{5,}
1:IT ^i......
20:Revolt ^r[A-Fa-f0-9]{22}
21:FS10 ^P61#[A-F0-9]+
22:Siro ^P72#[A-Fa-f0-9]+
23:FHT ^81..(04|09|0d)..(0909a001|83098301|c409c401)..
24:FS20 ^81..(04|0c)..0101a001
25:CUL_EM ^E0.................
26:Fernotron ^P82#.*
27:SD_BELL ^P(?:15|32|41|42|57|79|96|98|112)#.*
28:SD_Keeloq ^P(?:87|88)#.*
29:SD_GT ^P49#[A-Fa-f0-9]+
2:CUL_TCM97001 ^s[A-Fa-f0-9]+
30:LaCrosse ^(\S+\s+9 |OK\sWS\s)
31:KOPP_FC ^kr\w{18,}
32:PCA301 ^\S+\s+24
33:SD_Rojaflex ^P109#[A-Fa-f0-9]+
3:SD_RSL ^P1#[A-Fa-f0-9]{8}
4:OREGON ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*
5:CUL_TX ^TX..........
6:SD_AS ^P2#[A-Fa-f0-9]{7,8}
7:Hideki ^P12#75[A-F0-9]+
9:CUL_FHTTK ^T[A-F0-9]{8}
X:SIGNALduino_un ^[u]\d+#.*
QUEUE:
READINGS:
2022-08-08 22:31:28 cc1101_config Freq: 433.920 MHz, Bandwidth: 325 kHz, rAmpl: 42 dB, sens: 8 dB, DataRate: 5.60 kBaud
2022-08-08 22:31:28 cc1101_config_ext Modulation: ASK/OOK
2022-08-08 22:31:29 cc1101_patable C3E = 00 84 00 00 00 00 00 00 => 5_dBm
2022-08-08 22:38:27 ping OK
2022-08-08 22:31:26 state opened
additionalSets:
keepalive:
ok 0
retry 0
mcIdList:
mnIdList:
msIdList:
muIdList:
122
Attributes:
devStateIcon signal.*:10px-kreis
development 1
flashCommand avrdude -c arduino -b [BAUDRATE] -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]*
hardware nanoCC1101
room Andere->CUL_HM
whitelist_IDs 122
Zitat2022.08.08 22:33:02.841 3: sduino: Unknown code W122#9267FED3FED3FED3010E5550408, help me!
Dies hat nichts mit der Firmware zu tun. Du verwendest eine Version des 14_SD_WS Moduls, in der die Protocol ID 122 nicht enthalten ist,
wenn ich es bei mir mit dem dummysduino simuliere, bekomme ich:
2022.08.08 23:53:30.059 4 : sduinoD/msg get dispatch: W122#9267FED3FED3FED3010E5550408
2022.08.08 23:53:30.059 5 : sduinoD: dispatch W122#9267FED3FED3FED3010E5550408
2022.08.08 23:53:30.059 4 : sduinoD: SD_WS_Parse protocol 122, rawData 9267FED3FED3FED3010E5550408
2022.08.08 23:53:30.059 4 : sduinoD: SD_WS_Parse decoded protocol-id 122 (TM40), sensor-id 9267
2022-08-08 23:53:30.064 SD_WS SD_WS_122_T T: 27
2022-08-08 23:53:30.064 SD_WS SD_WS_122_T temperature: 27
2022-08-08 23:53:30.064 SD_WS SD_WS_122_T id: 9267
Du hast demnach nur den ersten Temperaturfühler gesteckt.
ZitatDie Firmware ist allerdings "steinalt"
Die "V 3.3.2.1-rc9 SIGNALduino cc1101" ist meine aktuelle Version für diejenigen die kein FSK benötigen. In dieser Version sind alle mir bekannten Bugs behoben.
Gruß Ralf
Naja, ich bin ratlos. Erstmal danke ich für die Hilfe.
Mein fhem ist auf dem neuesten Stand. Ich habe aber trotzdem alle 14_SD_WS Module neu per Update eingespielt. Keine Änderung.
Wennb meine Version alt ist, wo bekomme ich denn eine neue Version her?
Die Meldungen kommen immernoch.
2022.08.09 09:31:23.216 2: sduino: SD_WS_Parse unknown message, please report. converted to bits: 100100100110011111111110110100111111111011010011000000010000010011111110110100110101010100000101100111101000
2022.08.09 09:31:23.225 3: sduino: Unknown code W122#9267FED3FED30104FED355059E8, help me!
2022.08.09 09:31:26.456 2: sduino: SD_WS_Parse unknown message, please report. converted to bits: 100100100110011111111110110100111111111011010011000000010000010011111110110100110101010100000101100111101000
2022.08.09 09:31:26.472 3: sduino: Unknown code W122#9267FED3FED30104FED355059E8, help me!
2022.08.09 09:31:29.690 2: sduino: SD_WS_Parse unknown message, please report. converted to bits: 100100100110011111111110110100111111111011010011000000010000010011111110110100110101010100000101100111101000
2022.08.09 09:31:29.705 3: sduino: Unknown code W122#9267FED3FED30104FED355059E8, help me!
2022.08.09 09:31:32.924 2: sduino: SD_WS_Parse unknown message, please report. converted to bits: 100100100110011111111110110100111111111011010011000000010000010011111110110100110101010100000101100111101000
2022.08.09 09:31:32.933 3: sduino: Unknown code W122#9267FED3FED30104FED355059E8, help me!
Hier noch ein List von SDuino
Internals:
Clients :CUL_EM:CUL_FHTTK:CUL_TCM97001:CUL_TX:CUL_WS:Dooya:FHT:FLAMINGO:FS10:FS20: :Fernotron:Hideki:IT:KOPP_FC:LaCrosse:OREGON:PCA301:RFXX10REC:Revolt:SD_AS:SD_Rojaflex: :SD_BELL:SD_GT:SD_Keeloq:SD_RSL:SD_UT:SD_WS07:SD_WS09:SD_WS:SD_WS_Maverick:SOMFY: :Siro:SIGNALduino_un:
DEF /dev/serial/by-id/usb-SHK_SIGNALduino_433-if00-port0@57600
DMSG W122#9267FED3FED30104FED355059E8
DevState initialized
DeviceName /dev/serial/by-id/usb-SHK_SIGNALduino_433-if00-port0@57600
FD 61
FUUID 61e71e47-f33f-8098-ac1b-f4024a7c11293a54
LASTDMSG W122#9267FED3FED30104FED355059E8
LASTDMSGID 122
MSGCNT 98
NAME sduino
NR 475
PARTIAL
RAWMSG MU;P0=23124;P1=-1032;P2=1039;P3=4714;P4=-2988;P5=524;P6=-1540;P7=-576;D=01212121212121213456575756575756575756565757565656565656565656565756565756575756565656565656565657565657565757565657575757575757565757575757565757565656565656565756565756575756565756575657565756575757575756575656575756565656575621212121212121213456575756;CP=5;R=35;O;
RSSI -56.5
STATE opened
TIME 1660030540.36634
TYPE SIGNALduino
cc1101_available 1
eventCount 102
sendworking 0
version V 3.5.0 SIGNALduino cc1101 (chip CC1101) - compiled at Jul 8 2022 18:09:56
versionProtocols 1.46
versionmodul 3.5.4+20220614
DoubleMsgIDs:
MatchList:
10:SD_WS07 ^P7#[A-Fa-f0-9]{6}[AFaf][A-Fa-f0-9]{2,3}
11:SD_WS09 ^P9#F[A-Fa-f0-9]+
12:SD_WS ^W\d+x{0,1}#.*
13:RFXX10REC ^(20|29)[A-Fa-f0-9]+
14:Dooya ^P16#[A-Fa-f0-9]+
15:SOMFY ^Ys[0-9A-F]+
16:SD_WS_Maverick ^P47#[A-Fa-f0-9]+
17:SD_UT ^P(?:14|20|24|26|29|30|34|46|56|68|69|76|78|81|83|86|90|91|91.1|92|93|95|97|99|104|105|114|118|121)#.*
18:FLAMINGO ^P13\.?1?#[A-Fa-f0-9]+
19:CUL_WS ^K[A-Fa-f0-9]{5,}
1:IT ^i......
20:Revolt ^r[A-Fa-f0-9]{22}
21:FS10 ^P61#[A-F0-9]+
22:Siro ^P72#[A-Fa-f0-9]+
23:FHT ^81..(04|09|0d)..(0909a001|83098301|c409c401)..
24:FS20 ^81..(04|0c)..0101a001
25:CUL_EM ^E0.................
26:Fernotron ^P82#.*
27:SD_BELL ^P(?:15|32|41|42|57|79|96|98|112)#.*
28:SD_Keeloq ^P(?:87|88)#.*
29:SD_GT ^P49#[A-Fa-f0-9]+
2:CUL_TCM97001 ^s[A-Fa-f0-9]+
30:LaCrosse ^(\S+\s+9 |OK\sWS\s)
31:KOPP_FC ^kr\w{18,}
32:PCA301 ^\S+\s+24
33:SD_Rojaflex ^P109#[A-Fa-f0-9]+
3:SD_RSL ^P1#[A-Fa-f0-9]{8}
4:OREGON ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*
5:CUL_TX ^TX..........
6:SD_AS ^P2#[A-Fa-f0-9]{7,8}
7:Hideki ^P12#75[A-F0-9]+
9:CUL_FHTTK ^T[A-F0-9]{8}
X:SIGNALduino_un ^[u]\d+#.*
QUEUE:
READINGS:
2022-08-09 09:30:26 cc1101_config Freq: 433.920 MHz, Bandwidth: 325 kHz, rAmpl: 42 dB, sens: 8 dB, DataRate: 5.60 kBaud
2022-08-09 09:30:26 cc1101_config_ext Modulation: ASK/OOK
2022-08-09 09:30:28 cc1101_patable C3E = 00 84 00 00 00 00 00 00 => 5_dBm
2022-08-09 09:19:30 ping OK
2022-08-09 09:30:24 state opened
additionalSets:
keepalive:
ok 1
retry 0
mcIdList:
mnIdList:
msIdList:
muIdList:
122
Attributes:
Flashen mit dem Befehl
set sduino flash https://github.com/Ralf9/SIGNALDuino/releases/download/3.3.2.1-rc9/SIGNALduino_nanoCC1101_3321rc9.hex
devStateIcon signal.*:10px-kreis
development 1
flashCommand avrdude -c arduino -b [BAUDRATE] -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]*
hardware nanoCC1101
room Andere->CUL_HM
whitelist_IDs 122
und die Version von 14_SD_WS
File Rev Last Change
14_SD_WS.pm 25484 2022-01-17 20:50:12Z Sidey
HMdeviceTools.js 1003 2022-01-04 16:24:18Z frank
HMinfoTools.js 2009 2022-03-21 12:30:31Z frank
doif.js 24438 2021-05-14 18:08:18Z Ellert
f18.js 26271 2022-07-29 15:22:05Z rudolfkoenig
fhemweb.js 26247 2022-07-19 11:18:01Z rudolfkoenig
fhemweb_readingsGroup.js 15189 2017-10-03 17:53:27Z justme1968
Falls meine Version falsch ist, kann mir jemand die richtige Version geben?
Danke nochmals im Voraus.
das Problem ist, bei dem update von elektron-bbs ist nicht die neuste Version des 14_SD_WS Moduls enthalten
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/temola_tm40/controls_signalduino.txt
https://github.com/RFD-FHEM/RFFHEM/blob/temola_tm40/FHEM/14_SD_WS.pm
Du kannst auch meine Version des 14_SD_WS.pm Moduls verwenden:
update all https://raw.githubusercontent.com/Ralf9/14_SD_WS/main/controls_ralf9_sd_ws.txt
https://github.com/Ralf9/14_SD_WS/blob/main/FHEM/14_SD_WS.pm
Mit der Version des ersten Links geht es nicht. Update sagt nothing to do.
Mit dem 2. Link mit deiner Version funktioniert es.
Das ist alles sehr merkwürdig, aber egal, Haupsache es geht.
Nochmals vielen Dank für die erfolgreiche Hilfe. Ich freue mich.
Da hatte sich bei Github ein Fehler eingeschlichen, sollte jetzt wieder funktionieren.
Da Prof. Dr. Peter Henning scheinbar wenig Zeit, meine Bitte nochmal an dich:
Setzt du mal bitte bei deinem SIGNALduino das Attribut "addvaltrigger" auf den Wert 1, damit auch DMSG und RAWMSG ins Log geschrieben werden und lädst nach der nächsten Benutzung des Sensors das Log vom Sensor hoch. Mit mehreren Nachrichten kommen wir vielleicht weiter..
Mach ich. Klar.
Hab ich gemacht, aber im fhem-LOG taucht nichts auf.
Den Sensor hatte ich etwa 1 Minute an.
Ich versuch nachher nochmal mit längerer Zeit.
EDIT
Noch immer kommen keine Daten im Log an.
Im FHEM-Log sollte auch nichts mehr auftauchen, wenn dann nur Fehlermeldungen.
Ich meine das Log vom Sensor (FileLog_SD_WS_122_T), das es dir eigentlich auch angelegt haben sollte.
Sieht dann z.B. bei mir so aus:
2022-08-09_17:52:00 SD_WS_122_T T: 36 T2: 32 T3: 31 T4: 31
2022-08-09_17:52:00 SD_WS_122_T temperature: 36
2022-08-09_17:52:00 SD_WS_122_T temperature2: 32
2022-08-09_17:52:00 SD_WS_122_T temperature3: 31
2022-08-09_17:52:00 SD_WS_122_T temperature4: 31
2022-08-09_17:52:00 SD_WS_122_T RSSI: -73
2022-08-09_17:52:00 SD_WS_122_T Protocol_ID: 122
2022-08-09_17:52:00 SD_WS_122_T RAWMSG: MU;P0=3412;P1=-1029;P2=1043;P3=4706;P4=-2986;P5=549;P6=-1510;P7=-562;D=01212121212121213456575756575756575756565757575656575757575757575657575656575656575757575757575756575756565756565757575757575757565756575757575757575757575757575657565657565757575757575757575757575757575757575756575656565757575621212121212121213456575756;CP=5;R=2;O;
2022-08-09_17:52:00 SD_WS_122_T DMSG: W122#926301360136014001680000B88
Sorry, blödes Missverständnis. LOL
Hier die Datei.
Vielen Dank für das Log. Allerdings komme ich damit auch nicht hinter das Prüfverfahren, welches wahrscheinlich im letzten Byte, vor der abschließenden 8 steckt. Im Log sind insgesamt nur 8 verschiedene Nachrichten:
9267FED3FED3FED3FED355558A8
9267FED3FED3FED3010E5550408
9267FED3FED3FED301185550348
9267FED3FED3FED301225550A88
9267FED3FED3FED3012C55507E8
9267FED3FED3FED301365550F68
9267FED3FED3FED301405550BE8
9267FED3FED3FED3010E5558208
Der Sensor überträgt ja offensichtlich auch einen Batteriezustand. Kannst du bitte mal mit einem Labornetzteil, fast leeren Batterien oder Akkus versuchen, den Zustand der Batteriewarnung zu erzeugen und die Nachrichten davon hier zu posten.
Negative Temperaturen gibt es ja bei dem Teil wahrscheinlich nicht?
OK, warte 1-2 Tage, ich mache Akkus leer und probiere mal rum.
Ich werde dir auch dann ein längeres Log schicken.
Glück gehabt, leere Batterien gefunden.
Datei im Anhang.
Wenn der Ablauf folgendermaßen war:
2022-08-10_11:28:44 SD_WS_122_T DMSG: W122#9267FED3FED3FED301B85550708
2022-08-11_10:13:59 SD_WS_122_T DMSG: W122#9267FED3FED3FED3FED355558A8 - Neustart, alte Ident 9267, kein Sensor angeschlossen
2022-08-11_10:14:40 SD_WS_122_T DMSG: W122#9267FED3FED3FED3FED355558A8
2022-08-11_10:14:57 SD_WS_122_T DMSG: W122#92ACFED3FED3FED3FED355D57E8 - Neustart, neue Ident 92AC, kein Sensor angeschlossen, Batterie leer
2022-08-11_10:17:32 SD_WS_122_T DMSG: W122#92ACFED3FED3FED3FED355D57E8
2022-08-11_10:17:33 SD_WS_122_T DMSG: W122#92ACFED3FED3FED3010455D0368 - Sensor 1 angeschlossen 26 °C, Batterie leer
2022-08-11_10:17:38 SD_WS_122_T DMSG: W122#92ACFED3FED3FED3010E55D0B48 - Sensor 1 angeschlossen 27 °C, Batterie leer
2022-08-11_10:18:09 SD_WS_122_T DMSG: W122#92ACFED3FED3FED3011855D0C08 - Sensor 1 angeschlossen 28 °C, Batterie leer
dann müsste wahrscheinlich die leere Batterie mit 0xD anstelle 0x5 signalisiert werden.
Könntest du bitte die Aktion nochmal mit 4 angeschlossenen Sensoren durchführen?
Wenn die Theorie stimmt, dann sollte aus 0x55D0 dann 0x0080 werden.
OK, Nachschub.
ZitatPeter Henning scheinbar wenig Zeit
Amen, Bruder, Amen. Ich ersaufe in Arbeit für die DELFI-Konferenz, und nächste Woche bekommen wir eine neue Küche.
Allerdings ist der Auftrag mit den Batterien und einem Labornetzteil überschaubar
Ich schau mal, ob ich Daten produzieren kann.
LG
pah
Meine Vermutung hat sich bestätigt:
2022-08-12_09:22:47 SD_WS_122_T DMSG: W122#92AD0104010E010E010400804A8
Allerdings kam dann auch mal eine Nachricht mit 0x0088:
2022-08-12_12:07:57 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0088CC8
Gibt es nur ein Batteriesymbol, entweder an oder aus, oder etwa eine Balkenanzeige, so das verschiedene Zustände angezeigt werden können?
Leider finde ich nirgends eine Bedienungsanleitung zu dem Teil.
Ich hänge hier mal ein Bild an.
OK, also hier mal Input.
1. Setzen des Attributs addvaltrigger im SDuino bewirkt - gar nichts. Keine Ausgabe von extra Messages.
2. Also habe ich mal eine gepatchte Version von 1_SD_WS.pm gebaut und zusätzliche Readings mit den Status erzeugt.
- Die Status-Nibble haben den Wert 0101, wenn kein Sensor angeschlossen ist. Wird als äquivalent zu LLL = low temperature betrachtet.
- 0000 => Sensor angeschlossen und ok.
- Wenn ich jetzt am Sender die Versorgungsspannung herunterdrehe, blinkt ab etwa 2,4 V das "TX low bat"-Symbol im Empfänger. So, und jetzt kommts: Dann geht das Status-Nibble von Sensor Nr. 2 (und nur das) auf den Wert 1000 (bzw. 1101, wenn der Sensor abgezogen wird)
Unterhalb von 1,9 V piept der Empfänger, keine Funktion der Sensoren mehr. Wiederherstellung der Spannungsversorgung => Piepen hört auf.
Ich werde gleich nochmal nachlegen und den Zustand "Übertemperatur" erzeugen.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 13 August 2022, 18:13:51
Unterhalb von 1,9 V piept der Empfänger, keine Funktion der Sensoren mehr. Wiederherstellung der Spannungsversorgung => Piepen hört auf.
Setzt da der Sensor aus, d.h. auch im FHEM kein Empfang mehr, oder wird evtl. ein anderes Bit gesetzt?
Letzteres, Sensor setzt aus. Also nur "Battery OK", "Battery Low" oder "Tot".
Übertemperaturwarnung kommt übrigens nur im Empfänger, Sender misst brav weiter bis 120 °C, dann hab eich sicherheitshalber aufgehört.
Achja: die letzten 8 Bit wie immer wild schwankend. Irgendein CRC Code mit Message Number?
Ich habe jedenfalls im Modul jetzt ersetzt bei Protokoll 122
# TM40, Wireless Grill-, Meat-, Roasting-Thermometer with 4 Temperature Sensors
# -----------------------------------------------------------------------------
# 0 4 | 8 12 | 16 20 | 24 28 | 32 36 | 40 44 | 48 52 | 56 60 | 64 68 | 72 76 | 80 84 | 88 92 | 96 100 | 104
# 1001 0010 | 0110 0011 | 0000 0001 | 0011 0110 | 0000 0001 | 0011 0110 | 0000 0001 | 0100 0000 | 0000 0001 | 0110 1000 | 0000 0000 | 0000 0000 | 1011 1000 | 1000
# iiii iiii | iiii iiii | 4444 4444 | 4444 4444 | 3333 3333 | 3333 3333 | 2222 2222 | 2222 2222 | tttt tttt | tttt tttt | S4 S3 | S2 S1 | CCCC CCCC | 1
# i: 16 bit id => 9263 in example device
# 4: 16 bit unsigned 10x temperature 4 in Celsius
# 3: 16 bit unsigned 10x temperature 3 in Celsius
# 2: 16 bit unsigned 10x temperature 2 in Celsius
# t: 16 bit unsigned 10x temperature 1 in Celsius
# s: 16 bit flags denoting sensor status S. 5 = not connected or low temp, 0 = connected
# if battery low, highest bit of S2 will go to one
# C: 8 bit check???, changes in every message.
sensortype => 'TM40',
model => 'SD_WS_122_T',
prematch => sub { return 1; }, # no precheck known
id => sub { my ($rawData,undef) = @_; return substr($rawData,0,4); },
bat => sub {my (undef,$bitData) = @_;
return substr($bitData,88,1) eq "0" ? "ok" : "low";
},
temp4 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,80,4) eq '0101');
return SD_WS_binaryToNumber($bitData,16,31) / 10;
},
temp3 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,84,4) eq '0101');
return SD_WS_binaryToNumber($bitData,32,47) / 10;
},
temp2 => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,89,3) eq '101');
return SD_WS_binaryToNumber($bitData,48,63) / 10;
},
temp => sub { my (undef,$bitData) = @_;
return "NC" if (substr($bitData,92,4) eq '0101');
return SD_WS_binaryToNumber($bitData,64,79) / 10;
Das "NC" ist eigentlich sehr hilfreich, weil es darauf hinweist, dass hier der Sensor fehlt, kollidiert aber noch mit einer Abfrage weiter unten, weil dort ein nummerischer Wert für die Temperatur angenommen wird. Vorschlag: Das so ins offizielle Modul übernehmen, und unten den Test auf nummerischen Temperaturwert irgendwie umgehen.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 13 August 2022, 18:36:43
Achja: die letzten 8 Bit wie immer wild schwankend. Irgendein CRC Code mit Message Number?
Wahrscheinlich. Ich bin aber noch nicht dahinter gestiegen. Auffällig ist, das das niederwertigste Bit immer 0 ist. Es ändern sich immer nur max. 7 Bit.
Zitat
Ich habe jedenfalls im Modul jetzt ersetzt bei Protokoll 122
# s: 16 bit flags denoting sensor status S. 5 = not connected or low temp, 0 = connected
Welche Messwerte liefert FHEM bei "low temp"? Negative Temperaturen zeigt das Teil ja wahrscheinlich nicht an. Welchen Messbereich erfasst das Teil eigentlich?
Zitat
Das "NC" ist eigentlich sehr hilfreich, weil es darauf hinweist, dass hier der Sensor fehlt, kollidiert aber noch mit einer Abfrage weiter unten, weil dort ein nummerischer Wert für die Temperatur angenommen wird. Vorschlag: Das so ins offizielle Modul übernehmen, und unten den Test auf nummerischen Temperaturwert irgendwie umgehen.
So richtig gefällt mir das nicht. Das kollidiert im Modul nicht nur einmal und dürfte auch in anderen Auswertungen zu Konflikten führen, wenn da keine numerischen Werte erscheinen.
Wahrscheinlich habe ich noch ein weiteres Bit deuten können:
2022-08-09_18:50:15 SD_WS_122_T DMSG: W122#9267FED3FED3FED301405550BE8 - erste Nachricht
2022-08-09_19:50:08 SD_WS_122_T DMSG: W122#9267FED3FED3FED3010E5550408
2022-08-09_19:50:11 SD_WS_122_T DMSG: W122#9267FED3FED3FED3010E5550408
2022-08-09_19:50:14 SD_WS_122_T DMSG: W122#9267FED3FED3FED3010E5558208 - auto power off nach 60 min
2022-08-09_20:04:27 SD_WS_122_T DMSG: W122#9267FED3FED3FED3010E5550408 - Neustart
2022-08-12_09:21:19 SD_WS_122_T DMSG: W122#92ADFED3FED3FED3FED355D5A88 - Start mit leeren Batterien
2022-08-12_10:21:13 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8
2022-08-12_10:21:16 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8
2022-08-12_10:21:18 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0088CC8 - auto power off nach 60 min
2022-08-12_11:07:58 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8 - Neustart
2022-08-12_11:07:58 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8 - erste Nachricht
2022-08-12_12:07:53 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8
2022-08-12_12:07:56 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0080AC8
2022-08-12_12:07:57 SD_WS_122_T DMSG: W122#92AD010E010E010E010E0088CC8 - auto power off nach 60 min
2022-08-12_13:29:38 SD_WS_122_T DMSG: W122#926DFED3FED3FED3FED355554A8 - Neustart
Es wird dann offensichtlich Bit 3 vom Status-Nibble Sensor 1 gesetzt. Die Frage wäre jetzt, ob das auch der Fall ist, wenn man den Transmitter manuell ausschaltet.
Lädst du mal bitte noch das Log vom Sensor hoch?
EDIT:
Branch wurde aktualisiert, neues Reading batteryState ok | low, transmitter on | off
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/temola_tm40/controls_signalduino.txt
Zitatdürfte auch in anderen Auswertungen zu Konflikten führen, wenn da keine numerischen Werte erscheinen
Na ja. Das muss natürlich in der "Auswertung" abgefangen werden - aber ein falscher Temperaturwert nutzt auch niemandem etwas.
ZitatLädst du mal bitte noch das Log vom Sensor hoch?
Würd ich ja gerne. Aber wie schon geschrieben: Das Setzen von addvaltrigger hat keinerlei zusätzliche Logeinträge erzeugt.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 14 August 2022, 15:37:22
Na ja. Das muss natürlich in der "Auswertung" abgefangen werden - aber ein falscher Temperaturwert nutzt auch niemandem etwas.
Falsche Temperaturwerte gibt es bei meiner Variante auch nicht, nur veraltete, state ist eindeutig:
READINGS:
2022-08-14 13:57:50 MSGCNTLAST10MIN 0
2022-08-14 13:57:50 batteryState ok
2022-08-14 13:57:50 model SD_WS_122_T
2022-08-14 13:57:50 state T: 51
2022-08-14 13:57:50 temperature 51
2022-08-14 13:05:59 temperature2 27
2022-08-14 13:05:59 temperature3 27
2022-08-14 13:05:59 temperature4 27
2022-08-14 13:07:47 transmitter on
2022-08-11 16:46:52 type TM40
Zitat von: Prof. Dr. Peter Henning am 14 August 2022, 15:37:22
Würd ich ja gerne. Aber wie schon geschrieben: Das Setzen von addvaltrigger hat keinerlei zusätzliche Logeinträge erzeugt.
Mhmm, du hast keine Einträge wie RSSI, RAWMSG und DMSG in dem Log vom Sensor? Hast du irgendwelche Filter für das Filelog gesetzt?
Wir würden das Protokoll jetzt gerne in den Master-Branch übernehmen.
Spricht irgendetwas dagegen?
Hat schon jemand eine Bedienung/Auswertung für das Grillthermometer programmiert? Falls ja, wäre eine Veröffentlichung möglich? Ich hab schon versucht, aber dann vorerst aufgegeben.
ZitatHat schon jemand eine Bedienung/Auswertung für das Grillthermometer programmiert?
Klar.
Bedienung ist einfach: Man steckt die Thermometerspieße an der richtigen Stelle ins Fleisch. Vorsicht bei Drehspießen, hier muss man entweder alle 10 Umdrehungen die Richtung wechseln oder ein Verlängerungskabel bestellen.
Auswertung ist komplizierter: Wünsche der Gäste abfragen (z.B. "Medium"), in der Tabelle nachschlagen, welcher Kerntemperatur das entspricht. Anzeige beobachten und bei dieser Temperatur das Ding vom Grill. In FHEM: mit einem DOIF alle 60 Sekunden die gemessene Temperatur abfragen und durch ein TTS-Modul ansagen lassen. Das ermöglicht, dass man sich um die Gäste kümmert und den Grill in Ruhe lässt.
Weitere Bedienungen/Auswertungen sind m.E. vollkommen obsolet, weil man auch solche Dinge wie fehlende Sensoren oder leere Batterien spätestens bemerkt, wenn man das Ding einsetzen will.
LG
pah
Ja, danke.
Ich hatte schon einige Grillthermometer, daher ist mir die Bedienung geläufig.
Mir schwebte eigentlich so etwas vor, wie z.B. Auswahl der Fleischsorte und des Gargrades per Listenfeld, oder der Zieltemperatur. Für alle 4 Sensoren (bei Bedarf). Danach die Anzeige / Meldung, wenn Zieltemperatur erreicht ist, möglichst akustisch und per Push oder Mail.
Der mitgelieferte Funkempfänger wäre dann überflüssig.
Das macht schon etwas mehr Sinn.
Allerdings würde ich das aus Gründen der Gastfreundschaft entweder per Tablet-UI oder per ChatBot realisieren.
Tablet-UI: Separate Buttons für Fleischsorte, Gewicht oder Dicke, Gargrad => heraus kommt Kerntemperatur => Button "Einstellen" => erzeugt ein "Überwachungs-DOIF"
ChatBot: Dialog, der die o.a. Parameter abfragt => Kerntemperatur wird genannt => "Soll ich das einstellen?" => Ja => erzeugt DOIF
LG
pah
Naja, alles schön und gut, aber das war ja nicht die Frage. Meine Frage lautete ja, ob das schon jemand programmiert hat und dieses Programm dann hier veröffentlichen würde.
Trotzdem vielen Dank.