Wemos d1 mini + BMP280 - encje nieznane

hello,
trochę zacząłem zabawę z wemosami - mega sprawa
no i chcąc połączyć pierwszy czujnik BM280 wgrałem na początku tasmotę i odczyty pojazywały się na stronie - więc elektrycznie wiem że jest OK.
no i przyszedł czas na ESP home, szukając sporo tutouriali znazłem informację że trzeba yaml skonfigurować, no i aktualnie mam tak:

    
i2c:
  sda: D1 
  scl: D2 
  scan: true
  id: i2c_bus_1

sensor:
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BME280 Pressure"
    humidity:
      name: "BME280 Humidity"
    address: 0x77
    update_interval: 60s

jednak encje są nieznane:

image

może się ktoś bawił i podpowie czy adres 0x77 jest prawidłowy? albo coś jeszcze co pomoże namierzyć problem ?

A na Tasmocie jaki adres miałeś?
Wszystko masz na tacy na stronie projektu:

Patrz w logi ESPHome, tam będzie adres.

Ja mam tak:


  - platform: bmp085
    address: 0x77
    temperature:
      name: "BMP180 Temperature"
    pressure:
      name: "BMP180 Pressure"
    update_interval: 60s
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BMP280 Pressure"
      oversampling: 16x
    humidity:
      name: "BME280 Humidity"
      oversampling: 16x
    address: 0x76
    iir_filter: 4x
    update_interval: 30s

w logach przy wgrywaniu jest coś ciekawego…
pokazuje faktycznie adres 0x76 ale pin GPI04 oraz GPI05 zamiast domyslnych D1 oraz D2 - ? próbowałem obie opcje nie ma różnicy
dodatkowo BME280 has wrong chip ID! Is it a BME280?
jak to rozumieć ?

[13:35:29][C][i2c.arduino:038]: I2C Bus:
[13:35:29][C][i2c.arduino:039]:   SDA Pin: GPIO4
[13:35:29][C][i2c.arduino:040]:   SCL Pin: GPIO5
[13:35:29][C][i2c.arduino:041]:   Frequency: 50000 Hz
[13:35:29][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[13:35:29][I][i2c.arduino:054]: Results from i2c bus scan:
[13:35:29][I][i2c.arduino:060]: Found i2c device at address 0x76
[13:35:29][C][bme280.sensor:143]: BME280:
[13:35:29][C][bme280.sensor:144]:   Address: 0x76
[13:35:29][E][bme280.sensor:150]: BME280 has wrong chip ID! Is it a BME280?
[13:35:29][C][bme280.sensor:156]:   IIR Filter: 4x
[13:35:29][C][bme280.sensor:157]:   Update Interval: 30.0s
[13:35:29][C][bme280.sensor:159]:   Temperature 'BME280 Temperature'
[13:35:29][C][bme280.sensor:159]:     Device Class: 'temperature'
[13:35:29][C][bme280.sensor:159]:     State Class: 'measurement'
[13:35:29][C][bme280.sensor:159]:     Unit of Measurement: '°C'
[13:35:29][C][bme280.sensor:159]:     Accuracy Decimals: 1
[13:35:29][C][bme280.sensor:160]:     Oversampling: 16x
[13:35:29][C][bme280.sensor:161]:   Pressure 'BMP280 Pressure'
[13:35:29][C][bme280.sensor:161]:     Device Class: 'pressure'
[13:35:29][C][bme280.sensor:161]:     State Class: 'measurement'
[13:35:29][C][bme280.sensor:161]:     Unit of Measurement: 'hPa'
[13:35:29][C][bme280.sensor:161]:     Accuracy Decimals: 1
[13:35:29][C][bme280.sensor:162]:     Oversampling: 16x
[13:35:29][C][bme280.sensor:163]:   Humidity 'BME280 Humidity'
[13:35:29][C][bme280.sensor:163]:     Device Class: 'humidity'
[13:35:29][C][bme280.sensor:163]:     State Class: 'measurement'
[13:35:29][C][bme280.sensor:163]:     Unit of Measurement: '%'
[13:35:29][C][bme280.sensor:163]:     Accuracy Decimals: 1
[13:35:29][C][bme280.sensor:164]:     Oversampling: 16x

Nie został rozpoznany BME280, może to BMP280 (więc jeśli tak jest w istocie, to powinieneś użyć platformy bmp280) te czujniki są identyczne z wyglądu i można się pomylić, w dodatku chińskie płytki prototypowe z nimi są identyczne i często nie jest oznaczone jaka wersja jest faktycznie wlutowana.

PS Nie ma czegoś takiego jak czujnik BM280, są do wyboru BMP280 (temperatura i ciśnienie) lub BME280 (dodatkowo wilgotność względna).

PPS zedytowałem tytuł wątku i dorzuciłem tagi

Wpisałeś 0x77 w konfigu, zmień to na 0x76

A donośnie GPIO:

1 Like

BINGO !! na samej płytce jest oznaczenie BME/P…
zmiana konfiguracji i poszło

DZIĘKI WIELKIE !!

[13:46:00][D][bmp280.sensor:149]: Got temperature=25.7°C pressure=987.1hPa
[13:46:00][D][sensor:124]: 'BMP280 Temperature': Sending state 25.72000 °C with 1 decimals of accuracy
[13:46:00][D][sensor:124]: 'BMP280 Pressure': Sending state 987.10822 hPa with 1 decimals of accuracy

poniżej konfig - może się komuś przydać:

i2c:
  sda: D2 
  scl: D1
  scan: true

sensor:
  - platform: bmp280
    temperature:
      name: "BMP280 Temperature"
      oversampling: 16x
    pressure:
      name: "BMP280 Pressure"
      oversampling: 16x
    address: 0x76
    iir_filter: 4x
    update_interval: 30s

@murcin , @Graffy Skorzystałem z Waszych doświadczeń i rad w tym temacie, mam jednak pytanie dotyczące parametru Altitude Mianowicie chodzi mi o wyjaśnienie o czym informuje ten parametr ? bo chyba nie oblicza wysokości n.p.m. w lokalizacji zamontowania czujnika ?

- platform: template
    name: "Altitude"
    lambda: |-
      const float STANDARD_SEA_LEVEL_PRESSURE = 1013.25; //in hPa, see note
      return ((id(bme280_temperature).state + 273.15) / 0.0065) *
        (powf((STANDARD_SEA_LEVEL_PRESSURE / id(bme280_pressure).state), 0.190234) - 1); // in meter
    update_interval: 15s
    icon: 'mdi:signal'
    unit_of_measurement: 'm'

A jak myślisz co robi?
Szerszy opis masz w dokumentacji:


Może nieco uściślę - płytki prototypowe na których zwykle kupujemy wlutowane te czujniki mają często identyczne PCB (szczególnie te chińskie), natomiast same układy nieco się różnią po bliższym spojrzeniu - BME280 jest niemal kwadratowy (mam na myśli blaszaną obudowę - na zdjęciu z podglądu dokumentacji jest BME) natomiast BMP280 jest zdecydowanie prostokątem (spora różnica długości boków).

Myślałem, że chodzi o wysokość w miejscu lokalizacji ale na to nie wskazują informacje podawane przez stworzony czujnik, stąd moje pytanie.

Musisz najpierw skalibrować, moim zdaniem to rozwiązanie nie ma żadnego realnego zastosowania (no chyba, że pomiar położenia windy, ale wtedy kalibrację byś musiał robić dość często, bo lokalne ciśnienie jest przecież zmienne).

Czyli tak dobrać STANDARD_SEA_LEVEL_PRESSURE = 1013.25 aby wskazał właściwą wysokość ?

Można to policzyć, zajrzałeś do dokumentacji?

Gdybym nie zajrzał i nie przeczytał to nie skompilowałbym tego czujnika, jeśli pytam to nie wiem lub nie jestem pewien i zwracam się wtedy o pomoc. Jasne ?

Więc w realnym zastosowaniu stosuje się czujnik odniesienia.
Widzisz jakieś zastosowanie tego rozwiązania?

PS Masz raję wstawka z pytaniem czy zajrzałeś byłą zbędna - sorry, ale niestety większość tak właśnie olewa te podstawowe ruchy.

Żadnego :slight_smile: , przejechałem się po terenie naokoło komina, gdzie średnio jest to 130-150 npm a czujnik bardzo od tego odbiegał. Jak coś nie działa prawidłowo to najpierw staram się aby zadziałało a potem decyduję czy mnie to jest potrzebne czy też nie.

PS.

Zawsze powtarzam to jak mantrę swoim Klientom najpierw zajrzyj do dokumentacji a potem dzwoń z problemem, większość wyjaśnia instrukcja. :slight_smile:

Wszyskie ciśnienia w serwisach pogodowych podawane są w przeliczeniu na ciśnienie jakie byloby na poziomie morza (jako jednoznaczny wspólny punkt odniesienia) Do takiego przelizenia potrzeba jest znajomośc wysokosci zamocowania czujnika ppm, temperatura i czywiście ciśnienie bezwględne (które mierzy czujnik). Potrzebne jest to do kalibracji własnego czyjnika wg. lokalnej stacji pogodowej np. pobliskiego lotniska. Nie bedzę sie tu silił na podawanie formurmuły, bo jeszcze cos namieszam. Ciśnienie standardowe 1031.25 to jest ciśnienie w ściśle okreslonych jednych warukach. Nie będe przepisywal internetów a z glowy nie jestem w stanie podać szczegółów.
Przyznaję nie jest to proste do zrozumienia.

Wartość bezwględna jest bardziej potrzebna dla Ciebie np.gdy jestes metoropatą.
Względna dla serwisów pogodowych.