SIGNALduino TFA Dostmann Thermo/Hygro wird nicht erkannt

Begonnen von moontear, 25 Januar 2017, 00:17:51

Vorheriges Thema - Nächstes Thema

Sidey

Und wenn man einfach H, J und I auswertet?

googledocs bin2dec kann leider nur 10 bit Zahlen und keine 12 bit, aber vom Prinzip würde das ja passen.

Die 12 Bit Zahl müsste man dann (- X) *y  in die Temperatur umrechnen können nehme ich an.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

moontear

12 bit verstehe ich noch aber (- X) *y hast du mich abgehängt.

0100   0101   0110 entsprechen z.B: 21,7 Grad, umgerechnet in dez entspricht es 1110.

Sidey

Ich habe mich unvollständig ausgedrückt.

Es ist nur eine Idee.

Der Sensor hat einen Wertebereich. Vielleicht +60 bis -20 ? Ich habe jetzt nicht nachgesehen.

-20 wäre somit der niedrigste Wert, der in den 12 Bits dargestellt wird.

Um auf die Temp zu können, wäre eventuell folgende Formel denkbar:

Temp = (h&i&j - x) / y

X und y kennen wir noch nicht.. :(
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

moontear

Gute Idee.

Min/Max Temp auch eine gute herangehensweise. Sind -40 / +60 Grad. Das schöne ist das passt auch mit der Temp Range zusammen:

Bisher bekannt:
1 = -11..-25 | 2= 2..-10 | 3= 2..15 | 4= 15..30 | 5= 31..45

Wahrscheinlich gibt es dann noch 0 und 6 und die komplette Reihe dann:
0= -25..-40 | 1 = -11..-25 | 2= 2..-10 | 3= 2..15 | 4= 15..30 | 5= 31..45 | 6= 45..60

In ungefähr 15er Schritten also von -40 bis +60. Ich werde heute Abend mal probieren die Max-Temperatur auszukosten um den Max-Wert zu sehen. Der müsste ja theoretisch 6 für H sein und 255 für I&J. -40C bekomme ich nicht hin.

Ich werde ebenfalls probieren die exakten "Übersprungpunkte" von einem Range zur nächsten Range zu finden.

Sidey

Rechne Mal h i und j zusammen.
Wir müssen nur das Offset feststellen, welches wir herunter rechnen müssen .
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

moontear

#35
Done (weiß auf schwarz). Siehe Anhang.

Ich sehe auch einen linearen Verlauf aber auf die Formel komme ich nicht. Die Differenz zwischen HIJ und temp schwankt immer ein wenig.

Google Spreadsheet auch geupdatet (Reiter 12bit / 12bit sorted).
https://docs.google.com/spreadsheets/d/1q2sk5bK6Bv3gi8ahTLIUM4DaMR7AvnTVPY-NvmGMHoQ/edit?usp=sharing

moontear

 ;D Ich habs!  ;D

Die Werte sind 12-bit Werte in Fahrenheit. In Celsius wird nie etwas gesendet, auch wenn man das am DIP einstellen kann. Der DIP schaltet lediglich das Display um.

1134 als Beispiel entsprechen 73,4F. Ich habe 1134 ebenfalls mit Celsius empfangen: 23C. 23C in Fahrenheit konvertiert sind 73,4F!

Noch schöner: 1134 - 400 = 734 ~ 73,4F.

Das heißt man muss einfach die Nibbles H & I & J nehmen als 12bit Nummer, minus 400 rechnen und durch 10 und man hat den finalen Fahrenheit Wert. Jetzt noch umrechnen in Celsius, fertig!

Sidey

Prima, das ist mal was neues, dass Fahrenheit gesendet wird.

Das mit dem Umschalten ist so üblich, dass es nur die Anzeige umstellt
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

moontear

Sheet ist angepasst. Ich verstehe jetzt das ganze Signal außer M & N, nehme aber an dass das Checksums sind. Spalte E&F scheinen Session IDs zu sein, da bei Batterie Change ein Wechsel stattfindet.

https://docs.google.com/spreadsheets/d/1q2sk5bK6Bv3gi8ahTLIUM4DaMR7AvnTVPY-NvmGMHoQ/edit?usp=sharing

Spalte "tmpCalc" ist sogar die fertig berechnete Temperatur mit Formel.

((H&I&J-400)/10)-32)/1,8) = Celsius Wert

(H&I&J-400)/10) = Fahrenheit Wert

betateilchen

#39
ich bin mal gespannt, ob ich mit Euren Basteleien auch meinen TFA Sender (aus einer TFA 35.1088) mit dem Signalduino entziffern kann.

Tolle Arbeit!


2017.02.13 20:42:35 4: SIGNALduino_unknown Protocol: 34

die ersten 16 bit sind (bisher) immer gleich und scheinen mit Temp und Feuchte wenig zu tun zu haben.
0100 1000 0011 0101

dann kommen eindeutig identifizierbare 8 bit für die Luftfeuchtigket (56%)
0011 1000

in den restlichen 16 bit muss die Temperatur (21.0°C) stecken, wobei ich vermute, dass am Ende irgendwo noch eine Prüfsumme oder ein Zähler steckt.
0011 1001 1111 0100

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moontear

@betateilchen Hmm die 21C lassen sich über die mir bekannte Formel nicht aus den Bytes herauslesen - 12 passende bits finde ich nicht die zu Fahrenheit-400 oder Celsius passen würden. Vielleicht kannst du auch ein paar mehr Messwerte posten?

@sidey brauchst du noch irgendetwas um das Modul zu updaten mit dem neuen Sensor?

Sidey

Muss mir deine Daten noch mal ansehen... Haben wir alles?

Was mir so einfällt:
Batterie Bit, Kanäle, Zufalls ID, checksumme eventuell, Temp+Hum
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Sidey

Zitat von: betateilchen am 13 Februar 2017, 21:11:29
ich bin mal gespannt, ob ich mit Euren Basteleien auch meinen TFA Sender (aus einer TFA 35.1088) mit dem Signalduino entziffern kann.

Tolle Arbeit!


2017.02.13 20:42:35 4: SIGNALduino_unknown Protocol: 34

die ersten 16 bit sind (bisher) immer gleich und scheinen mit Temp und Feuchte wenig zu tun zu haben.
0100 1000 0011 0101

dann kommen eindeutig identifizierbare 8 bit für die Luftfeuchtigket (56%)
0011 1000

in den restlichen 16 bit muss die Temperatur (21.0°C) stecken, wobei ich vermute, dass am Ende irgendwo noch eine Prüfsumme oder ein Zähler steckt.
0011 1001 1111 0100


Hast Du von dem Sensor eine komplette Nachricht?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

moontear

#43
Zitat von: Sidey am 14 Februar 2017, 09:38:21
Muss mir deine Daten noch mal ansehen... Haben wir alles?

Wir haben

  • Zufalls ID (generiert on Battery change)
  • Kanal
  • Temperatur
  • Feuchtigkeit
  • (checksum?)

Die nicht ganz klare checksum ist ja relativ egal. Batterie kennen wir noch nicht -  aber wenn ich mal eine fast leere Batterie habe könnte man das ja auch herausfinden, falls der Sensor das überhaupt mitteilt. Das LCD ist nicht für Batterieanzeige ausgelegt.

Die wichtigsten Dinger: channel, Temperatur und Feuchtigkeit haben wir  8)

betateilchen

Zitat von: Sidey am 14 Februar 2017, 09:39:27
Hast Du von dem Sensor eine komplette Nachricht?

Heute Abend, wenn ich wieder zuhause bin.

Was ich noch festgestellt habe:


  • Die "checksum" ist bei mir ein Zähler, der bei jeder Änderung der übertragenen Messwerte um 1 reduziert wird und sich am Ende der Bitfolge befindet.
  • Gleichbleibende Messwerte werden zwar auch regelmäßig übertragen, allerdings wird der Zähler dabei nicht verändert, d.h. das Datentelegramm ist immer identisch.
  • Wenn sich der Zähler ändert, leutet auch die rote LED am Sensor, ansonsten bleibt sie beim Senden dunkel.
  • Vermutlich wird dadurch erkannt, ob die Werte für die Anzeige überhaupt neu berechnet werden müssen.
  • Mein Sensor liefert mit Sicherheit auch ein Signal für den Batteriezustand, denn die Anzeige in der Wohnung meldet mir einen Batteriealarm des Sensors, wenn die Batterien leer werden.




-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!