36_IR_Thermometer: Infrarot Messung an Jeelink zur Bestimmung der Bewölkung

Begonnen von hotbso, 23 Oktober 2017, 18:47:08

Vorheriges Thema - Nächstes Thema

hotbso

Vorgeschichte:
Mit dem Sonnensensor meiner Wetterstation WH2601 und dem Modul 98_feels_like.pm konnte ich tagsüber recht genau die Bewölkung bestimmen, nachts natürlich nicht.
Ich habe dann mal das Web durchsucht und bin auf Experimente mit Arduino und Infrarot Thermometern gestoßen. Diese Experimente fanden überwiegend in der Szene der Hobby-Astronomen statt, die nur ein Ja/Nein Output wollten, immerhin ein Anfang.

Die HW ist ein Jeenode SMD, an den ein Melexis MLX60614ESF-BAA mit Breakout-Board GY-906 (Ebay, 9 €) angeschlossen ist. An meinen Lötungen sieht man unschwer, dass der Aufbau für Anfänger bestens geeignet ist 8-).

Für die Anbindung an FHEM habe ich mich beim Level-Sender bedient (Danke !).

Letztlich funkt das Ding alle 30 Sekunden die Außen- + IR-Temperatur an den Jeelink mit dem Standard LaCrosse Sketch (als CustomSensor Frame). Dort läuft das ganze in das Modul 36_IR_Thermometer ein.

Theorie:
Der Sensor hat einen Öffnungswinkel von 90° und ist 45° zur Horizontalen ausgerichtet.
Bei klarem Wetter sähe man unter genau 50° die mittlere Strahlungstemperatur des Himmels. Die Emissivität des klaren Himmels ist im wesentlichen von der Feuchtigkeit abhängig.  Die Strahlungstemperatur ist ca. 15 bis 20°C unter der Umgebungstemperatur.

Die Temperatur an der Unterseite einer Wolke entspricht ungefähr dem Taupunkt. Da die Wolke ja nicht schwarz ist, reflektiert Sie noch teilweise die Strahlung vom Boden (angenommen mit Umgebungstemperatur).

Letztlich kann man sich so die Strahlungstemperatur bei klarem Himmel und bei vollständiger Bewölkung näherungsweise ausrechnen.

Der Sensor sieht 30% vom Himmelsgewölbe, bei Bewölkung misst er also irgendwas dazwischen. Das rechne ich linear in einen Bewölkungsanteil um -> Readings coverage, oktas, clouds. Ich lade die clouds dann zu Wunderground hoch.

Die anderen Readings sind für die Kalibrierung und für das allgemeine Interesse am Wettergeschehen.

- Holger

PS:
Natürlich kann man mit dem Sensor auch seine Heizungspumpe oder Kühlschranktür ansehen. Dann setzt man einfach das Attribut ComputeClouds auf 0.

Jonny1957

Zitat von: hotbso am 23 Oktober 2017, 18:47:08

Die HW ist ein Jeenode SMD, an den ein Melexis MLX60614ESF-BAA mit Breakout-Board GY-906 (Ebay, 9 €) angeschlossen ist. An meinen Lötungen sieht man unschwer, dass der Aufbau für Anfänger bestens geeignet ist 8-).

Für die Anbindung an FHEM habe ich mich beim Level-Sender bedient (Danke !).




Hallo, ich suche die Einbindung für MLX60614ESF oder GY-906 in Fhem, Module? usw.
Der Fühler hängt an einem Arduino Nano und der am Rasp 2.
Das passende Skript hab ich gefunden und eingespielt.
Ich hab mal versucht "define IRTemp MYSENSORS_DEVICE GY-906" :(
In Google finde ich auch nichts über Fhem + MLX60614ESF.

hotbso

Das Modul funktioniert nur mit dem Jeelink Protokoll.
Da musst Du wohl selbst programmieren.

Jonny1957


locutus

Hallo,
wird das bisherige Modul noch supportet?
Mein JeeLink meldet Unknown code. LacrossePairForSec bzw. Autocreate legt kein IR_Thermometer Device an.

hotbso

Ja, läuft seit Jahren bei mir. Das ist aber kein Lacrosse Device. Do must es mit define selber anlegen.

Gesendet von meinem Pixel 3 mit Tapatalk


locutus

ZitatFHEM module for IR_Thermometer.

It can be integrated in to FHEM via a JeeLink with standard LaCrosse sketch as the IODevice.

Define
define <name> IR_Thermometer <addr>
addr is a 1 digit hex number (0 .. F) to identify the IR_Thermometer device.

Ist die <addr> frei wählbar oder ist sie identisch mit der SENSOR_ID im Sketch? 11 = B
Sendet fleißig alle 30 Sek., JeeLink empfängt ... Readings status dead.
JeeLink: Unknown code OK CC 11 84 2 85 2 107 , help me!


hotbso

Ich musste das erst mal reverse engineeren, alles schon so lange her. Da man wenig Platz hat, ist die ID die Ziffer nach "OK CC 1" die ID -> also die 1.
Ansonsten setze verbose mal hoch und schicke einen Auszug aus dem Log.

Im ersten Post dieses Threads habe noch die aktuelle Version des Moduls angehängt, das enthält noch eine Korrektur wenn der Sensor im Sommer heiß wird.

Meine Parameter:

locutus

Viel aufschlussreicher ist Verbose jetzt nicht:
LGW: dispatch OK CC 11 85 2 85 2 32
LGW: Unknown code OK CC 11 85 2 85 2 32 , help me!
LGW: dispatch OK CC 11 86 2 86 2 32
LGW: Unknown code OK CC 11 86 2 86 2 32 , help me!


Dispatch ist doch Weiterleitung an Geräte-Dekodier-Modul?
No Id found for 36_IR_Thermometer.pm
36_JeeLink.pm              14707 2017-07-13 18:08:33Z justme1968
36_LaCrosse.pm             20217 2019-09-21 09:53:25Z HCS
36_LaCrosseGateway.pm      18291 2019-01-17 09:34:30Z HCS

hotbso

Du hast ganz bestimmt als Adresse 1 angegeben und als attribut IODev deinen Jeelink ?

Mache doch mal "list <dein IR Thermo>" und poste das.

locutus

Sind weitere initCommands für JeeLink erforderlich?

Internals:
   DEF        1
   IODev      JeeLink
   NAME       IR_Thermo
   NR         23
   STATE      ???
   TYPE       IR_Thermometer
   addr       1
   READINGS:
     2020-01-31 22:30:50   status          dead
Attributes:
   Hr_reading CUL_WS:humidity
   IODev      JeeLink
   T_ambient_reading CUL_WS:temperature
   T_compensation_a 0.14
   T_compensation_e 1.25
   algorithm  dewpoint
   computeClouds 1
   dp_A       0.715
   dp_B       0.005
   eps_cloud  0.75
   event-min-interval 300
   event-on-change-reading .*
   mnt_A      0.4
   mnt_B      0.108
   smoothFactor 0.45
   verbose    5

hotbso

So, ich denke, das ist es:
beim JeeLink muss noch das IR_Thermometer als Client eingetragen werden, insgesamt die Liste aller Module, die Du mit deinem JeeLink versorgst.