Obsah:
- Krok 1: Nastavte Raspberry Pi
- Krok 2: Nastavenie MySQL na Raspberry Pi
- Krok 3: Inštalácia snímačov SensorBug
- Krok 4: Inštalácia obálky Bluetooth LE Python Wrapper
- Krok 5: Naskenujte a zistite adresu SensorBug
- Krok 6: Pridajte skript Python
- Krok 7: Otestujte skript Python
- Krok 8: Pridajte skript Python do Crontabu
- Krok 9: Extra: Konfigurujte SensorBug pre výstup snímania polohy
Video: Monitorujte a zaznamenávajte teplotu pomocou Bluetooth LE a RaspberryPi: 9 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Tento návod je o tom, ako zostaviť viacuzlový systém monitorovania teploty s chybou senzora Bluetooth LE od spoločností Blue Radios (BLEHome) a RaspberryPi 3B. Vďaka vývoju štandardu Bluetooth LE sú na trhu teraz ľahko dostupné bezdrôtové snímače s nízkym výkonom. za veľmi nízke náklady a môže bežať na jednej mincovej bunke niekoľko mesiacov naraz. Jeden z týchto senzorov, ktoré som zachytil, pochádza z Blue Radio s názvom Sensor Bugs. Stojí to asi 25 dolárov na Amazone a je to zariadenie Bluetooth LE so snímačom teploty, svetelným senzorom a akcerometrom, ktoré sú vstavané do malej jednotky, ktorá môže bezdrôtovo komunikovať. To sa perfektne hodí k Raspberry Pi 3B, ktorý má vstavanú podporu pre rádio Bluetooth LE.
Krok 1: Nastavte Raspberry Pi
Prvým krokom je získať funkčné nastavenie Raspberry Pi. Postupujte podľa pokynov z webovej stránky Raspberry Pi, načítajte Raspbian na kartu SD, vložte ho do Raspberry Pi a spustite ho. Nastavil som svoj systém pomocou verzie Raspbian Stretch Lite (bez grafického rozhrania), november 2017. V prípade potreby nastavte WiFi, radšej upravím časové pásmo do aktuálneho časového pásma namiesto UTC. Môžete to urobiť pomocou príkazu: $ sudo dpkg-reconfigure tzdataRest inštrukcie predpokladá, že nastavenie sa vykonáva pomocou rozhrania príkazového riadka.
Krok 2: Nastavenie MySQL na Raspberry Pi
Je užitočné mať lokálne nainštalovanú databázu na ukladanie všetkých zachytených údajov. Inštalácia MySQL na Raspberry Pi je veľmi jednoduchá. Nie je tiež ťažké upravovať skript tak, aby sa externe pripájal k serveru SQL, tento krok môžete preskočiť, ak chcete používať server SQL v sieti. Na internete je veľa pokynov, navrhujem toto: https:// www.stewright.me/2014/06/tutorial-install-…
Keď je server SQL nainštalovaný, môžete pomocou klienta MySQL CLI vytvoriť používateľa, databázu a tabuľku. Na zadanie rozhrania MySQL CLI použite príkaz:
USD povolenie:> UDELIŤ VŠETKY VÝHODY NA SensorBug.* TO 'datasrc'@'localhost'; Teraz pridajte do databázy novú tabuľku. V tomto prípade pridám tabuľku s nasledujúcimi stĺpcami: DATE, TIME, ADDRESS, LOCATION, TEMPERATURE a ACCEROMETER
- DATE/TIME - Toto je dátum a čas zaznamenania údajov
- ADRESA - Toto je adresa MAC SensorBug, z ktorej je správa zachytená
- LOKALITA - Reťazec čitateľný pre človeka, ktorý označuje, kde sa senzor nachádza
- TEPLOTA - toto je zaznamenaná teplota
- ACCELE - Toto je hodnota výstupu akcelerometra, užitočná na zaznamenávanie polohy senzora (ak je zapnutá)
Príkaz, ktorý to urobí, je:> USE SensorBug; > VYTVORIŤ TABUĽKOVÉ údaje (dátum DÁTUM, čas ČAS, adresa TINYTEXT, umiestnenie TINYTEXT, teplota FLOAT, accele INT); Teraz je databáza pripravená, môžeme pristúpiť k nastaveniu sensorBugs.
Krok 3: Inštalácia snímačov SensorBug
Chyby senzorov sú celkom úhľadné malé zariadenia. Výrobca bohužiaľ poskytol iba aplikáciu IOS na jej programovanie. Napriek tomu je možné s ním pracovať, ak máte iba zariadenie s Androidom. V prvom kroku spárujte zariadenie s telefónom. Bez spárovania zariadenia nebude SensorBug propagovať údaje. Skúsil som zistiť, či to môžem urobiť priamo s RaspberryPi, bohužiaľ to vyzerá, že ovládač Bluetooth LE na RaspberryPi je stále experimentálny a obsahuje chyby, ktoré mu bránia v párovaní so zariadeniami Bluetooth LE. Budúca verzia ovládača blueZ to môže vyriešiť, ale podľa súčasného písania neexistuje spôsob, ako spárovať SensorBug s RaspberryPi. Našťastie nepotrebujeme zariadenie spárovať, aby sme zachytili jeho inzerované údaje. Jediná vec, ktorú potrebujeme, je telefón na konfiguráciu SensorBug. V predvolenom nastavení začne SensorBug inzerovať údaje o teplote v intervale 1 s po spárovaní so zariadením. Na zachytenie údajov o teplote je to všetko, čo je potrebné. Ak plánujete rozšíriť používanie senzora polohy alebo svetla, bude potrebné konfiguračné zariadenie. Na začiatok zariadenie spárujeme a odpojíme. To bude stačiť na účely zachytávania teploty. Začnite stlačením oboch tlačidiel na SensorBug. Modrá/zelená LED dióda bliká, čo znamená, že je zapnutá. Stlačte jedno z tlačidiel, zelená dióda LED by sa mala rozsvietiť a indikovať zapnutie napájania. Ak zelená LED dióda nesvieti, stlačením oboch tlačidiel sa pokúste zariadenie znova zapnúť. Stlačte a podržte jedno z tlačidiel, kým modrá LED dióda nezačne blikať. Tým sa zariadenie prepne do režimu párovania. Prejdite v telefóne do ponuky konfigurácie Bluetooth a vyhľadajte zariadenie SensorBug. Akonáhle sa zobrazí, vyberte ho na spárovanie so zariadením. To je všetko, teraz je SensorBug napájaný a inzeruje údaje o teplote
Krok 4: Inštalácia obálky Bluetooth LE Python Wrapper
Ďalej musíme nainštalovať knižnicu, aby sa python mohol rozprávať so zásobníkom Bluetooth LE. Pokyny nájdete tu: https://github.com/IanHarvey/bluepyFor Python 2.7 je jednoduchý ako zadanie nasledujúcich príkazov:
$ sudo apt-get install python-pip libglib2.0-dev $ sudo pip install bluepy
Krok 5: Naskenujte a zistite adresu SensorBug
Ak chcete zistiť MAC adresu SensorBug, použite tento príkaz: $ sudo hcitool lescan Mali by ste vidieť výstup ako:
EC: FE: 7E: 10: B1: 92 (neznáme) Ak máte k dispozícii veľa zariadení bluetooth LE, môže byť ťažké zistiť, s ktorým z nich hovoríte. Môžete vyskúšať bluetoothctl, ktorý poskytne ďalšie podrobnosti:
$ sudo bluetoothctl [bluetooth]# skenovanie na [NOVÉ] Zariadenie EC: FE: 7E: 10: B1: 92 SensorBug10B192 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 VýrobcaData Key: 0x0085 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaju výrobcu: 0x02 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaja výrobcu: 0x00 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údajov výrobcu: 0x3c [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údajov výrobcu: 0x25 [CHG] Hodnota zariadenia EC: FE: 7E: 10: B1: 92 Hodnota údajov výrobcu: 0x09 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaja výrobcu: 0x41 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaja výrobcu: 0x02 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údajov výrobcu: 0x02 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaja výrobcu: 0x43 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota údaja výrobcu: 0x0b [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Údaje výrobcu Hodnota: 0x01 [CHG] Zariadenie EC: FE: 7E: 10: B1: 92 Hodnota výrobcu: 0x6f
Zaznamenajte si MAC adresu, ktorú budete musieť zadať do skriptu python, aby ste odfiltrovali nechcené zariadenia Bluetooth LE
Krok 6: Pridajte skript Python
Kópia skriptu Python je k dispozícii na:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Tu je ten istý súbor, pri kopírovaní dbajte na odsadenie:
Aktualizujte tiež adresu MAC v súbore python, aby sa zhodovala s adresou senzora získanou z výsledku kontroly.
# Tento program je bezplatný softvér: môžete ho ďalej distribuovať a/alebo upravovať
# to za podmienok všeobecnej verejnej licencie GNU, ako ju publikoval
# Free Software Foundation, buď verzia 3 licencie, alebo
# (podľa vášho výberu) akákoľvek neskoršia verzia.
#
# Tento program je distribuovaný v nádeji, že bude užitočný, # ale BEZ AKEJKOĽVEK ZÁRUKY; aj bez implicitnej záruky
# OBCHODOVATEĽNOSŤ alebo VHODNOSŤ NA URČITÝ ÚČEL. Pozrite si
# GNU General Public License, kde nájdete ďalšie podrobnosti.
#
# Mali by ste dostať kópiu všeobecnej verejnej licencie GNU
# spolu s týmto programom. Ak nie, viď.
# bscan.py - Jednoduchý bluetooth LE skener a extraktor dát
z bluepy.btle import Scanner, DefaultDelegate
čas importu
importovať pymysql
importovať štruktúru
hostname = 'localhost'
username = 'datasrc'
heslo = 'datasrc000'
database = 'SensorBug'
#Zadajte MAC adresu senzora z lescanu
SENSOR_ADDRESS = ["ec: fe: 7e: 10: b9: 92", "ec: fe: 7e: 10: b9: 93"]
SENSOR_LOCATION = ["Garáž", "Exteriér"]
trieda DecodeErrorException (výnimka):
def _init _ (vlastné, hodnota):
self.value = hodnota
def _str _ (self):
vrátiť repr (self.value)
trieda ScanDelegate (DefaultDelegate):
def _init _ (self):
DefaultDelegate._ init _ (self)
def handleDiscovery (self, dev, isNewDev, isNewData):
ak jeNewDev:
vytlačiť „Zistené zariadenie“, dev.addr
elif isNewData:
vytlačiť „Prijaté nové údaje z“, dev.addr
def doQueryInsert (conn, addr, loc, temp, accero):
#blesensor tabuľka je dátum, čas, adresa, poloha, teplota, accero
cur = conn.cursor ()
dostr = 'VLOŽIŤ DO HODNOTY údajov (CURRENT_DATE (), NOW (), %s, %s, %s, %s);'
cur.execute (dostr, (addr, loc, temp, accero))
conn.commit ()
scanner = Scanner (). withDelegate (ScanDelegate ())
myConnection = pymysql.connect (hostiteľ = meno hostiteľa, užívateľ = užívateľské meno, heslo = heslo, db = databáza)
ManuDataHex =
ReadLoop = Pravda
skús:
while (ReadLoop):
zariadenia = scanner.scan (2.0)
ManuData = ""
pre vývojárov v zariadeniach:
vstup = 0
AcceroData = 0
AcceroType = 0
TempData = 0
pre saddr na SENSOR_ADDRESS:
vstup += 1
ak (dev.addr == saddr):
vytlačiť "Zariadenie %s (%s), RSSI = %d dB" %(dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION [položka-1]
pre (adtype, desc, value) v dev.getScanData ():
vytlačiť " %s = %s" %(zostup, hodnota)
ak (desc == "Výrobca"):
ManuData = hodnota
ak (ManuData == ""):
vytlačiť „Neboli prijaté žiadne údaje, ukončenie dekódovania“
ďalej
#print ManuData
pre i, j v zip (ManuData [:: 2], ManuData [1:: 2]):
ManuDataHex.append (int (i+j, 16))
#Začnite dekódovať nespracované údaje výrobcu
ak ((ManuDataHex [0] == 0x85) a (ManuDataHex [1] == 0x00)):
vytlačiť „Bajt hlavičky 0x0085 nájdený“
inak:
vytlačiť „Bajt hlavičky 0x0085 nebol nájdený, dekódovanie bolo zastavené“
ďalej
#Vynechajte major/minor
#Index 5 je 0x3c, indikuje úroveň batérie a konfiguráciu #
ak (ManuDataHex [4] == 0x3c):
BatteryLevel = ManuDataHex [5]
ConfigCounter = ManuDataHex [6]
idx = 7
#print "TotalLen:" + str (len (ManuDataHex))
while (idx <len (ManuDataHex)):
#print "Idx:" + str (idx)
#print "Údaje:" + hex (ManuDataHex [idx])
ak (ManuDataHex [idx] == 0x41):
#Acercerové údaje
idx += 1
AcceleroType = ManuDataHex [idx]
AcceleroData = ManuDataHex [idx+1]
idx += 2
elif (ManuDataHex [idx] == 0x43):
#Teplotné údaje
idx += 1
TempData = ManuDataHex [idx]
TempData += ManuDataHex [idx +1] * 0x100
TempData = TempData * 0,0625
idx += 2
inak:
idx += 1
vytlačiť „Adresa zariadenia:“+ CurrentDevAddr
vytlačiť „Poloha zariadenia:“+ CurrentDevLoc
vytlačiť „Úroveň batérie:“+ str (BatteryLevel) + „%“
vytlačiť „Počítadlo konfigurácií:“+ str (ConfigCounter)
vytlačiť „Accelero Data:“+ hex (AcceleroType) + „“+ hex (AcceleroData)
vytlačiť „Dočasné údaje:“+ str (TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = False
okrem DecodeErrorException:
prejsť
Krok 7: Otestujte skript Python
Skript musí byť spustený v root, takže:
$ sudo python bscan.pyZistené zariadenie ec: 6e: 7e: 10: b1: 92 Zariadenie ec: 6e: 7e: 10: b1: 92 (verejné), RSSI = -80 dB Vlajky = 06 Nedokončené 16b Služby = 0a18 Výrobca = 850002003c25094102024309016f Bol nájdený bajt hlavičky 0x0085 Adresa zariadenia: ec: 6e: 7e: 10: b1: 92 Poloha zariadenia: Garáž Úroveň batérie: 37% Počítadlo konfigurácií: 9 Údaje Accero: 0x2 0x2 Teplotné údaje: 16,5625
Krok 8: Pridajte skript Python do Crontabu
Skript python musí byť spustený v priečinku root, takže ak chcete údaje zachytávať automaticky, bude ho potrebné pridať do súboru crontab koreňa. V tomto prípade spustím skript každých 20 minút. Použite príkaz:
$ sudo crontab -e
# Upravte tento súbor, aby ste predstavili úlohy, ktoré má spustiť cron.
# # Každá úloha, ktorú je potrebné spustiť, musí byť definovaná prostredníctvom jedného riadka #, ktorý v rôznych poliach označuje, kedy sa úloha spustí # a aký príkaz sa má pre úlohu vykonať # # Ak chcete definovať čas, počas ktorého môžete poskytnúť konkrétne hodnoty na # minútu (m), hodina (h), deň v mesiaci (dom), mesiac (mon), # a deň v týždni (dow) alebo v týchto poliach použite „*“(pre „akékoľvek“). # # Všimnite si, že sa začnú úlohy založené na systéme cron # pojem démona o čase a časových pásmach. # # Výstup úloh crontab (vrátane chýb) je odoslaný prostredníctvom # e -mailu používateľovi, do ktorého súbor crontab patrí (pokiaľ nie je presmerovaný). # # Môžete napríklad zálohovať všetky svoje používateľské účty # o 5:00 každý deň pomocou: # 0 5 * * 1 tar -zcf /var/backups/home.tgz/home/ # # Ďalšie informácie nájdete na manuálové stránky crontab (5) a cron (8) # # mh dom mon dow príkaz 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * python /home/pi/bscan.py
To je všetko. Skript python sa spustí v pravidelných intervaloch a prekóduje výstup do databázy SQL
Krok 9: Extra: Konfigurujte SensorBug pre výstup snímania polohy
Zariadenie SensorBug je možné v systéme Android nakonfigurovať na výstup snímania polohy. Na snímanie zmeny polohy, takzvané garážové dvere. Snímač SensorBug detekuje, či zariadenie stojí vzpriamene alebo leží rovno. Keď je zariadenie ploché, zaznamenaná hodnota je 0x20. pokiaľ zariadenie stojí vzpriamene, hodnota je 0x02. Nerozlišuje sa, či je pozícia X alebo Y hore, pokiaľ os Z nie je hore alebo dole. Najľahší spôsob, ako to urobiť, je použiť aplikáciu LightBlue. V ponuke skenovania by sa mal objaviť SensorBug. Vyberte zariadenie, ktoré chcete konfigurovať, prejdite na charakteristiku GATT pre konfiguráciu akcelerometra UUID: 9DC84838-7619-4F09-A1CE-DDCF63225B11
Pozri obrázok: Napíšte nový konfiguračný reťazec:
010d3f02020000002d00000002 Prečítajte si konfiguračný reťazec a potvrďte zápis. To umožňuje akcelerometer na snímanie polohy.
Odporúča:
Monitorujte teplotu a vlhkosť pomocou AM2301 na NodeMCU a Blynk: 3 kroky
Monitorujte teplotu a vlhkosť S AM2301 na NodeMCU & Blynk: Je veľmi dobre známym faktom, že vo väčšine odvetví vertikálne zohrávajú teplota, vlhkosť, tlak, kvalita vzduchu, kvalita vody atď. Dôležité faktory, ktoré je potrebné neustále a nevyhnutne monitorovať. výstražné systémy musia byť k dispozícii, keď hodnota
Pomocou Raspberry Pi vyhodnoťte vlhkosť a teplotu pomocou kroku SI7006: 6
Použitie Raspberry Pi, vyhodnotenie vlhkosti a teploty pomocou SI7006: Ako nadšenec pre Raspberry Pi sme uvažovali o ďalších veľkolepých experimentoch. V tejto kampani budeme merať teplotu a vlhkosť, ktoré je potrebné ovládať, pomocou Raspberry Pi a SI7006, Snímač vlhkosti a teploty
Pomocou Raspberry Pi zmerajte nadmorskú výšku, tlak a teplotu pomocou MPL3115A2: 6 krokov
Používanie Raspberry Pi, meranie nadmorskej výšky, tlaku a teploty pomocou MPL3115A2: Zistite, čo vlastníte, a prečo to vlastníte! Je to zaujímavé. Žijeme v dobe internetovej automatizácie, ktorá sa vrhá do množstva nových aplikácií. Ako nadšenci počítačov a elektroniky sme sa s Raspberry Pi veľa naučili
Ukladajte a zaznamenávajte údaje EC/pH/ORP pomocou zásobníka TICK a platformy NoCAN: 8 krokov
Ukladajte a zaznamenávajte údaje EC/pH/ORP pomocou platformy TICK Stack a platformy NoCAN: Toto bude návod, ako používať platformu NoCAN od senzorov Omzlo a uFire na meranie EC, pH a ORP. Ako hovorí ich webová stránka, niekedy je jednoduchšie spustiť nejaký kábel do svojich uzlov senzora. CAN má výhodu v komunikácii a sile v jednom
Monitorujte izbovú teplotu domácnosti/kancelárie na ploche: 4 kroky
Monitorujte izbovú teplotu domova/kancelárie na ploche: Na monitorovanie miestností alebo kancelárií alebo kdekoľvek, kde môžeme použiť tento projekt, a to je ukážka s toľkými podrobnosťami, ako je graf, teplota v reálnom čase a oveľa viac. Používame: https://thingsio.ai/ V prvom rade musíme vytvoriť účet na tejto platforme IoT,