BLE Supla Gateway - wyzwanie dla programistów

djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

pt lut 28, 2020 9:30 am

Czy ktoś z Was analizował ten skrypt (LYWSD03MMC.py). Bo według mnie coś jest w nim nie tak. Jak odblokować poziom debugowania
level=logging.DEBUG
to na ekranie wyświetlane są różne informacje, np takie, że wartość zmierzona temperatury wynosi np. 17.3 C, a mimo to wysyłana jest wciąż wartość wcześniejsza np. 17.2 C. Daje to w efekcie wrażenie, że temperatura się nie zmienia albo brak jest łączności z czujnikiem (co nie jest prawdą).
Linia 77 ma postać:
params = args.name + " " + str(mea.temperature) + " " + str(mea.humidity) + " " + str(mea.voltage)
Wysyłana jest wartość mea.temperature (dotyczy to zresztą wszystkich parametrów), tylko nie widzę aby ta zmienna była za każdym razem poprawnie aktualizowana.
Awatar użytkownika
Robert Błaszczak
Posty: 911
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

pt lut 28, 2020 10:31 am

Nie ma mnie teraz w domu, więc nie mam jak sprawdzić, ale zerknij co będzie jak usuniesz parametr --debounce.
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
Beku
Posty: 331
Rejestracja: wt lis 06, 2018 1:49 pm

pt lut 28, 2020 10:34 am

djack2017 pisze:
pt lut 28, 2020 9:30 am
Czy ktoś z Was analizował ten skrypt (LYWSD03MMC.py). Bo według mnie coś jest w nim nie tak. Jak odblokować poziom debugowania
level=logging.DEBUG
to na ekranie wyświetlane są różne informacje, np takie, że wartość zmierzona temperatury wynosi np. 17.3 C, a mimo to wysyłana jest wciąż wartość wcześniejsza np. 17.2 C. Daje to w efekcie wrażenie, że temperatura się nie zmienia albo brak jest łączności z czujnikiem (co nie jest prawdą).
Linia 77 ma postać:
params = args.name + " " + str(mea.temperature) + " " + str(mea.humidity) + " " + str(mea.voltage)
Wysyłana jest wartość mea.temperature (dotyczy to zresztą wszystkich parametrów), tylko nie widzę aby ta zmienna była za każdym razem poprawnie aktualizowana.

Możesz zapytać autora, ale po pobieżnym przejrzeniu IMO jest ok. Po prostu wartość tej temperatury jest aktualizowana w osobnym "zdarzeniu" które następuje w momencie przesłania przez czujnik danych. To co jest przesyłane na ekran to wartość tej temperatury pobrana z listy (FIFO) nie musi być ona w danym momencie taka sama odczytana z czujnika w metodzie handleNotification która dopiero zostanie do tej listy dodana. Widzę że tam zastosowana jest popleft czyli metoda FIFO.

handleNotification dodaje do listy odczyty metodą append a thread_SendingData czyta je stosując popleft czyli FIFO.
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

pt lut 28, 2020 11:08 am

Beku pisze:
pt lut 28, 2020 10:34 am
Widzę że tam zastosowana jest popleft czyli metoda FIFO.
handleNotification dodaje do listy odczyty metodą append a thread_SendingData czyta je stosując popleft czyli FIFO.
Fakt. Teraz to jest jasne. Dzięki.
Awatar użytkownika
fracz
Posty: 1812
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Rybna

pt lut 28, 2020 5:16 pm

U mnie czujnik działał cały luty i teraz nowa wersja skryptu pokazuje

Kod: Zaznacz cały

Battery voltage: 2.693
Battery level: 59
Więc jak teraz faktycznie się poprawi to będzie dobrze ;-)

A dziś przyszły 4 kolejne, więc po weekendzie będzie 5 sztuk działających.
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

pt lut 28, 2020 7:06 pm

Beku pisze:
pt lut 28, 2020 10:34 am
Widzę że tam zastosowana jest popleft czyli metoda FIFO.
handleNotification dodaje do listy odczyty metodą append a thread_SendingData czyta je stosując popleft czyli FIFO.
U mnie to FIFO działało kiepawo. Szybciej się napełniało niż się opróżniało. W efekcie dane były dalece nieaktualne.
Jednym prostym ruchem zlikwidowałem to FIFO i teraz mam w końcu właściwe dane na bieżąco.
Awatar użytkownika
Robert Błaszczak
Posty: 911
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

pt lut 28, 2020 7:09 pm

Wątek viewtopic.php?p=63759#p63759 został zamknięty, dlatego w tym miejscu chciałem podziękować Wojtkowi (@fracz) za pomysł na supla-filesensors oraz Łukaszowi (@Beku) za dalszy rozwój tego projektu w postaci supla-virtual-device.

U mnie od wczoraj działają bez żadnych problemów 4 szt. LYWSD03MMC :) .

Dzięki Panowie za kawał świetnej roboty.
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
Beku
Posty: 331
Rejestracja: wt lis 06, 2018 1:49 pm

pt lut 28, 2020 7:13 pm

Ja 5 działających i 6 zastanawiam się gdzie przyczepić ... jeszcze mam 2 okrągłe do podpięcia 😄 masakra ...

Obrazek
Załączniki
5298FEC8-D6B1-41F2-94D6-4970B5036EE2.png
5298FEC8-D6B1-41F2-94D6-4970B5036EE2.png (215.74 KiB) Przejrzano 220 razy
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

sob lut 29, 2020 3:32 pm

Robert Błaszczak pisze:
pt lut 28, 2020 7:09 pm
U mnie od wczoraj działają bez żadnych problemów 4 szt. LYWSD03MMC :) .
Czy robiłeś może takie doświadczenie:
podgrzej trochę czujnik tak aby wskazanie na nim dość szybko wzrosło o jakieś np. 2 stopnie i sprawdź czy w pliku tekstowym,
do którego skrypt zapisuje wyniki masz na bieżąco (z dokładnością do kilkunastu sekund) cały czas takie same wartości jak na wyświetlaczu czujnika
Awatar użytkownika
wojtas567
Posty: 1954
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

sob lut 29, 2020 4:21 pm

Te moduły wyświetlają parametry na bieżąco, a wysyłają po BT co jakiś czas, zainstaluj sobie aplikację mijia w sklepie play są dwie obie są dosyć ciekawe mijiaTemp podaje nawet czas od ostatniej aktualizacji.
Pozdrawiam
Wojtek
ODPOWIEDZ