Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Odłączony PMS - nie działa wysyłanie, usypianie ... #43

Open
skwaruch opened this issue May 3, 2019 · 15 comments
Open

Odłączony PMS - nie działa wysyłanie, usypianie ... #43

skwaruch opened this issue May 3, 2019 · 15 comments
Labels

Comments

@skwaruch
Copy link

skwaruch commented May 3, 2019

Gdy odłączy się PMS urządzenie nie wysyła danych (THINGSPEAK - te sprawdzałem), urządzenie się nie usypia.
W którym miejscu w kodzie jest taka funkcjonalność zapisana.

@bfaliszek
Copy link
Member

Jaka wersja oprogramowania?
Co rozumiesz przez odłączy?

Wysyłanie do Thingspeak jest tutaj -

Smogomierz/Smogomierz.ino

Lines 511 to 516 in c786655

if (THINGSPEAK_ON) {
sendDataToThingSpeak(currentTemperature, currentPressure, currentHumidity, averagePM1, averagePM25, averagePM4, averagePM10);
if (DEBUG) {
Serial.println("Sending measurement data to the Thingspeak service!\n");
}
}

sam kod odpowiedzialny za Thingspeak tu - https://github.com/hackerspace-silesia/Smogomierz/blob/master/src/thing_speak.cpp
Jeśli w konfiguracji mamy wybrane brak miernika PM2.5/PM10 to nie wysyła danych danych PM2.5 i PM10. Przy wybranym ale odłączonym może nie wysyłać również(choć nie wiem, nie sprawdzałem), ale to prawidłowe zachowanie. Po co wysyłać dane PM skoro się ich nie mierzy.

@skwaruch
Copy link
Author

skwaruch commented May 3, 2019

Wersja oczywiście aktualna.
Padło zasilanie czujnika (np. wyrwał się kabelek).
W konfiguracji wybrane tak by działało jak jest wszystko podłączone.
Zachowanie nie prawidłowe bo po awarii jednego z czujników zapis innych powinien być i usypianie raczej też.

Z przedstawionego fragmentu kodu raczej nie wynika brak usypiania i wysyłania danych, gdy czujnik ma awarię.

@bfaliszek
Copy link
Member

Po weekendzie to sprawdzę. Nie ma w kodzie sprawdzania poprawności danych z Miernika PM2.5/10. Nie da się za bardzo tego zrobić, bo tutaj albo dostaje się dane z UART albo nie. Gdy ich nie ma to wartości PM wynoszą 0 i nie są zmieniane. Takie powinny być wysyłane do serwisów zewnętrznych przy włączonym w Konfiguracji, ale nie podłączonym mierniku PM.
Sprawdzanie danych jest tylko dla mierników temp/humi/press tutaj jeśli miernik jest włączony, ale dane są błędne lub ich nie ma(albo gdy jest źle podłączony), to nie są wysyłane.

@skwaruch
Copy link
Author

skwaruch commented May 4, 2019

Nie ma to nie ma, zbędna rzecz, pytanie dlaczego nie działa jak nie ma czujnika.
Pytałem bo nie widziałem jakiegoś sprawdzania czujnika.

@bfaliszek
Copy link
Member

bfaliszek commented May 7, 2019

Problem nie leży w wysyłaniu, tylko pobieraniu danych z PMS. W tym miejscu się zatrzymuje przy wypięciu miernika PM(odpinam GND od PMS):

Smogomierz/Smogomierz.ino

Lines 748 to 750 in c786655

pmMeasurements[iPM][0] = int(calib * data.PM_AE_UG_1_0);
pmMeasurements[iPM][1] = int(calib * data.PM_AE_UG_2_5);
pmMeasurements[iPM][2] = int(calib * data.PM_AE_UG_10_0);

Po ponownym podłączeniu idzie dalej. Dlatego nie wysyła danych, bo "zawiesza" się na pobieraniu danych. Przy czym np. interfejs www w tym czasie działa. Pobiera dane z BME280 itp. również.

@skwaruch
Copy link
Author

skwaruch commented May 7, 2019

Dlaczego www działa a wysyłanie i usypianie nie?
Jest możliwe że na wersji 2.4.3 się nie wieszało?

@bfaliszek
Copy link
Member

nie, to kwestia biblioteki do obsługi PMS. Od początku jest taka sama. Nie ma w niej możliwości sprawdzenia czy odbierane dane są poprawne. W przypadku wypięcia kabli dane są niepoprawne i odczyt się zawiesza. W zasadzie to nawet nie tyle zawiesza co pauzuje i czeka aż znowu będą poprawne dane. Możesz podłączyć kabel po kilku minutach i wtedy dokończy serię pomiarów. Muszę albo zmienić bibliotekę albo pomyśleć jak to rozwiązać, żeby wykrywać odłączenie przewodów.

@skwaruch
Copy link
Author

Mam mały problem. Jak kompiluje u siebie program baz zmian oczywiście to smogomierz się łączy na 1s i rozłącza i tak w kółko. Jak wgram bin`a ze strony to wszystko jest ok.
Zmieniałam kompa i na nowo ściągałem arduino może czegoś mi brakuje lub coś za bardzo zaktualizowałem lub za mało. Macie może jakiś pomysł?

@bfaliszek
Copy link
Member

Sprawdź z biblioteką płytek esp2866 w wersji 2.5.0. Kilka dni temu na 2.5.1 nie chciało mi się zupełnie skompilować. W wolnej chwili będę to musiał jeszcze raz sprawdzić. Sprawdź też czy masz ustawiony 1MB dla SPIFFS, żeby ESP8266 miało gdzie zapisywać ustawienia.

@skwaruch
Copy link
Author

Dokładnie 5 min temu na starym kompie zaktualizowałem do 2.5.1 i to samo (nie działa). Chyba coś tam zepsuli.
U mnie się niby kompilowało, ale potem smogomierz nie działa.

@bfaliszek
Copy link
Member

@skwaruch właśnie miałem sprawdzić czy kod się kompiluje i okazało się, że jest już nowa biblioteka płytek 2.5.2 i na niej wszystko działa. Chyba to 2.5.1 miało jakieś błędy. https://github.com/esp8266/Arduino/releases

@bfaliszek
Copy link
Member

Tylko po wgraniu kodu skompilowanego na 2.5.2 Smogomierz wpada w jakiś dziwny loop i ciągle się resetuje. Zmienili trochę sposób zapisu danych w pamięci SPIFFS i to powoduje problem. Na 2.5.0 jest jeszcze ok. Żeby działało na 2.5.2 trzeba będzie dodać parę poprawek w kodzie.

@skwaruch
Copy link
Author

Czym robiliście te schematy elektryczne?

@bfaliszek
Copy link
Member

http://fritzing.org - chyba najbardziej przyjazne schematy dla osób nietechnicznych

@skwaruch
Copy link
Author

skwaruch commented Jun 4, 2019

Dodałem swoją funkcję do wyliczania napięcia i zastawiałem się pół dnia dlaczego nie działa mi ja jest DEEP_SLEEP. W końcu wpadłem na to że beznadziejnie jest napisana takeSleepPMMeasurements(). Właściwie jak jest załączony DEEP_SLEEP to pętla główna programu nie działa :/

@bfaliszek bfaliszek added the bug label Aug 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants