neues Modul: BME280 (Temperatur-, Luftfeuchte- Luftdrucksensor)

Begonnen von klausw, 19 Januar 2016, 23:24:21

Vorheriges Thema - Nächstes Thema

klausw

Hallo zusammen,

anbei die erste Variante zur Verwendung des BME280 am Raspberry / BBB / Firmata ....
Vor Verwendung muss derzeit noch in den Modulen 00_RPII2C.pm bzw. 10_FRM.pm unter
der Zeile
I2C_BMP180
die Zeile
I2C_BME280
eingetragen werden.[/s]

Update:

Modul ist jetzt im SVN. 00_RPII2C.pm und 10_FRM.pm müssen nicht mehr angepasst werden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

locutus


Mr. Flash

#2
Hallo klausw,

vielen Dank für das Modul.

Endlich kann ich das Breakout-Board von watterott.com sinnvoll einsetzen.
Vier Drähte vom BME280-Board zum Raspberry Pi 2 und die Module gemäß Referenz zu "I2C_BME280" installieren:

define I2C_RPII2C RPII2C 1
define BME280 I2C_BME280 0x77
attr BME280 IODev I2C_RPII2C
attr BME280 icon temp_inside
attr BME280 poll_interval 5
attr BME280 room System


(http://bme280.jpg)

Viele Grüße,
Nik
RPi 3B+; Buster; FHEM 5.9; S.USV basic; BME280; TSL25911.
HM: CFG-LAN (0.965),CFG-USB-2,CC-RT-DN,Dis-(EP-)WM55,ES-PMSw1-Pl,ES-TX-WM,LC-Dim1T-FM,LC-Sw1-FM,LC-Sw2-FM,MOD-RPI-PCB,OU-CFM-Pl,RC-Dis-H-x-EU,SCI-3-FM,Sec-MDIR-2,-RHS,-SD,-SC-2,-SCo,-Sir-WM,-TiS,-WDS-2,TC-IT-WM-W-EU,WDS10-TH-O,WDS30-OT2-SM

schlawiano

Hallo Klaus,

es hat sich ein kleiner Fehler (Stand: Trunk) eingeschlichen. Deswegen ging Dein Modul leider nicht.

Es kam über den State "'First calibration block received'" nicht hinaus.

Zeile 197:
      I2C_BME280_i2cread($hash, 0xE1, 16);
      # liest 16 byte

Zeile 233
   I2C_BME280_GetCal2     ($hash, $clientmsg->{received}) if $clientmsg->{reg} == 0xE1 && $clientmsg->{nbyte} == 8;
       # wird aber auf 8 Byte geprüft

Bei mir lokal gefixt prüfe ich auf 16 und scheint zu klappen.

Viele Grüße
Karsten

MarkusAutomaticus

Zitat von: Mr. Flash am 21 Februar 2016, 18:52:35

(http://bme280.jpg)

Viele Grüße,
Nik

Hallo Nik,

dein Plot ist genauso, wie ich ihn mir immer gewünscht, aber noch nicht hinbekommen habe.
Kannst du bitte die zugehörige Definition verraten?

Gruß
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Mr. Flash

Hallo Markus,

hier die Definition in meiner fhem.cfg:


define I2C_RPII2C RPII2C 1
attr I2C_RPII2C room System

define BME280_1 I2C_BME280 0x77
attr BME280_1 IODev I2C_RPII2C
attr BME280_1 icon temp_inside
attr BME280_1 poll_interval 5
attr BME280_1 room Heizung

# Logfile fuer BME280_1, BME280_2
define FileLog_BME280 FileLog %L/bme280-%Y-%m.log BME280.*
attr FileLog_BME280 icon temp_inside
attr FileLog_BME280 logtype text
attr FileLog_BME280 room Logging

# Graph fuer BME280_1
define SVG_FileLog_BME280_1 SVG myLogProxy:SVG_FileLog_BME280:CURRENT
attr SVG_FileLog_BME280_1 alias Temp/Druck/Feuchte Heizung
attr SVG_FileLog_BME280_1 nrAxis 1,2
attr SVG_FileLog_BME280_1 room Heizung
attr SVG_FileLog_BME280_1 title "Temp: min [$data{min1}] - avg [$data{avg1}] - max [$data{max1}] - last [$data{currval1}] --- [".localtime()."]"



Und das steht bei mir in der SVG_Filelog_BME280.gplot:


set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
set y3tics
set title '<TL>'
set grid xtics ytics
set ylabel "Temperatur [°C]"
set y2label "Luftdruck [mbar]"
set y3label "Luftfeuchtigkeit [%]"

#logProxy FileLog:FileLog_BME280,predict:4:temperature\x3a::
#logProxy FileLog:FileLog_BME280,predict:4:pressure-nn\x3a::
#logProxy FileLog:FileLog_BME280,predict:4:humidity\x3a::

plot "<IN>" using 1:4 axes x1y1 title 'Temperatur [°C]' ls l0 lw 1 with lines,\
     "<IN>" using 1:4 axes x1y2 title 'Luftdruck NN [mbar]' ls l1 lw 1 with lines,\
     "<IN>" using 1:4 axes x1y3 title 'rel. Luftfeuchtigkeit [%]' ls l2 lw 1 with lines


Viel Erfolg.

Grüße,
Nik
RPi 3B+; Buster; FHEM 5.9; S.USV basic; BME280; TSL25911.
HM: CFG-LAN (0.965),CFG-USB-2,CC-RT-DN,Dis-(EP-)WM55,ES-PMSw1-Pl,ES-TX-WM,LC-Dim1T-FM,LC-Sw1-FM,LC-Sw2-FM,MOD-RPI-PCB,OU-CFM-Pl,RC-Dis-H-x-EU,SCI-3-FM,Sec-MDIR-2,-RHS,-SD,-SC-2,-SCo,-Sir-WM,-TiS,-WDS-2,TC-IT-WM-W-EU,WDS10-TH-O,WDS30-OT2-SM

klausw

Zitat von: schlawiano am 21 Juli 2016, 09:19:52
es hat sich ein kleiner Fehler (Stand: Trunk) eingeschlichen. Deswegen ging Dein Modul leider nicht.

Es kam über den State "'First calibration block received'" nicht hinaus.
naja, wenn nicht geht ist der Fehler nicht so klein.
Ich bin im Moment nicht in der Lage, mir das Modul anzuschauen.
Allerdings läuft es bei mir problemlos.
Nutzt du es direkt am Pi? Das könnte die Erklärung sein, da ich es nur über Firmata getestet habe.
Ich schaue bei Gelegenheit mal drüber.
Grüße
Klaus
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

MarkusAutomaticus

Zitat von: Mr. Flash am 22 Juli 2016, 21:32:22

Viel Erfolg.

Grüße,
Nik

Hallo Nik,

vielen Dank für das Zurverfügungstellen der Daten.
Ich bin noch nicht dazugekommen, es umzusetzen.
Aber du hilfst mir damit sehr, die Zusammenhänge besser zu verstehen.

Schönes Restwochenende!
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

schlawiano

Zitat von: klausw am 22 Juli 2016, 23:57:31
naja, wenn nicht geht ist der Fehler nicht so klein.
Ich bin im Moment nicht in der Lage, mir das Modul anzuschauen.
Allerdings läuft es bei mir problemlos.
Nutzt du es direkt am Pi? Das könnte die Erklärung sein, da ich es nur über Firmata getestet habe.
Ich schaue bei Gelegenheit mal drüber.
Grüße
Klaus

Hallo Klaus,

ich nutze es am PI mit über RPII2C. Mit gezeigter Änderung hat es funktioniert.
Das war allerdings nur ein Schnellschuss. Ich gerade noch mal nachgeschaut.
Du verarbeitest nur 8 Byte. D.h. eigentlich müssten beiden Werte 8 sein (nicht 16, was zwar nicht stört, aber sinnfrei ist)

Gruß Karsten


Ob es nun 16 oder 8 Byte sein müssem, habe ich nicht weiter geprüft. Sprich
ich habe das Datenblatt nicht gelesen.

klausw

Zitat von: schlawiano am 25 Juli 2016, 09:11:54
ich nutze es am PI mit über RPII2C. Mit gezeigter Änderung hat es funktioniert.
Das war allerdings nur ein Schnellschuss. Ich gerade noch mal nachgeschaut.
Du verarbeitest nur 8 Byte. D.h. eigentlich müssten beiden Werte 8 sein (nicht 16, was zwar nicht stört, aber sinnfrei ist)
...
Ob es nun 16 oder 8 Byte sein müssem, habe ich nicht weiter geprüft. Sprich
ich habe das Datenblatt nicht gelesen.
Jop, 8 bit reichen. In der Init Routine habe ich es auch so drin. Korrigiert.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Franky1992

Hey leutz,

möchte ein paar der bme280 an meinem Raspbian 3 verwenden.

Ein paar Dinge sind mir da noch nicht ganz klar, ich würde gern das hier verwendete Modul verwenden
Geht das mit egal welchem bme280? (Waterrott, ardafruit, Sparkfun, ect...)
wieviele passen an einen Raspi? GPIO4 ist bereits für 1wire in Verwendung.

Vielen Dank schonmal im Vorraus.

Mr. Flash

Hallo Franky1992,

ich habe nur die Breakout-Boards von Watterott in Verwendung. Bei denen kann man per Lötauge zwei verschiedene Adressen einstellen: 0x76 oder 0x77.
Bei laufen zwei Stück BME280 am I2C_1, also an den Pins 3 & 5 (RPi2B).
Ob man auch noch zwei BME280 am I2C_0 (also an den Pins 27 & 28) anschliessen kann, habe ich noch nicht ausprobiert. Zumindest kann man beim Kommando RPII2C den I2C-Bus angeben.

Grüße,
Nik
RPi 3B+; Buster; FHEM 5.9; S.USV basic; BME280; TSL25911.
HM: CFG-LAN (0.965),CFG-USB-2,CC-RT-DN,Dis-(EP-)WM55,ES-PMSw1-Pl,ES-TX-WM,LC-Dim1T-FM,LC-Sw1-FM,LC-Sw2-FM,MOD-RPI-PCB,OU-CFM-Pl,RC-Dis-H-x-EU,SCI-3-FM,Sec-MDIR-2,-RHS,-SD,-SC-2,-SCo,-Sir-WM,-TiS,-WDS-2,TC-IT-WM-W-EU,WDS10-TH-O,WDS30-OT2-SM

Franky1992

Danke dir für die Infos,

habe nun 2x Waterrott bme280 hier und will starten.
Habe da noch 3 Fragen:
-wo ist bei den waterrott bme280 das Lötauge für die Adressänderung?
-reicht das hier genannte modul oder muss im raspi vorher noch I2C aktiviert werden?
-wie wird der sensor verkabelt?  Habe auch noch ein paar 1w Sensoren zu laufen, kann ich da auch von pin 1 Spannung abnehmen und dann nur 3 und 5?

vielen Dank schonmal im Vorraus

klausw

Zitat von: Franky1992 am 16 Januar 2018, 16:30:37
-reicht das hier genannte modul oder muss im raspi vorher noch I2C aktiviert werden?
I2C muss aktiviert werden, so wie es in der commandref steht
Zitat von: Franky1992 am 16 Januar 2018, 16:30:37
-wie wird der sensor verkabelt?  Habe auch noch ein paar 1w Sensoren zu laufen, kann ich da auch von pin 1 Spannung abnehmen und dann nur 3 und 5?
Masse Fehlt noch

Läuft der Sensor mit 3,3V?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Franky1992

Hallo Klaus,

danke für die Infos.
Ja läuft mit 3,3v, hatte die wirklich gute doku im wiki und commandref übersehen!

Inzwischen laufen beide Sensoren, es muss eine brücke von masse auf sd0 gelötet werden damit der Sensor
Von Adresse 0x77 auf 0x76 wechselt. So ladden sich 2 betreiben.
Mehr geht beim pi3 nicht da wohl beim neuen arm der i2c0 nicht ansprechbar ist!?

Mal noch eine wichtige Frage an den Modulersteller,
gibt es die Möglichkeit für die Temperatur ein offset einzustellen?
einer der beiden weicht um ca 0,6 Grad ab.

Gruß

klausw

Die Offsetgeschichte schaue ich mir mal an. In der Zwischenzeit kannst du es mit userreadings lösen.

Gesendet von meinem HTC U11 mit Tapatalk

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

RieWi

Hallo klausw,
ich habe mir einen bme280 besorgt und an die Raspberry Pi angeschlossen - in FHEM werden die Daten dank deinem Modul I2C_BME280 auch sofort angezeigt.
Vielen Dank dafür. Ich habe aber eine abweichenden Datensatz bemerkt.
Ich möchte den Status aus der sqlite Datenbank auslesen/auswerten und im Feld Value steht nur ein "T:" anstatt der Daten 
z.B. "24.9 H: 32.0 P: 996.7 P-NN: 1020.2" (wie bei anderen Sensoren der Fall).

sqlCmd select *, count(*) FROM history WHERE DEVICE = 'ltp_Wohnzimmer' group by DEVICE, READING limit 20;
TIMESTAMP|DEVICE|TYPE|EVENT|READING|VALUE|UNIT|
2020-12-25 21:19:53|BME280_1|I2C_BME280|state: T: 24.9 H: 32.0 P: 996.7 P-NN: 1020.2|state|T:|

Gruß, RieWi

klausw

mit dblog kenne ich mich nicht aus
Auf den ersten Blick macht state als Datensatz keinen Sinn. Schließlich ist es nicht ein Messwert und eine Einheit, sondern ein Sammelsurium.
Die Einzelreadings sollten aber korrekt abgelegt werden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

RieWi

Hallo klausw,
vielen Dank für die schnelle Antwort, ich bin leider etwas verspätet...

Ich verwende meistens nur den "state" als Datensatz und selektiere die Werte im  .gplot aus dem VALUE.
Bei dir stehen alle Daten im EVENT, wie ich diesen im .gplot anspreche habe ich noch nicht herausgefunden.
Besteht die Möglichkeit den VALUE ebenfalls mit dem Rest hinter "T: " zu füllen? z.B. "24.9 H: 32.0 P: 996.7 P-NN: 1020.2" (wie bei anderen FHEM Modulen der Fall)
      
Gruß, RieWi

klausw

Bei welchen Modulen klappt das beispielsweise?
Ich kann natürlich mal nachschauen, wie das dort gelöst ist.

Wie gesagt, bei gplot in Verbindung mit dblog kann ich dir nicht helfen.
Hat es einen Grund, warum du die Einzelreadings nicht nutzen möchtest?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Geisha2021

Nachdem der DHT22 Sensor bei der Luftfeuchtigkeit völlig unrealistische Werte lieferte und auch des öfteren komplatt ausfiel, habe ich einen BME280 Sensor über einen ESP8266 und MQTT in mein FHEM eingebunden. Alle 3 Parameter werden in meiner MariaDB geloggt.
Funktioniert bis jetzt zuverlässig.