ESP32 + BT szenzor

Sziasztok!
Adott egy mérőszoba, amelynek a benti hőmérsékletét (két ponton) kell rögzíteni.
WiFi van, internet van. Külön bármiféle szerver elhelyezésére nincs lehetőség.
Erre gondoltam: ESP32 nodeMCU 32S modul + két bluetooth XIAOMI (LYWSD03MMC) szenzor, majd félóránként
feltolni Google Sheetbe (ez a rész már random számokkal működik).
Mivel elsőre jónak kell lennie (felpattintja a tulaj a cumókat), - láttam ezt is, azt is erről a szenzorról -
és most szeretnénk megrendelni, működik így? Platform.IO alatt fejlesztem a programot. Későbbiekben OTA
lesz.
A beírt GS adatokkal meg azt csinálnak, amit akarnak.
Vagy mit javasolnátok megoldást? ZigBee, egyéb szerver lehetőség nem játszik.
Köszönöm,
Roland

Hozzászólások

ESP32C6 - van zigbee + WIFI + bluetooth támogatása is 

Xiaomi szenzorokon firmwaret kell cserélni, hogy a sima bthome protokollon menjen, de ez ilyen egy klikkes dolog, elég fájdalommentes. 

Ha random számokkal már megy az esp-s kapcsolat google felé, akkor csak egy ble observer kell még az esp-be, az sem vészes.

Szerkesztve: 2023. 12. 11., h – 08:42

Szerintem felesleges bohockodni bt-vel meg zigbee-vel. Siman fogod a par euros esp32 lapkat, rakotsz egy filleres ds18b20 homerot, es meg is vagy. Ha OTA van, olymindegy, hogy 1 vagy N esp-t kell update-elni.

A gond ugye a 'moving parts', avagy a szabaly, hogy minel tobb dolgot drotozol ossze, annal megbizhatatlanabb a rendszer egesze. Keep it simple.

Nyomtam +1-et, de csak részben értek egyet. A saját cucc mindig többet fogyaszt, így azt konnektor közelébe kell rakni, és az nem mindig esik egybe a hőmérő ideális helyzetével, ráadásul gondolom a humán kiszolgálása információval szintén fontos, ezért vásárolt kijelzős hőmérőt a posztoló. 

Amiért viszont nagyon egyetértek, az a madzag megbízhatósága. A xiaomi Bt hőmérők amikor gyengül az elem, néha nem szeretnek kommunikálni

 A xiaomi Bt hőmérők amikor gyengül az elem, néha nem szeretnek kommunikálni

Használok ilyet 3 db-ot. Az egyik, hogy valóban ATC fw-rel célszerű használni, azzal tökjó.

Viszont a gyenge elem: kommunikál az, azzal nincs para, ám míg 100%-os elemmel 5-10 m-ről is olvasható az adat (közte fal és betonfödém), addig ahogy 30% alá esik az akku, drasztikusan csökken a hatótáv.

fel se merult bennem, hogy par havonta bohockodni akarnanak akkukkal, ezert ugye a kabel kapasbol jobbnak tunt.

ha kell kijelzo, 1 euro korul van 1 4x8 szegmenses, esp32 siman viszi, kell 1 lib extra, amugy i2c, ha jol emlekszem.

a bt/zigbee ott van meglove, hogy -amennyire a szavaidbol kiveszem- te nem leszel ott szemelyesen, ergo nem fogod tudni a kulonbozo connection nyugoket ott debugolni.

Egyre jobban hajlok én is már a vezetékes DS18B20 szenzor felé.
Egy modulra kötnék kettőt. Már azt kell tisztázni, hogy mennyire akceptálható a tulajnak a vezetékezés...

Igazad van!

De, hogy hozzaszoljak: felcsapja az ember az alit, elso ds18b20 hirdetesre klatty,  es ime:

Operating Voltage: 3V to 5.5V ; Temperature Range: -55°C to +125°C(-67°F to +257°F); Accuracy of+0.4 ° C within the temperature of -10 ℃ to 70 ℃.

Szerintem jo ez. link

Egy fontos adalek, az accuracy-t ugy kell erteni persze, hogy nagyjabol fix hiba, tehat nem meresenkent 'ugral' vagy ilyesmi.

Gyakorlatban nalam 1/8 fokos pontossaggal mer, es nehany tized fok kulonbseggel ugyanazt, mint egy masik homero par meterrel odebb (fyi, ez ekkora tavolsagra realis kulonbseg), szoval azt mondanam, atlagembernek boven jo a pontossaga, meg sok is, ha letezik ilyesmi. :D

Én vettem aliról, tokozatlanokat, azok nagyon pontatlanok voltak, töb fok eltéréssel, (persze lehet kalibrálni). Vettem hestorból kábeles , vízhatlant. Ezeket ellenőriztem "lázméréssel" : 36,3 volt altalában az pár darab amit vettem. 36,6 egyik sem. 

Zigbee: akár évekig elmennek egy gombelemmel, Viszont a zigbee szenzoroknak van egy hiányossága, ha elveszíti a kordinátorral a kapcsolatot , nem tudsz róla, mert csak bizonyos hőfokváltozásnál kapcsolódik, nem tudni hogy lemerült az elem, vagy csak pár órája stabil a hőfok.
Talán a thread mesh jobb lesz majd , valamikor....

Az analog.com adatlapja szerint:

Measures Temperatures from -55°C to +125°C
(-67°F to +257°F)
±0.5°C Accuracy from -10°C to +85°C

Azért az analog.com-ban jobban bízom, mint az AliExpress leírásban.

Az 1/8 fok az szerintem nem pontosság, hanem az eszköz felbontása (ami egy harmadik paraméter a pontosság és precizitás mellett), semmit nem jelent a pontosság szempontjából, csak azt korlátozza, hogy annál precízebb nem lehet az eszköz. Az, hogy leolvasol valamit az eszközről valamilyen felbontás szerint, nem jelenti azt, hogy az eszköz valóban ilyen precizitással tud mérni.

Például lehet nekem olyan eszközöm, ami ugyan 6 tizedesjeggyel kijelez valamit (vagy leolvashatok róla ilyet, analóg műszer esetén), de valójában a relatív pontossága 0.1%, az abszolút pontossága meg 0,1.

Az analog.com-os adatlap szerint is: Programmable Resolution from 9 Bits to 12 Bits

Csak éppen ez semmit nem számít, ha egyszer -10 és 85 Celsius-fok között a pontossága az 0.5 Celsius-fok.

The resolution of the temperature sensor is user-configurable to 9, 10, 11, or 12 bits,
corresponding to increments of 0.5°C, 0.25°C, 0.125°C, and 0.0625°C, respectively.

Még ha a kijelzett érték az éppen 32.1875, attól még az nem változik meg, hogy annyit lehet tudni, hogy a valódi hőmérséklet valahol a 31.6875 és 32.6875 között van, ami a pontosságot figyelembe véve 32, 32.5 vagy 33 fokos mérést jelent.

Ha a pontosságot átállítanám 0.125-re, attól még nem változna az meg, hogy annyit tudok mondani, hogy a hőmérséklet az eszköz szerint 32, 32.5 vagy 33, ennél pontosabb mérést ő nem tud, minden adat, ami 31.5-nél több és 33.5-nél kevesebb van, ugyanezt jelenti.

Az egész felbontás téma csak azért számít, hogy tudd, hogy a megkapott bináris adatot hogyan kell konvertálnod (mennyivel kell skáláznod), a mért érték pontosságát nem befolyásolja.

azert irtam az 1/8 fok pontossagot, hogy tudd mihez viszonyitani, amikor azt mondom, hogy "a par meterre levo masik homero is kb. tizedfokra ugyanannyit mer". :) nyilvan, ha 1/8 fok precezioval olvasom ki, akkor kapasbol nem erdekes ugye 1-2 tized fok elteres. ami egy szobai homeronel nem meglepo, a legtobb embernek mar a fel fokos precizitas is 'uj'. :)

 

Az ali leirasa annyiban szamit, de, hogy ha kimered es nem hozza a pontossagot, akkor refund, es ingyen volt. Szoval a kereskedo 2 dolgot tehet: nagyot mond, es benyeli, ha valaki megis kimeri, vagy pontos adatokat ad meg. Tekintve, hogy ez kinai gyartmanynak tunik, nem lennek meglepve, ha mas lenne a specifikacioja, mint az analog.com -osnak. De persze nem tudom biztosra; en csak egy szobahomerot akartam, es arra tok jo, csak ajanlani tudom.

Shelly Plus H&T nem opció? Elemes is tud lenni, wifi is van benne, USB-ről is tud menni, weblapján scriptelhető is, szóval akárhova tud szólni. ESP32 van benne, szóval ha nem tetszik, amit tud, hivatalosan is rárakhatsz saját magad írt szoftvert is, és a hőmérő is benne van.

Szerkesztve: 2023. 12. 12., k – 11:28

Egy működő esphome yaml. egy relével , 3 hőmérő, webes felülete bekapcsolva

esphome:
  name: ds18b20-homero01-rele

esp32:
  board: wemos_d1_mini32
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: ""

ota:
  password: ""

wifi:
  ssid: "xxxxx"
  password: "yyyyyy"
  
  
  manual_ip:
    static_ip: 192.168.4.123
    gateway: 192.168.4.3
    subnet: 255.255.255.0


  # Enable fallback hotspot (captive portal) in case wifi connection fails
  #ap:
  #  ssid: "Ds18B20-Homero01"
  #  password: "wjCACezRNxLd"

captive_portal:
    
dallas:
  - pin: D2
    update_interval: 3s
    

sensor:
  - platform: dallas
    address: 0x1e01204e0d872528
     0x1e01204e0d872528
     0xfd01204df3512d28
    name: "DS18b20 Teszt"     
    
switch:
  - platform: gpio
    name: "Relay"
    pin: D1 
   
web_server:
  port: 80  
Szerkesztve: 2023. 12. 12., k – 12:18

Átírtam ESPHome alá.
A Google Sheet-be nem tudok beleírni, böngészőből ez a link megy.

ESPHome termináljában ezt kapom:
[D][main:084]: Response status: -5
[W][http_request:081]: HTTP Request failed; URL: https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/exec?…; Error: connection lost

Az ESPHome yaml rész:
Interval:
  - interval: 60s
    then:
    - http_request.get:
        url: !lambda |-
           char buf[200];
           sprintf(buf, "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/exec?…", rand()%100, rand()%200);
           return ((std::string) buf).c_str();
        headers:
          Content-Type: application/json
        verify_ssl: true
        on_response:
          then:
            - logger.log:
                format: 'Response status: %d'
                args:
                  - status_code
Mit bökök el?

Ha a "verify_ssl: false" - ugyanez :(

Hogy lehet azt megcsinálni, (mivel 4 db DS18B20 lesz), hogy tetszőlegesen bármelyik helyére bármelyiket lehessen telepíteni? (nem leszek ott, amikor építik be. Esetlegesen bármelyik bárhol lehet).
ESPHome-ban, csináljak 4 sensort és ami-ami? Csak rögzítés, minimális automatizálás (relé kapcsol értéktől - hiszterézistől)

Ha jol gondolom, az index a cimbol jon, szoval fix a sorrend. Innentol osszedugod otthon, egymas utan felmelegited oket, megnezed hanyadik indexu homerseklete valtozott, es ez alapjan beszamozod. A felhasznalo meg tudni fogja, hogy a 2-es homero az, amit a szajaba dugott, a 3-as ment a varjunk csak..

A strange game. The only winning move is not to play. How about a nice game of chess?