Grazer
Make ATK Great Again
- Liittynyt
- 30.10.2016
- Viestejä
- 1 829
Aloitetaanpa tällainen ketju. Itse tilailin taannoin Ebaystä halpoja Xiaomin BLE-lämpötila-antureita kun katselin että niillä saa suht helposti tehtyä lämpötilaloggerin. Maksavat kiinasta tilattuna noin viisi euroa kappale. Nykyään tietysti tulee arvonlisävero tuohon päälle. Hobbyhallista näkyy saavan noita ainakin tällä erää 6,95EUR/kpl
Kyse siis näistä:
Nuo saa tuollaisenaankin lähettämään tietoa, mutta itse ajoin alemman linkin mukaisesti customfirmwaren, joka muuttaa anturien toiminnan advertisement-tilaan. Tämä kuuleman mukaan säästää anturien paristoja. Firmis on helppo päivittää noihin puhelimen bluetoothilla alemmasta linkistä löytyvällä selaimessa toimivalla over-the-air-päivitysohjelmalla. Meni ainakin heittämällä Xiaomi Redmi Note 9T:llä ja Chromella.
Kannattaa samalla vaihtaa advertisement typeksi "atc1441" ja itse myös kasvatin advertising intervalin 10 000 millisekuntiin (eli 10 sekuntiin). Desimaalipiste pitää ottaa pois kentästä, siihen ei ilmeisesti sovi kuin viisi numeroa.
Antureita kannattaa ottaa käyttöön yksi kerrallaan ja kirjoittaa anturin MAC-osoitteen neljä viimeistä numeroa anturin pohjaan, jotta ne erottaa helposti myöhemminkin.
Custom-firmiksellä kosteusmittauksen kalibrointi menee jostain syystä pieleen. Itse en lähtenyt tarkasti noita uudestaan kalibroimaan, vaan yhdellä vakiofirmiksellä varustetulla anturilla vertailin, paljonko noihin tuli heittoa. Keskimäärin ATC-firmiksellä näyttää 6 %-yksikköä liian pientä kosteusprosenttia. Tuon offsetin voi sitten määritellä sensors.ini-tiedostoon
Eli tarvitaan vain linuxilla ja bluetoothilla varustettu tietokone, esim. Raspberry Pi. Raspberry Pi Zeroa/Zero W:tä käyttäessä on huomioitava, että kyseessä on ARMv6-laite. Grafanasta on olemassa erilliset ARMv6- ja ARMv7-versiot (Raspi 3- ja 4-sarjat), joten pitää katsoa, kumman asentaa. Väärää versiota oleva Grafana server asentuu kyllä Raspi Zeroon, mutta ei suostu käynnistymään
Työjärjestys on jotakuinkin seuraava:
-Asenna Raspbian. SSH:n saa aktivoitumaan ekalla bootilla, kun laittaa boot-osiolle tyhjän tiedoston, jonka nimi on "ssh"
-Mikäli haluaa Raspin suoraan wifi-verkkoon ekalla bootilla, on boot-osiolle luotava tiedosto "wpa_supplicant.conf", jonka sisällöksi
Country-koodiksi siis FI ja ssid/psk-kohtiin lainausmerkkien sisään oman wifi-verkon ssid ja salausavain
Nyt pitäisi ekalla bootilla olla ssh aktivoituna ja wifin tapauksessa Raspi verkkoon yhdistettynä. Raspi hakee IP-osoitetta DHCP:llä ja sen voi etsiä verkosta esim. Angry IP Scannerilla (vaatii Javan asentamisen)
Mikäli Raspille haluaa määrittää kiinteän IP-osoitteen, se onnistuu seuraavan ohjeen mukaan. Verkkokortin tunnus sen mukaan, käytätkö langallista vai langaton verkkoa Raspin liittämiseen. Ifconfigilla pystyy tarkastamaan verkkokortin tunnuksen
Salasana kannattaa vaihtaa ja päivitellä Raspi seuraavaksi.
Sitten voi asennella MiTemperature2-Github-sivun ohjeen mukaan tarvittavat softat. Itse asensin myös Gitin, jolla saa tuon MiTemperature2-paketin ladattua sekä screenin, jossa tuota loggeria voi myöhemmin ajaa, jos ei sitä laita automaattisesti käynnistyväksi.
Kun nuo on asenneltu, voi kokeilla komennolla
että sensorit löytyvät kantamalta. Maksimikantoaluetta ei tiedä kuin kokeilemalla ja siihen vaikuttaa välissä olevat esteet ja niiden materiaali. Muutamien metrin päästä kantaa kyllä seinien läpi pakastimen/jääkaapinkin sisältä signaali. Jos anturit löytyivät, niin voi kokeilla tiedostoon logittamista
Kansioon pitäisi olla ilmestynyt data.txt-tiedosto, josta löytyy mittaustuloksia. Komento hakee kaikki kantamalla olevien ATC-firmiksellä olevien antureiden tiedot. Jos toimii, niin seuraavaksi voi kasata sensors.ini-tiedoston. Sen sisältö on seuraavankaltainen. Kannattaa alusta pyyhkiä esimerkkitekstit pois
Hakasulkeisiin siis kunkin lämpömittarin MAC-osoite, jonka löytää esim. aiemmin kokeillusta data.txt-tiedostosta sekä anturille haluttu nimi. humidityoffset liittyy aiemmin mainittuun customfirmiksen aiheuttamaan näyttämävirheeseen, jota voi tässä korjata. Eli jos anturi näyttää pienempää ilmankosteutta kuin oikeasti on, tähän laitetaan positiivinen luku. Jos näyttää suurempaa lukemaa, laitetaan miinusmerkkinen luku. Topicin-merkitys ei itselle auennut, mutta siihen voi jotain kuvaavaa laittaa. Tämän jälkeen voi kokeilla seuraavalla komennolla, että tiedosto on oikein täytetty.
Seuraavaksi voi asennella Influxdb:n ja Grafanan tämän ohjeen mukaisesti sekä luoda influx-tietokannan. Tuossa lisätään softien omat repositoryt, joista nuo ladataan. Raspbianin omissa repoissa softaversiot laahaavat hieman jäljessä
Influxdb:stä on olemassa myös uusi 2-versio, joka löytyy repositorysta nimellä influxdb2
Jos käytät Raspberry Pi Zeroa, älä asenna Grafanaa ohjeen mukaan, vaan tämän sivun ohjeilla
Tuolta pitää siis valita Ubuntu/Debian ARMv6
Grafanan pitäisi asennuksen jälkeen aueta selaimella osoitteesta http://<RASPIN IP-OSOITE>:3000
Oletustunnukset ovat admin/admin
Muokkaa seuraavaksi sendToInflux.sh-tiedostoa omia tarpeitasi vastaavaksi
Muutettavia kohtia ovat tietokannan käyttäjätunnus ja salasana, sekä XPOST-osoitteessa oleva tietokannan nimi. Eli db=TIETOKANTA. Kannattaa data.txt:stä katsoa, että muuttujien numerot ovat oikein.
Kun scripti on kohdallaan, voi kokeilla seuraavalla komennolla, tallentuvatko lukemat tietokantaan
Jos scripti toimii, pitäisi ruudulla juosta jotain tämän näköistä
Grafanasta pitäisi nyt add dashboard ja add panel -valinnoilla olla mahdollista lisätä halutun anturin ja mittaustiedon käppyrä valitsemalla:
Itse en ole mikään ekspertti näiden suhteen tai koodauksen suhteen ylipäänsä, eli parannusehdotuksia tai lisäyksiä otetaan vastaan. Ja Influxdb:n downsamplingista kuulisin mielelläni, jos siitä joku tietää enemmän. Eli miten toteuttaa sellainen, että vaikkapa kahden vuorokauden ajan tietokannassa pysyy kaikki tallennettu data. Sitten kahden vuorokauden jälkeen mittauksista lasketaan tunnin tarkkuudella oleva keskiarvo, joka tallennetaan tietokantaan pysyvästi ja tuo kahta vuorokautta vanhempi raakadata poistetaan.
Kyse siis näistä:
Xiaomi Mi Home Bluetooth Thermometer 2, halvin hinta 8€
Halvin hinta 8 € (12 € toimituskuluineen). Vertailussa 5 kauppaa. Ominaisuudet: Sisätila, Valkoinen, Taulukko, Digitaalinen. Xiaomi Mi Home Bluetooth Thermome..
hinta.fi
Nuo saa tuollaisenaankin lähettämään tietoa, mutta itse ajoin alemman linkin mukaisesti customfirmwaren, joka muuttaa anturien toiminnan advertisement-tilaan. Tämä kuuleman mukaan säästää anturien paristoja. Firmis on helppo päivittää noihin puhelimen bluetoothilla alemmasta linkistä löytyvällä selaimessa toimivalla over-the-air-päivitysohjelmalla. Meni ainakin heittämällä Xiaomi Redmi Note 9T:llä ja Chromella.
Kannattaa samalla vaihtaa advertisement typeksi "atc1441" ja itse myös kasvatin advertising intervalin 10 000 millisekuntiin (eli 10 sekuntiin). Desimaalipiste pitää ottaa pois kentästä, siihen ei ilmeisesti sovi kuin viisi numeroa.
GitHub - JsBergbau/MiTemperature2: Read the values of the Xiaomi Mi Bluetooth Temperature sensor 2 including custom encrypted format.
Read the values of the Xiaomi Mi Bluetooth Temperature sensor 2 including custom encrypted format. - JsBergbau/MiTemperature2
github.com
GitHub - pvvx/ATC_MiThermometer: Custom firmware for the Xiaomi Thermometers and Telink Flasher
Custom firmware for the Xiaomi Thermometers and Telink Flasher - GitHub - pvvx/ATC_MiThermometer: Custom firmware for the Xiaomi Thermometers and Telink Flasher
github.com
Antureita kannattaa ottaa käyttöön yksi kerrallaan ja kirjoittaa anturin MAC-osoitteen neljä viimeistä numeroa anturin pohjaan, jotta ne erottaa helposti myöhemminkin.
Custom-firmiksellä kosteusmittauksen kalibrointi menee jostain syystä pieleen. Itse en lähtenyt tarkasti noita uudestaan kalibroimaan, vaan yhdellä vakiofirmiksellä varustetulla anturilla vertailin, paljonko noihin tuli heittoa. Keskimäärin ATC-firmiksellä näyttää 6 %-yksikköä liian pientä kosteusprosenttia. Tuon offsetin voi sitten määritellä sensors.ini-tiedostoon
Eli tarvitaan vain linuxilla ja bluetoothilla varustettu tietokone, esim. Raspberry Pi. Raspberry Pi Zeroa/Zero W:tä käyttäessä on huomioitava, että kyseessä on ARMv6-laite. Grafanasta on olemassa erilliset ARMv6- ja ARMv7-versiot (Raspi 3- ja 4-sarjat), joten pitää katsoa, kumman asentaa. Väärää versiota oleva Grafana server asentuu kyllä Raspi Zeroon, mutta ei suostu käynnistymään
Työjärjestys on jotakuinkin seuraava:
Raspberry Pi Documentation - Configuration
The official documentation for Raspberry Pi computers and microcontrollers
www.raspberrypi.org
-Asenna Raspbian. SSH:n saa aktivoitumaan ekalla bootilla, kun laittaa boot-osiolle tyhjän tiedoston, jonka nimi on "ssh"
-Mikäli haluaa Raspin suoraan wifi-verkkoon ekalla bootilla, on boot-osiolle luotava tiedosto "wpa_supplicant.conf", jonka sisällöksi
Koodi:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=<Insert 2 letter ISO 3166-1 country code here>
update_config=1
network={
ssid="<Name of your wireless LAN>"
psk="<Password for your wireless LAN>"
}
Country-koodiksi siis FI ja ssid/psk-kohtiin lainausmerkkien sisään oman wifi-verkon ssid ja salausavain
Nyt pitäisi ekalla bootilla olla ssh aktivoituna ja wifin tapauksessa Raspi verkkoon yhdistettynä. Raspi hakee IP-osoitetta DHCP:llä ja sen voi etsiä verkosta esim. Angry IP Scannerilla (vaatii Javan asentamisen)
Mikäli Raspille haluaa määrittää kiinteän IP-osoitteen, se onnistuu seuraavan ohjeen mukaan. Verkkokortin tunnus sen mukaan, käytätkö langallista vai langaton verkkoa Raspin liittämiseen. Ifconfigilla pystyy tarkastamaan verkkokortin tunnuksen
Raspberry Pi Documentation - Configuration
The official documentation for Raspberry Pi computers and microcontrollers
www.raspberrypi.org
Salasana kannattaa vaihtaa ja päivitellä Raspi seuraavaksi.
Sitten voi asennella MiTemperature2-Github-sivun ohjeen mukaan tarvittavat softat. Itse asensin myös Gitin, jolla saa tuon MiTemperature2-paketin ladattua sekä screenin, jossa tuota loggeria voi myöhemmin ajaa, jos ei sitä laita automaattisesti käynnistyväksi.
Kun nuo on asenneltu, voi kokeilla komennolla
Koodi:
sudo hcitool lescan --duplicate
Koodi:
sudo ./LYWSD03MMC.py --atc --rssi --skipidentical 50 --callback sendToFile.sh
Kansioon pitäisi olla ilmestynyt data.txt-tiedosto, josta löytyy mittaustuloksia. Komento hakee kaikki kantamalla olevien ATC-firmiksellä olevien antureiden tiedot. Jos toimii, niin seuraavaksi voi kasata sensors.ini-tiedoston. Sen sisältö on seuraavankaltainen. Kannattaa alusta pyyhkiä esimerkkitekstit pois
Koodi:
[A4:C1:38:C6:09:61]
sensorname=Storage_freezer
humidityOffset=6
topic=Storage/freezer
[A4:C1:38:78:68:41]
sensorname=Garage_refridgerator
humidityOffset=6
topic=Garage/refridgerator
[A4:C1:38:E9:09:B0]
sensorname=Kitchen_freezer
humidityOffset=6
topic=Kitchen/freezer
[A4:C1:38:06:A3:4B]
sensorname=Indoor_temp
humidityOffset=6
topic=Indoor/indoor01
Hakasulkeisiin siis kunkin lämpömittarin MAC-osoite, jonka löytää esim. aiemmin kokeillusta data.txt-tiedostosta sekä anturille haluttu nimi. humidityoffset liittyy aiemmin mainittuun customfirmiksen aiheuttamaan näyttämävirheeseen, jota voi tässä korjata. Eli jos anturi näyttää pienempää ilmankosteutta kuin oikeasti on, tähän laitetaan positiivinen luku. Jos näyttää suurempaa lukemaa, laitetaan miinusmerkkinen luku. Topicin-merkitys ei itselle auennut, mutta siihen voi jotain kuvaavaa laittaa. Tämän jälkeen voi kokeilla seuraavalla komennolla, että tiedosto on oikein täytetty.
Koodi:
sudo ./LYWSD03MMC.py --atc --rssi --skipidentical 50 --devicelistfile sensors.ini --onlydevicelist --callback sendToFile.sh
Seuraavaksi voi asennella Influxdb:n ja Grafanan tämän ohjeen mukaisesti sekä luoda influx-tietokannan. Tuossa lisätään softien omat repositoryt, joista nuo ladataan. Raspbianin omissa repoissa softaversiot laahaavat hieman jäljessä
Installing InfluxDB & Grafana on Raspberry Pi
I recently treated myself to a RaspberryPi 4 Model B to use as a(nother) home server. This is a brief guide on getting InfluxDB and Grafana set up to store and graph timeseries data.
simonhearne.com
Influxdb:stä on olemassa myös uusi 2-versio, joka löytyy repositorysta nimellä influxdb2
Jos käytät Raspberry Pi Zeroa, älä asenna Grafanaa ohjeen mukaan, vaan tämän sivun ohjeilla
Download Grafana | Grafana Labs
Overview of how to download and install different versions of Grafana on different operating systems.
grafana.com
Tuolta pitää siis valita Ubuntu/Debian ARMv6
Koodi:
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana-rpi_8.0.6_armhf.deb
sudo dpkg -i grafana-rpi_8.0.6_armhf.deb
Grafanan pitäisi asennuksen jälkeen aueta selaimella osoitteesta http://<RASPIN IP-OSOITE>:3000
Oletustunnukset ovat admin/admin
Muokkaa seuraavaksi sendToInflux.sh-tiedostoa omia tarpeitasi vastaavaksi
Koodi:
curl -i -u "databaseuser:databasepasswd" -XPOST http://localhost:8086/write?db=temperatures\&precision=s --data-binary "AquaraBluetoothSensors,sensorname=$2 temperature=$3,calibratedHumidity=$4,voltage=$5,rssi=$6 $7"
Koodi:
sensorname,temperature,humidity,voltage,rssi,timestamp Kitchen_refridgerator 6.7 54 2.735 -83 1627232024
$1=selitteet
$2=Anturin nimi
$3=Lämpötila
$4=Kosteusprosentti
$5=Pariston jännite
$6=Signaalinvoimakkuus dBm
$7=Kellonaika UNIX-muodossa
Kun scripti on kohdallaan, voi kokeilla seuraavalla komennolla, tallentuvatko lukemat tietokantaan
Koodi:
sudo ./LYWSD03MMC.py --atc --rssi --influxdb 1 --skipidentical 50 --devicelistfile sensors.ini --onlydevicelist --callback sendToInflux.sh
Jos scripti toimii, pitäisi ruudulla juosta jotain tämän näköistä
Koodi:
/home/pi/MiTemperature2/sendToInflux.sh sensorname,temperature,humidity,voltage,rssi,timestamp Indoor_temp 23.6 62 3.002 -52 1627649170
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 1f1d4e54-f134-11eb-8c69-000000000000
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.6.4
X-Request-Id: 1f1d4e54-f134-11eb-8c69-000000000000
Date: Fri, 30 Jul 2021 12:46:12 GMT
BLE packet: A4:C1:38:06:A3:4B 00 1110161a18a4c13806a34b00ec38580bb409 -43
Temperature: 23.6
Humidity: 56
Battery voltage: 2.996 V
RSSI: -43 dBm
Battery: 88 %
Humidity calibrated (offset calibration): 62
Grafanasta pitäisi nyt add dashboard ja add panel -valinnoilla olla mahdollista lisätä halutun anturin ja mittaustiedon käppyrä valitsemalla:
Koodi:
FROM default AquaraBluetoothsensors WHERE sensorname = "HALUTTU SENSORI"
SELECT field(ESIM. TEMPERATURE)
GROUP BY time(HALUTTU PIIRTOTARKKUUS)
Itse en ole mikään ekspertti näiden suhteen tai koodauksen suhteen ylipäänsä, eli parannusehdotuksia tai lisäyksiä otetaan vastaan. Ja Influxdb:n downsamplingista kuulisin mielelläni, jos siitä joku tietää enemmän. Eli miten toteuttaa sellainen, että vaikkapa kahden vuorokauden ajan tietokannassa pysyy kaikki tallennettu data. Sitten kahden vuorokauden jälkeen mittauksista lasketaan tunnin tarkkuudella oleva keskiarvo, joka tallennetaan tietokantaan pysyvästi ja tuo kahta vuorokautta vanhempi raakadata poistetaan.
Viimeksi muokattu: