Forum: Mikrocontroller und Digitale Elektronik Hex-Werte in Temperaturen umrechnen?


von Stefan S. (kami)


Lesenswert?

Hallo zusammen,

ich habe hier von eine RFlink 433 Mhz Empfänger, der von folgenden 
Sensoren Telegramme empfängt.

https://www.plantcaretools.com/de/onlineshop/drahtloser-bodenfeuchte-sensor-detail

Die Sensoren senden +/- Temperatur und Bodenfeuchtewerte.

Die empfangenen HEX Werte sollen einen MSB und LSB Bereich habe und das 
Erste Bit gibt an ob Positiv oder negativ. Nun suche ich (am besten in 
Perl) eine Funktion, um diese Werte in plausibele Temperaturwerte 
umzurechnen. Hier ist ein Beispieloutput von 3 Sensoren aus meinem 
Garten. Die Aussenlufttemperatur betrug so 22-25 °C. Wie kann man das 
machen?

20;F5;Imagintronix;ID=0003;TEMP=0258;HUM=5c;
20;F9;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;
20;01;Imagintronix;ID=0003;TEMP=0260;HUM=5c;
20;06;Imagintronix;ID=0001;TEMP=0220;HUM=37;
20;08;Imagintronix;ID=0003;TEMP=0260;HUM=5c;
20;0E;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;
20;14;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;
20;1E;Imagintronix;ID=0001;TEMP=0228;HUM=38;
20;28;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;
20;2D;Imagintronix;ID=0001;TEMP=0220;HUM=38;
20;30;Imagintronix;ID=0003;TEMP=0260;HUM=5c;
20;36;Imagintronix;ID=0001;TEMP=0220;HUM=38;
20;38;Imagintronix;ID=0003;TEMP=0258;HUM=5c;
20;3F;Imagintronix;ID=0001;TEMP=0218;HUM=38;
20;46;Imagintronix;ID=0003;TEMP=0250;HUM=5c;
20;47;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;
20;48;Imagintronix;ID=0001;TEMP=0218;HUM=38;
20;51;Imagintronix;ID=0001;TEMP=0210;HUM=38;
20;5B;Imagintronix;ID=0002;TEMP=01e8;HUM=5c;

Danke und Gruß kami

von nicht"Gast" (Gast)


Lesenswert?

Is ja fies. Wer hat denn lmgtfy gesperrt?

https://www.google.de/?gws_rd=ssl#q=pearl+hexascii+to+int

von Stefan S. (kami)


Lesenswert?

Hi,

also irgendwie stehe ich nun auf dem Schlauch. Ich kann zwar Googlen :) 
Habe ich auch schon gemacht aber ich glaube ich habe noch nicht ganz 
verstanden, was für ein HEX Wert mir da eigentlich vorliegt.

Gruß kami

von Georg (Gast)


Lesenswert?

Stefan S. schrieb:
> ich habe noch nicht ganz
> verstanden, was für ein HEX Wert mir da eigentlich vorliegt.

Dafür gibt es z.B. den Rechner von Windows, einfach Ansicht auf 
"Programmierer" und den Wert als HEX eintippen, umstellen auf DEZ.

Das löst aber das Problem nicht, was die Zahlen darstellen sollen. Hex 
258 ist dezimal 600, aber 60 Grad werden es bei dir im Garten wohl nicht 
sein.

Übrigens, egal wie das jetzt kodiert ist, die Genauigkeit ist natürlich 
reine Angabe. Weder wird die Temperatur auf 3 Stellen gemessen noch die 
Feuchtigkeit auf 2.

Georg

von Stefan S. (kami)


Lesenswert?

Hallo,

genau da ist ja auch eigentlich das Problem. Also die Feuchtigkeitswerte 
bis 255 klappen super da kriege ich in DEZ 0-100 %. Aber bei den 
Temperaturen sind es ja zwei einzelne Werte. 02 60 zum Beispiel und die 
Werte in dieser Tabelle müssten alle positiv sein. Also wie stelle ich 
die richtig in Dezimal da müssten auch alle Mal 10 sein. Also (DEZ)255 = 
25,5 °C.

Wie kann das also gehen.

Gruß kami

von PG-For (Gast)


Lesenswert?

>Wie kann das also gehen.

Mit den mit einem anderen Thermometer gemessenen (verschiedenen)
Temperaturen vergleichen und daraus Schlüsse
ziehen ist zu einfach?

von PG-For (Gast)


Lesenswert?

>Aber bei den
>Temperaturen sind es ja zwei einzelne Werte.

Nein, das sind vermutlich 2 Bytes eines Wertes.

>02 60 zum Beispiel und die
>Werte in dieser Tabelle müssten alle positiv sein

rohwert = 0x260, mit gemessenem Wert vergleichen
und Umrechungsfaktor bestimmen?
Und das für mehrere Werte...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> was für ein HEX Wert mir da eigentlich vorliegt.
Das was du da gepostet hast, sind ASCII-Zeichen: "TEMP=01e8" ist also 
ein String.

Stefan S. schrieb:
> Also (DEZ)255 = 25,5 °C.
Nehmen wir mal ein paar deiner Werte und zeigen die als Dezimalwerte an 
(ich will da nicht "umrechnen" sagen, weil es ja genu die selbe Zahl 
ist, nur eben anders dargestellt)
hex   dez
01e8  488
0220  544
0260  608

Wenn ich das jetzt durch 20 teilen würde, käme ich auf
24,4
27,2
30,4
Passt irgendwie nicht zu deinen 22-25°C...  :-(

Stefan S. schrieb:
> Die Aussenlufttemperatur betrug so 22-25 °C
Warum sind die 3 Sensorwerte so unterschiedlich? Sonne-Schatten? Leg die 
Sensoren mal nah aneinander und sieh mal, ob die wenigstens annähernd 
gleiche Werte liefern...

: Bearbeitet durch Moderator
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Lothar M. schrieb:
> Warum sind die 3 Sensorwerte so unterschiedlich? Sonne-Schatten? Leg die
> Sensoren mal nah aneinander und sieh mal, ob die wenigstens annähernd
> gleiche Werte liefern...

 Und werden die Werte so geliefert wie von dir gepostet oder hast du
 diese in ASCII umgewandelt ?

von Stefan S. (kami)


Lesenswert?

Hallo,

also in der Dokumentation steht folgendes:

TEMP=9999       => Temperature (hexadecimal), high bit contains negative 
sign, needs devision by 10
HUM=99          => Humidity (hexadecimal)

Ich habe auch das selbe Probleme, das ich auf keine plausiblen Werte 
kommen. Kennt vielleicht einer eine Umrechnung?

Bei den anderen Werten ist das irgendwie plausibel von Oregon 
Temperatursensoren.

Die Werte sind doch recht vergleichbar, wenn man so guckt oder? Baue die 
sonst nachher nochmal raus.

Gruß kami

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> hex   dez
> 01e8  488
> 0220  544
> 0260  608
>
> Wenn ich das jetzt durch 20 teilen würde, käme ich auf
> 24,4
> 27,2
> 30,4
> Passt irgendwie nicht zu deinen 22-25°C...  :-(

Teile doch mal durch 24 :-)

hex   dez  Temp
01e8  488  20,3
0220  544  22,6
0260  608  25,3

Passt schon besser. Auch die 20,3°C lasse ich bei der vagen Formulierung 
"Die Aussenlufttemperatur betrug so 22-25 °C." noch gelten.

: Bearbeitet durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> also in der Dokumentation steht folgendes:
>
> TEMP=9999       => Temperature (hexadecimal), high bit contains negative
> sign, needs devision by 10

Das scheint aber nicht auf Deine Werte übertragbar zu sein. Da kommt 
unsinniges raus.

> Ich habe auch das selbe Probleme, das ich auf keine plausiblen Werte
> kommen. Kennt vielleicht einer eine Umrechnung?

Du bist doch der TO, oder? Wieso schreibst Du jetzt "auch"?

Mein Tipp: Stelle ein anderes Thermometer daneben und dann poste 
folgende Tabelle:

  Hex-Wert  gemessen
  ------------------
  xxxx        xx°C
  xxxx        xx°C
  ...

Dann kommen wir vielleicht weiter.

: Bearbeitet durch Moderator
von Georg (Gast)


Lesenswert?

Frank M. schrieb:
> Passt schon besser.

Ist aber reines raten. Es gibt nur 2 Möglichkeiten:

1. Es taucht eine Beschreibung auf, in der der Aufbau der Daten erklärt 
wird.

2. Die Sensoren kalibrieren - draussen ausbauen und zusammen mit einer 
präzisen Temperaturanzeige auslesen, wenn möglich in einem Wasserbad. 
Fieberthermometer z.B. sind sehr genau. Das ganze möglichst für alle 3 
Sensoren, da sollte das gleiche rauskommen - aber was weiss man schon.

Georg

von Dirk B. (dirkb2)


Lesenswert?

Und ein paar Messwerte aus dem Kühlschrank schaden auch nicht.

von Stefan S. (kami)


Lesenswert?

Hallo,

kann das Plugin zur Auswertung der Telegramme vielleicht weiterhelfen?
1
//#######################################################################################################
2
//##                    This Plugin is only for use with the RFLink software package                   ##
3
//##                                        Plugin-35 Imagintronix                                     ##
4
//#######################################################################################################
5
/*********************************************************************************************\
6
 * This plugin takes care of decoding Imagintronix sensors
7
 * 
8
 * Author             : StuntTeam
9
 * Support            : http://sourceforge.net/projects/rflink/
10
 * License            : This code is free for use in any open source project when this header is included.
11
 *                      Usage of any parts of this code in a commercial application is prohibited!
12
 *********************************************************************************************
13
 * Changelog: v1.0 initial release
14
 *********************************************************************************************
15
 * Technical information:
16
 * 
17
 * ~0.5ms high puls followed by ~1ms pause = high
18
 * ~1.5ms high puls followed by ~1ms pause = low
19
 * 
20
 * Message Format: 
21
 * 11111111 01010101 00000101 01000101 11111111 10011110
22
 * FF550545FF9E
23
 * AABCDDEEFFGG
24
 *
25
 * A = Preamble, always FF
26
 * B = TX type, always 5
27
 * C = Address (5/6/7) > low 2 bits = 1/2/3
28
 * D = Soil moisture 05% 
29
 * E = temperature 
30
 * F = security code, always F
31
 * G = Checksum 55+05+45+FF=19E CRC value = 9E
32
 *
33
 * Sample:
34
 * 20;02;DEBUG;Pulses=96;Pulses(uSec)=390,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,1260,870,420,870,1260,870,420,870, 1230,870,420,870,1260,870,420,870,1260,870,1260,870,1260,870,1230,870,1260,870,420,870,1260,870,420,870,1260,870,420,870,1260,870,1260,870,1260,870,420,870,1260,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,1230,870,1260,870,420,870,420,870,420,840,420,840,1260,6990;
35
 * 111111110101010100000101010001011111111110011110
36
 \*********************************************************************************************/
37
#define IMAGINTRONIX_PULSECOUNT 96
38
#define IMAGINTRONIX_PULSEMID   1000/RAWSIGNAL_SAMPLE_RATE
39
#define IMAGINTRONIX_PULSESHORT 550/RAWSIGNAL_SAMPLE_RATE
40
41
#ifdef PLUGIN_035
42
boolean Plugin_035(byte function, char *string) {
43
      if (RawSignal.Number != IMAGINTRONIX_PULSECOUNT) return false;
44
      unsigned int temperature=0;
45
      unsigned int rc=0;
46
      
47
      byte checksum=0;
48
      byte data[8];
49
      unsigned long bitstream=0L;
50
      //==================================================================================
51
      byte bytecounter=0;                           // used for counting the number of received bytes
52
      byte bitcounter=0;                            // counts number of received bits (converted from pulses) 
53
      // get bits
54
      for(byte x=1;x < IMAGINTRONIX_PULSECOUNT;x=x+2) {
55
         if (RawSignal.Pulses[x] > IMAGINTRONIX_PULSEMID) {     // long pulse = 0 bit
56
            if (x < 95) if ((RawSignal.Pulses[x+1] > IMAGINTRONIX_PULSEMID) || (RawSignal.Pulses[x+1] < IMAGINTRONIX_PULSESHORT)) return false;
57
            data[bytecounter] = (data[bytecounter] << 1);       // 0 bit
58
            bitcounter++;                           // received a bit
59
         } else {                                               // Short pulse = 1 bit
60
            if (RawSignal.Pulses[x] > IMAGINTRONIX_PULSESHORT) return false; // Short pulse too long? 
61
            if (x < 95) if ((RawSignal.Pulses[x+1] > IMAGINTRONIX_PULSEMID) || (RawSignal.Pulses[x+1] < IMAGINTRONIX_PULSESHORT)) return false;
62
            data[bytecounter] = (data[bytecounter] << 1) | 0x1; // 1 bit
63
            bitcounter++;                        // received a bit
64
         }
65
         // prepare for next bit/byte
66
         if (bitcounter==8) {                 // received 8 bits?
67
            bitcounter=0;                     // reset for next byte
68
            bytecounter++;                    // byte received, increase counter
69
            if (bytecounter > 7) return false; // overflow, should not happen
70
         }
71
      }
72
      //==================================================================================
73
      // Verify packet and calculate checksum
74
      //==================================================================================
75
      if (data[0] != 0xff) return false;
76
      checksum=data[1]+data[2]+data[3]+data[4];
77
      if (((checksum)&0xff) != data[5]) return false;
78
      if ( (data[1] >>4) != 0x5) return false;
79
      if (data[4] != 0xff) return false;
80
      //==================================================================================
81
      // Prevent repeating signals from showing up
82
      //==================================================================================
83
      if( (SignalHash!=SignalHashPrevious) || (RepeatingTimer+1000<millis()) ) { 
84
         //SignalCRC=bitstream;                       // not seen the RF packet recently
85
      } else {
86
         return true;                               // already seen the RF packet recently
87
      }
88
      //==================================================================================
89
      rc=(data[1])&0x03;
90
      temperature=(data[3]) << 4; 
91
      temperature=temperature/2;
92
      //==================================================================================
93
      // Output
94
      // ----------------------------------
95
      sprintf(pbuffer, "20;%02X;", PKSequenceNumber++); // Node and packet number 
96
      Serial.print( pbuffer ); 
97
 
98
      Serial.print(F("Imagintronix;")); 
99
              // Label
100
      sprintf(pbuffer, "ID=%04x;", rc);             // ID    
101
      Serial.print( pbuffer ); 
102
103
      sprintf(pbuffer, "TEMP=%04x;", temperature);     
104
      Serial.print( pbuffer ); 
105
106
      sprintf(pbuffer, "HUM=%02x;", data[2]);     
107
      Serial.print( pbuffer ); 
108
109
      Serial.println();
110
      //==================================================================================
111
      RawSignal.Repeats=true;                       // suppress repeats of the same RF packet
112
      RawSignal.Number=0;
113
      return true;
114
}
115
#endif // PLUGIN_035

Gruß kami

: Bearbeitet durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Georg schrieb:
> Ist aber reines raten.

Ja, natürlich. Mein Beitrag mit "Teile durch 24" sollte dies auch 
suggestiv verdeutlichen. Hat bei Dir auch gewirkt :-)

Denn was soll man mit gerade mal 3 Werten und der Angabe "so 22-25°C" 
denn anfangen?

Genau, gar nichts.

von Georg (Gast)


Lesenswert?

Stefan S. schrieb:
> sprintf(pbuffer, "TEMP=%04x;", temperature);

Gibt eben die Temperatur als 4stelligen HEX-Wert aus, bringt also keinen 
Schritt weiter.

Georg

von Stefan S. (kami)


Lesenswert?

Hallo,

es ist so, das ich zur Zeit davon ausgehe, das ich nur zu doof bin die 
Hex-Werte richtig umzurechnen. Aus dem Grund dachte ich jemand hat hier 
schon Erfahrungen damit, weil es garantiert eine STANDARD-Umrechnung 
ist.

Diese HEX-Werte müssten Temperaturen um die 20°C wiedergeben und nicht 
Werte die deutlich drüber oder drunterliegen. Das Problem ergibt sich 
eigentlich auch erst bei werden über 25,5 Grad. Bis dahin war meine 
Umrechnung immer plausibel weil 01e8 = 01 positiver Wert und e8 = 232 
entspricht also +23,2 Grad.

Nur halt wenn vorne ne 2 steht dann gibt es Mist.

Gruß kami

von H.Joachim S. (crazyhorse)


Lesenswert?

Es gibt die wunderlichsten Codierungen, schön zu sehen z.B. auch in der 
CAN-Matrix diverser Hersteller :-)

Es könnte auch z.B. auch folgendes sein:
das erste Byte gibt ganze 10° aus, das zweite 10/256°

hex   Temp
01 e8  10°+ 9,048°
02 20  20°+ 1,248°
02 60  20°+ 3,744°

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Bis dahin war meine Umrechnung immer plausibel weil 01e8 = 01 positiver
> Wert

Nein. Das oberste Bit hat den Wert 8000, die 01 gehört zum Wert dazu.

Eine negative Temperatur dürfte also Werte größer 8000 liefern.


Der "Standard" zum "umrechnen" von hexwerten ist die Betrachtung als 
Zahl, und was da rauskommt hat Frank schon beschrieben:


 hex dez Temp
01e8 488 20,3
0220 544 22,6
0260 608 25,3

Die Information, daß der Wert den Faktor 10 enthielte, ist 
offensichtlich falsch, aber Franks Faktor 24 erscheint bei den Werten 
plausibel.

Und wenn Du mehr rausfinden willst: Pack den Sensor in den Kühlschrank 
und sieh Dir an, was da für Werte rauskommen. Als nächstes packst Du das 
Ding in die Tiefkühltruhe und siehst Dir die Werte an, die dort 
'rauskommen.

Poste die Werte hier, dann kann man durch gemeinsames Draufsehen was 
vermuten.

Nach Franks Hypothese sollten Werte in dieser Größenordnung rauskommen:

10° 00F0
5°  0078
-5° FF88
-10° FF10
-18° FF50

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> weil 01e8 = 01 positiver Wert und e8 = 232
Das ist aber eine sehr verwunderliche Interpretation der Spec:
>> TEMP=9999 => Temperature (hexadecimal),
>> high bit contains negative sign,
>> needs devision by 10

Georg schrieb:
> Gibt eben die Temperatur als 4stelligen HEX-Wert aus, bringt also keinen
> Schritt weiter.
Der Trick liegt in der Protokollbeschreibung:
1
Message Format:
2
* FF5505  45  FF9E
3
* AABCDD  EE  FFGG
4
*
5
* A = Preamble, always FF
6
* B = TX type, always 5
7
* C = Address (5/6/7) > low 2 bits = 1/2/3
8
* D = Soil moisture 05%
9
* E = temperature
10
* F = security code, always F
11
* G = Checksum 55+05+45+FF=19E CRC value = 9E
Also sind im Beispiel die (von mir freigestellten) 0x45 die Temperatur.

Dieser Wert steht im data[3] und wird von dort ein wenig kurios weiter 
verrechnet:
1
temperature=(data[3]) << 4;  // mal 16
2
temperature=temperature/2;   // geteilt durch 2
Und gleich danach kommt die Ausgabe
1
sprintf(pbuffer, "TEMP=%04x;", temperature); Serial.print( pbuffer );
Letztlich kann aber durch diese Operationen hier NIEMALS das höchste Bit 
gesetzt werden, und es wird auch niemals anderweitig gesetzt. Insofern 
ist die Protokollbeschreibung offenbar unbrauchbarer Schrott...

BTW:
Bitte Quelltexte mit den C-Token umrahmen. Das steht über jeder 
Eingabebox:
1
Wichtige Regeln - erst lesen, dann posten!
2
3
    .....
4
    Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
5
6
Formatierung (mehr Informationen...)
7
8
    [c]C-Code[/c]

: Bearbeitet durch Moderator
von Stefan S. (kami)


Lesenswert?

Hi,

okay das ja ganz aufschlussreich. Dann werde ich mal schauen, was die 
bei Raumtemperatur und im Kühlschrank liefern.

Gruß kami

P.S.: Nächste mal nutze ich C-Code

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> P.S.: Nächste mal nutze ich C-Code
Der Trick ist der Teil mit den eckigen Klammern. Dort wo C-Code steht, 
kommt dein C-Code rein. Einfach mal vor dem "Absenden" auf "Vorschau" 
drücken...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Stefan S. schrieb:
> kann das Plugin zur Auswertung der Telegramme vielleicht weiterhelfen?

 Nein, aber empfangenes Telegramm schon.

 Ausserdem:
1
      temperature=(data[3]) << 4;
2
      temperature=temperature/2;
 Nach dieser komischen Umrechnung ist data[3] für:
 0x260 = 0x4C oder 76
 0x218 = 0x43 oder 67
 0x1E8 = 0x3D oder 61

 Bei 3 Grad Unterschied und (76-61) / 3 sollte es sein:
 22°C == 61
 23°C == 66
 24°C == 71
 25°C == 76

 Angenommen, es ist tatsächlich 0.2°C Auflosung, dann könnte es
 sein, dass du folgendes gemessen hast:
 0x1E8 = t
 0x218 = t + 1.2°C
 0x260 = t + 3°C

 Oder auch nicht...

 Ohne Telegramm wird es aber wahrscheinlich nichts, ausserdem liefert
 dein Sensor1 Werte die ziemlich stark voneinander abweichen.

von Peter M. (r2d3)


Lesenswert?

Stefan S. schrieb:
> TEMP=9999       => Temperature (hexadecimal), high bit contains negative
> sign, needs devision by 10

Stefan, steht doch fast alles da, Du solltest halt nur gleich von Anfang 
an die vollständige Doku liefern, nicht erst mehrere Beiträge später! 
:)

Da steht, dass das oberste Bit das negative Vorzeichen liefert.
Wir ignorieren die immer gleichen Hexwerte von "20" einfach!*


Du musst einfach nur wissen, dass es zwei Arten gibt, Ganzzahlen mit 
Vorzeichen zu speichern, vorzeichenbehaftete und Zahlen im 
Zweierkomplement.

Gucken wir uns drei 8-Bit-Zahlen:
Zahl  Darstellung vorzeichenbehaftet  Zweierkomplement / dez

-2     1 000 0010    1 111 1110 ||254
-1     1 000 0001    1 111 1111 ||255
0      0 000 0000    0 000 0000 ||0
+1     0 000 0001    0 000 0001 ||1
+2     0 000 0010    0 000 0010 ||2
+3     0 000 0011    0 000 0011 ||3

Du kannst also in einem Byte positve Zahlen von 0-255 kodieren.
Du kannst aber auch sagen, Du reservierst das oberste Bit als 
Vorzeichen.

Dann kannst Du Zahlen von -127 bis +127 darstellen.
Für die Null gibt es gleich zwei Darstellungen, nämlich +0 und -0...

Es gibt aber auch das Zweierkomplement.
Bei der Darstellung kannst Du negative Zahlen auch am gesetzten obersten 
Bit erkennen. Hier sind Werte von -128 bis +127 möglich.

Die Werte F5, F9 und 01 legen nahe, dass es sich um 
Zweierkomplementdarstellung handelt, ansonsten würden die Temperaturen 
zu sehr springen!

Wenn Du immer dann den Messwert von 256 abziehst, wenn das oberste Bit 
gesetzt ist (Dezimalwert>=128) hast Du den Wert als Wert im 
Dezimalsystem mit negativem Vorzeichen:  -(256-245)=-11

"F5" dezimal von( 0-255): 245 umgerechnet  -(256-245)=-11
"F9" dezimal von( 0-255): 249 umgerechnet  -(256-249)=-7
"01" dezimal von( 0-255):   1 umgerechnet  =1
...
"5B" dezimal von( 0-255):   1 umgerechnet  =91

Diesen Wert beziehen sich vermutlich auf einen Nullpunkt und sind 
skaliert.

"F5" dezimal von( 0-255): 245 umgerechnet  -(256-245)=-11
"F9" dezimal von( 0-255): 249 umgerechnet  -(256-249)=-7
"01" dezimal von( 0-255):   1 umgerechnet  =1
...
"5B" dezimal von( 0-255):  91 umgerechnet  =91

Jetzt skalieren wir nach Vorschrift des Herstellers und dividieren durch 
10, also ergibt sich -1,1  -0,7  0,1  9,1


Mein simpler Reichelt-Temperatursensor KTY81-110 hat 1000Ohm bei 25 
Grad.
Deine Messwerte könnten die positiven oder negativen Abweichungen von 
einem Referenzwert darstellen!

Also noch mal geschätzt 25 Grad dazuzählen:

23,9  24,3  25,1  34,1

Das wäre dann die Temperatur in Grad.

Schreibt der Hersteller irgendwas zum Offset?
Dann müssen wir den Offset nicht mehr raten...

Miss mal zwei Punkte die schön auseinander liegen, also morgen früh mal 
und morgen nachmittag und schreibe Dir die Referenztemperaturen auf.
Dann finden wir den Offset auch ohne Herstellerangaben.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter M. schrieb:
> Also noch mal geschätzt 25 Grad dazuzählen:
Das ist aber schon eine sehr gewagte Strategie: sich zwar auf die 
angegebenen "geteilt durch 10" aus dem Datenblatt verlassen, dann aber 
einfach ein Byte ignorieren und einen beliebigen Offset draufaddieren... 
:-o

Mich wundern nach wie vor die sehr unterschiedlichen Temperaturwerte und 
ich frage mich, ob das wirklich die Sensortemperatur war. Denn ein 
schwarzes Gehäuse heizt sich auch bei 25°C Lufttemperatur locker auf 
34°C auf. Und damit läge meine allererste Antwort wieder gut im 
Rennen...

von Peter M. (r2d3)


Lesenswert?

Lothar M. schrieb:
> Peter M. schrieb:
>> Also noch mal geschätzt 25 Grad dazuzählen:
> Das ist aber schon eine sehr gewagte Strategie: sich zwar auf die
> angegebenen "geteilt durch 10" aus dem Datenblatt verlassen, dann aber
> einfach ein Byte ignorieren und einen beliebigen Offset draufaddieren...
> :-o

Der Grund für meine verwegene Schätzung ist ein ganz einfacher:

Nehmen wir an, dass "20" das höherwertigere Byte darstellt!

Dann handelt es sich bei allen Werten um positve Werte, weil ja das 
oberste Bit nicht gesetzt ist.

Der Sprung von F9 und 01 entspräche dann roh 248 Werten, bzw. skaliert 
24,8 Grad Differenz.
Der Sensor lag vorher aber wohl nicht im Kühlschrank.
Dieser extreme Anstieg ist unwahrscheinlich!

Folgerung: Bei diesem Sprung handelt es sich offensichtlich um einen 
Nulldurchgang, denn dann enspricht der Anstieg nur 8 Werten, bzw 0,8 
Grad skaliert.

Weil ich bei meinen Anfängerexperimenten mit Spannungsnormalen auch mit 
Temperatursensoren herumspiele weiß ich, dass die Temperatursensoren ja 
Referenzpunkte haben, zum Beispiel Null Grad Celsius für R=100,1000 oder 
10000 Ohm bei den PT-Widerständen oder 25 Grad Celsius beim KTY81-100.

Schaltungstechnisch ist wahrscheinlich die Auswertung mit einem Teiler 
gegenüber einem Referenzteiler am einfachsten.
Dann kommen halt positve und negative Spannungen heraus bezogen auf die 
Nullspannung bei Referenztemperatur.
Und diese Zahlen müssen dann wieder binär kodiert werden.

Das waren so meine Gedanken...
Ich lass' mich auch gerne falsifizieren. Ich würde schon gerne das 
Rätsel entschlüsseln. Dafür muss Stefan aber zwei oder drei einigermaßen 
genaue Messwerte liefern, damit man das dekodieren kann.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Die Werte F5, F9 und 01 legen nahe, dass es sich um
> Zweierkomplementdarstellung handelt, ansonsten würden die Temperaturen
> zu sehr springen!

 Für mich ist das ganz einfach ein 8-bit Zähler, der bei 0xFF
 überläuft und wieder bei Null anfängt. Ob er Telegramme oder Zeit
 zählt ist unwichtig.
 Du kannst das natürlich als Zweierkomplementdarstellung sehen...

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter M. schrieb:
> Dann handelt es sich bei allen Werten um positve Werte, weil ja das
> oberste Bit nicht gesetzt ist.
Das oberste Bit wird niemals gesetzt, weil die zugrundeliegende 
Berechnung das gar nicht hergibt...

> muss Stefan aber zwei oder drei einigermaßen genaue Messwerte liefern
Genau und zuverlässig wäre gut. Am besten Werte von allen 3 Sensoren 
nebeneinander im Schatten bei einem anderen Thermometer... ;-)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

EDIT ging nicht mehr, also:
 Im Telegramm steht in data[3] der von Sensor gesendete Temperaturwert.
 Es ist ein 8 bit Wert, wird erst vom Plugin (auf etwas ungewöhnliche
 Weise) in einen 16 bit umgewandelt.
 Die Ursprungswerte für data[3] im Telegramm gehen von etwa 61 bis 75.
 Das ergibt eine Differenz von 15 für 3 Grad Unterschied, demzufolge
 hat der Sensor eine Auflösung von etwa 0.2C - immer vorausgesetzt,
 die angegebene Temperatur von 22-25C stimmt.
 Aber auch nach dieser Rechnung kann 0C nicht angezeigt werden, also
 ist das Ganze ohne Telegramm und eingermassen genaue Temperatur
 sinnlos.

: Bearbeitet durch User
von Peter M. (r2d3)


Lesenswert?

Noch ein Nachtrag:
1
* Message Format: 
2
 * 11111111 01010101 00000101 01000101 11111111 10011110
3
 * FF550545FF9E
4
 * AABCDDEEFFGG
5
 *
6
 * A = Preamble, always FF
7
 * B = TX type, always 5
8
 * C = Address (5/6/7) > low 2 bits = 1/2/3
9
 * D = Soil moisture 05% 
10
 * E = temperature 
11
 * F = security code, always F
12
 * G = Checksum 55+05+45+FF=19E CRC value = 9E

Leute, guckt mal, im Protokoll sind nur zwei Nibbles, also ein Byte für 
die Temperatur vorgesehen.

Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur 
weggeschmissen:
1
 temperature=(data[3]) << 4; 
2
      temperature=temperature/2;
Das macht keinen Sinn!
Wir kommen hier nicht weiter, weil uns der obige Code nicht die Rohdaten 
liefert.
Stefan, liefer mal die Rohdaten der Temperatur!
Ersetze:
1
sprintf(pbuffer, "TEMP=%04x;", temperature);
1
sprintf(pbuffer, "TEMP=%02x;", data[3]);

Und dann fangen wir noch einmal von vorne an!
Was ich versucht habe auszuwerten, ist die Sequence-Nummer, aber nicht 
das rohe Temperaturdatum.
Was bis jetzt hinter "TEMP=" stand, verwirrt nur...

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur
> weggeschmissen: temperature=(data[3]) << 4;
>       temperature=temperature/2;
> Das macht keinen Sinn!

 Da wird gar nichts weggeschmissen, Temperatur ist mit Null deklariert.
 Und data[3] wird einfach ins Temperatur ubernommen, mit 16
 multipliziert und  gleich danach mit 2 geteilt.
 Das man ein Byte nur selten ohne Überlauf mit 16 multiplizieren kann
 ist klar, aber warum nicht gleich mit 8 multiplizieren ist mir immer
 noch nicht klar...

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Peter M. schrieb:
> Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur
> weggeschmissen:

Stimmt nicht, denn:

  unsigned int temperature=0;

Ich nehme mal an, dass ein int hier mindestens 16 bit hat.

Marc V. schrieb:
> warum nicht gleich mit 8 multiplizieren ist mir immer
>  noch nicht klar...

Eben, kommt mir auch spanisch vor.

Aber:

Wenn das Byte mit 8 multipliziert wird und jeder Schritt 1/3 Grad 
bedeutet, dann ist meine (gewagte) Hypothese (s.o.), einfach den Wert 
durch 24 zu teilen, absolut richtig :-))))

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Was ich versucht habe auszuwerten, ist die Sequence-Nummer, aber nicht
> das rohe Temperaturdatum.
 Aha.
 Deswegen wohl:
> Die Werte F5, F9 und 01 legen nahe, dass es sich um
> Zweierkomplementdarstellung handelt, ansonsten würden die Temperaturen
> zu sehr springen!
> Der Sprung von F9 und 01 entspräche dann roh 248 Werten, bzw. skaliert
> 24,8 Grad Differenz.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Frank M. schrieb:
> Wenn das Byte mit 8 multipliziert wird und jeder Schritt 1/3 Grad
> bedeutet, dann ist meine (gewagte) Hypothese (s.o.), einfach den Wert
> durch 24 zu teilen, absolut richtig :-))))

 Ich habe auch zuerst mit 3 gerechnet,aber dann erschien mir die
 Auflösung von 0,33C zu grob.
 Diese Rechnung könnte hinhauen, aber nur wenn man 20.3C als untersten
 Wert betrachtet.
 Dann ist 20.3 * 3 = 61 was in etwa stimmen kann.
 Und auch 25C * 3 = 75 was auch stimmen kann.

 Ohne genaue Temperaturmessung ist das alles nur stochern im Nebel.

von Peter M. (r2d3)


Lesenswert?

Marc V. schrieb:
> Peter M. schrieb:
>> Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur
>> weggeschmissen: temperature=(data[3]) << 4;
>>       temperature=temperature/2;
>> Das macht keinen Sinn!
>
>  Da wird gar nichts weggeschmissen, Temperatur ist mit Null deklariert.
>  Und data[3] wird einfach mit 16 multipliziert und gleich danach mit
>  2 geteilt - warum nicht gleich mit 8 multiplizieren ist mir immer
>  noch nicht klar...

Ich kann kaum C. :(
Wenn das Shiften auf 16Bit läuft, hast Du Recht.
Wenn das auf 8Bit liefe, dann ist es gleichbedeutend mit Multiplikation 
mit 8 und Löschung des höchsten Bits (Vorzeichen?).

von Anja (Gast)


Lesenswert?

Frank M. schrieb:
> Wenn das Byte mit 8 multipliziert wird und jeder Schritt 1/3 Grad
> bedeutet, dann ist meine (gewagte) Hypothese (s.o.), einfach den Wert
> durch 24 zu teilen, absolut richtig :-))))

Widerspricht aber der Anleitung.
Frage: meint der Hersteller tatsächlich Grad Celsius oder Grad 
Fahrenheit? (oder sonst noch was).

Gruß Anja

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Anja schrieb:
> Widerspricht aber der Anleitung.

Korrekt, wurde oben aber auch schon festgestellt.

> Frage: meint der Hersteller tatsächlich Grad Celsius oder Grad
> Fahrenheit? (oder sonst noch was).

Das ist ein sehr interessanter Anzatz! Könnte man ja mal umrechnen:

hex   dez  dez/8   Temp (°F)   Temp (°C)
01e8  488  61       61          16,1
0220  544  68       68          20,0
0260  608  76       76          24,4

Ich habe hier mal mit Achtel-Werten gerechnet, weil lt. C-Programm eine 
Multiplikation mit 8 stattfindet. Der Temperaturbereich von 16°C bis 
24°C ist hier etwas zu groß - vor allen Dingen nach unten. Bei 
Zehntel-Werten (nach Dokumentation) kommen hier aber noch unsinnigere 
Temperaturen raus.

Es bleibt dabei: Messreihe mit möglichst vielen Werten und dann rechnen 
ist immer noch das Mittel der Wahl.

von Stefan S. (kami)


Lesenswert?

Hallo zusammen,

erstmal vielen Dank für die wahnsinnig vielen Rückmeldungen auf meine 
Anfrage. Echt klasse.

Ich habe nun auch mal ein paar Messungen gemacht und hier die 
Ergebnisse.

Also in meinem Haus zeigen bei einer Innenraumtemperatur von ca. 25,6 °C 
die Sensoren folgendes  an:

20;AD;Imagintronix;ID=0001;TEMP=0210;HUM=05;
20;B9;Imagintronix;ID=0001;TEMP=0210;HUM=05;

20;1C;Imagintronix;ID=0002;TEMP=0218;HUM=05;
20;25;Imagintronix;ID=0002;TEMP=0218;HUM=05;
20;2F;Imagintronix;ID=0002;TEMP=0218;HUM=05;

20;64;Imagintronix;ID=0003;TEMP=0218;HUM=05;
20;6B;Imagintronix;ID=0003;TEMP=0218;HUM=05;

Die Werte bleiben konstant bei 0210 und 0218


Einen Sensor habe ich mal in den Gefrierschrank -18°C gepackt und dann 
rausgenommen und auf Innenraumtemperatur auf heizen lassen. Zeitabstand 
so alle 3 min ein Wert.

Hier das Ergebnis:


20;23;Imagintronix;ID=0003;TEMP=00d8;HUM=05;
20;35;Imagintronix;ID=0003;TEMP=00d0;HUM=05;
20;50;Imagintronix;ID=0003;TEMP=00c8;HUM=05;
20;5A;Imagintronix;ID=0003;TEMP=00c8;HUM=05;
20;80;Imagintronix;ID=0003;TEMP=00b8;HUM=05;
20;88;Imagintronix;ID=0003;TEMP=00b8;HUM=05;
20;91;Imagintronix;ID=0003;TEMP=00b8;HUM=05;
20;9C;Imagintronix;ID=0003;TEMP=00b8;HUM=05;
20;BC;Imagintronix;ID=0003;TEMP=0130;HUM=05;
20;C6;Imagintronix;ID=0003;TEMP=0150;HUM=05;
20;CE;Imagintronix;ID=0003;TEMP=0168;HUM=05;
20;D8;Imagintronix;ID=0003;TEMP=0180;HUM=05;
20;E2;Imagintronix;ID=0003;TEMP=0188;HUM=05;
20;F4;Imagintronix;ID=0003;TEMP=01a0;HUM=05;
20;0B;Imagintronix;ID=0003;TEMP=01b8;HUM=05;

Gruß kami

von Wolfgang (Gast)


Lesenswert?

Stefan S. schrieb:
> Hier das Ergebnis:

Davon sehe ich in den Daten nichts oder hast du dem Sensor bei -18°C im 
nicht genug Zeit gegeben?

Stefan S. schrieb:
> ... und das Erste Bit gibt an ob Positiv oder negativ

von Peter M. (r2d3)


Lesenswert?

Deine Messungen legen nahe, dass die Temperatur in Celsius sich aus der 
Formel

celsius=temp/8 -40

ergibt.

von Peter M. (r2d3)


Lesenswert?

Wolfgang schrieb:
> Stefan S. schrieb:
>> Hier das Ergebnis:
>
> Davon sehe ich in den Daten nichts oder hast du dem Sensor bei -18°C im
> nicht genug Zeit gegeben?

Hier stagniert der Wert nach Tiefkühleinlage des Sensors:

20;9C;Imagintronix;ID=0003;TEMP=00b8;HUM=05;

von c-hater (Gast)


Lesenswert?

Stefan S. schrieb:

> Ich habe nun auch mal ein paar Messungen gemacht und hier die
> Ergebnisse.

Was da rauskommt, ist ziemlicher Bullshit. Es sind zwar Tendenzen 
erkennbar, die in Teilbereichen halbwegs plausibel sind, aber die Werte 
zeigen, dass da irgendwas grundsätzlich im Argen liegen muss. Denn die 
Kurve insgesamt ist weit weg vom erwartbaren Verlauf für die von dir 
beschriebene Messung.

Vermutlich (höchstwahrscheinlich) ist schon die Spezifikation der 
Struktur der Rohdaten in dem Plugin falsch, dementsprechend liefert das 
Plugin seinerseits dann auch bloss noch Datenmüll.

Dem Problem kommt man also nur auf eine Weise auf die Schliche: 
Denselben Versuch noch einmal, aber nicht den Schwachsinn posten, den 
das Plugin produziert, sondern statt dessen die vollständigen 
Rohdatensätze als Hexdumps.

Sehr wahrscheinlich stecken irgendwo darin noch andere Bits, die zur 
Temperatur gehören.

von c-hater (Gast)


Lesenswert?

Peter M. schrieb:
> Deine Messungen legen nahe, dass die Temperatur in Celsius sich aus der
> Formel
>
> celsius=temp/8 -40
>
> ergibt.

Nein, sicher nicht.

Hast du dir mal den Verlauf der Kurve angesehen? Der sollte 
(wenigstens in etwa) einer Exponentialfunktion entsprechen, ist aber 
weit weg davon.

Es gibt nicht nur einen deutlichen Sprung der absoluten Werte, sondern 
auch der Zeitkonstanten der erwartbaren Exponantialfunktion. Sprich: Das 
ist ziemlicher Bitmüll.

von Peter M. (r2d3)


Lesenswert?

Stefan S. schrieb:

Wendet man die Formel auf den Ursprungsdatensatz an und sortiert nach 
Sensornummern ergibt sich:

Sensor 1 zeigt Werte von 26-29 Grad.
Sensor 2 zeigt konstante 21 Grad.
Sensor 3 zeigt Werte von 34-36 Grad.

von Peter M. (r2d3)


Lesenswert?

c-hater schrieb:

> Hast du dir mal den Verlauf der Kurve angesehen? Der sollte
> (wenigstens in etwa) einer Exponentialfunktion entsprechen, ist aber
> weit weg davon.

Nein. Ich betrachte nur die beiden Fixpunkte.
Ich halte es nicht für sehr sinnvoll, auf irgendwelche Verlaufsdaten 
einzugehen, denn deren Entstehungsgeschichte ist nicht verwertbar.

Man könnte so etwas auswerten, wenn Stefan eine zweispaltige Tabelle 
liefern würde mit Zeitstempel und Temperaturwert.

Was Du analysierst, ist aufgrund der vorliegenden Datenqualität 
Kaffesatzleserei. Ziel war ein Zwei- oder Mehrpunktmessung.

Ich dachte übrigens anfangs auch, man müsse die Nachricht dekodieren, 
aber da die bytebasierten Temperaturdaten in einem Zwei-Byte-Wert 
geshiftet werden, gehen auch keine Daten verloren.

Hier habe ich wohl Unrecht:

Peter M. schrieb:
> Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur
> weggeschmissen: temperature=(data[3]) << 4;
>       temperature=temperature/2;

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Peter M. schrieb:

> Man könnte so etwas auswerten, wenn Stefan eine zweispaltige Tabelle
> liefern würde mit Zeitstempel und Temperaturwert.

Er hat die Datensätze geliefert und gesagt, das die temporal äquidistant 
gewonnen wurden (nämlich ca. alle drei Minuten). Das genügt.

Jedenfalls wenn man geneigt ist, zumindest grundsätzlich den Angaben der 
TO zu trauen. Wenn man das aber nicht tut, ist deine Analyse mindestens 
genauso Kaffeesatzleserei wie meine...

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Lesenswert?

Stefan S. schrieb:
> Die Werte bleiben konstant bei 0210 und 0218
>
> Einen Sensor habe ich mal in den Gefrierschrank -18°C gepackt und dann
> rausgenommen und auf Innenraumtemperatur auf heizen lassen. Zeitabstand
> so alle 3 min ein Wert.

 Meiner Meinung nach sind die Sensoren nicht übermässig präzise und
 Plugin ist schlecht, um nicht absoluter Mist zu sagen.
 Es kann aber folgendermassen hinhauen:

 -18C = 0xB8
 25.6C = 0x218

 Dann könnte die angehängte Tabelle in etwa stimmen...

von c-hater (Gast)


Lesenswert?

Marc V. schrieb:

>  Dann könnte die angehängte Tabelle in etwa stimmen...

Gewagt, sehr gewagt...

Wenn der TO auch nur näherungsweise die Wahrheit darüber gesagt hat, wie 
er die Messwerte gewonnen hat, dann stimmt deine Tabelle nicht. Sie ist 
dann bestenfalls eine halbwegs brauchbare Interpretation der bei der 
Verwurstung durch das Plugin verbliebenen Bits der tatsächlichen Daten.

Oder anders ausgedrückt: So katastrophal mies ist wohl kein kommerziell 
vertriebener Sensor, nichtmal einer, der nur zur Messung der 
Eigenschaften von Gartenerde gedacht ist...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

-hater schrieb:
> Wenn der TO auch nur näherungsweise die Wahrheit darüber gesagt hat, wie
> er die Messwerte gewonnen hat, dann stimmt deine Tabelle nicht. Sie ist
> dann bestenfalls eine halbwegs brauchbare Interpretation der bei der
> Verwurstung durch das Plugin verbliebenen Bits der tatsächlichen Daten.

 Stimmt.
 Ich habe ihm schon am 3.5. geschrieben:
Marc V. schrieb:
> Ohne Telegramm wird es aber wahrscheinlich nichts, ausserdem liefert
>  dein Sensor1 Werte die ziemlich stark voneinander abweichen.
Marc V. schrieb:
> Ohne genaue Temperaturmessung ist das alles nur stochern im Nebel.


 Also, Sensor und Thermometer daneben, evtl. mit Haartrockner
 nachhelfen.

von c-hater (Gast)


Lesenswert?

Marc V. schrieb:

>  Also, Sensor und Thermometer daneben, evtl. mit Haartrockner
>  nachhelfen.

Und Rohdaten posten. Das scheint mir viel wichtiger zu sein. Dass das 
Plugin Schrott ist, dürfte ja wohl schon so ziemlich feststehen.

Entweder macht es Mist schon bei der Decodierung der Bits (und der TO 
ignoriert das "false" des Funktionsergebnisses) oder die vom Plugin 
angenommene Datenstruktur des Senders ist nicht korrekt.

Viel mehr Möglichkeiten sehe ich hier nicht.

von Stefan S. (kami)


Lesenswert?

Hallo zusammen,

also ich habe die Firmware modifiziert und werde sie demnächst 
einspielen.

Bin zur Zeit leider viel unterwegs und schaffe es nicht so schnell wie 
ich gerne würde neue Daten zu liefern.

Aber kommt alles.

Vielen Dank schonmal.

Gruß kami

von Niemand (Gast)


Lesenswert?

In

https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/46_TRX_WEATHER.pm

findet man
1
 ((($bytes->[$off] & 0x80) ? -1 : 1) *
2
    (($bytes->[$off] & 0x7f)*256 + $bytes->[$off+1]))/10;

Erinnert an DHT11/DHT22. Aber das funktioniert so mit den Daten des TO 
nicht.


Merator: Tags korrigiert

: Bearbeitet durch Moderator
von Stefan S. (kami)


Lesenswert?

Hallo zusammen,

ich habe mal das Plugin auf data[3] geswitcht. Hier die ersten Werte von 
2 Sensoren die beide in einem Raum mit 27,9°C liegen:

20;1E;Imagintronix;ID=0002;TEMP=0044;HUM=05;

20;23;Imagintronix;ID=0001;TEMP=0044;HUM=05;

20;2B;Imagintronix;ID=0001;TEMP=0044;HUM=05;

20;3C;Imagintronix;ID=0001;TEMP=0044;HUM=05;

20;40;Imagintronix;ID=0002;TEMP=0045;HUM=05;

20;44;Imagintronix;ID=0001;TEMP=0044;HUM=05;

Ich mache gleich mal einen Abkühlversuch.

Gruß kami

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> ich habe mal das Plugin auf data[3] geswitcht.

Bitte keine Prosa, sondern Quellcode.

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Lesenswert?

Stefan S. schrieb:
> ich habe mal das Plugin auf data[3] geswitcht. Hier die ersten Werte von
> 2 Sensoren die beide in einem Raum mit 27,9°C liegen:

 LOL.
 Wenn die TEMP in HEX ist, dann stimmt meine Tabelle doch.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Ist das Plugin überhaupt für den verwendeten Sensor gedacht?

Nur mal auf die Schnelle "Imagintronix protocol" gegoogelt:

https://www.pitt-pladdy.com/blog/_20131228-233456_0000_Imagintronix_Temperature_Humidity_Sensor_Protocol_WH15B_for_WH1400_/

von Peter M. (r2d3)


Lesenswert?

Marc V. schrieb:
> Stefan S. schrieb:
>> ich habe mal das Plugin auf data[3] geswitcht. Hier die ersten Werte von
>> 2 Sensoren die beide in einem Raum mit 27,9°C liegen:
>
>  LOL.
>  Wenn die TEMP in HEX ist, dann stimmt meine Tabelle doch.

Bitte beim nächsten Mal meine primitive Formel richtig abtippen, mein 
Offset beträgt 40 und nicht 41...

:)

von Peter M. (r2d3)


Lesenswert?

Christian H. schrieb:
> Ist das Plugin überhaupt für den verwendeten Sensor gedacht?
>
> Nur mal auf die Schnelle "Imagintronix protocol" gegoogelt:
>
> 
https://www.pitt-pladdy.com/blog/_20131228-233456_0000_Imagintronix_Temperature_Humidity_Sensor_Protocol_WH15B_for_WH1400_/

Aus dem Link:

> 2-bits of Channel data. This is the Channel - 1 so Channel 3 devices
> would be encoded as 0x2.
> 12-bits of 2's Compliment Temperature in 1/10'ths of a °C

Das passt nicht zum Text von Stefan:

Stefan S. schrieb:
> * Message Format:
>  * 11111111 01010101 00000101 01000101 11111111 10011110
>  * FF550545FF9E
>  * AABCDDEEFFGG
>  *
>  * A = Preamble, always FF
>  * B = TX type, always 5
>  * C = Address (5/6/7) > low 2 bits = 1/2/3
>  * D = Soil moisture 05%
>  * E = temperature
>  * F = security code, always F
>  * G = Checksum 55+05+45+FF=19E CRC value = 9E

Hier steht nichts davon, wo die fehlenden 4 Bit einer 12-Bit-Zahl 
liegen.
Hier werden nur 8 Bits reserviert (2 Nibble mit Buchstaben EE).

Der Code passt nicht zum Datenformat! Hier ist was falsch.
Meine Formel bzw. die Tabelle von Marc passt am ehesten.
Stefan braucht einen anderen Sensor oder passenden Code.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Bitte beim nächsten Mal meine primitive Formel richtig abtippen, mein
> Offset beträgt 40 und nicht 41...

 Du hast immer noch genau nix verstanden.
 Von was fur einem Offset ist die Rede ?
 Wo siehst du bei mir ein Offset ?

 Und von welchen Formeln redest du uberhaupt ?
 Diese hier ?
Peter M. schrieb:
> Der Sprung von F9 und 01 entspräche dann roh 248 Werten, bzw. skaliert
> 24,8 Grad Differenz.

 Oder diese ?
Peter M. schrieb:
> Ich kann kaum C, aber hier werden wohl die obersten 4 Bit der Temperatur
> weggeschmissen: temperature=(data[3]) << 4;
>       temperature=temperature/2;

 Oder diese ?
Peter M. schrieb:
> Deine Messungen legen nahe, dass die Temperatur in Celsius sich aus der
> Formel
>
> celsius=temp/8 -40

 Leider ist deine letzte Formel falsch und kam auch erst als ich
 folgendes gepostet hat:
Marc V. schrieb:
> Das man ein Byte nur selten ohne Überlauf mit 16 multiplizieren kann
>  ist klar, aber warum nicht gleich mit 8 multiplizieren ist mir immer
>  noch nicht klar...

 Also, blamiere dich bitte nicht weiter mit (unwahren) Aussagen und
 falsch abgeschriebenen Formeln ...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Hier steht nichts davon, wo die fehlenden 4 Bit einer 12-Bit-Zahl
> liegen.
> Hier werden nur 8 Bits reserviert (2 Nibble mit Buchstaben EE).

 Da die Temperatur in 8-er Sprung angezeigt wird, werden es wohl
 eher 3 bit sein die fehlen und das fehlende 4-te bit ist wohl
 fur +/- gedacht.

Peter M. schrieb:
> Der Code passt nicht zum Datenformat! Hier ist was falsch.

 Ja.

: Bearbeitet durch User
von Peter M. (r2d3)


Lesenswert?

Marc V. schrieb:
> Peter M. schrieb:
>> Bitte beim nächsten Mal meine primitive Formel richtig abtippen, mein
>> Offset beträgt 40 und nicht 41...
>
>  Du hast immer noch genau nix verstanden.
>  Von was fur einem Offset ist die Rede ?
>  Wo siehst du bei mir ein Offset ?

Allgemeine Form der Geradengleichung:

y=mx+c

m =Steigung
c =Achsenabschnitt, (Offset!)

Oder auch wie beim Justieren eines Multimeters mit Software:
"scale" und "offset".

Bei mir: m=1/8  c=40
Bei Dir: m=1/8  c=41

Deine Tabelle beschreibt die Punkte einer Geraden, notfalls einfach in 
ein Diagramm zeichnen!.

Man guckt dann welchen Wert die Gerade an der Stelle 0 annimmt, das ist 
der Offset c.

Auf Rechteckpapier gezeichnet mit Maßstab "1 entspricht 1 cm"
sieht man dann "16 Kästchen nach rechts, 2 nach oben"
=> m= 2/16=1/8


>
>  Und von welchen Formeln redest du uberhaupt ?

>> celsius=temp/8 -40

Genau von dieser Formel sprach ich, mein letzter Stand der Erkenntnis, 
nachdem Stefan zwei definierte Messungen durchführte und das Byte-Format 
der Nachrichten lieferte und ich nach Lektüre von anderen Beiträgen 
sehen musste, dass der Aufwärtsshift nicht auf Byte- sondern auf 
Wortbreite durchgeführt wurde.

>
>  Leider ist deine letzte Formel falsch und kam auch erst als ich
>  folgendes gepostet hat:

Ist die Formel falsch, weil mein Achsenabschnitt 40 statt 41 beträgt?
:)

> Marc V. schrieb:
>> Das man ein Byte nur selten ohne Überlauf mit 16 multiplizieren kann
>>  ist klar, aber warum nicht gleich mit 8 multiplizieren ist mir immer
>>  noch nicht klar...

siehe oben.
Aus dem Log geht aber hervor, dass oben beim Shiften nichts herausfällt, 
weil die Zielwerte "temp=" größer als ein Byte sind!

weitere Erklärung:
Der Code macht nur dann ein bisschen Sinn, wenn die Temperatur in den 
unteren 13 Bits eines Words drin steckt. In den oberen 3 Bits steht 
irgendetwas anderes. Viermal aufwärtsschieben schickt diese obere 3 Bits 
ins Nirvana inklusive des Vorzeichenbits der unteren 13 Bits.
Die anschließende Division macht den letzten Shift rückgängig und setzt 
das oberste Bit auf Null.
Das macht nur Sinn, wenn es sich um eine vorzeichenbehaftete Zahl 
handelt und man zusätzlich das Vorzeichen noch irgendwo speichert.
Wenn die Zahl im Zweierkomplement dargestellt ist, kann man so den 
Absolutbetrag der Zahl nicht ermitteln.

Sinnvoll wäre es gewesen mit einer UND-Maske die obersten drei Bits 
auszublenden und dann das Ergebnis als vorzeichenbehaftete Zahl oder als 
Zahl im Zweierkomplement weiter zu bearbeiten.

>
>  Also, blamiere dich bitte nicht weiter mit (unwahren) Aussagen und
>  falsch abgeschriebenen Formeln ...

Ich blamiere mich gerne. Falsch abgeschriebene Formeln?!
Ich habe einfach eine Gerade durch die beiden Messpunkte von Stefan 
gezogen und dann überlegt, ob die damit ausgerechneten Temperaturen der 
anfangs gelieferten Werte von Stefan zu seiner Beschreibung passen.
Das ist das simpelste und naheliegendste, was man meiner Meinung nach 
tun kann. Eine Zweierkomplementdarstellung wäre dann auch schnell 
"aufgeflogen".

von Peter M. (r2d3)


Lesenswert?

Marc V. schrieb:
> Da die Temperatur in 8-er Sprung angezeigt wird, werden es wohl
>  eher 3 bit sein die fehlen und das fehlende 4-te bit ist wohl
>  fur +/- gedacht.

Nein, da fehlen keine Bits. Wenn Du eine Zahl mit 8 multiplizierst, 
gehen die niedrigwertigsten Bits nicht verloren.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Peter M. schrieb:
> Nein, da fehlen keine Bits. Wenn Du eine Zahl mit 8 multiplizierst,
> gehen die niedrigwertigsten Bits nicht verloren.

 Manoman.
 Nicht einmal, sondern dreimal LOL.
 Immer noch nicht begriffen, von welchen bits ich rede ?

 Aber OK, du hast Recht, Diskussion beendet, in Ordnung ?

von Peter M. (r2d3)


Lesenswert?

Marc V. schrieb:

>  Da die Temperatur in 8-er Sprung angezeigt wird, werden es wohl
>  eher 3 bit sein die fehlen

Wenn Du hier die nicht die untersten drei Bits meinst, brauche ich wohl 
für Deine Texte einen Hellseher. :)

Ja welche Bits fehlen denn hier wohl, so daß es nur ganzzahlige 
Vielfache von 8 gibt?!

: Bearbeitet durch User
von Stefan S. (kami)


Lesenswert?

Hallo zusammen,

so hier meine nächsten Messergebnisse. Diesmal mit Zeitstempel. Ich habe 
den Sensor in den Tiefkühlschrank (-18°C kann auch kälter sein) 
geschmissen und habe ihn runterkühlen gelassen. Danach habe ich ihn bei 
Zimmertemperatur wieder aufheizen lassen (26-27°C)
1
07.06.2016 19:57:12 - 20;10;Imagintronix;ID=0003;TEMP=0043;HUM=05;
2
07.06.2016 19:58:44 - 20;19;Imagintronix;ID=0003;TEMP=0043;HUM=05;
3
07.06.2016 20:00:15 - 20;21;Imagintronix;ID=0003;TEMP=0043;HUM=05;
4
07.06.2016 20:03:19 - 20;33;Imagintronix;ID=0003;TEMP=003f;HUM=05;
5
07.06.2016 20:06:24 - 20;42;Imagintronix;ID=0003;TEMP=0034;HUM=05;
6
07.06.2016 20:11:03 - 20;5E;Imagintronix;ID=0003;TEMP=002b;HUM=05;
7
07.06.2016 20:14:10 - 20;6D;Imagintronix;ID=0003;TEMP=0028;HUM=05;
8
07.06.2016 20:18:51 - 20;89;Imagintronix;ID=0003;TEMP=0023;HUM=05;
9
07.06.2016 20:21:58 - 20;9A;Imagintronix;ID=0003;TEMP=0020;HUM=05;
10
07.06.2016 20:23:32 - 20;A2;Imagintronix;ID=0003;TEMP=001f;HUM=05;
11
07.06.2016 20:25:06 - 20;AB;Imagintronix;ID=0003;TEMP=001e;HUM=05;
12
07.06.2016 20:26:39 - 20;B1;Imagintronix;ID=0003;TEMP=001d;HUM=05;
13
07.06.2016 20:29:47 - 20;C2;Imagintronix;ID=0003;TEMP=001b;HUM=05;
14
07.06.2016 20:31:21 - 20;CC;Imagintronix;ID=0003;TEMP=001b;HUM=05;
15
07.06.2016 20:32:55 - 20;D4;Imagintronix;ID=0003;TEMP=001a;HUM=05;
16
07.06.2016 20:34:29 - 20;DE;Imagintronix;ID=0003;TEMP=001a;HUM=05;
17
07.06.2016 20:36:03 - 20;E9;Imagintronix;ID=0003;TEMP=0019;HUM=05;
18
07.06.2016 20:37:37 - 20;F4;Imagintronix;ID=0003;TEMP=0019;HUM=05;
19
07.06.2016 20:39:11 - 20;FC;Imagintronix;ID=0003;TEMP=0019;HUM=05;
20
07.06.2016 20:45:27 - 20;20;Imagintronix;ID=0003;TEMP=0017;HUM=05;
21
07.06.2016 20:47:01 - 20;29;Imagintronix;ID=0003;TEMP=0017;HUM=05;
22
07.06.2016 20:50:09 - 20;3B;Imagintronix;ID=0003;TEMP=0017;HUM=05;
23
07.06.2016 20:51:43 - 20;44;Imagintronix;ID=0003;TEMP=0017;HUM=05;
24
07.06.2016 20:54:51 - 20;56;Imagintronix;ID=0003;TEMP=0016;HUM=05;
25
07.06.2016 20:56:25 - 20;5F;Imagintronix;ID=0003;TEMP=0016;HUM=05;
26
07.06.2016 21:08:57 - 20;A0;Imagintronix;ID=0003;TEMP=0015;HUM=05;
27
07.06.2016 21:10:31 - 20;AB;Imagintronix;ID=0003;TEMP=0014;HUM=05;
28
07.06.2016 21:16:48 - 20;CB;Imagintronix;ID=0003;TEMP=0014;HUM=05;
29
07.06.2016 21:19:56 - 20;DE;Imagintronix;ID=0003;TEMP=0014;HUM=05;
30
07.06.2016 21:21:30 - 20;E7;Imagintronix;ID=0003;TEMP=0014;HUM=05;
31
07.06.2016 21:23:04 - 20;F0;Imagintronix;ID=0003;TEMP=0014;HUM=05;
32
07.06.2016 21:24:38 - 20;FA;Imagintronix;ID=0003;TEMP=0014;HUM=05;
33
07.06.2016 21:26:12 - 20;04;Imagintronix;ID=0003;TEMP=0014;HUM=05;
34
07.06.2016 21:27:46 - 20;0F;Imagintronix;ID=0003;TEMP=0014;HUM=05;
35
07.06.2016 21:30:54 - 20;20;Imagintronix;ID=0003;TEMP=0014;HUM=05;
36
07.06.2016 21:41:53 - 20;57;Imagintronix;ID=0003;TEMP=0014;HUM=05;
37
07.06.2016 21:43:27 - 20;5F;Imagintronix;ID=0003;TEMP=0014;HUM=05;
38
07.06.2016 21:48:09 - 20;7B;Imagintronix;ID=0003;TEMP=0014;HUM=05;
39
07.06.2016 21:51:18 - 20;8C;Imagintronix;ID=0003;TEMP=0014;HUM=05;
40
07.06.2016 21:52:52 - 20;95;Imagintronix;ID=0003;TEMP=0014;HUM=05;
41
07.06.2016 21:54:26 - 20;9F;Imagintronix;ID=0003;TEMP=0014;HUM=05;
42
07.06.2016 21:56:00 - 20;A8;Imagintronix;ID=0003;TEMP=0014;HUM=05;
43
07.06.2016 21:57:34 - 20;B1;Imagintronix;ID=0003;TEMP=0014;HUM=05;
44
07.06.2016 21:59:08 - 20;BB;Imagintronix;ID=0003;TEMP=0014;HUM=05;
45
07.06.2016 22:00:42 - 20;C5;Imagintronix;ID=0003;TEMP=0014;HUM=05;
46
07.06.2016 22:02:16 - 20;CF;Imagintronix;ID=0003;TEMP=0014;HUM=05;
47
07.06.2016 22:05:24 - 20;E0;Imagintronix;ID=0003;TEMP=0014;HUM=05;
48
07.06.2016 22:11:41 - 20;01;Imagintronix;ID=0003;TEMP=0014;HUM=05;
49
07.06.2016 22:13:15 - 20;09;Imagintronix;ID=0003;TEMP=0014;HUM=05;
50
07.06.2016 22:16:23 - 20;17;Imagintronix;ID=0003;TEMP=0013;HUM=05;
51
07.06.2016 22:17:57 - 20;22;Imagintronix;ID=0003;TEMP=0013;HUM=05;
52
07.06.2016 22:19:31 - 20;2D;Imagintronix;ID=0003;TEMP=0013;HUM=05;
53
07.06.2016 22:24:13 - 20;46;Imagintronix;ID=0003;TEMP=0026;HUM=05;
54
07.06.2016 22:25:46 - 20;50;Imagintronix;ID=0003;TEMP=002a;HUM=05;
55
07.06.2016 22:33:31 - 20;76;Imagintronix;ID=0003;TEMP=0033;HUM=05;
56
07.06.2016 22:36:37 - 20;8A;Imagintronix;ID=0003;TEMP=0035;HUM=05;
57
07.06.2016 22:39:42 - 20;9B;Imagintronix;ID=0003;TEMP=0037;HUM=05;
58
07.06.2016 22:41:15 - 20;A0;Imagintronix;ID=0003;TEMP=0038;HUM=05;
59
07.06.2016 22:45:52 - 20;BC;Imagintronix;ID=0003;TEMP=0039;HUM=05;
60
07.06.2016 22:48:57 - 20;CC;Imagintronix;ID=0003;TEMP=003a;HUM=05;
61
07.06.2016 22:50:29 - 20;D5;Imagintronix;ID=0003;TEMP=003b;HUM=05;
62
07.06.2016 22:55:06 - 20;ED;Imagintronix;ID=0003;TEMP=003c;HUM=05;
63
07.06.2016 22:56:38 - 20;F7;Imagintronix;ID=0003;TEMP=003c;HUM=05;
64
07.06.2016 22:58:11 - 20;00;Imagintronix;ID=0003;TEMP=003c;HUM=05;
65
07.06.2016 22:59:43 - 20;09;Imagintronix;ID=0003;TEMP=003c;HUM=05;
66
07.06.2016 23:01:18 - 20;13;Imagintronix;ID=0003;TEMP=003d;HUM=05;
67
07.06.2016 23:07:24 - 20;33;Imagintronix;ID=0003;TEMP=003e;HUM=05;
68
07.06.2016 23:08:56 - 20;3C;Imagintronix;ID=0003;TEMP=003e;HUM=05;
69
07.06.2016 23:12:00 - 20;4E;Imagintronix;ID=0003;TEMP=003f;HUM=05;
70
07.06.2016 23:16:36 - 20;63;Imagintronix;ID=0003;TEMP=003f;HUM=05;
71
07.06.2016 23:18:08 - 20;6E;Imagintronix;ID=0003;TEMP=003f;HUM=05;
72
07.06.2016 23:19:40 - 20;77;Imagintronix;ID=0003;TEMP=003f;HUM=05;
73
07.06.2016 23:21:12 - 20;7F;Imagintronix;ID=0003;TEMP=0040;HUM=05;
74
07.06.2016 23:22:44 - 20;88;Imagintronix;ID=0003;TEMP=0040;HUM=05;
75
07.06.2016 23:24:16 - 20;93;Imagintronix;ID=0003;TEMP=0040;HUM=05;
76
07.06.2016 23:25:48 - 20;9D;Imagintronix;ID=0003;TEMP=0040;HUM=05;
77
07.06.2016 23:30:24 - 20;AF;Imagintronix;ID=0003;TEMP=0040;HUM=05;
78
07.06.2016 23:31:56 - 20;B7;Imagintronix;ID=0003;TEMP=0040;HUM=05;
79
07.06.2016 23:33:28 - 20;C0;Imagintronix;ID=0003;TEMP=0041;HUM=05;
80
07.06.2016 23:35:00 - 20;CA;Imagintronix;ID=0003;TEMP=0041;HUM=05;
81
07.06.2016 23:36:32 - 20;D2;Imagintronix;ID=0003;TEMP=0041;HUM=05;
82
07.06.2016 23:38:04 - 20;DC;Imagintronix;ID=0003;TEMP=0041;HUM=05;
83
07.06.2016 23:39:35 - 20;E5;Imagintronix;ID=0003;TEMP=0041;HUM=05;
84
07.06.2016 23:41:07 - 20;EE;Imagintronix;ID=0003;TEMP=0041;HUM=05;
85
07.06.2016 23:42:39 - 20;F7;Imagintronix;ID=0003;TEMP=0041;HUM=05;
86
07.06.2016 23:44:11 - 20;FF;Imagintronix;ID=0003;TEMP=0041;HUM=05;
87
07.06.2016 23:45:43 - 20;06;Imagintronix;ID=0003;TEMP=0041;HUM=05;
88
07.06.2016 23:48:47 - 20;17;Imagintronix;ID=0003;TEMP=0041;HUM=05;
89
07.06.2016 23:51:51 - 20;28;Imagintronix;ID=0003;TEMP=0041;HUM=05;
90
07.06.2016 23:53:23 - 20;32;Imagintronix;ID=0003;TEMP=0041;HUM=05;
91
07.06.2016 23:54:54 - 20;3B;Imagintronix;ID=0003;TEMP=0041;HUM=05;
92
07.06.2016 23:57:58 - 20;4D;Imagintronix;ID=0003;TEMP=0041;HUM=05;
93
08.06.2016 00:05:38 - 20;78;Imagintronix;ID=0003;TEMP=0042;HUM=05;
94
08.06.2016 00:07:10 - 20;80;Imagintronix;ID=0003;TEMP=0042;HUM=05;
95
08.06.2016 00:08:41 - 20;8A;Imagintronix;ID=0003;TEMP=0042;HUM=05;
96
08.06.2016 00:10:13 - 20;94;Imagintronix;ID=0003;TEMP=0042;HUM=05;
97
08.06.2016 00:11:45 - 20;9D;Imagintronix;ID=0003;TEMP=0042;HUM=05;
98
08.06.2016 00:14:49 - 20;AE;Imagintronix;ID=0003;TEMP=0042;HUM=05;
Hier noch die Quellcodeanpassung :
1
 sprintf(pbuffer, "TEMP=%04x;", data[3]);     
2
      Serial.print( pbuffer );

Gruß kami

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> so hier meine nächsten Messergebnisse. Diesmal mit Zeitstempel. Ich habe
> den Sensor in den Tiefkühlschrank (-18°C kann auch kälter sein)
> geschmissen und habe ihn runterkühlen gelassen. Danach habe ich ihn bei
> Zimmertemperatur wieder aufheizen lassen (26-27°C)

Wo sind die mit einem Vergleichsthermometer gemessenen Temperaturen? 
Oder sollen wir uns da jetzt Werte ausdenken?

Aber wir haben ja immerhin einen Min- und einen Max-Wert.

0x13 = 19 = -18°C
0x43 = 67 = 27°C

Die Differenz ist: 67 - 19 = 48. Wir messen also 48 Schritte.
Die Temperatur-Differenz ist: 27°C - (-18°C) = 46 Schritte.

Also gehe ich davon aus, dass 1 Schritt = 1 Kelvin.

Wenn Du also schreibst:
1
  sprintf(pbuffer, "TEMP=%d;", (int) data[3] - 40);     // beachte %d !
2
  Serial.print( pbuffer );

dann sollte da annähernd die Temperatur rauskommen.

Denn:

  67 - 40 = 27°      <-- 26°-27°
  19 - 40 = -21°C    <-- -18° - kann auch kälter sein


Genaueres kann man nicht sagen, weil die Vergleichsmessung mit einem 
zweiten Thermometer fehlt. Auch Deine Angaben "26-27°C" und "-18°C kann 
auch kälter sein" sind da einfach zu ungenau. Solange Du das so 
schwammig formulierst, bekommst Du auch nur schwammige Ergebnisse bzw. 
Antworten.

Hast Du kein Thermometer zur Vergleichsmessung? Wenn nicht, leih Dir 
eins vom Nachbarn aus.

: Bearbeitet durch Moderator
von Stefan S. (kami)


Lesenswert?

Nee gute Sache mache ich nachher nochmal. Sorry habe ich vergessen.

Gruß kami

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.