W poprzednim artykule ogólnie opisałem softwarową bramkę (Gateway) czytającą dane pomiarowe z czujników temperatury i wilgotności Xiaomi Mijia i przesyłających te dane na serwer Supla. Poniżej przedstawiam opis uruchomienia – krok po kroku – Supla Virtual Device – bramka dla czujników Xiaomi LYWSD03MMC.

Co potrzebujemy:

  • Raspberry Pi Zero W (może być również Pi Zero WH – ta wersja ma wlutowane goldpiny i jest parę złoty droższa),
  • zasilacz 5V, 2A ze złączem microUSB (do zasilania Raspberry),
  • karta pamięci microSD o pojemności minimum 16GB (polecam karty SanDisk Extreme lub Extreme Pro),
  • czytnik kart USB / microSD (lub SD + przejściówka),
  • no i oczywiście czujniki temperatury i wilgotności Xiaomi Mijia LYWSD03MMC.
I. INSTALACJA SYSTEMU OPERACYJNEGO RASPBIAN NA KARCIE PAMIĘCI
  • pobieramy i instalujemy program Rasperry Pi Imager ze strony organizacji RaspberryPi,
  • podłączamy czytnik kart do komputera i wkładamy kartę SD,
  • uruchamiamy program Raspberry Pi Imager (akceptujemy podwyższone uprawnienia) i wybieramy system operacyjny Raspberry Pi (other) >> Raspberry Pi OS Lite (32-bit) następnie wybieramy naszą kartę SD i klikamy przycisk WRITE. Proces przygotowania karty SD trwa około 3 – 4 minuty. W trakcie mogą pojawiać się komunikaty o konieczności formatowania karty SD – ignorujemy te komunikaty.
  • Po zakończeniu działania programu zamykamy program, odłączamy nasz czytnik z kartą SD i ponownie podłączamy do portu USB. Ignorujemy komunikaty o konieczności formatowania  dysku i otwieramy dysk boot.
  • Na partycji boot musimy utworzyć dwa pliki o nazwach:
    • ssh (plik bez żadnego rozszerzenia, zajmujący 0 KB),
    • wpa_supplicant.conf z danymi dostępowymi do naszej sieci Wi-Fi 2.4 GHz:
country=PL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="MyWiFiNetwork"
psk="VeryStrongPassword"
key_mgmt=WPA-PSK
}

Oczywiście w miejsce MyWiFiNetwork oraz VeryStrongPassword wpisujemy swoje dane.

  • Odłączamy kartę microSD od komputera i wkładamy ją do naszego Raspberry Pi Zero W. Następnie podłączamy zasilanie (pierwszy port microUSB od prawej strony mikrokomputera oznaczony PWR IN) i czekamy ok. 5 minut.
II. PODSTAWOWA KONFIGURACJA RASPBERRY PI OS LITE

Do konfiguracji i zarządzania naszym Rasberry Pi Zero W (RPi) najlepiej nadaje się klient terminalowy Putty. Instalujemy więc program Putty na naszym komputerze. W celu podłączenia się sesją terminalową do naszego RPi musimy poznać adres IP, jaki został przydzielony dla RPi przez nasz router. Najwygodniej zalogować się na router i tam zobaczyć, jaki adres został przydzielony urządzeniu.

W Putty w okienku Host Name (or IP address) wpisujemy przyznany RPi adres IP, wybieramy typ połączenia (Connection type) SSH i klikamy przycisk Open. Potwierdzamy klawiszem OK Putty Security Alert i logujemy się do naszego Raspberry następującymi poświadczeniami:
Użytkownik: pi
Hasło: raspberry

Pierwszą czynnością jaką powinniśmy wykonać jest zmiana domyślnego hasła. W tym celu wpisujemy komendę:

passwd

Current password (aktualne hasło): raspberry
New password (nowe hasło): nasze_nowe_hasło
Retype new password (powtórz nowe hasło): nasze_nowe_hasło

Poprawna zmiana hasła zakończona jest komunikatem: passwd: password updated successfully.

Następną czynnością jest aktualizacja naszego RPi. Komenda sudo podnosi nasze uprawnienia do użytkownika root.

Pobieramy najnowszy wykaz paczek aktualizacyjnych z repozytoriów Raspbiana:

sudo apt-get update

Instalujemy aktualizacje (potwierdzamy chęć zainstalowania klawiszem Y):

sudo apt-get dist-upgrade

Możemy (nie jest to konieczne) zaktualizować „bios” naszego RPi:

sudo rpi-update

Czyścimy zawartość karty pamięci (dysku) ze zbędnych „śmieci”:

sudo apt-get autoclean

I uruchamiamy ponownie nasze RPi:

sudo reboot

Zamykamy program Putty i po ok. 2 – 3 minutach ponownie łączymy się sesją terminalową do RPi.

Wydajemy komendę instalacji wymaganych programów i bibliotek i idziemy na kawę – instalacja trwa dobrych kilka minut:

sudo apt-get install -y mc git libssl-dev bc python3-pip supervisor

Instalujemy skrypt bluepy niezbędny do komunikacji BLE z czujnikami Xiaomi:

pip3 install bluepy
III. INSTALACJA I KONFIGURACJA SUPLA VIRTUAL DEVICE

Supla Virtual Device to program, którego zadaniem jest odczyt danych z plików i wysłanie tych danych na serwer Supla Cloud. Oczywiście jest to bardzo potężne uproszczenie zrobione na potrzeby niniejszego poradnika. Osoby zainteresowane innymi funkcjonalnościami Supla Virtual Device odsyłam na GitHub Łukasza. Program jest rozwinięciem pomysłu kolegi Wojtka Supla FileSensors.

Program po konfiguracji i uruchomieniu tworzy wirtualne urządzenie z kanałami określonymi przez nas w konfiguracji Supla Virtual Device. Instalacja polega na wykonaniu poniższych komend (każdej po kolei):

sudo apt-get update
git clone https://github.com/lukbek/supla-virtual-device.git
cd supla-virtual-device
./install.sh

Po zainstalowaniu niezbędnych składników należy skonfigurować Supla Virtual Device. W tym celu edytujemy plik supla-virtual-device.cfg poleceniem:

nano supla-virtual-device.cfg

Plik konfiguracyjny zawiera sporo przykładowych, obsługiwanych przez program kanałów. Zalecam usunięcie całej zawartości tego pliku i wklejenie poniższego przykładu (oczywiście odpowiednio dla ilości posiadanych czujników). Numeracja kanałów [CHANNEL_X] musi zaczynać się od 0, numery kanałów nie mogą się powtarzać. Przykładowa zawartość pliku konfiguracyjnego dla 4 szt. czujników Xiaomi:

[GLOBAL]
device_name=BRAMKA LB-SVD

[SERVER]
host=svrXX.supla.org
protocol_version=12

[AUTH]
email=twojemaildokontasupla@domena.com

[CHANNEL_0]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/supla-mi-th/sensor_th0.txt
battery_powered=1
#file_write_check_sec=120

[CHANNEL_1]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/supla-mi-th/sensor_th1.txt
battery_powered=1
#file_write_check_sec=120

[CHANNEL_2]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/supla-mi-th/sensor_th2.txt
battery_powered=1
#file_write_check_sec=120

[CHANNEL_3]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/supla-mi-th/sensor_th3.txt
battery_powered=1
#file_write_check_sec=120

Oczywiście nazwę hosta (treść po host=) oraz adres e-mail którym logujemy się do konta Supla Cloud (treść po email=) zmieniamy na zgodne ze swoim kontem Supla Cloud (nazwa hosta dostępna jest po zalogowaniu do Cloud na głównym ekranie na żółtej kopercie)  Zmiany zapisujemy klawiszami Ctrl + O i Enter, a z edytora Nano wychodzimy klawiszami Ctrl + X.

Przechodzimy do głównej gałęzi katalogu domowego poleceniem:

cd

Tworzymy katalog, w którym będą zapisywane dane pomiarowe z naszych czujników poleceniem:

mkdir supla-mi-th

W katalogu supla-mi-th tworzymy cztery pliki z przykładowymi danymi pomiarowymi. W pierwszym wierszu podajemy temperaturę w formacie xx.x, w drugim wierszu wilgotność w formacie xx, a w trzecim wierszu poziom baterii w formacie xx. Pliki tworzymy poleceniem:

nano supla-mi-th/sensor_th0.txt

Czynność powtarzamy zmieniając nazwę pliku od sensor_th0.txt do sensor_th3.txt.

Jesteśmy już prawie gotowi na uruchomienie Supla Virtual Device. W tym celu musimy zezwolić na rejestrowanie nowych urządzeń na naszym koncie w Supla Cloud. Teraz pozostaje nam przejść do katalogu supla-virtual-device i uruchomić program:

cd supla-virtual-device
./supla-virtual-device

Na ekranie terminala powinniśmy zobaczyć podobną treść:

pi@raspberrypi:~/supla-virtual-device $ ./supla-virtual-device
SUPLA-VIRTUAL-DEVICE v1.0.3
INFO[1583089711.45312] SSL version: OpenSSL 1.1.1d 10 Sep 2019

A na naszym koncie Supla Cloud powinniśmy mieć zarejestrowane urządzenie o nazwie BRAMKA-LB-SVD (lub zgodne z nazwą wprowadzoną w pliku supla-virtual-device.cfg).

Na chwilę przerywany działanie programu klawiszami Ctrl + C. Wykonamy teraz konfigurację automatycznego startu programu, abyśmy po ponownym uruchomieniu RPi nie musieli ręcznie uruchamiać Supla Virtual Device. Nasz program będzie działał 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

Odnajdujemy i zmieniamy wpis chmod=0700 na chmod=0770 oraz po tym wierszu dodajemy nowy wiersz z wpisem chown=root:pi.

Sekcja [unix_http_server] powinna wyglądać następująco:

[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 procesu supla-virtual-device poleceniem:

sudo nano /etc/supervisor/conf.d/supla-virtual-device.conf

Zawartość pliku konfiguracyjnego:

[program:supla-virtual-device]
command=/home/pi/supla-virtual-device/supla-virtual-device
directory=/home/pi/supla-virtual-device
autostart=true
autorestart=true
user=pi

Oczywiście zapisujemy plik i zamykamy edytor Nano.

Teraz pozostaje zrestartować program supervisor poleceniem

sudo service supervisor restart

Program Supla Virtual Device powinien zostać uruchomiony i pracować w tle jako serwis. Aby sprawdzić działanie programu w tle wpisujemy komendę:

supervisorctl status

Powinniśmy zobaczyć na ekranie terminala podobną treść:

supla-virtual-device RUNNING pid 2884, uptime 0:00:14

Pozostałe ważne polecenia dotyczące działających programów w tle:

supervisorctl status
supervisorctl stop nazwa-programu np.: supervisorctl stop supla-virtual-device
supervisorctl start nazwa-programu np.: supervisorctl start supla-virtual-device
supervisorctl restart nazwa-programu np.: supervisorctl restart supla-virtual-device

Myślę, że polecenia są zrozumiałe i nie wymagają tłumaczenia.

IV. INSTALACJA I KONFIGURACJA ODCZYTÓW CZUJNIKÓW BLE XIAOMI

W pierwszej kolejności musimy poznać adresy MAC posiadanych przez nas czujników LYWSD03MMC. Jeśli posiadamy kilka czujników, najlepiej uruchamiać je po kolei. Aby poznać MAC uruchamiamy polecenie:

sudo hcitool lescan

Na ekranie terminala powinniśmy zobaczyć podobną treść:

pi@raspberrypi:~/supla-virtual-device $ sudo hcitool lescan
LE Scan ...
00:C3:F4:F6:C3:15 (unknown)
00:C3:F4:F6:C3:15 [TV] Samsung 7 Series (50)
58:2D:34:36:3A:A8 (unknown)
58:2D:34:36:3A:A8 LYWSD03MMC

Kopiujemy do notatnika MAC Address każdego czujnika najlepiej oznaczając go (np. markerem od spodu), tak aby mieć później pewną wiedzę, gdzie montujemy dany czujnik. Mając adresy MAC wszystkich czujników przechodzimy do katalogu supla-mi-th i uruchamiamy następujące polecenia:

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

Teraz pozostaje utworzyć pliki konfiguracyjne dla czterech procesów odczytujących dane z czterech czujników poleceniem:

sudo nano /etc/supervisor/conf.d/mi-th0.conf

Zawartość pliku (w miejsce xx:xx:xx:xx:xx:xx wpisujemy rzeczywisty adres MAC czujnika):

[program:mi-th-0]
command=python3 ./LYWSD03MMC.py --device xx:xx:xx:xx:xx:xx --battery --round --debounce --name th0 --callback save-to-file.sh
directory=/home/pi/supla-mi-th
autostart=true
autorestart=true
user=pi

Czynności należy powtórzyć dla pozostałych czujników pamiętając o zmianie parametrów [program:mi-th-0] (th-0 do th-3), oraz –name th0 (th0 do th3).

Po zapisaniu wszystkich plików restartujemy supervisor i sprawdzamy działanie w tle programów.

sudo service supervisor restart
supervisorctl status

Powinniśmy mieć uruchomione w tle następujące procesy:

pi@RPi-2:~ $ supervisorctl status
mi-th-1 RUNNING pid 3074, uptime 2 days, 0:32:09
mi-th-2 RUNNING pid 445, uptime 2 days, 1:06:49
mi-th-3 RUNNING pid 442, uptime 2 days, 1:06:49
mi-th-4 RUNNING pid 451, uptime 2 days, 1:06:48
supla-virtual-device RUNNING pid 16223, uptime 1 day, 6:50:29

Uważny czytelnik pewnie zauważył zakomentowane (znak #) linie w pliku konfiguracyjnym supla-virtual-device.cfg. Parametr file_write_check_sec=120 określa, ile czasu w sekundach skrypt Supla Virtual Device ma czekać na nowe dane ze skryptu LYWSD03MMC.py i w przypadku braku tych danych wysłać do Cloud specjalne wartości oznaczające brak odczytu.

Edytujemy zatem supla-virtual-device.cfg usuwając znaki #, zapisujemy plik i restartujemy usługę supla-virtual-device poleceniem

supervisorctl restart supla-virtual-device

 

Osobom zainteresowanym uruchomieniem czujników Xiaomi Mijia LYWSD03MMC w Domoticz’u polecam artykuł na blogu Wojciecha Grylewicza: https://grylewicz.pl/domoticz-5-obsluga-termometrow-xiaomi-mijia-lywsd03mmc-bluetooth/

 

UWAGA!

Powyższy artykuł został uaktualniony wraz z aktualizacją skryptu Supla Virtual Device z dnia 1 września 2020 r.

Sposób aktualizacji skryptu dla osób mających zainstalowaną wcześniejszą wersję (bez obsługi statusu baterii) opisałem w tym artykule.

 

Spodobał Ci się artykuł? Udostępnij go.

97 komentarzy

  1. Pingback: Supla Pushover czyli informacja o nowej korespondencji w tradycyjnej skrzynce pocztowej – Robert Błaszczak

  2. Właśnie przyszły części z dalekiego kraju, przeszły kwarantannę i udało się uruchomić zgodnie instrukcją krok po kroku. Opis zrobiony super. Działa rewelacyjnie. Teraz jestem ciekawy jak długo wytrzymają baterie w termometrach. Bardzo dziękuję za podzielenie się swoim pomysłem i pracą z innymi.

    Michał
    1. Bardzo dziękuję za tak miłą ocenę oraz zwrotną informację, że wszystko działa. U mnie jak do tej pory baterie we wszystkich czujnikach nie były jeszcze wymieniane. Czujniki działają non stop od 1 marca 2020. Jak dla mnie jest to rewelacyjny wynik. Należy pamiętać, że na żywotność baterii mocno wpływa odległość czujników od bramki. Ja mam czujniki rozmieszczone w mieszkaniu jednopoziomowym, a bramka jest praktycznie w centralnym punkcie mieszkania.

    2. Witam. Czy mając termometr bez bramki będę mógł sprawdzić historyczną temperaturę na smartfonie? Czy każdy pomiar zapisywany jest w pamięci termometru, a następnie przesyłany jest do telefonu?

      Nowy
  3. Witam. Od jakiegoś tygodnia próbuje uruchomić te czujniki na supli, wszystko robię zgodnie z instrukcja krok po kroku, w supli pojawiają się pola temp itp ale bez przerwy brak wartości, mam kupione dwa czujniki , czy jest możliwość żeby te oto czujniki nie łączyły się z raspberrym? Brak wyświetlania na nich ikonki połączonego bt, czy mi coś może umykać, i powtarzam ciągle ten sam błąd, jestem początkujący w tych tematach , więc różnie może być 😉 Za wszelkie rady, sugestie byłbym wdzięczny, Pozdrawiam

    Janki
  4. Hmm są te wartości które podałem jako przykladowe, po dwie linie jak w opisie. I jeszcze jedno, jak zrobię tak jak napisano pod koniec artykułu

    (Edytujemy zatem supla-virtual-device.cfg usuwając znak #, zapisujemy plik i restartujemy usługę supla-virtual-device poleceniem) jak znak nie jest usunięty to wyświetla mi te wartości które podałem jako przykladowe, a jak go usunę to dane są wykreskowane

    Janki
    1. To oznacza, że nie są zapisywane dane z czujników do plików tekstowych.
      proszę „wejść” do katalogu supla-mi-th (cd supla-mi-th) i uruchomić komendę
      python3 ./LYWSD03MMC.py –device xx:xx:xx:xx:xx:xx –round –debounce –name th0 –callback save-to-file.sh
      W miejsce xx proszę podstawić adres MAC swojego czujnika.

      1. Nic z tego taki oto komunikat:

        pi@raspberrypi:~/supla-mi-th $ python3 ./LYWSD03MMC.py –device a4:c1:38:5a:00:ba –round –debounce –name th0 –callback save-to-file.sh
        python3: can’t open file ’./LYWSD03MMC.py’: [Errno 2] No such file or directory
        pi@raspberrypi:~/supla-mi-th $

        Janki
  5. Pingback: Aktualizacja Supla Virtual Device - Robert Błaszczak

  6. Witam.
    Zrobiłem wszystko według pana instrukcji i cały czas mam taki komunikat.
    pi@raspberrypi:~/supla-mi-th $python3 ./LYWSD03MMC.py –device A4:C1:38:38:FB:26 –round –debounce –name th0 –callback save-to-file.sh
    Trying to connect to A4:C1:38:38:FB:26
    Connection lost
    Waiting…
    Trying to connect to A4:C1:38:38:FB:26
    Connection lost

    I tak non stop.
    Bardzo proszę o pomoc.

    Darek
          1. Witam , mam ten sam problem co kolega Janki brak wyswietlonych wartosci i

            python3 ./LYWSD03MMC.py –device A4:C1:38:4F:2C:0F –round –debounce –name th0 –callback save-to-file.sh
            python3: can’t open file ’./LYWSD03MMC.py’: [Errno 2] No such file or directory

            Michał
          2. Proszę wykonać te instrukcje:

            cd supla-mi-th
            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

        1. Cześć,

          Mam problem. Raspberry nie łączy się z wifi. Dhcp nie przydziela żadnego nowego adresu. Po wyłączeniu urządzenia i przepięciu karty do kompa dwa utworzone pliki znikają. Ssid i halo bankowo poprawne. Czy można jakoś zinterpretować stan raspberry za pomocą diody albo co można z tym przypadkiem zrobić?

          Piotr
  7. Cześć, zmagam się z dodaniem urządzeń do virtual-device. Otrzymuje taki oto komunikat błędu:

    pi@SUPLA:~ $ supervisorctl status
    mi-th-0 BACKOFF Exited too quickly (process log may have details)

    Mogę liczyć na pomoc?

    Tomek
  8. Witam.
    Co może być przyczyną?

    pi@raspberry:~/supla-mi-th $ supervisorctl status
    mi-th-0 FATAL Exited too quickly (process log may have details)
    mi-th-1 FATAL Exited too quickly (process log may have details)
    supla-virtual-device RUNNING pid 3473, uptime 0:03:32
    pi@raspberry:~/supla-mi-th $

    Pozdrawiam

    Marcin
  9. Witam. Zrobiłem wszystko z poradnikiem i działa 🙂

    Problemem jest tylko zrywanie połączenia z serwerem supla(czerwone kropki przy czujniki).
    Dzieje się tak po zmianach w Cloud Supla.

    Co może być przyczyną takiego stanu rzeczy.

    Pozdrawiam
    Grzegorz

    Grzegorz
  10. Witam
    Bardzo fajny poradnik udało mi się uruchomić 8 czujników mimo że Malinke miałem pierwszy raz w rękach. Mam jednak pytanie odnośnie monitoringu temperatury samego Raspberry Pi Zero.

    Napisałeś w poprzedniej odpowiedzi:

    Do Crona dodać taką linijkę */1 * * * * vcgencmd measure_temp | egrep -o '[0-9]*\.[0-9]*’ > /home/pi/supla-rpi-state/rpi-temp.txt
    Oczywiście należy wcześniej utworzyć katalog supla-rpi-state.

    Czy mógłbyś to jaśniej opisać co i gdzie dokładnie dopisać żeby mieć również podgląd temperatury Pi Zero w Supli bo jestem zielony jeśli chodzi o Rpi

    Dzieki

    Yaro
    1. Miło mi, że udało Ci się wraz z pierwszym kontaktem z RPi uruchomić bramkę. Gratuluję.

      1. Tworzymy katalog
      mkdir supla-rpi-state

      2. Wpisujemy polecenie
      crontab -e

      3. Na końcu pliku dodajemy wiersz
      */1 * * * * vcgencmd measure_temp | egrep -o ‘[0-9]*\.[0-9]*’ > /home/pi/supla-rpi-state/rpi-temp.txt

      4. Możemy też w następnej linii dodać polecenie restartujące usługę supla-virtual-device codziennie o godzinie 5:00. Usługa ta przy większej ilości czujników lubi się po kilku dniach zawiecić
      0 5 * * * supervisorctl restart supla-virtual-device

      5. Przechodzimy do katalogu supla-virtual-device i edytujemy plik konfiguracyjny
      cd supla-virtual-device
      nano supla-virtual-device

      Dodajemy w konfiguracji kolejny kanał.
      [CHANNEL_7]
      #RPi-Temperature
      function=TEMPERATURE
      file=/home/pi/supla-rpi-state/rpi-temp.txt

      Na koniec restartujemy nasze RPi poleceniem
      sudo reboot now

      W Supla Cloud powinien pojawić się kolejny kanał z temperaturą naszego Raspberry Pi.

      1. Dziekuje.
        Zrobiłem wszystko według w Supla Cloud pojawił się nowy kanał z temperaturą jednak wyświetla cały czas wartość 0.
        Co może być tego przyczyną?
        Po otwarciu pliku rpi-temp.txt nie było w nim nic. Wpisałem tam przykładową wartość temperatury (10.1) i teraz w Cloud-zie ten kanał pozostał na tej wartości. Natomiast po ponownym otwarciu rpi-temp znów jest pusty.
        w Croni-e poza komentarzami nie było nic wiec na końcu dodałem tylko tą linie z odczytem temperatury.

        Yaro
  11. Wczoraj uruchomiłem taki zestaw tylko na RasPi 4 i działa od strzału.
    Pomyślałem jeszcze żeby Pańską stację pogody dodać do Supla. Założenie takie ze wysyłała by dane do rasbi (tak jak teraz co 6 min) a my mielibyśmy dostęp do tego przez SVD.

    jestem początkowym użytkownikiem raspi i nie wiem czy to sam ogarnę 😉

    1. Z dodawaniem stacji pogody do Supli proponuję się wstrzymać, aż zostanie uruchomiony kanał uniwersalny. Aktualnie nie ma np. kanału dotyczącego nasłonecznienia i trzeba się posiłkować kanałem temperatury. A w nim wyświetlana jest jednostka temperatury.

      1. jasne, poczekamy,
        ale nachwilę obecną zrobiłem na wemosie+BME280 wszystko w obudowie zasilacza takie COŚ ;), siedzi w zewnętrznym gniazdku i wysyła dane do SUPLI – niestey zużywając niepotrzebne waty energii, a stacja z panelem bezczynna, ale myślę, że jak zgłębię tajemnice skryptów w raspberrypi to może (używając bramki SUPLA) uda mi sie zapisywać temp i wilgotoność do pliku tekstowego i dalej do SUPLI.
        Co do nasłonecznienia to można by go wysyłaś osobnym kanałem jako wilgotność i przeliczyć na % – tylko ile to 100% ;).

        pbrys
  12. Witam,
    Nie mogę przejść etapu ssh i wpa_supplicant.conf – wszystko zrobiłem OK. Raspberry nie chce się podłączyć do Wi-fi 2,4. Czy ktoś miał może podobny problem? Z góry dziękuję za odpowiedź.

    Michał
  13. Panie Robercie, bardzo dziękuję za tak fajny blog i szczegółowy opis jak podłączyć Xiaomi LYWSD03MMC do Supla. Nawet osobie, która na co dzień nie ma nic wspólnego z elektroniką udało się wszystko podłączyć (i jaka radość 🙂 ). Ps. Mam pytanie, czy można gdzieś zmienić czas odczytu temperatury, np. żeby była odczytywana raz na godzinę?

    Michał
    1. Dziękuję za miły komentarz 🙂
      Skrypt LYWSD03MMC.py nie przewiduje zmian interwału odpytywania czujników. Aby zrobić odczyt co godzinę, należałoby wyłączyć działanie skryptu jako usługi (SUPERVISOR), komendy odczytujące czujniki umieścić w zadaniach CRON.

  14. Też o tym ostatnio myślałem. U mnie ogólnie pojawił się problem bardzo szybko znikającej baterii w czujnikach. Działają dosłownie 2-3tyg, mimo tego że czujniki nie znajdują się daleko od bramki, oraz nie ma ścian i innych przeszkód. Dla mnie to dyskwalifikuje tą metodę, bo nie chce mi się co chwilę biegać i zmieniać bateryjki. Wystarczyłoby odpytanie raz na 30min i nie podtrzymywanie ciągłego połączenia.

    Łukasz
    1. Odpowiem trochę sam sobie, ale może komuś się przyda.

      Wrzuciłem na czujniki alternatywny soft: https://github.com/pvvx/ATC_MiThermometer
      Wszystko jest bardzo fajnie opisane na powyższym githubie. Ogromną zaletą tego softu jest duża możliwość konfiguracji, szczególnie pod kątem optymalizacji czasu pracy na baterii.

      Czujniki należy skonfigurować aby nadawały tylko w formacie Atc1441 (opis tutaj: https://github.com/JsBergbau/MiTemperature2#atc-mode-usage )

      Następnie zmieniłem sposób odpalania skryptu ./LYWSD03MMC.py żeby czytał czujniki atc, aby to zrobić należy:
      – wykonać prerequisites wg: https://github.com/JsBergbau/MiTemperature2#requirements-for-reading-xiaomi-temperature-and-humidity-sensor-with-atc-firmware
      – ściągnąć plik: https://github.com/JsBergbau/MiTemperature2/blob/master/bluetooth_utils.py i umieścić w tym samym miejscu co LYWSD03MMC.py
      – usunąć z cat /etc/supervisor/conf.d/ wszystkie configi dla mi-th*.conf
      – utworzyć nowy config /etc/supervisor/conf.d/mi-atc.conf z zawartością:
      [program:mi-atc]
      command=python3 ./LYWSD03MMC.py –atc –battery –callback save-to-file.sh
      directory=/home/pi/supla-mi-th
      autostart=true
      autorestart=true
      user=pi

      – zrestartować supervisora

      Po tych krokach w katalogu gdzie wcześniej pojawiały się wpisy czujników sensor_th*.txt zaczną pojawiać się wpisy typu: sensor_A4:C1:38:59:B3:AE.txt itp (każdy sensor będzie miał swój plik z adresem w nazwie).
      Powyższe pliki należy ustawić odpowiednio w supla-virtual-device.cfg i gotowe.

      Łukasz
      1. Na jakim sprzęcie udało Ci się uruchomić o rozwiązanie?
        Ja próbuję na Pi Zero W i napotkałem niestety problem:
        python3 ./LYWSD03MMC.py –atc generuje „illegal instruction”, nic nie pomaga, łącznie z reinstalacją systemu 🙁

        pozdrawiam

        Łukasz S.
  15. Panie Robercie,

    Nawiązując do Supla Virtual Device chciałbym zapytać o możliwość podłączenia (sparowania) inwertera Sofar Solar. Do tej pory mam MEW-01 i oraz Sonoff TH16 na supli lokalnie w kontenerze na Rpi2B jednak chcę mieć odczyty z inwertera. Prośba o pomysł jak to zrobić gdyż tam jest napisany program który wysyła ramkę po MQTT (nie w standardzie supla z tego co widziałem) i chciałbym go mieć w serwerze supli.

    https://github.com/pawelka/sofarsolar_esp_rs485_logger

    rono
  16. Właśnie jestem po skonfigurowaniu całości i musze powiedzieć mega poradnik. Pierwszy raz to robiłem i super. W paru miejscach jedynie trzeba było wrócić do tego co w jaki sposób się robiło wcześniej ale taki laik jak ja sobie nawet z tym poradził. Super poradnik Robercie 😉

    Myxhir
      1. Czy jest jakaś możliwość ze RPI mi sie zablokował? Widzę u siebie że po czasie potrafi mi się rozłączyć z routerem na np 30 min i potem podłącza ponownie. Chciałem jeszcze raz się połączyć przez PUTTY ale po wpisaniu adresu ip jak zawsze urządzenie w ogóle nie reaguje. Mam komunikat timeout i nie da się pingować

        Myxhir
          1. Co do rozłączania to różnie czasami są to patrząc na wykres 3h pomiarów i potem brak na chwile znowu np 40 min pomiarów brak itd. ale jak sprawdzalem status komendą supervisorctl status przez putty to miałem że skrypty działają już np 10 godzin a ostatnią przerwa w połączeniu z Suplą nastąpiła np 5h temu na ok 10-30 min zatem wychodzi na to że RPI działał w tle gadał z czujnikami ale coś się stało i się rozłączył. Kartę SD kupowałem nawet nie najgorszą :/

            myxhir
  17. u mnie był ten sam problem, pusty plik pomimo ze cron dzialal w tle poprawnie. Kazde wpisanie jakiejs wartosci faktycznie sprawialo ze po chwili plik byl czysty bo co minute skrypt zle zapisywal wartosci. Po zglebieniu kilkunastu stron o RPI (bo nie jestem programista przynajmniej nie takiego jezyka) zmienilem polecenie na

    */1 * * * * vcgencmd measure_temp | egrep -o [0-9][0-9].[0-9] > /home/pi/supla-rpi-state/rpi-temp.txt

    i zadzialalo 🙂

    Myxhir
  18. Rozumiem. Ja kompletuje wszystkie elementy a jak jest z tymi bateriami . Jak długo wytrzymują na takim zestawieniu jak Pan przygotował. A o rozpisanie komend myślałem o Łukaszu z forum , który zaproponował to rozwiązanie oczywiście jak by mógł . Bo słabo u mnie z tymi poleceniami ;-). Czytają Pana poradnik myślę że sobie poradzę bo wygląda to łatwo.

    LukiSpajder
  19. Witam, raspberry pi zero 2 WH, dochodzę do momentu wpisania: cd supla-virtual-device
    ./supla-virtual-device
    otrzymując komunikat: -bash: ./supla-virtual-device: No such file or directory
    Proszę o pomoc. Dziękuję

    Beny
  20. Udało uruchomić sie program SVD dzięki koledze z forum supla . Ale teraz mam same kreski w odczycie i taki komunikat w putty

    pi@raspberrypi:~/supla-mi-th $ python3 ./LYWSD03MMC.py –device A4:C1:38:93:BF:3C –round –debounce –name th0 –callback save-to-file.sh
    ———————————————
    MiTemperature2 / ATC Thermometer version 4.0
    ———————————————

    Please read README.md in this folder. Latest version is available at https://github.com/JsBergbau/MiTemperature2#readme
    This file explains very detailed about the usage and covers everything you need to know as user.

    usage: LYWSD03MMC.py [-h] [–device AA:BB:CC:DD:EE:FF] [–battery ] [–count N] [–interface N] [–unreachable-count N] [–mqttconfigfile MQTTCONFIGFILE] [–round]
    [–debounce] [–offset OFFSET] [–TwoPointCalibration] [–calpoint1 CALPOINT1] [–offset1 OFFSET1] [–calpoint2 CALPOINT2] [–offset2 OFFSET2]
    [–callback CALLBACK] [–httpcallback HTTPCALLBACK] [–name NAME] [–skipidentical N] [–influxdb N] [–atc] [–watchdogtimer X]
    [–devicelistfile DEVICELISTFILE] [–onlydevicelist] [–rssi]
    LYWSD03MMC.py: error: unrecognized arguments: –device A4:C1:38:93:BF:3C –round –debounce –name th0 –callback save-to-file.sh

    Co począć w takiej sytuacji ?

    LukiSpajder
  21. Dzień Dobry

    Udało się rozwiązać problem SVD
    cd supla-virtual-device
    ./supla-virtual-device
    otrzymując komunikat: -bash: ./supla-virtual-device: No such file or directory
    pomógł kolega skutacz z forum supli. Należy dopisać w 36 lini plik 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;

    Tu jest krok po kroku. Może komuś się przyda.

    W etapie III. INSTALACJA I KONFIGURACJA SUPLA VIRTUAL DEVICE
    tutaj masz kopie co robiłem w putty przejrzyj sobie i zrób krok po kroku to samo na pewno ruszy

    pi@raspberrypi:~ $ sudo apt-get update
    Hit:1 http://raspbian.raspberrypi.org/raspbian bullseye InRelease
    Hit:2 http://archive.raspberrypi.org/debian bullseye InRelease
    Reading package lists… Done
    pi@raspberrypi:~ $ git clone https://github.com/lukbek/supla-virtual-device.git
    Cloning into 'supla-virtual-device’…
    remote: Enumerating objects: 71, done.
    remote: Counting objects: 100% (71/71), done.
    remote: Compressing objects: 100% (64/64), done.
    remote: Total 71 (delta 38), reused 11 (delta 3), pack-reused 0
    Receiving objects: 100% (71/71), 18.86 KiB | 212.00 KiB/s, done.
    Resolving deltas: 100% (38/38), done.
    pi@raspberrypi:~ $ cd supla-virtual-device
    pi@raspberrypi:~/supla-virtual-device $ ls
    install.sh README.md supla-virtual-device.cfg.sample var
    pi@raspberrypi:~/supla-virtual-device $ ./install.sh
    Getting the sources.
    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:~/supla-virtual-device $ ls
    install.sh README.md src supla-virtual-device.cfg.sample var
    pi@raspberrypi:~/supla-virtual-device $ cd src
    pi@raspberrypi:~/supla-virtual-device/src $ cd supla-dev
    pi@raspberrypi:~/supla-virtual-device/src/supla-dev $ cd src
    pi@raspberrypi:~/supla-virtual-device/src/supla-dev/src $ nano pi_2_mmio.h
    pi@raspberrypi:~/supla-virtual-device/src/supla-dev/src $ cd ..
    pi@raspberrypi:~/supla-virtual-device/src/supla-dev $ cd ..
    pi@raspberrypi:~/supla-virtual-device/src $ cd ..
    pi@raspberrypi:~/supla-virtual-device $ ./install.sh
    Getting the sources.
    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.
    OK!
    SUPLA-VIRTUAL-DEVICE v1.1.2
    Sample configuration has been created for you (supla-virtual-device.cfg)
    Adjust it to your needs before launching.
    pi@raspberrypi:~/supla-virtual-device $

    Resztę rzeczy wykonujemy zgodnie z poradnikiem.

    Powodzenia. Mnie się udało 😉

    LukiSpajder
  22. Dzień dobry,

    Mam pytanie, czy jeśli posiadam QNAP’a I uruchomię tam instancję Linuxa, to czy będę mógł tam zainstalować supla virtual device w celu zczytywania danych z tych termometrow ? Będę wdzięczny za info.

    Bartek
    1. Dzień dobry,

      Po instalacji systemu operacyjnego Raspbian na karcie microSD należy na partycji BOOT utworzyć dwa pliki:
      ssh (plik bez żadnego rozszerzenia, zajmujący 0 KB),
      wpa_supplicant.conf z danymi dostępowymi do naszej sieci Wi-Fi 2.4 GHz

      Proszę sprawdzić, czy na 100% poprawnie wpisał Pan dane dostępowe do własnej sieci Wi-Fi i czy jest to sieć działająca na 2,4 GHz.

      Utworzone pliki przy pierwszym uruchomieniu Raspberry z karty microSD są usuwane, a konfiguracja sieci i odblokowanie SSH są wprowadzone do OS Raspbian.

  23. Dziękuję za wcześniejszą pomoc. Problemem okazał się być automatyczne nadawane rozszerzenie plików .txt
    Napotkałem na kolejny problem.
    Poniżej komunikat:
    pi@raspberrypi:~/supla-virtual-device $ ./supla-virtual-device
    -bash: ./supla-virtual-device: No such file or directory

    Czytając komentarze komuś pojawił podobny problem
    Rozwiązanie:
    Należy dopisać w 36 lini plik 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;

    Proszę o informację jak przejść w to miejsce. Nie ukrywam że jestem laikiem w tych sprawach.

    Łukasz
    1. Panie Robercie z wcześniejszym problemem udało mi się poradzić. Pozostałe kroki były nie sprawiły problemu. Jednak gdy wpisuję ostatnią komendę:
      pi@raspberrypi:~/supla-mi-th $ supervisorctl status
      wyświetla sie:
      unix:///var/run/supervisor.sock no such file
      Bramka i czujniki mają status rozłączony. (nie działają w tle).
      Proszę o pomoc.

      Łukasz
  24. Panie Robercie z wcześniejszym problemem udało mi się poradzić. Pozostałe kroki były nie sprawiły problemu. Jednak gdy wpisuję ostatnią komendę:
    pi@raspberrypi:~/supla-mi-th $ supervisorctl status
    wyświetla sie:
    unix:///var/run/supervisor.sock no such file
    Bramka i czujniki mają status rozłączony. (nie działają w tle).
    Proszę o pomoc.

    Łukasz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *