Tartalomjegyzék:
- 1. lépés: A Raspberry Pi beállítása
- 2. lépés: A MySQL beállítása a Raspberry Pi -n
- 3. lépés: A SensorBugs beállítása
- 4. lépés: A Bluetooth LE Python Wrapper telepítése
- 5. lépés: Szkennelje és keresse meg a SensorBug címét
- 6. lépés: Adja hozzá a Python -szkriptet
- 7. lépés: Tesztelje a Python -szkriptet
- 8. lépés: Adja hozzá a Python Script a Crontabhoz
- 9. lépés: Extra: Állítsa be a SensorBug -ot a helyzetérzékelő kimenethez
Videó: A hőmérséklet figyelése és rögzítése Bluetooth LE és RaspberryPi segítségével: 9 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ez az útmutató arról szól, hogyan állítsunk össze többcsomópontos hőmérséklet-figyelő rendszert Bluetooth LE érzékelő hibával a Blue Radios (BLEHome) és a RaspberryPi 3B segítségével. A Bluetooth LE szabvány fejlesztésének köszönhetően most már könnyen elérhetők a kis teljesítményű vezeték nélküli érzékelők a piacon nagyon alacsony költségek mellett, és egyetlen érméken is működhet hónapokig. Az egyik ilyen érzékelő, amelyet felvettem, a Blue Radio -tól származik, az úgynevezett Sensor Bugs. Körülbelül 25 dollárba kerül az Amazon -on, ez egy Bluetooth LE eszköz, hőmérséklet -érzékelővel, fényérzékelővel és akkerométerrel, amelyek egy kis egységbe épülnek, amely vezeték nélkül kommunikálhat. Ez tökéletesen illeszkedik a Raspberry Pi 3B -hez, amely támogatja a Bluetooth LE rádiót.
1. lépés: A Raspberry Pi beállítása
Az első lépés egy működő Raspberry Pi beállítás megszerzése. Kövesse a Raspberry Pi webhelyének utasításait, töltse be a Raspbian -t egy SD -kártyára, helyezze be a Raspberry Pi -be és indítsa el. Indítsam el a rendszert a Raspbian Stretch Lite (No GUI) 2017. novemberi verziójával. Ha szükséges, állítsam be a WiFi -t, inkább beállítom a időzónát az aktuális időzónához UTC helyett. Ezt a következő paranccsal teheti meg: $ sudo dpkg-reconfigure tzdata
2. lépés: A MySQL beállítása a Raspberry Pi -n
Hasznos, ha helyileg telepítünk egy adatbázist az összes rögzített adat tárolására. A MySQL telepítése a Raspberry Pi -re rendkívül egyszerű. Ezenkívül nem nehéz módosítani a szkriptet, hogy külsőleg csatlakozzon egy SQL szerverhez, ezt a lépést kihagyhatja, ha SQL szervert szeretne használni a hálózaton. Sok utasítás található a neten, ezt javaslom: https:// www.stewright.me/2014/06/tutorial-install-…
Az SQL szerver telepítése után a MySQL CLI ügyfél használatával létrehozhat felhasználót, adatbázist és táblát. A MySQL CLI megadásához használja a következő parancsot:
$ sudo mysql -uroot -pElőször hozzon létre egy helyi felhasználót a rögzített adatok beillesztéséhez:> CREATE USER 'datasrc'@'localhost' IDATIFYED by 'datasrc000'; Ezután hozzon létre egy adatbázist és táblázatot:> CREATE DATABASE SensorBug; A felhasználó beállítása engedély:> ÖSSZESÍTJEN MINDEN JOGOT A SensorBug -on.* A 'datasrc'@'localhost' -ra; Most adjon hozzá egy új táblát az adatbázishoz. Ebben a példában hozzáadok egy táblázatot a következő oszlopokkal: DATE, TIME, CÍM, LOCATION, HŐMÉRSÉKLET és ACCEROMETER
- DATE/TIME - Az adatok rögzítésének dátuma és időpontja
- CÍM - Ez a SensorBug MAC -ja, amelyből az üzenet rögzítésre került
- HELYSZÍN - Ember által olvasható karakterlánc, amely jelzi az érzékelő helyét
- HŐMÉRSÉKLET - Ez a rögzített hőmérséklet
- ACCELE - Ez a gyorsulásmérő kimenetének értéke, amely hasznos az érzékelő pozíciójának rögzítéséhez (ha engedélyezve van)
A parancs ezt teszi:> USE SensorBug; > TÁBLÁZATI LÉTREHOZÁS (dátum DATE, idő TIME, cím TINYTEXT, hely TINYTEXT, hőmérséklet FLOAT, gyors INT); Most az adatbázis készen áll, és folytathatjuk a sensorBugs beállítását.
3. lépés: A SensorBugs beállítása
Az érzékelőhibák nagyon ügyes kis eszközök. Sajnos a gyártó csak IOS alkalmazást biztosított a programozásához. Mindazonáltal továbbra is dolgozhat vele, ha csak Android -eszköze van. Első lépésként párosítsa az eszközt egy telefonnal. Az eszköz párosítása nélkül a SensorBug nem hirdet adatokat. Megpróbáltam megnézni, hogy meg tudom -e csinálni ezt közvetlenül a RaspberryPi -vel, sajnos úgy tűnik, hogy a RaspberryPi Bluetooth LE illesztőprogramja még csak kísérleti jellegű, és hibákat tartalmaz, amelyek megakadályozzák a Bluetooth LE -eszközökkel való párosítást. A blueZ illesztőprogram jövőbeli verziója ezt kijavíthatja, de a jelenlegi írás szerint nincs lehetőség a SensorBug és a RaspberryPi párosítására. Szerencsére nem kell párosítanunk az eszközt a meghirdetett adatok rögzítéséhez. Az egyetlen dolog, amire szükségünk van, egy telefon a SensorBug konfigurálásához. Alapértelmezés szerint a SensorBug a készülékkel való párosítás után 1 másodperces időközönként elkezdi hirdetni a hőmérsékleti adatokat. A hőmérséklet adatok rögzítéséhez ennyi szükséges. Ha azt tervezi, hogy bővíti a helyzet- vagy fényérzékelő használatát, akkor konfigurálnia kell az eszközt. Kezdetben párosítjuk az eszközt, és lekapcsoljuk. Ez elég jó lesz a hőmérséklet rögzítéséhez. Kezdje a SensorBug mindkét gombjának megnyomásával. A kék/zöld LED villog, ami azt jelzi, hogy be van kapcsolva. Nyomja meg az egyik gombot, a zöld LED -nek világítania kell, jelezve, hogy a készülék be van kapcsolva. Ha a zöld LED nem világít, nyomja meg mindkét gombot, hogy újra bekapcsolja a készüléket. Nyomja meg és tartsa lenyomva az egyik gombot, amíg a kék LED villogni nem kezd. Ez párosítási módba helyezi az eszközt. Lépjen a telefon Bluetooth konfigurációs menüjébe, és keresse meg a SensorBug eszközt. Ha megjelenik, válassza ki azt az eszközzel való párosításhoz. Ennyi, most a SensorBug bekapcsolt állapotban van, és hirdeti a hőmérsékleti adatokat
4. lépés: A Bluetooth LE Python Wrapper telepítése
Ezután telepítenünk kell a python könyvtárát, hogy beszélhessen a Bluetooth LE veremmel. Az utasítás itt található:
$ sudo apt-get install python-pip libglib2.0-dev $ sudo pip install bluepy
5. lépés: Szkennelje és keresse meg a SensorBug címét
A SensorBug MAC -címének megismeréséhez használja ezt a parancsot: $ sudo hcitool lescan A következő kimenetet kell látnia:
EC: FE: 7E: 10: B1: 92 (ismeretlen) Ha sok bluetooth LE eszköz van a közelben, nehéz lehet megállapítani, hogy melyikhez beszél. Kipróbálhatja a bluetoothctl -t, amely további részleteket tartalmaz:
$ sudo bluetoothctl [bluetooth]# scan on [NEW] Device EC: FE: 7E: 10: B1: 92 SensorBug10B192 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Key: 0x0085 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x02 [CHG] Eszköz EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x00 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x3c [CHG] Eszköz EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x25 [CHG] Eszköz EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x09 [CHG] Eszköz EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x41 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x02 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x02 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x43 [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Value: 0x0b [CHG] Device EC: FE: 7E: 10: B1: 92 ManufacturerData Érték: 0x01 [CHG] Eszköz EC: FE: 7E: 10: B1: 92 Gyártó Adat Érték: 0x6f
Rögzítse a MAC -címet, ezt be kell írni a python parancsfájlba, hogy kiszűrje a nem kívánt Bluetooth LE eszközöket
6. lépés: Adja hozzá a Python -szkriptet
A Python -szkript egy példánya elérhető:
drive.google.com/open?id=10vOeEAbS7mi_eXn_…
Itt ugyanaz a fájl, vigyázzon a behúzásra másoláskor:
Ezenkívül frissítse a MAC -címet a python fájlban, hogy megfeleljen a szkennelés eredményéből kapott érzékelő címének.
# Ez a program ingyenes szoftver: újraoszthatja és/vagy módosíthatja
# azt a GNU Általános Nyilvános Licenc feltételei szerint közzétette
# a Free Software Foundation, vagy a Licenc 3. verziója, vagy
# (tetszés szerint) bármely későbbi verzió.
#
# Ezt a programot abban a reményben terjesztjük, hogy hasznos lesz, # de MINDEN GARANCIA NÉLKÜL; még a feltételezett garancia nélkül sem
# KERESHETŐSÉG vagy ALKALMAZÁS KÜLÖNLEGES CÉLRA. Lásd a
# GNU General Public License további részletekért.
#
# Meg kellett volna kapnia a GNU General Public License másolatát
# ezzel a programmal együtt. Ha nem, lásd.
# bscan.py - Egyszerű Bluetooth LE szkenner és adatkivonó
from bluepy.btle import Scanner, DefaultDelegate
importálási idő
import pymysql
import struktúra
hostname = 'localhost'
felhasználónév = 'datasrc'
jelszó = 'datasrc000'
database = 'SensorBug'
#Írja be az érzékelő MAC -címét a lescanből
SENSOR_ADDRESS = ["ec: fe: 7e: 10: b9: 92", "ec: fe: 7e: 10: b9: 93"]
SENSOR_LOCATION = ["Garázs", "Külső"]
DecodeErrorException osztály (kivétel):
def _init _ (saját, érték):
self.value = érték
def _str _ (saját):
return repr (self.value)
ScanDelegate osztály (alapértelmezett törlés):
def _init _ (saját):
DefaultDelegate._ init _ (saját)
def handleDiscovery (self, dev, isNewDev, isNewData):
if isNewDev:
print "Felfedezett eszköz", dev.addr
elif isNewData:
print "Új adatokat kapott", dev.addr
def doQueryInsert (conn, addr, loc, temp, accero):
#blesensor tábla dátum, idő, addr, hely, hőmérséklet, accero
cur = conn.cursor ()
dostr = 'INSERT INTO data VALUES (CURRENT_DATE (), NOW (), %s, %s, %s, %s);'
cur.execute (dostr, (addr, loc, temp, accero))
conn.commit ()
szkenner = Szkenner (). withDelegate (ScanDelegate ())
myConnection = pymysql.connect (gazdagép = gazdagépnév, felhasználó = felhasználónév, jelszó = jelszó, db = adatbázis)
ManuDataHex =
ReadLoop = Igaz
próbáld ki:
közben (ReadLoop):
eszközök = scanner.scan (2.0)
ManuData = ""
eszközök fejlesztői számára:
bejegyzés = 0
AcceroData = 0
AcceroType = 0
TempData = 0
a saddr számára a SENSOR_ADDRESS címen:
bejegyzés += 1
ha (dev.addr == saddr):
nyomtatás "Eszköz %s (%s), RSSI = %d dB" %(dev.addr, dev.addrType, dev.rssi)
CurrentDevAddr = saddr
CurrentDevLoc = SENSOR_LOCATION [bejegyzés-1]
for (adtype, desc, value) a dev.getScanData () fájlban:
print " %s = %s" %(leírás, érték)
ha (desc == "Gyártó"):
ManuData = érték
ha (ManuData == ""):
print "Nincs adat, véget ért a dekódolás"
folytatni
#nyomtatás ManuData
i, j zip formátumban (ManuData [:: 2], ManuData [1:: 2]):
ManuDataHex.append (int (i+j, 16))
#Kezdje el a nyers gyártói adatok dekódolását
ha ((ManuDataHex [0] == 0x85) és (ManuDataHex [1] == 0x00)):
nyomtatás "0x0085 fejléc bájt"
más:
print "0x0085 fejléc bájt nem található, dekódolás leállítása"
folytatni
#Skip Major/Minor
#Az 5. index 0x3c, jelzi az akkumulátor töltöttségi szintjét és a konfigurációt #
ha (ManuDataHex [4] == 0x3c):
BatteryLevel = ManuDataHex [5]
ConfigCounter = ManuDataHex [6]
idx = 7
#print "TotalLen:" + str (len (ManuDataHex))
míg (idx <len (ManuDataHex)):
#print "Idx:" + str (idx)
#print "Adatok:" + hexa (ManuDataHex [idx])
ha (ManuDataHex [idx] == 0x41):
#Accerometer adatok
idx += 1
AcceleroType = ManuDataHex [idx]
AcceleroData = ManuDataHex [idx+1]
idx += 2
elif (ManuDataHex [idx] == 0x43):
#Hőmérséklet adatok
idx += 1
TempData = ManuDataHex [idx]
TempData += ManuDataHex [idx +1] * 0x100
TempData = TempData * 0,0625
idx += 2
más:
idx += 1
print "Eszköz címe:" + CurrentDevAddr
print "Eszköz helye:" + CurrentDevLoc
print "Battery Level:" + str (BatteryLevel) + "%"
print "Config Counter:" + str (ConfigCounter)
print "Accelero Data:" + hex (AcceleroType) + "" + hex (AcceleroData)
print "Temp Data:" + str (TempData)
doQueryInsert (myConnection, CurrentDevAddr, CurrentDevLoc, TempData, AcceleroData)
ReadLoop = Hamis
a DecodeErrorException kivételével:
passz
7. lépés: Tesztelje a Python -szkriptet
A szkriptet root -ban kell futtatni, így:
$ sudo python bscan.pyFelfedezett eszköz ec: 6e: 7e: 10: b1: 92 Eszköz ec: 6e: 7e: 10: b1: 92 (nyilvános), RSSI = -80 dB Zászlók = 06 Hiányos 16b Szolgáltatások = 0a18 Gyártó = 850002003c25094102024309016f Fejléc bájt 0x0085 talált Eszköz címe: ec: 6e: 7e: 10: b1: 92 Eszköz helye: Garázs Akkumulátor töltöttségi szint: 37% Konfigurációszámláló: 9 Accero adatok: 0x2 0x2 Temp Adatok: 16.5625
8. lépés: Adja hozzá a Python Script a Crontabhoz
A python parancsfájlt gyökérben kell futtatni, tehát ha automatikusan szeretné rögzíteni az adatokat, akkor hozzá kell adnia a gyökér crontab -hoz. Ebben a példában a szkriptet 20 percenként futtatom. Használja a következő parancsot:
$ sudo crontab -e
# Szerkessze ezt a fájlt a cron által futtatandó feladatok bevezetéséhez.
# # Minden futtatandó feladatot egyetlen sorban kell definiálni #, amely különböző mezőkkel jelzi, hogy mikor kerül sor a feladat végrehajtására # és milyen parancsot kell futtatni a feladathoz # # Az idő meghatározásához konkrét értékeket adhat meg # percre (m), óra (h), hónap napja (dom), hónap (hét), # és a hét napja (dow), vagy használja a "*" -t ezekben a mezőkben ("bármilyen" esetén). # # Figyelje meg, hogy a feladatok elindulnak a cron rendszere # démon idő és időzónák fogalma alapján. # # A crontab feladatok kimenete (beleértve a hibákat is) # e -mailben kerül elküldésre a felhasználóhoz, akihez a crontab fájl tartozik (hacsak nincs átirányítva). # # Például biztonsági másolatot készíthet minden felhasználói fiókjáról # minden reggel 5 órakor a következővel: # 0 5 * * 1 tar -zcf /var/backups/home.tgz/home/ # # További információért lásd a kézi oldalak: crontab (5) és cron (8) # # mh dom mon dow parancs 0 * * * * python /home/pi/bscan.py 20 * * * * python /home/pi/bscan.py 40 * * * * python /home/pi/bscan.py
Ez az. A python parancsfájl rendszeres időközönként fut, és a kimenetet újrakódolja az SQL adatbázisba
9. lépés: Extra: Állítsa be a SensorBug -ot a helyzetérzékelő kimenethez
Lehetőség van a SensorBug konfigurálására az Androidon a pozícióérzékelő kimenethez. A pozícióváltás érzékeléséhez, az úgynevezett Garázskapu. Érzékeléshez a SensorBug észleli, hogy az eszköz függőlegesen áll vagy lefekszik. Ha az eszköz lapos, a rögzített érték 0x20 míg az eszköz függőlegesen áll, az érték 0x02. Nem tesz különbséget, ha az X vagy Y pozíció felfelé van, mindaddig, amíg a Z tengely nincs felfelé vagy lefelé. Ennek legegyszerűbb módja a LightBlue App használata. A SensorBugnak meg kell jelennie a szkennelési menüben. Válassza ki a konfigurálni kívánt eszközt, menjen a GATT jellemzőihez a gyorsulásmérő konfigurálásához UUID: 9DC84838-7619-4F09-A1CE-DDCF63225B11
Lásd a képet: Új konfigurációs karakterlánc írása:
010d3f0202000000002d00000002 Olvassa vissza a konfigurációs karakterláncot az írás megerősítéséhez. Ez lehetővé teszi a gyorsulásmérőt a helyzetérzékeléshez.
Ajánlott:
Szobahőmérséklet és páratartalom figyelése az ESP32 és az AskSensors Cloud segítségével: 6 lépés
Szobahőmérséklet és páratartalom figyelése az ESP32 és az AskSensors Cloud segítségével: Ebben az oktatóanyagban megtanulhatja, hogyan figyelheti a szoba vagy az asztal hőmérsékletét és páratartalmát a DHT11 és az ESP32 segítségével, amely a felhőhöz csatlakozik. Oktatóanyag -frissítéseink itt találhatók. Specifikációk: A DHT11 érzékelő képes a hőmérséklet mérésére
Az ultrahangos távolság figyelése az ESP8266 és az AskSensors IoT Cloud segítségével: 5 lépés
Az ultrahangos távolság figyelése az ESP8266 és az AskSensors IoT Cloud segítségével: Ez az útmutató bemutatja, hogyan lehet megfigyelni a távolságot egy objektumtól az ultrahangos HC-SR04 érzékelő és az AskSensors IoT felhőhöz csatlakoztatott ESP8266 csomópont MCU segítségével
Hőmérséklet és páratartalom figyelése-AWS-ESP32: 8 lépés
Hőmérséklet és páratartalom figyelése-AWS-ESP32 használatával: Ebben az oktatóanyagban különböző hőmérséklet- és páratartalom-adatokat mérünk a hőmérséklet- és páratartalom-érzékelő segítségével. Azt is megtudhatja, hogyan küldheti el ezeket az adatokat az AWS -nek
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával Arduino Uno segítségével: 4 lépés
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával az Arduino Uno segítségével: Sziasztok, srácok, ebben az útmutatóban megtanuljuk, hogyan kell használni az LM35 -öt az Arduino -val. Az Lm35 egy hőmérséklet -érzékelő, amely -55 ° C és 150 ° C közötti hőmérséklet -értékeket képes leolvasni. Ez egy 3 kivezetésű eszköz, amely analóg feszültséget biztosít a hőmérséklettel arányosan. Hig
ESP32 alapú M5Stack M5stick C időjárásfigyelő DHT11 - Hőmérséklet-páratartalom és hőindex figyelése az M5stick-C-n DHT11 segítségével: 6 lépés
ESP32 alapú M5Stack M5stick C időjárásfigyelő DHT11 | Figyelje a hőmérséklet-páratartalom és hőindexet az M5stick-C-n DHT11 segítségével: Sziasztok, ebben az oktatóanyagban megtanuljuk, hogyan kell összekapcsolni a DHT11 hőmérséklet-érzékelőt az m5stick-C-vel (az m5stack fejlesztőlapja), és megjeleníteni az m5stick-C kijelzőjén. Tehát ebben az oktatóanyagban a hőmérsékletet, a páratartalmat és az amp; melegítem