I2C Mini-Luftdrucksensor für Raspberry Pi

Begonnen von Dirk, 15 Juli 2013, 00:56:06

Vorheriges Thema - Nächstes Thema

betateilchen

Auf dem BeagleboneBlack seit heute auch :) (Dirk, Deine Post ist angekommen, danke!)

Und die Inbetriebnahme war erschreckend einfach...


root@debian-armhf:/home/debian# echo bmp085 0x77 > /sys/class/i2c-adapter/i2c-1/new_device

root@debian-armhf:/home/debian# dmesg | grep bmp
[   76.989945] i2c i2c-1: new_device: Instantiated device bmp085 at 0x77
[   77.040606] bmp085 1-0077: Successfully initialized bmp085!

root@debian-armhf:/home/debian# cat /sys/bus/i2c/drivers/bmp085/1-0077/pressure0_input
100916

root@debian-armhf:/home/debian# cat /sys/bus/i2c/drivers/bmp085/1-0077/temp0_input
259


(http://up.picr.de/16131482qx.jpg)

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

Dirk

Cool. Danke für die Info.

Hast du schon mal einen Benchmark-Vergleich zwischen BeagleboneBlack und dem Raspberry gemacht?
Währ mal interessant wie die Leistungswerte hier aussehen.

Gruß
Dirk

betateilchen

#47
Falls jemand auf Beaglebone testen möchte - bitteschon :)


(siehe Anhang / see attachement)


(http://up.picr.de/16140809cj.png)

Auf Betriebssystemebene das Gerät instanziieren (einmalig):

echo bmp085 0x77 > /sys/class/i2c-adapter/i2c-1/new_device

ob der Schritte erfolgreich war, kann man prüfen mit:

dmesg | grep bmp
[   76.989945] i2c i2c-1: new_device: Instantiated device bmp085 at 0x77
[   77.040606] bmp085 1-0077: Successfully initialized bmp085!


nun zu fhem:

define DruckSensor BBB_BMP180

Es stehen folgende Attribute zur Verfügung:

bbbRoundPressure: gibt Luftdruckwerte ohne Nachkommastellen aus, ansonsten zwei Stellen nach dem Komma
bbbRoundTemperature: gibt Temperaturwerte ohne Nachkommastelle aus, ansonsten eine Stelle nach dem Komma
bbbInterval: gibt das Intervall vor, in dem die Messwerte gelesen und die Readings aktualisiert werden (default = 300 Sekunden)


Es stehen folgende Befehle zur Verfügung:

get <name> readValues - liest sofort die aktuellen Daten, ohne Einfluss auf den laufenden Timer

Zur Berechnung des relativen Luftdrucks wird eine Höhenangabe gebraucht, diese wird dem globalen Attribut "altitude" entnommen. Fehlt dieses Attribut, wird keine Ausgabe des rel. Luftdrucks erzeugt.


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

betateilchen

#48
Ich habe mir jetzt den Kernel für den Raspberry neu kompiliert und dabei die Kernelmodule für den bmp085 mit eingebaut. Jetzt kann ich das BBB_BMP180 auch für den Raspberry verwenden. Ich musste nur eine winzige Änderung vornehmen: Beim BeagleboneBlack läuft der Sensor auf Bus1, beim Raspi auf Bus0. Deshalb kann man nun im define optional die Bus-Nummer anhängen.

define testSensor BBB_BMP180 0

Die für die Instanziierung auf dem BBB angegebene Vorgehensweise funktioniert nun auch auf dem Raspberry.

echo bmp085 0x77 > /sys/class/i2c-adapter/i2c-0/new_device

(Achtung: Richtigen Bus angeben = i2c-0)


pi@raspberrypi ~ $ dmesg | grep bmp085
[   66.623327] i2c i2c-0: new_device: Instantiated device bmp085 at 0x77
[   66.650549] bmp085 0-0077: Successfully initialized bmp085!
pi@raspberrypi ~ $


Der Vorteil: Die ganzen Rechte-Probleme mit udev und Zugriffen auf /dev/i2c... fallen weg
Der Nachteil: Das notwendige Kompilieren des Kernels und der Module dauert auf dem Raspberry ca. 9 Stunden *g* (ist aber völlig simpel durchzuführen)

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

fh168

Hallo,

ich bin nach dieser Methode vorgegangen
http://raspi.tv/2012/how-to-set-up-a-barometric-pressure-sensor-bmp085-on-raspberry-pi-with-raspbian

funktioniert tadellos.
Temperatur und Luftdruck wird angezeigt, Schaltung klappt schon mal.

Wenn ich dann in diesem Thread nachverfolge, kommt
70: -- -- -- -- -- -- -- 77
root@raspberrypi:~# dmesg | grep bmp
[   89.247275] i2c i2c-0: new_device: Instantiated device bmp085 at 0x77

(die zweite Zeile fehlt), wenn ich

define Zimmertemp BBB_BMP180 0

in fhem.cfg einbaue kommt das:

..
state
active
2013-10-13 15:47:20 ...

Leider funktionieren die Readings nicht und bei get readValues stürzt Fhem ab

Irgend eine Idee? (RPi 512MB)

Robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Dirk

Hallo Robin,

Für den Raspberry Pi bitte das Modul 51_I2C_BMP180.pm benutzen.

BBB_BMP180 ist für Beaglebone Black.

@betateilchen. MAcht es ggf. nicht Sinn beide Module zu verheiraten?

Gruß
Dirk

betateilchen

#51
@Robin: wenn Du die Kernel-Module nicht auf dem Raspberry hast, funktioniert das nicht.

Das Instanziieren (echo... > ...) wird immer funktionieren, aber wenn da schon die Initialisierung (zweite Zeile) fehlt, konnte das Kernelmodul nicht geladen werden. Dann versucht das Modul beim Lesen etwas zu lesen, das nicht vorhanden ist und fhem stürzt ab (ich hab vergessen, diesen Fehlerfall abzufangen)

@Dirk: keine Ahnung, ob das Sinn macht. Ich hab mich tagelang mit Deinem Modul beschäftigt und es nicht verstanden. Deshalb hab ich "schnell" ein eigenes Modul gebaut. Das BBB_BMP180 braucht auf jeden Fall keine HIPI-Tools, wenn es auf dem Beaglebone eingesetzt wird.


Ja, das BBB_BMP180 ist primär für Beaglebone Black gedacht. Es kann aber unter der Voraussetzung, dass die BMP085 Kernelmodule auf dem Raspberry vorhanden sind, auch auf dem Raspberry benutzt werden.

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

fh168

hipi läuft bei mir aber nicht, angeblich kein Platz auf der Karte, darum habe ich diese Version genommen.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

betateilchen

#53
Wie groß ist denn Deine Karte? Soviel Platz brauchen die hipi doch gar nicht.

Übrigens: ohne HIPI läuft auch BBB_BMP180 nicht auf dem Raspberry!
Du musst nämlich auf dem Raspberry immer den I2C Bus umschalten (evtl. nicht notwendig bei Rev1 Boards)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

ZitatDu musst nämlich auf dem Raspberry immer den I2C Bus umschalten (evtl. nicht notwendig bei Rev1 Boards)
Nur wenn man den I2C-Bus an P5 nutzen möchte.

Aber I2C_BMP180 benutzt die HiPi-Tools für die I2C Kommunikation. daher braucht man die trotzdem.

Wenn ich wieder Zeit habe schaue ich mir dein Modul mal an. Vielleicht kann man da was machen.

Gruß
Dirk

betateilchen

Zitat von: Dirk am 13 Oktober 2013, 16:51:37Aber I2C_BMP180 benutzt die HiPi-Tools für die I2C Kommunikation. daher braucht man die trotzdem.

Genau das war mein größtes Problem:

Ich hatte einen Raspberry mit dem Sensor und I2C_BMP180- device, der per FHEM2FHEM mit dem Beaglebone verknüpft war und dessen Logging vom BBB verarbeitet wurden. Jedesmal wenn nun ein Log vom Sensor kam, hat fhem@BBB versucht, das fehlende Device automatisch anzulegen, was natürlich nicht funktionieren konnte, weil Dein Modul die hipi auch intern verwendet und hipi auf dem BBB nicht vorhanden war.

Die Verwendung des BBB_BMP180 auf einem Raspberry ist eine Krücke, da sich nicht jeder einen neuen Kernel kompilieren wird (in den üblichen Standard-Distributionen für raspi fehlt die Unterstützung für BMP085!), aber für mich war dieses Szenario auch mehr eine Machbarkeitsstudie. Da ich den Sensor inzwischen direkt auf dem BBB habe, brauche ich die FHEM2FHEM Verbindung ohnehin nicht mehr.

Ich denke, eine Verstrickung der beiden Module für zwei unterschiedliche Plattformen wird nicht viel Sinn machen und sehr viel Verwirrung stiften.

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

fh168

hipi konnte ich jetzt auf mein Testsystem (zweiter rpi) installieren. Modul wird trotzdem nicht geladen.

root@raspberrypi:~# dmesg | grep bmp
[   69.749844] i2c i2c-0: new_device: Instantiated device bmp085 at 0x77

Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

betateilchen

#57
nochmal:

Solange Du Dir keinen eigenen Kernel kompilierst, wird das Modul schlichtweg auf Deinem Raspberry nicht vorhanden sein.
Wir reden hier über ein KERNEL-Modul namens bmp085-i2c Deiner Linux-Installation auf dem Raspberry, nicht über ein Modul in fhem.

Vergiss die Idee mit dem BBB_BMP180 auf dem Raspberry einfach ganz schnell wieder, das ist was für (Linux-)Spezialisten.

Wenn Du die hipi jetzt auf dem Raspi hast, kannst Du doch problemlos Dirks Modul I2C_BMP180 verwenden, das genau dafür gemacht ist.



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

fh168

Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

stgeran

Ich häng da mal dran: Über die Suche habe ICH nicht gefunden, wie ich den Luftdruck von Meereshöhe auf meinen Standort beziehen kann. Vielleicht habe ich das neue forum noch nicht so im Griff. Etwaige Verweise führen immer nur auf die Startseite. Ich dachte, früher seien die immer IN den betreffenden thread gesprungen.
FHEM auf Raspberry
CSM 866MHz für EM1010 mit Strom und Gaszähler
CUL 866MHz für MAX! Radiator Thermostat 
CUL 433MHz für Innen und Aussen Temp
HMLAN für HM-LC-Sw1-PI-2