Instalacja bramki SUPLA-VIRTUAL-DEVICE z obsługą termometrów LYWSD03MMC
2022-11-15Na początek instalujemy niezbędne biblioteki:
sudo apt-get install -y mc git libssl-dev bc python3-pip supervisor
sudo apt-get install python3-pip libglib2.0-dev
Instalujemy skrypt bluepy niezbędny do komunikacji BLE z czujnikami Xiaomi:
sudo pip3 install bluepy
Instalujemy Supla Virtual Device. Tworzymy drzewo katalogów „/home/pi/appdata/” i rozpoczynamy instalację.
sudo apt-get update
git clone https://github.com/lukbek/supla-virtual-device.git
cd supla-virtual-device
./install.sh
Po instalacji przechodzimy do wstępnej konfiguracji.
nano supla-virtual-device.cfg
Zawartość naszego pliku konfiguracyjnego powinna wyglądać mniej więcej tak:
[GLOBAL]
device_name=SUPLA-SVD
[SERVER]
host=svrXX.supla.org
protocol_version=12
[AUTH]
[email protected]
[CHANNEL_0]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/appdata/supla-virtual-device/supla-mi-th/sensor_th0.txt
battery_powered=1
file_write_check_sec=300
Wartości dla host i email podajemy zgodne z danymi z naszego konta SUPLA.
Teraz tworzymy katalog, w którym będą zapisywane dane pomiarowe z naszych czujników poleceniem:
mkdir supla-mi-th
W folderze supla-mi-th tworzymy pliki dla danych z naszych sensorów.
nano supla-mi-th/sensor_th0.txt
W moim przypadku jest to jeden sensor ale jak będzie ich więcej to kolejne pliki powinny się nazywać sensor_th1.txt itp.
Po tych czynnościach jesteśmy gotowi do rejestracji naszej bramki w Cloud. Wchodzimy na nasze konto SUPLA i włączamy możliwość rejestracji nowych urządzeń. Na naszej Malince przechodzimy do folderu:
cd /home/pi/appdata/supla-virtual-device
i uruchamiamy naszą bramkę..
./supla-virtual-device
Powinniśmy uzyskać podobny wynik w naszej konsoli:
pi@rpi-web:~/appdata/supla-virtual-device $ ./supla-virtual-device
SUPLA-VIRTUAL-DEVICE v1.1.2
INFO[1668028459.941093] SSL version: OpenSSL 1.1.1n 15 Mar 2022
Teraz logujemy się na cloud.supla.org i włączamy AKTYWACJĘ urządzeń i czekamy aż pojawi się nam nasz bramka BLE.
Na chwilę przerywany działanie programu kombinacją klawiszy Ctrl + C. Wykonamy teraz konfigurację autostartu programu, abyśmy po ponownym uruchomieniu systemu nie musieli ręcznie uruchamiać SuplaVirtualDevice. Nasz program będzie uruchamiany w tle jako proces.
W tym celu zainstalowaliśmy wcześniej komendą apt-get install program Supervisor. Teraz musimy poprawnie go skonfigurować. Edytujemy plik supervisord.conf poleceniem z podniesionymi uprawnieniami:
sudo nano /etc/supervisor/supervisord.conf
Zmieniamy wartość chmod=0700 na chmod=0770 oraz po tym wierszu dodajemy nowy wiersz z wpisem chown=root:pi.
Powinno wyglądać to tak:
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0770 ; sockef file mode (default 0700)
chown=root:pi
Zapisujemy Ctrl + O oraz Enter i zamykamy edytor klawiszami Ctrl + X.
Tworzymy teraz konfiguracyjny plik dla supla-virtual-device poleceniem:
sudo nano /etc/supervisor/conf.d/supla-virtual-device.conf
Nasza konfiguracją powinna wyglądać następująco:
[program:supla-virtual-device]
command=/home/pi/appdata/supla-virtual-device/supla-virtual-device
directory=/home/pi/appdata/supla-virtual-device
autostart=true
autorestart=true
user=pi
Zapisujemy konfiguracje używając w kolejności po sobie kombinacji klawiszy CTRL+O, CTRL+X i restartujemy bramkę SVD.
sudo service supervisor restart
Kilka przydatnych poleceń dzięki którym zatrzymamy, uruchomimy lub sprawdzimy status naszej aplikacji. Polecenie supervisorctl status pokazuje aktualny status. Możemy użyć też zmiennej stop, start lub restart a po zmiennej nazwę programu np. supervisorctl start supla-virtual-device
Teraz zajmiemy się konfiguracją oraz instalacją czujników LYWSD03MMC w naszej bramce SVD. W pierwszej kolejności musimy poznać adresy MAC naszych Termometrów. Używamy komendy:
sudo hcitool lescan
Gdy na naszej liście urządzeń znajdzie się nazwa zaczynająca od LYW… to kopiujemy adres MAC.
pi@rpi-web:~/supla-virtual-device $ sudo hcitool lescan
LE Scan ...
A4:C1:38:D4:4D:C4 LYWSD03MMC
Kopiujemy sobie adres MAC do notatnika i możemy jakoś opisać cienkopisem na obudowie lub nakleić jakąś etykietkę aby później łatwo rozpoznać jeżeli takich czujników będziemy posiadali większą ilość. Tworzymy podfolder „supla-mi-th” i przechodzimy do niego i przystępujemy do pobrania skryptu zczytującego wartości z termometra.
wget https://raw.githubusercontent.com/JsBergbau/MiTemperature2/master/LYWSD03MMC.py
echo '#!/bin/bash' > save-to-file.sh
echo 'echo $3 > sensor_$2.txt' >> save-to-file.sh
echo 'echo $4 >> sensor_$2.txt' >> save-to-file.sh
echo 'echo $6 >> sensor_$2.txt' >> save-to-file.sh
chmod +x LYWSD03MMC.py save-to-file.sh
W kolejnym kroku tworzymy skrypt który będzie pobierał 2 razy wartości i przy 10 nieudanych próbach przerwie odczyt a na koniec wywoła polecenie pkill procesu bluepy. Jest to konieczne gdyż ten proces potrafi się zdublować lub zawiesić co powoduje 100% zużycie rdzenia. Wpisujemy komendę „nano sensor_th0.sh” i wklejamy poniższą zawartość.
#!/bin/bash
# Przejdz do folderu z skryptami odczytu
cd /home/pi/appdata/supla-virtual-device/supla-mi-th/
# Odczyt z czujnika Xiaomi
sudo ./LYWSD03MMC.py --device A4:C1:38:D4:4D:C4 --battery --round --debounce --name th0 --interface 0 --count 2 --unreachable-count 10 --callback save-to-file.sh
# Kill all bluepy proces
sudo pkill bluepy
Nadajemy prawa do wykonywania skryptu „chmod +x sensor_th0.sh” i dodajemy automatyczne wykonywanie skryptu co 5 minut w cronie komendą crontab -e. Dodajemy poniższy wpis:
W razie problemów z uruchomieniem supla-virtual-device należy edytować plik: Należy dopisać w 36 lini pliku /home/pi//appdata/supla-virtual-device/src/supla-dev/src/pi_2_mmio.h słowo „extern tak ma potem wyglądać ta linia
extern volatile uint32_t* pi_2_mmio_gpio;”
*/5 * * * * /home/pi/appdata/supla-virtual-device/supla-mi-th/sensor_th0.sh
Dzięki temu skryptowi unikniemy ciągłemu drenowaniu bateri naszego termometru. Odczyt odbywa się co 5 minut. Oczywiście ten czas możemy zmienić wedle swojego uznania.
Teraz musimy dodać kanał temperatury i wilgotności w pliku konfiguracyjnym „supla-virtual-device.cfg”
[CHANNEL_0]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/appdata/supla-virtual-device/supla-mi-th/sensor_th0.txt
battery_powered=1
file_write_check_sec=840
Restartujemy naszą bramkę SVD komendą sudo service supervisor restart. Przechodzimy do naszego konta w cloud i konfigurujemy nasz kanał.
Jeżeli masz jakieś pomysły lub widziałeś lepsze sposoby odczytywania danych z tych termometrów podziel się informacją w komentarzu.
hint: Pulling without specifying how to reconcile divergent branches is
hint: discouraged. You can squelch this message by running one of the following
hint: commands sometime before your next pull:
hint:
hint: git config pull.rebase false # merge (the default strategy)
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace „git config” with „git config –global” to set a default
hint: preference for all repositories. You can also pass –rebase, –no-rebase,
hint: or –ff-only on the command line to override the configured default per
hint: invocation.
Building. Be patient.
pi@raspberrypi:~/home/pi/appdata/supla-virtual-device $ nano supla-virtual-devic e.cfg
pi@raspberrypi:~/home/pi/appdata/supla-virtual-device $ mkdir supla-mi-th
pi@raspberrypi:~/home/pi/appdata/supla-virtual-device $ nano supla-mi-th/sensor_ th0.txt
pi@raspberrypi:~/home/pi/appdata/supla-virtual-device $ cd /home/pi/appdata/supl a-virtual-device
-bash: cd: /home/pi/appdata/supla-virtual-device: No such file or directory
niestety nie moge odpalic bramki do supli mógł bym prosic o pomoc co robie nie tak?
1. W jakim folderze użyłeś komendy GIT CLONE aby pobrać i zainstalować bramkę ?
2. Poprawnie zedytowałeś plik Config ?
Wygląda mi że nie dokładnie przeczytałeś co po kolei należy robić i jak leci kopiuj wklej zrobiłeś bez zrozumienia co po kolei robimy.
Na forum supli takie przypadki się zdarzały.
Należy dopisać w 36 linii plik src/supla-dev/src/pi_2_mmio.h słowo „extern” przed
volatile uint32_t* pi_2_mmio_gpio;
czyli wynikowo masz otrzymać:
extern volatile uint32_t* pi_2_mmio_gpio;
potem jeszcze raz odpal instalacje SVD.
Jest dopisane na czerwono o tym błędzie. Kompletnie zapomniałem to opisać. Dziękować za przypomnienie.
Treść jest klarowna, dobrze zorganizowana i pełna przydatnych wskazówek. Autor doskonale wyjaśnia kluczowe zagadnienia. Może warto by dodać więcej przykładów praktycznych. Pomimo tego, tekst jest niezwykle edukacyjny i inspirujący.