Neues Modul i2cBMP180

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

Vorheriges Thema - Nächstes Thema

betateilchen

Gehen wir der Einfachheit halber von folgenden Dingen aus:

1. wir verwenden das Image von busware (mein Lieblingsimage, weil die Ansteuerung des COC da schon mit drinsteckt und weil es ein hervorragendes Startskript für fhem mitbringt)
2. wir haben einen Raspberry mit aufgelötetem Drucksensor
3. wir haben eine leere SD-Karte mit 4GB Kapazität

Hier kommt eine Schritt-für-Schritt-Anleitung zum erfolgreichen Aufsetzen eines kompletten Systems, vom Betriebssystem bis zur Definition des Sensors in fhem. DIese Anleitung wurde von mir eben "in echt" so erarbeitet und dokumentiert. Sie funktioniert. (Bitte auch die Hinweise am Ende des Beitrags beachten)


Schritt 1: SD Karte erzeugen
dd bs=1m if=2013-02-09-wheezy-raspbian-fhem.img of=/dev/<NameDerSdKarte>

Schritt 2: SD Karte in Raspberry booten

Schritt 3: per SSH auf Raspberry verbinden und raspi-config ausführen,
vor allem wichtig: expand_rootfs, change_locale, change_timezone
danach reboot

Die folgenden beiden Schritte gelten nur für vorgefertigte Images, z.B. das von busware.de:

Schritt 4: /opt/fhem entfernen

sudo rm -rf /opt/fhem

Schritt 5: Raspberry aktualisieren

sudo apt-get update
sudo apt-get upgrade
(Bitte auf keinen Fall ein apt-get dist-upgrade machen!)
sudo reboot

Schritt 6: midnight-commander installieren
(erleichtert das editieren von Konfigurationsdateien und kopieren von Dateien und Verzeichnissen)

sudo apt-get install mc

Schritt 7: i2c-tools installieren

sudo apt-get install i2c-tools

Schritt 8: Datei /etc/modules editieren, folgende Zeilen einfügen:

i2c-bcm2708
i2c-dev

Schritt 9: hipi tools installieren (ohne grafische tools!)

cd /opt
sudo wget http://raspberry.znix.com/hipifiles/hipi-install
sudo perl hipi-install --hipi-wx=0
(jetzt ist genug Zeit, sich einen Kaffee zu holen, denn das Installieren dauert...)
(die Warnungen wegen fehlendem autoconf und automake können ignoriert werden)

Schritt 10: die erzeugten Module an die richtige Stelle kopieren

Den kompletten Inhalt von /usr/local/lib/perl nach /usr/lib/perl kopieren
(hier empfiehlt sich wieder der oben installierte midnight-commander mc)

Schritt 11: Verzeichnis /var/log/fhem anlegen und mit Rechten versehen

sudo mkdir /var/log/fhem
sudo chown -R fhem:root /var/log/fhem

Schritt 12: Datei /etc/rc.local editieren

Vor die Zeile "exit 0" einfügen:

/usr/local/bin/hipi-i2c e 0 1

Schritt 13: Datei /etc/udev/rules.d/98_i2c.rules anlegen und folgende Zeile eintragen:

SUBSYSTEM=="i2c-dev", MODE="0666"

Schritt 14: sudo reboot

Schritt 15: nach dem Reboot testen, ob der Senosr korrekt gefunden wird:

(Test bitte OHNE root ausführen, um zu sehen, ob auch die udev Regel greift!)

i2cdetect -y 0

Die letzte Zeile der Ausgabe muss so aussehen:

70: -- -- -- -- -- -- -- 77  


Wenn die bisherigen Schritte erfolgreich waren: HERZLICHEN GLÜCKWUNSCH, das Schwierigeste ist geschafft, weiter zu Schritt 16.
Wenn nicht: Schade. Rücke vor auf Los, ziehe keine 4000 Mark ein...

Schritt 16: fhem nach /opt installieren:

cd /opt
sudo wget http://fhem.de/fhem-5.4.tar.gz
sudo tar xvf fhem-5.4.tar.gz
sudo chown -R fhem:root fhem-5.4
sudo ln -s fhem-5.4 fhem
sudo rm fhem-5.4.tar.gz

Schritt 17: fhem starten (eine der genannten Varianten auswählen)

17a: sudo reboot (wer wie hier im Beisipiel das Image von busware verwendet hat, dort ist ein Startscript enthalten)

17b: wer from scratch arbeitet, sollte sich ein Startskript anlegen

17c: manuell starten

Schritt 18: fhem updaten (auf die Statistik- und Bestätigungsorgie im Frontend gehe ich nicht weiter ein, die ist selbsterklärend)

Schritt 19: Sensor in fhem definieren

define test I2C_BMP180 /dev/i2c-0


et voila:

Internals:
   CFGFN      
   DEF        /dev/i2c-0
   NAME       test
   NR         36
   STATE      T: 30.9 P: 1007.9 P-NN: 1007.9
   TYPE       I2C_BMP180
   Readings:
     2013-09-20 10:51:39   altitude        0
     2013-09-20 10:51:39   pressure        1007.9
     2013-09-20 10:51:39   pressure-nn     1007.9
     2013-09-20 10:51:39   state           T: 30.9 P: 1007.9 P-NN: 1007.9
     2013-09-20 10:51:39   temperature     30.9
   Calibrationdata:
     ac1        6362
     ac2        -1031
     ac3        -14717
     ac4        32753
     ac5        24853
     ac6        17550
     b1         6515
     b2         34
     b5         4932.04565739624
     mb         -32768
     mc         -11786
     md         2909
Attributes:
   oversampling_settings 3
   poll_interval 5


Die Vorgehensweise ist grundsätzlich auch für eine Installation ohne vorgefertigtes Image gültig. Entsprechende Abweichungen wurden in der Anleitung aufgeführt. Bei Punkt 17 muss man dann nach eigenem Gusto handeln, was das Startskript betrifft. Das habe ich bewusst nicht beschrieben, weil es da einfach zu viele Möglichkeiten gibt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Da schon Nachfragen kamen:

1. Die SD Karte darf natürlich auch größer als 4GB sein. Kleiner würde ich aber nicht verwenden, sonst wirds zwischendurch ganz schön eng bei der Installation

2. Alle zusätzlichen Komponenten sollten NACH den beschriebenen Schritten installiert werden (z.B. hmland o.ä.)

3. Wenn ich Zeit finde, mache ich vielleicht auch noch eine Installationsanleitung "from scratch" also ausgehend von einem nackten raspbian Image.

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

betateilchen

Zitat von: betateilchen schrieb am Fr, 20 September 2013 11:483. Wenn ich Zeit finde, mache ich vielleicht auch noch eine Installationsanleitung "from scratch" also ausgehend von einem nackten raspbian Image.

Was Du heute kannst besorgen...


Schritt 1: aktuelles raspbian Image von www.raspberrypi.org laden

Schritt 2: SD Karte erzeugen
dd bs=1m if=2013-09-10-wheezy-raspbian.img of=/dev/<NameDerSdKarte>

Schritt 3: SD Karte in Raspberry booten

Schritt 4: per SSH auf Raspberry verbinden und raspi-config ausführen,
vor allem wichtig: expand_rootfs, change_locale, change_timezone
danach reboot

Schritt 5: Raspberry aktualisieren

sudo apt-get update
sudo apt-get upgrade
sudo reboot
(reboot ist nur notwendig, wenn bei upgrade Pakete aktualisiert wurden)

Schritt 6: midnight-commander installieren
(erleichtert das editieren von Konfigurationsdateien und kopieren von Dateien und Verzeichnissen)

sudo apt-get install mc

Schritt 7: i2c-tools installieren

sudo apt-get install i2c-tools

Schritt 8: Datei /etc/modules editieren, folgende Zeilen einfügen:

i2c-bcm2708
i2c-dev

Schritt 9: zusätzliche Perl-Pakete installieren:

sudo apt-get install libwww-perl

Schritt 10: hipi tools installieren (ohne grafische tools!)

cd /opt
sudo wget http://raspberry.znix.com/hipifiles/hipi-install
sudo perl hipi-install --hipi-wx=0
(jetzt ist genug Zeit, sich einen Kaffee zu holen, denn das Installieren dauert...)
(die Warnungen wegen fehlendem autoconf und automake können ignoriert werden)

Schritt 11: Datei /etc/rc.local editieren

Vor die Zeile "exit 0" einfügen:

/usr/local/bin/hipi-i2c e 0 1
cd /opt/fhem
perl fhem.pl fhem.cfg &

Schritt 12: Datei /etc/udev/rules.d/98_i2c.rules anlegen und folgende Zeile eintragen:

SUBSYSTEM=="i2c-dev", MODE="0666"

Schritt 13: sudo reboot

Schritt 14: nach dem Reboot testen, ob der Senosr korrekt gefunden wird:

(Test bitte OHNE root ausführen, um zu sehen, ob auch die udev Regel greift!)

i2cdetect -y 0

Die letzte Zeile der Ausgabe muss so aussehen:

70: -- -- -- -- -- -- -- 77  


Wenn die bisherigen Schritte erfolgreich waren: HERZLICHEN GLÜCKWUNSCH, das Schwierigeste ist geschafft, weiter zu Schritt 15.
Wenn nicht: Schade. Rücke vor auf Los, ziehe keine 4000 Mark ein...

Schritt 15: fhem nach /opt installieren:

cd /opt
sudo wget http://fhem.de/fhem-5.4.tar.gz
sudo tar xvf fhem-5.4.tar.gz
sudo ln -s fhem-5.4 fhem
sudo rm fhem-5.4.tar.gz

Schritt 16: sudo reboot
(nach dem reboot sollte fhem korrekt laufen)

Schritt 17: fhem updaten (auf die Statistik- und Bestätigungsorgie im Frontend gehe ich nicht weiter ein, die ist selbsterklärend)

Schritt 18: Sensor in fhem definieren

define test I2C_BMP180 /dev/i2c-0

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

betateilchen

Und wer es noch bequemer haben will:

1. SD Karte mit nacktem raspbian installieren und raspi-config ausführen
2. das angehängte Skript auf den laufenden Raspi kopieren, mit "sudo su" root werden und das Skript starten
3. nach dem automatischen reboot sind alle notwendigen Treiber installiert, alle Konfigurationsdateien bearbeitet und fhem läuft

Dann muss nur noch das fhem-update manuell ausgeführt werden, danach kann der Luftdrucksensor definiert werden.
(In der Auslieferungsversion von fhem ist das BMP180 Modul noch nicht enthalten!)


rm /etc/rc.local
cd /opt

apt-get -y install i2c-tools libwww-perl
wget http://raspberry.znix.com/hipifiles/hipi-install
perl hipi-install --hipi-wx=0
rm hipi-install

echo i2c-bcm2708 >> /etc/modules
echo i2c-dev >> /etc/modules
echo /usr/local/bin/hipi-i2c e 0 1 >> /etc/rc.local
echo 'SUBSYSTEM=="i2c-dev", MODE="0666"' > /etc/udev/rules.d/98_i2c.rules

apt-get -y upgrade

wget http://fhem.de/fhem-5.4.tar.gz
tar xvf fhem-5.4.tar.gz
ln -s fhem-5.4 fhem
rm fhem-5.4.tar.gz

echo cd /opt/fhem >> /etc/rc.local
echo "perl fhem.pl fhem.cfg &" >> /etc/rc.local
echo exit 0 >> /etc/rc.local
chmod a+x /etc/rc.local

reboot

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

Dirk

Hallo betateilchen,

cool. Vielen dank für das script.

Ich werde die nächsten Tage auch mal das IMAGE Image für die CSM/LCD-Platine aktualisieren. Dann nehme ich die entsprechenden Treiber mit auf.

Gruß
Dirk

betateilchen

Hallo Dirk,

kannst Du mir mal bitte per email die "relevanten" Daten zu dem LCD Modul schicken?

Viele Grüße
Udo
-----------------------
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 betateilchen,

ich habe fhem mit dem Debian Image installiert. Der Start geht bei mir über einen Startskript in /etc/init.d.
Du startest in Deinem Skript fhem über einen Eintrag in /etc/rc.local.
Habe ich das soweit korrekt verstanden?
Warum das in den verschieden Varianten von fhem (*.tar.gz bzw. *.deb) unterschiedlich ist, traue ich mich erst gar nicht zu fragen ...

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

betateilchen

weil das einfach davon abhängt, was sich der Künstler, der das Paket geschnürt hat, dabei gedacht hat. Feste Regeln gibts dafür nicht.

Die Vorgehensweise in meinem Skript ist eigentlich die einzige, die man sich NICHT merken sollte - da wird nämlich rc.local erstmal komplett gelöscht und dann neu geschrieben. Das sollte man nur machen, wenn man sicher sein kann, dass dort noch niemand etwas wichtiges eingetragen hat. Und direkt nach einer nackten raspbian Installation steht da definitiv nichts drin, was erhalten werden müsste. Deshalb habe ich diesen pragmatischen Weg gewählt.

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

betateilchen

und nun wünsche ich mir so eine kleine Aufsteckplatine passend für beaglebone black ...

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

PeMue

hm, der hat aber eine recht weit verstreute Pinbelegung, und der Luftdrucksensor käme dann direkt unter das Bohrloch. Oder ist auf der Rückseite neben dem Stecker noch Platz?
Was hat denn der Beaglebone Black für einen Stromverbrauch?

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

betateilchen

Zitat von: PeMue schrieb am Mi, 25 September 2013 12:07hm, der hat aber eine recht weit verstreute Pinbelegung,

Die I2C pins liegen ganz gut zusammen.

Zitat von: PeMue schrieb am Mi, 25 September 2013 12:07und der Luftdrucksensor käme dann direkt unter das Bohrloch.

Oberhalb der Steckerleiste gibt es kein Bohrloch, da ist nur freier Himmel.

Zitat von: PeMue schrieb am Mi, 25 September 2013 12:07Oder ist auf der Rückseite neben dem Stecker noch Platz?

Ich sprach von Aufsteckplatine, nicht von Auflötplatine.

Zitat von: PeMue schrieb am Mi, 25 September 2013 12:07Was hat denn der Beaglebone Black für einen Stromverbrauch

Hab ich noch nicht gemessen, er entwickelt auf jeden Fall weniger Abwärme als der Raspi, der Verbrauch müsste also geringer sein.
Laut Datenblatt je nach Verwendung unter 1 Watt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

PeMue

ZitatDie I2C pins liegen ganz gut zusammen.
Aber die Spannungsversorgung liegt im Vergleich zum Raspberry Pi weiter weg:

(siehe Anhang / see attachement)

Daher geht mit Dirk's bestehender Platine ohne Löten nicht viel.

Ich würde die Platine eher wieder als Lötplatine auf der Unterseite (Sensor neben dem Stecker) layouten. Dann wäre der Stecker für andere Dinge frei. Aber jeder wie er mag ...

Mir gefällt am BeagleBone black, dass er gleich einen A/D Wandler drauf hat.

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

betateilchen

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

Dirk

Wenn ich eine neue Platinenbestellung losschicke kann ich da ja mal ein Layout mit machen.
Und dann auch gleich noch eine LCD-Version zum Aufstecken :)

Gruß
Dirk

PeMue

Zitathttp://circuitco.com/support/index.php?title=BMP_on_the_Beagle_Bone_Black
Da passt ja gar kein Pin ins Raster und den Preis finde ich auch relativ hoch. Vermutlich ist da noch ein Spannungsregler und Transistor (wozu auch immer?) drauf ...

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