Neues Modul i2cBMP180

Begonnen von Dirk, 21 Juli 2013, 23:52:20

Vorheriges Thema - Nächstes Thema

PeMue

Hallo Dirk,

habe mir mal die aktuelle Version Deines Moduls ausgedruckt zum Lernen. Wie bekomme ich die (vom Modul gepollten Daten) in eine Logdatei? Da müsste doch noch so etwas kommen wie
define Luftdruck_log FileLog ./log/luftdruck-%Y-%m.log BMP180:pressure.*Kommt das hin? Oder kann ich alle drei Werte in eine Datei loggen? Dann würde ich aber die Bezeichnungen etwas kürzer wählen wollen wegen Speicherverbrauch ...

Danke + Gruß

PeMue

Edit:
Das Modul zeigt Grundreflexe:

(siehe Anhang / see attachement)

Vorgehen auf der Konsole:
sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev
sudo hipi-i2c e 0 1
sudo chown fhem.root /dev/i2c-0

Natürlich muss ich das Ganze noch reboot fest machen ...
Allerdings ist mir (als C-Programmierer) überhaupt noch nicht klar, was da im Einzelnen passiert ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Dirk

Hi PeMue,

Ich habe das so gemacht:define log_ALL FileLog /opt/fhem/logs/bmp180.log BMP180:(temperature|pressure|pressure-nn):.*Damit landen alle Werte in einem Logfile. Ggf. kann man pressure noch weglassen wenn man nur den höhenkorrigierten Luftdruck loggen möchte.

Ich denke 5 Min. für den Luftdruck reicht vollkommen aus. Vermutlich auch 10 oder 20 Minuten.

Edit:
Die Gehäuseinnentemperatur wirst du wahrscheinlich auch nicht loggen wollen. Daher war deine Version schon ausreichend.
Du kannst den Luftdruck aber z.B. auch in das Logfile eines Temperatursensors loggen. Dann kannst du eine kombinierte Grafik erzeugen.

Gruß
Dirk

betateilchen

ich habe eine Logdatei mit allen Klimadaten

./log/out_Balkon-%Y-%m-%d.log (out_Balkon|Luftdruck|BMP180|Helligkeit)

out_Balkon liefert Außentemperatur und Luftfeuchtigkeit und kommt von einem Homematic-Temperatursensor Outdoor
Luftdruck kommt von einem MPX4100A, angeschlossen an ein AVR-NetIO (fällt demnächst weg)
BMP180 kommt vom BMP180 :)
Helligkeit kommt von einem Sensor, ebenfalls am AVR-NetIO

Alles in einem Logfile und das Plotten kann ich dann machen wie ich will und brauche nur eine einzige Logdatei dafür.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

PeMue

Hallo Dirk,

wahrscheinlich habe ich es überlesen, bei mir kommt nur
2013-07-23 21:53:06 I2C_BMP180 BMP180 temperature: 36.8
2013-07-23 21:53:06 I2C_BMP180 BMP180 pressure: 988.7
Vermutlich muss ich das pressure_nn erst noch irgendwie einstellen.

Weitere doofe Frage: Was bedeutet die
NR 96 aus meinem letzten Post, diese ändert sich nämlich nicht ...

Bezüglich Logdateien: Da wird vermutlich mit Datum und <sensorname> der Wert in eine Zeile geschrieben und man parst dann beim Plotten nach den einzelnen Sensornamen. Mir ist es eigentlich lieber, dass ich eine Zeile mit allen Werten habe, aber das geht wegen der zeitlichen Zuordnung der einzelnen Quellen wohl nicht ...

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

justme1968

ich bin gerade dabei das neue altitude attribute auch für meinen panstamp luftdruck sensor zu verwenden. dabei hätte ich zwei vorschläge:

- als default wert bei nicht gesetztem reading 0 verwenden statt -1. bei höhe 0 über nn fällt der korrekturfaktor ganz natürlich einfach weg.
- auch altitude < 0 zulassen. sogar in deutschland soll es das geben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dirk

Hi PeMue,

ZitatVermutlich muss ich das pressure_nn erst noch irgendwie einstellen.
Ja, entweder in der älteren Version vom Modul durch
attr BMP180 altitute 220oder in der letzten Version durch
attr global altitute 220Dafür musst du FHEM aber aktualisieren, da das Global altitut erst seit heute im FHEM drinn ist. Daher per SVN auschecken, oder bis morgen warten wenn das per Update kommt.

Zitataus meinem letzten Post, diese ändert sich nämlich nicht ...
Ich hatte den Post irgendwie überlesen.
Die Nr 96 sollte die Nummer des define sein. Quasi so eine Arte fortlaufende Nummerierung der Definitionen.

ZitatDa wird vermutlich mit Datum und <sensorname> der Wert in eine Zeile geschrieben und man parst dann beim Plotten nach den einzelnen Sensornamen.
Ja, so wird das dann gemacht.

Gruß
Dirk

Dirk

Hi Andre,

Zitat von: justme1968 schrieb am Di, 23 Juli 2013 22:15- auch altitude < 0 zulassen. sogar in deutschland soll es das geben
Da hast du natürlich recht. Da hab ich nicht dran gedacht. Ich werde das im Modul korrigieren.

Zitat- als default wert bei nicht gesetztem reading 0 verwenden statt -1. bei höhe 0 über nn fällt der korrekturfaktor ganz natürlich einfach weg.
Stimmt.

Man könnte sich auch überlegen bzgl. des Geo-Moduls eine eine globale barometrische Höhenformel zu benutzen. Dann muss das nicht jeder selber berechnen.

Gruß
Dirk

PeMue

Hallo Dirk,

ich hoffe, dass in der eingecheckten Version dann altitude korrekt geschrieben ist ;-)

Vielen Dank noch mal.

Gute Nacht.

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Dirk

Mist,

altitute muss natürlich altitude heissen.
Rudi hat es aber ohne "aufsehen" korrigiert :)

Dafür fehlt aber in fhem.pl derzeit ein Leerzeichen hinter altitude. Betateilchen hat ihn darauf aber schon hingewiesen. Daher wird er das sicher noch zeitnah fixen.

Gruß
Dirk

Dirk

#39
Hallo,

so, das nun hoffentlich vorläufig letzte Update:

Die Werte werden nun auch gleich nach dem Start von FHEM bzw. nach dem Define geholt und nicht erst nach dem Ablaufen des ersten  Poll-Intervall. Ein paar kleiner Bugs hab ich auch noch gefixt. Und die Doku vervollständigt.

So kommt die Version heute abend auch ins SVN wenn es keine Einwände gibt.

Gruß
Dirk

Edit: altes Modul entfernt.
Das Modul ist mittlerweile Bestandteil von FHEM (51_I2C_BMP180.pm)

PeMue

Hallo Dirk,

ich habe noch ein paar (Verständnis)-Fragen:
- Ersetzt der Eintrag in .../udev/... das manuelle chown des Ports?
- Warum zwei Zeilen im Startskript? Oder ist das ... auch eine Zeile (mit welcher Bedeutung)?
- Wie verhält sich das Ändern des Startskriptes bezüglich Updates? Oder werden da nur die Perl Module aktualisiert und Perl selber und die Startroutinen bleiben?
Und vermutlich die dümmste Frage von allen:
- Wie kann ich den HTML (?) Code am Anfang und am Ende des Moduls lesen (nur reinladen in Browser geht nicht)?

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Dirk

Zitat- Ersetzt der Eintrag in .../udev/... das manuelle chown des Ports?
Genau

- Warum zwei Zeilen im Startskript? Oder ist das ... auch eine Zeile (mit welcher Bedeutung)?Es ist nur eine Zeile:
sudo hipi-i2c e 0 1Die anderen Zeilen sollten nur die Insertposition veranschaulichen.

Zitat- Wie verhält sich das Ändern des Startskriptes bezüglich Updates? Oder werden da nur die Perl Module aktualisiert und Perl selber und die Startroutinen bleiben?
Das ist eine gute Frage. Das werde ich nochmal testen.

Zitat- Wie kann ich den HTML (?) Code am Anfang und am Ende des Moduls lesen (nur reinladen in Browser geht nicht)?
aus dem FHEM-Verzeichniss einmal./contrib/commandref_join.plaufrufen. Damit wird die lokale commandref.html aktualisiert. Und damit findest du den Code vom I2C_BMP180 Modul dann auch dort.

Gruß
Dirk

PeMue

Hallo Dirk,

ich warte, bis das Modul im SVN steht (bzw. dort die commandref.html aktualisiert wird), weil bei mir folgende Fehlermeldung kommt (aus der Konsole in fhem):
Unknown command ./contrib/commandref_join.pl, try help
Was mich gerade noch irritiert:
BMP180 ReadValues gibt
STATE: Temp: 36.0 °C , Pressure: 987.6 hPa in 240 m, Pressure-NN: 1015.8 hPa
Im Logfile kommt
2013-07-26_17:50:04 BMP180 temperature: 36.0
2013-07-26_17:50:04 BMP180 pressure: 987.6
(Groß-/kleinschreibung).
Damit die Logdateien nicht zu groß werden, würde ich sowieso die Variablen als p, pNN bzw. T definieren, aber das ist meine private Meinung ...

Gruß PeMue

Edit:
Sieht doch hübsch aus, oder?
(siehe Anhang / see attachement)

Jetzt weiß ich auch warum meine bessere Hälfte Kopfschmerzen hat ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

betateilchen

Zitat von: Dirk schrieb am Fr, 26 Juli 2013 17:22contrib/commandref_join.plaufrufen. Damit wird die lokale commandref.html aktualisiert. Und damit findest du den Code vom I2C_BMP180 Modul dann auch dort.

Hallo Dirk, das funktioniert beim "normalen" User nicht, weil das perl-Skript in fertigen Installationspaketen nicht enthalten ist, sondern nur nach einem kompletten SVN auschecken.

Die commandref wird beim täglichen Update automatisch aktualisiert, sobald Dein Modul im SVN eingecheckt ist, der Anwender muss sich damit nicht auseinandersetzen.

Gleiches Verhalten beim Startskript: das wird bei einem "update" aus fhem heraus nicht angetastet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

Zitat von: PeMue schrieb am Fr, 26 Juli 2013 17:55Was mich gerade noch irritiert:
BMP180 ReadValues gibt
STATE: Temp: 36.0 °C , Pressure: 987.6 hPa in 240 m, Pressure-NN: 1015.8 hPa
Im Logfile kommt
2013-07-26_17:50:04 BMP180 temperature: 36.0
2013-07-26_17:50:04 BMP180 pressure: 987.6
(Groß-/kleinschreibung).
Also im State steht das ganze "Menschen lesbar". Den State kann man ja auch per stateFormat selber definieren.

ZitatDamit die Logdateien nicht zu groß werden, würde ich sowieso die Variablen als p, pNN bzw. T definieren, aber das ist meine private Meinung ...
Hm, vielleicht noch ein Attribut damit das jeder selber entscheiden kann?


Zitat von: betateilchen schrieb am Fr, 26 Juli 2013 19:09
Zitat von: Dirk schrieb am Fr, 26 Juli 2013 17:22contrib/commandref_join.plaufrufen. Damit wird die lokale commandref.html aktualisiert. Und damit findest du den Code vom I2C_BMP180 Modul dann auch dort.

... das funktioniert beim "normalen" User nicht, weil das perl-Skript in fertigen Installationspaketen nicht enthalten ist, sondern nur nach einem kompletten SVN auschecken.
Mist, jetzt weiss jeder das ich nur SVN benutze :)
Ok. Wieder was gelernt.

ZitatGleiches Verhalten beim Startskript: das wird bei einem "update" aus fhem heraus nicht angetastet.
Also beantwortet das auch die Frage von PeMue
Zitat- Wie verhält sich das Ändern des Startskriptes bezüglich Updates?
eigene Änderungen am Startscript gehen bei einem Update nicht verloren?

Gruß
Dirk