Coder Social home page Coder Social logo

hackerspace-silesia / smogomierz Goto Github PK

View Code? Open in Web Editor NEW
121.0 32.0 39.0 86.08 MB

Smogly(formerly: Smogomierz) - simple and cheap PM 2.5 and PM10 sensor based on NodeMCU (ESP8266) or ESP32

License: Apache License 2.0

C++ 61.39% C 38.61%
smog esp8266 thingspeak bme280 pms7003 sds011 hpma115s0 htu21d dht22 pollution

smogomierz's Introduction

Smogly Build Status

Smogly2

Smogly to niekomercyjny projekt łatwego w budowie i taniego miernika zanieczyszczeń powietrza. Projekt jest w pełni otwarty i łatwy w modyfikowaniu.

Smogly nie wysyła Twoich danych do żadnego serwisu, jeśli nie wyrazisz na to zgody. Dane pomiarowe z Twojego miernika należą do Ciebie i to od Ciebie zależy co z nimi zrobisz i komu je udostępnisz. Jeśli tylko Ty chcesz mieć dostęp do swoich danych, to masz do tego prawo. Jeśli jednak chcesz się nimi podzielić, to w karcie Konfiguracji panelu Smogomierza masz możliwość wyboru kilku serwisów, do których możesz wysłać dane. Wśród nich znajdziesz między innymi serwis Sensor.Community, aqi.eco, ThingSpeak, AirMonitor(ESP32), czy bazę danych InfluxDB. Smogomierz posiada również wtyczkę Homebridge.

Smogly po pierwszym uruchomieniu tworzy własną sieć WiFi o nazwie "Smogly-deviceName"(np. "Smogly-328017"). Po podłączeniu się z nią, będziesz miał możliwość skonfigurowania połączenia WiFi z własną siecią domową. Z listy dostępnych sieci wybierz swoją własną i podaj do niej hasło. Smogly zapisze dane w swojej pamięci wewnętrznej i ponownie się uruchomienie. Dalszą konfigurację wykonasz już przez przeglądarkę internetową wchodząc pod adres Smogly-deviceName.local lub IP_Smogly(do sprawdzenia na routerze).

Stworzyliśmy również aplikację dla systemów Windows, macOS oraz Linux), która umożliwia w łatwy sposób wgranie oprogramowania oraz znajdowanie adresu IP Twojego miernika! Możesz ją pobrać ze strony github.com/hackerspace-silesia/Smogomierz-Flashing-Tool.

Smogly1

Darowizny

Projekt Smogly jest rozwijany od 2017 roku. Wszystko w ramach projektu Smogly robione jest za darmo, w ramach wolontariatu. Jeśli chcesz wesprzeć rozwój projektu, to możesz przekazać darowiznę na Stowarzyszenie Hackerspace Silesia. Najprościej można to zrobić przez specjalny formularz znajdujący się na stronie: hs-silesia.pl/smogomierz.

Instrukcje

  1. Instrukcja zlutowania wymaganych elementów

  2. Instrukcja przygotowania obudowy oraz podłączenia elektroniki

  3. Instrukcja instalacji/aktualizacji oprogramowania z pliku .bin

  4. Konfiguracja i ustawienia obsługi zewnętrznych serwisów(Sensor.Community, InfluxDB itd.)

Parts / Potrzebne części

Do zbudowania własnego Smogly wymagana jest lutownica(wraz z cyną) oraz pistolet do kleju na gorąco, wiertarka, nóż do tapet i śrubokręt do skręcenia obudowy oraz części z poniższej listy.

Lista potrzebnych części

Gotowe zestawy części potrzebnych do zbudowania własnego Smogly, dostępne są również w sklepie Botland: Zestaw DIY do budowy miernika smogu

Smogly PCB

Jeśli ktoś nie lubi podpinać wszystkiego kabelkami, może skorzystać z gotowych projektów płytek PCB. Pozwalają one na połączenie wszystkich elementów. Dostępne są wersja dla ESP8266 oraz ESP32. Projekt taki(.zip z plikami gerber ESP8266/ESP32) wysyłamy do producenta PCB(np. JLCPCB) i po kilkunastu dniach otrzymujemy gotowe PCB, do którego przylutowujemy piny lub poszczególne elemeny Smogly.

Zaawansowane

Instrukcja instalacji oprogramowania wymaganego do kompilacji oprogramowania z repozytorium

Roadmap

Lista z głównymi zmianami planowanymi w kolejnych wersjach oprogramowania znajduje się TUTAJ. Poza wymienionymi w linkowanym arkuszu funkcjami, przy każdej aktualizacji staram się uaktualnić wsyzstkie wykorzystywane biblioteki i eliminować znalezione błędy.

smogomierz's People

Contributors

bartlomiejb avatar bfaliszek avatar firemark avatar galuszkak avatar krystianwit avatar lukaszo avatar simet avatar theundefined avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smogomierz's Issues

Niezabezpieczony AP dostępny

Na moim ESP8266 wgrałem wersję 2.7.1 i po podłączeniu do lokalnej sieci, sam chip po pewnym czasie (po którymś podłączeniu do prądu) zaczął wystawiać Access Point o nazwie "ESP_****", niezabezpieczony, po podłączeniu każdy ma możliwość dostępu do danych miernika oraz prawdopodobnie ma dostęp do sieci lokalnej (!) oraz naszego łącza.

Naprawiłem to dodając linię:
WiFi.mode(WIFI_STA);
bezpośrednio po każdym wywołaniu WiFi.begin
Po naprawie problem przestał występować, nawet po usunięciu dodanych linii. Nie jestem w stanie zreprodukować więcej błędu.

Tutaj opisany jest podobny przypadek: https://forum.arduino.cc/index.php?topic=501263.0
Myślę, że warto zabezpieczyć ten przypadek, kto wie ile osób nawet nie wie, że udostępnia internet postronnym ;)

Panel logowania

Przydałoby się jakieś zabezpieczenie zakładki konfiguracji oraz aktualizacji. Teraz nawet w sieci lokalnej trochę mieszane uczucia czy ktoś ci na palę nie pozmienia konfiguracji a co dopiero po przekierowaniu portów z zewnątrz.

Stabilność sprzętu - zawieszony smogomierz

Cześć

Zauważyłem problem ze smogomierzem. Zawiesza się. Rzadko udaje mi się utrzymać go więcej niż dobę w działaniu. Czy ktoś spotkał podobne problemy? Może dobrze byłoby go softem restartować raz na jakiś czas?

Integracja z Firebase

Zrobiłem sobie integrację smogomierza do bazy Firebase. To rozwiązanie jest fajne bo jest za dramo, jest stosunkowo proste i daje dużo możliwości.

Dzięki firebase możecie hostować duże zbiory danych ze smogomierzy i hostować stronę klienta, która te dane potem pokaże. Całość na serwerach google a nie na localhostach.

Klienta buduje się w Java Script i to już mam.

W tej chwili mam pośrednika, który cyklicznie łączy się ze smogomierzem i zasysa dane po API. Chciałbym to pominąć.

Pytanie zasadnicze. Czy na tym module wifi da się uruchomić node.js? Jeśli nie to czy komuś chciałoby się zaimplementować moduł do firebase w c?
https://firebase.google.com/docs/database/cpp/start

Pomiar napięcia zasilania Smogomierza

Witam.
Zmajstrowałem Smgomierza zgodnie z opisem.
Wszystko działa wyśmienicie.
Ja swoją wersję zasilam niezależnie z ogniw 3x18650 o łącznej pojemności około 8000mAh. Jednocześnie wykorzystałem do doładowania ich dwa niewielkie panele fotowolaticzne o napięciu do 6V- niestety nie potrafię określić ich mocy.
Moje pytanie/propozycja brzmi: Czy byłaby możliwość dopisania funkcji pomiaru napięcia akumulatorów, i wysyłania na przykład do serwisów np http://thingspeak.com, lub żeby było widoczne na głównej stronie z pomiarami Smogomierza?
Tomek

Precyzja czujnika BME280 i wyświetlacz

Hej,

W specyfikacji urządzenia widzę, że precyzja czujnika BME280:
Temperature: +-1°C
Humidity: +-3%
Pressure: +-1Pa

Mój czujnik zapewne źle wyświetla temperature. Obecnie w pokoju mam obok siebie 3 czujniki.

BME280: 21.07 stopni | 1015.73 hPa
Xiaomi Aquara: 20.23 stopnia | 988.85 hPa
Xiaomi: 20.15 stopnia

Jestem w stanie jakos skorygować ten błąd?

Jak chodzi o czujnik PM2.5 to wyniki są bardzo podobne do oczyszczacza Xiaomi AP 2s.

Druga sprawa to podłączenie wyświetacza do projektu - mogę prosić o wskazówkę jak się za to zabrać?

Zaokrąglanie wartości

Cześć.
Proponuję aby dodać możliwość zaokrąglania danych wysyłanych do bazy danych czy też innych serwisów.
Stosowna opcja mogłaby znaleźć się w menu konfiguracyjnym gdzie do wybory mielibyśmy możliwość wysyłania danych w formie liczby całkowitej, zaokrąglonej co 0,5 lub dokładnych pomiarów.

Fajnie, że czujniki potrafią mierzyć z taką dokładnością ale w większości przypadków aż tak dokładny pomiar nie jest wymagany.

Problemy z czujnikiem PM7003

Witam.

Wydaje mi się, że mam jakieś problemy z moim czujnikiem albo integracją z nim.
Otóż raz na jakieś 24 godziny czujnik zaczyna wysyłać wartości -1.

Screenshot 2019-10-17 at 14 53 35

Screenshot 2019-10-17 at 14 59 38

Występowanie wygląda zupełnie losowo. Mogę spokojnie podpiąć się do interfejsu WWW ale i tam widzę jedynie wartości -1.
Jedyne co wtedy pomaga to reset smogomierza.
A jednak nie. Nie ruszyłem smogomierza tym razem, po prostu wszedłem na stronę smogomierza i pomimo tego, że widziałem na początku wartości -1 to po 3 minutach czujnik się obudził i zaczął pokazywać dobre wartości. Hmm

Spotkał się ktoś wcześniej z takim problemem?

Sensirion SPS30

Cześć

wpadł mi w ręce czujnik PM2.5 PM4 i PM10 Sesiriona SPS30, czy istnieje opcja, żeby go jakoś podłączyć do naszego Smogomierza?

Wyliczanie punktu rosy

Jakie jest źródło wzoru wyliczającego punkt rosy w "smogomierz"?
(BMESensor.temperature - ((100 - BMESensor.humidity) / 5));
Ten wzór odpowiada za wyliczanie punktu rosy?

Konfiguracja źródeł.

W jaki sposób należy skonfigurować (/sparametryzować) udostępnione źródła aby otrzymać binarkę zgodną z wersją: "Smogomierz_2.4.9_PMS-SparkFunBME280" ?

Integracja z nettemp - uniwersalne MQTT

Witam, czy istnieje możliwość dopisania w kodzie smogomierza funkcji wysyłających pomiary do Nettempa (www.nettemp.tk)? Można to zrobić za pomocą prostego linku http zawierającego odpowiednio sformatowane pomiary lub za pomoca mqtt pisząc na odpowiedni topic (nie znalazłem ustawień topicu mqtt w smogomierzu). Czy możemy liczyć na pomoc ?

Wsparcie dla GSM/GPRS

Czy jest szansa na rozszerzenie projektu o pakietową transmisję danych? Byłoby to bardzo przydatne w miejscach gdzie nie ma wifi, a jest zanieczyszczone powietrze :). Np przy użyciu modułu SIM800 / SIM900 / SIM908 / A6 / SIM5320 / SIM5360 / SIM7100 ale to bardzo luźne propozycje.

Nowy interfejs

Trochę mi zeszło ale pierwsza wersja (a w zasadzie to już kolejna miniwersja) już jest i jakoś nawet działa. Choć czasami nie wszystkie tłumaczenia ładują się prawidłowo. Czasami zostają 2-3 nieprzetłumaczone opcji w {}. Czasami też strona konfiguracyjna nie chce się załadować w ogóle.

Zmiany:

  • FW oparte na wersji: 2.6.2
  • Całość oparta jest o framework Bootstrap w wersji 4
  • Strona konfiguracyjna ma "stary wygląd" - nowy styl powodował problemy z generowaniem strony
  • Strona z pomiarami ma nowy wygląd. Docelowo cały interfejs będzie miał taki styl
  • Zwiększono wysokość wykresów przez co są teraz bardziej czytelne

Do zrobienia:

  • Przystosowanie strony konfiguracyjnej oraz strony aktualizacji.
  • Poprawki w tłumaczeniu

Gotowe firmware:
Smogomierz_2.6.2.UI_PMS_build_28.03.2019.bin: https://drive.google.com/open?id=1kArTuYEnVG-kT5URhXMOpUSvrYy1aMd0

Mocno zaniżone wartości - korekta pomiarów temperatury

Mam problem z mocno zaniżonymi wartościami PM oraz zawyżonymi TEMP

https://thingspeak.com/channels/671870

Chciałbym widzieć jak najbardziej zbliżone wartości do tego co faktycznie dzieje się za oknem w danej godzinie, bo mi się to nie pokrywa z airly chociażby...

Jakie powinny być ustawienia ( pomiar co 10 min i uśredniaj 10 ostatnich ) ?

W nocy gdzie norma potrafi być przekroczona 5x u mnie jest luzik x)

Powiadomianie o zanieczyszczeniu.

Chciałbym otrzymywać powiadomienia o zanieczyszczeniu z mojego smogomierza. Znacie może jakieś sposoby darmowe? Czy AirMonitor ma jakąś aplikację na androida z powiadomieniami? Czy może sobie mail`a wysyłać?

Integracja poprzez Webhook

Prosta integracja Smogomierza na dedykowany url byłaby poprzez zastosowanie Webhook.
Wysłane tak dane w realtime mogą być w dowolny sposób analizowane, monitorowane i obrabiane.
Jest wiele możliwości postawienia rozwiązania na webhook i też sporo możliwości łatwych automatyzacji z takiego źródła.

Próbował ktoś webhook? jak możnaby to najłatwiej zrealizować ?

Integracja z AZURE IoT Hub

Może ktoś już próbował integrować z AZURE IoT?
Zaczynam dopiero projekt i widzę, że są biblioteki do AZURE.

Oprogramowanie Smogomierza które?

Hej! Pytanie może głupie ale nie mogę znaleść, są różne wersje aktualnego oprogramowania do smogomierza. Czym one się różnią?

Smogomierz_2.4.9_HPMA11550_build_19.05_3.01.2019.bin
Smogomierz_2.4.9_PMS-SparkFunBME280_build_19.05_3.01.2019.bin
Smogomierz_2.4.9_PMS_build_19.05_3.01.2019.bin
Smogomierz_2.4.9_SDS011_build_19.05_3.01.2019.bin

changing chipID may cause collision with other sensors on Luftdaten.info

At the moment Luftdaten.info doesn't accept regsitrations for devices with this firmware.
The possibility to change the chipID may lead to collisions with other sensors (not only for Luftdaten.info).
Please contact me for more infos (we had a collsion with the third registration of such a device).
You could change the device prefix in "X-Sensor" (src/luftdaten.cpp) from esp8266 to smogomierz . Users then need to send "smogomierz-"+chipID as the chipID at registration. So collisions may only affect users of this firmware.

Problem z wysyłką danych do mapa.airmonitor.pl

Witam, urządzenie nie wysyła danych do serwisu, nie wiem w czym problem. W serwisie aitmonitor twierdzą, że jeśli dane geo w urządzeniu i formularzu są identyczne to mapa automatycznie powinna po ok. 3 godzinach wyświetlać informacje.
Może źle podaję dane? Smogomierz przyjmuje dane do 6 miejsca po przecinku w formacie np. "51,092400" a formularz airmonitor do czwartego miejsca z kropką zamiast przecinka "51.0924".
Jak zweryfikować czy urządzenie wysyła dane tak jak powinno?

Możliwość zmiany I2C na dowolne piny

mam propozycję, jak pisałem wcześniej moja płytka ma magistralę I2C tylko na pinach 0,2. Ty zaś domyślnie używasz go na 5,4. Nie mogę przez to, aktualizować płytki plikiem bin tylko muszę to robić ręcznie kompilować co powoduje problemy wiadomego typu :) czy mógłbyś dodać możliwość skonfigurowania pinów na jakich używane są czujniki ?

Smogomierz nie podaje danych z BME280 cd.

Mam czujnik BME280 wilgotności temperatury oraz ciśnienia i podłączony mam 4 kabelkami z wykorzystaniem SCL i SDA.

Zgodnie z rekomendacją wdo sprawdzenia adresu BME280 wykorzystałem kod https://playground.arduino.cc/Main/I2cScanner i zmieniłem Serial.begin(9600); na Serial.begin(115200);

Zmieniłem na nowy zarówno kontroler NodeMCU v3 + moduł WiFi ESP8266 jak i również czujnik BME280. Wszystko połączone jest zgodnie ze schematem i opisem.

Nie wiem co może być przyczyną tego problemu i proszę o pomoc, bo chwilowo wyczerpały mi się pomysły.

20:16:21.928 -> Scanning...
20:16:21.928 -> Unknown error at address 0x01
20:16:21.928 -> Unknown error at address 0x02
20:16:21.928 -> Unknown error at address 0x03
20:16:21.962 -> Unknown error at address 0x04
20:16:21.962 -> Unknown error at address 0x05
20:16:21.962 -> Unknown error at address 0x06
20:16:21.962 -> Unknown error at address 0x07
20:16:21.962 -> Unknown error at address 0x08
20:16:21.962 -> Unknown error at address 0x09
20:16:21.962 -> Unknown error at address 0x0A
20:16:21.962 -> Unknown error at address 0x0B
20:16:21.962 -> Unknown error at address 0x0C
20:16:21.962 -> Unknown error at address 0x0D
20:16:21.962 -> Unknown error at address 0x0E
20:16:21.962 -> Unknown error at address 0x0F
20:16:21.962 -> Unknown error at address 0x10
20:16:21.995 -> Unknown error at address 0x11
20:16:21.995 -> Unknown error at address 0x12
20:16:21.995 -> Unknown error at address 0x13
20:16:21.995 -> Unknown error at address 0x14
20:16:21.995 -> Unknown error at address 0x15
20:16:21.995 -> Unknown error at address 0x16
20:16:21.995 -> Unknown error at address 0x17
20:16:21.995 -> Unknown error at address 0x18
20:16:21.995 -> Unknown error at address 0x19
20:16:21.995 -> Unknown error at address 0x1A
20:16:21.995 -> Unknown error at address 0x1B
20:16:21.995 -> Unknown error at address 0x1C
20:16:22.029 -> Unknown error at address 0x1D
20:16:22.029 -> Unknown error at address 0x1E
20:16:22.029 -> Unknown error at address 0x1F
20:16:22.029 -> Unknown error at address 0x20
20:16:22.029 -> Unknown error at address 0x21
20:16:22.029 -> Unknown error at address 0x22
20:16:22.029 -> Unknown error at address 0x23
20:16:22.029 -> Unknown error at address 0x24
20:16:22.029 -> Unknown error at address 0x25
20:16:22.029 -> Unknown error at address 0x26
20:16:22.029 -> Unknown error at address 0x27
20:16:22.029 -> Unknown error at address 0x28
20:16:22.063 -> Unknown error at address 0x29
20:16:22.063 -> Unknown error at address 0x2A
20:16:22.063 -> Unknown error at address 0x2B
20:16:22.063 -> Unknown error at address 0x2C
20:16:22.063 -> Unknown error at address 0x2D
20:16:22.063 -> Unknown error at address 0x2E
20:16:22.063 -> Unknown error at address 0x2F
20:16:22.063 -> Unknown error at address 0x30
20:16:22.063 -> Unknown error at address 0x31
20:16:22.063 -> Unknown error at address 0x32
20:16:22.063 -> Unknown error at address 0x33
20:16:22.063 -> Unknown error at address 0x34
20:16:22.063 -> Unknown error at address 0x35
20:16:22.097 -> Unknown error at address 0x36
20:16:22.097 -> Unknown error at address 0x37
20:16:22.097 -> Unknown error at address 0x38
20:16:22.097 -> Unknown error at address 0x39
20:16:22.097 -> Unknown error at address 0x3A
20:16:22.097 -> Unknown error at address 0x3B
20:16:22.097 -> Unknown error at address 0x3C
20:16:22.097 -> Unknown error at address 0x3D
20:16:22.097 -> Unknown error at address 0x3E
20:16:22.097 -> Unknown error at address 0x3F
20:16:22.097 -> Unknown error at address 0x40
20:16:22.097 -> Unknown error at address 0x41
20:16:22.130 -> Unknown error at address 0x42
20:16:22.130 -> Unknown error at address 0x43
20:16:22.130 -> Unknown error at address 0x44
20:16:22.130 -> Unknown error at address 0x45
20:16:22.130 -> Unknown error at address 0x46
20:16:22.130 -> Unknown error at address 0x47
20:16:22.130 -> Unknown error at address 0x48
20:16:22.130 -> Unknown error at address 0x49
20:16:22.130 -> Unknown error at address 0x4A
20:16:22.130 -> Unknown error at address 0x4B
20:16:22.130 -> Unknown error at address 0x4C
20:16:22.130 -> Unknown error at address 0x4D
20:16:22.130 -> Unknown error at address 0x4E
20:16:22.130 -> Unknown error at address 0x4F
20:16:22.164 -> Unknown error at address 0x50
20:16:22.164 -> Unknown error at address 0x51
20:16:22.164 -> Unknown error at address 0x52
20:16:22.164 -> Unknown error at address 0x53
20:16:22.164 -> Unknown error at address 0x54
20:16:22.164 -> Unknown error at address 0x55
20:16:22.164 -> Unknown error at address 0x56
20:16:22.164 -> Unknown error at address 0x57
20:16:22.164 -> Unknown error at address 0x58
20:16:22.164 -> Unknown error at address 0x59
20:16:22.164 -> Unknown error at address 0x5A
20:16:22.164 -> Unknown error at address 0x5B
20:16:22.198 -> Unknown error at address 0x5C
20:16:22.198 -> Unknown error at address 0x5D
20:16:22.198 -> Unknown error at address 0x5E
20:16:22.198 -> Unknown error at address 0x5F
20:16:22.198 -> Unknown error at address 0x60
20:16:22.198 -> Unknown error at address 0x61
20:16:22.198 -> Unknown error at address 0x62
20:16:22.198 -> Unknown error at address 0x63
20:16:22.198 -> Unknown error at address 0x64
20:16:22.198 -> Unknown error at address 0x65
20:16:22.198 -> Unknown error at address 0x66
20:16:22.198 -> Unknown error at address 0x67
20:16:22.233 -> Unknown error at address 0x68
20:16:22.233 -> Unknown error at address 0x69
20:16:22.233 -> Unknown error at address 0x6A
20:16:22.233 -> Unknown error at address 0x6B
20:16:22.233 -> Unknown error at address 0x6C
20:16:22.233 -> Unknown error at address 0x6D
20:16:22.233 -> Unknown error at address 0x6E
20:16:22.233 -> Unknown error at address 0x6F
20:16:22.233 -> Unknown error at address 0x70
20:16:22.233 -> Unknown error at address 0x71
20:16:22.233 -> Unknown error at address 0x72
20:16:22.233 -> Unknown error at address 0x73
20:16:22.233 -> Unknown error at address 0x74
20:16:22.266 -> Unknown error at address 0x75
20:16:22.266 -> Unknown error at address 0x76
20:16:22.266 -> Unknown error at address 0x77
20:16:22.266 -> Unknown error at address 0x78
20:16:22.266 -> Unknown error at address 0x79
20:16:22.266 -> Unknown error at address 0x7A
20:16:22.266 -> Unknown error at address 0x7B
20:16:22.266 -> Unknown error at address 0x7C
20:16:22.266 -> Unknown error at address 0x7D
20:16:22.266 -> Unknown error at address 0x7E
20:16:22.266 -> No I2C devices found
20:16:22.266 ->

Zawieszanie SDS011

Coś nie ma szczęścia do czujników PMS7003 nie wyłącza się softwear'owo a SDS011 wiesza mi się średnio co dzień (smogomierz pokasuje ciągle tą samą wartość). Ponowne uruchomienie czujnika pomaga.

Niepoprawny build z kodów źródłowych

Na początek dziękuję hackerspace-silesia i @bfaliszek - świetny projekt, zmontowałem Wasz smogomierz kilka miesięcy temu i sprawdza się świetnie!

Próbuję go odrobinę wzbogacić (używam smogomierza w mieszkaniu i chcę dołożyć mu czujnik CCS811, LCD 2x16 + pasek 8 LEDów) i mam kłopot z właściwym zbudowaniem pliku .bin.

Działam na wersji 2.7.0 i z gotowym plikiem .bin ściągniętym z gita działa dobrze. Jestem w stanie również skompilować tę wersję u siebie w Arduino i wgrać na płytkę - ale niestety tak przygotowana wersja nie działa (pomimo braku jakichkolweik zmian w kodzie) - sypie się coś przy starcie, bo dioda NodeMCU nie świeci, ewentualnie mruga niemrawo. Taki stan mam zarówno po wgrywce skompilowanego przeze mnie pliku .bin flasherem, jak i bezpośrednio z Arduino.

Po wgraniu oryginalnego pliku .bin z gita, działa dobrze. Binarnie wersje te są różne (.bin z gita ma 497 968 B, a skompilowany u mnie 504 416 B).

Coś mam pewnie nie tak z Arduino, ale nie mogę tego namierzyć. Jedyne co przychodzi mi do głowy to niewłaściwa wersja jakiejś biblioteki - wszystko ściągałem w czerwcu, więc są świeże, ale może właśnie któraś potrzebna jest "nieświeża"? Możecie podrzucić numery wersji bibliotek wykorzystywane przez Was do kompilacji? Ewentualnie inne pomysły, co może być nie tak...

Z góry dzięki za pomoc - jak się uda i moje dodatko zadziałają, dorzucę na gita propozycję kodu do obsługi czujnika CCS811, LCD i LEDów - może komuś jeszcze się przyda :-)

PS Moja konfiguracja: Arduino 1.8.9 na Windows 10, ustawiona płytka ESP-12E, prędkość 115200, CPU 80Mhz, pamięć 4 MB (1 MB SPIFFS), wszystkie debugowania wyłączone. Każdorazowo czyszczę tylko sketch z flasha, żeby nie tracić ustawień. Ustawień Arduino nie ruszałem poza płytką, pamięcią i ściągnięciem bibliotek. Jestem początkujący jeśli chodzi o NodeMCU i szerzej mikrokontrolery, więc może chodzić o jakąś drobnostkę.

Lat/Lon precyzja float (Airmonitor)

Jest problem ze współpracą z Airmonitor'em związany z niezgadzającymi się współrzędnymi geograficznymi, które muszą być identyczne z tymi podanymi w ankiecie do AM.
W Smogomierzu przechowywane są jako float - co powoduje, że nie zawsze to co wpiszemy w formularzu zgadza się z tym co jest zapisane/wysyłane.
Teoretycznie z float single precission wpisanie 50.007944 spowoduje zapisanie liczby 50.00794219 co przy konwersji na Stringa da nam prawdopodobnie 50.007942 i taka wartość powinna się pojawić po resecie/ czy tez jest wysyłaną do AM (nie mam teraz wersji Smogomierza z float aby to sprawdzić).

Ponieważ w kodzie Smogomierza Lat/Lon nie są używane w obliczeniach - a tylko konwertowane na String i z powrotem - proponuje zmienić wewnętrzna reprezentacje lat/lon na char[256] lub nieco mniejszy i pozbyć się konwersji do/z float.

Sprawdziłem to na moim Smogomierzu (LATITUDE, LONGTITUFE i ALTITUDE zmienione na char[256]) i współpraca z Airmonitorem działa bezbłędnie. W razie potrzeby mogę przygotować patcha/branch z potrzebnymi zmianami.

Poniżej cytat z korespondencji z twórcami Airmonitor:
"Aktualnie występują pewne nieścisłości w wykorzystywaniu firmware smogomierz, który nieprawidłowo zaokrągla wartości lat/long.
Jeśli korzystasz ze smogomierza to przejdź na wykresy prezentujące pomiary i kliknij prawym przyciskiem myszki na danym wykresie aby skopiować link.
Przykład: http://metrics.airmonitor.pl:3000/d-solo/000000002/airmonitor?orgId=1&var-latitude=52.294800&var-longitude=20.881800&refresh=1m&panelId=14
W tym linku zauważysz, że znajduje się lat oraz long, które są wysyłane do serwisu airmonitor. Te wartosci należy wpisać we formularz, a zauważysz samemu, że różnią się one od tych, które sam wpisałeś w smogomierzu."

Pozdrawiam,
Lukasz

interwał wysyłania

w ostatnich aktualizacjach został ujednolicony interwał wysyłania danych do serwisów zewnętrznych. Dziś się dowiedziałem że Luftdaten ukrywa znacznik jeżeli w ciągu 5min nie dostanie nowych danych. Przy dzisiejszych ustawieniach mija się to z celem bo nie chcę wysyłać co 5min danych do baz danych, a chcę mieć non stop widoczny znacznik u Niemców.

Wyjście z problemu jakie proponuje:

  • powrót do osobnych interwałów dla każdego serwisu
  • zrobić osobno interwał dla baz danych (thingspeak, influxdb) i osobno dla serwisów (airmonitor, luftdaten)
  • zrobić sztywny interwał dla luftdaten na 5min chyba że pomiary wew będą więcej niż co 5min do wyrównanie do tej liczby

Brak wysyłania(ThingSpeak/InfluxDB) danych pomiarowych przy włączonej funkcji deepSleep - 2.6.5

Nie działa pomiar dla PMS7003:

  1. prawie zawsze są 0
    Ciągłe pomiary PM: nie
    Wykonywanie pomiarów PM co: 1minut
    Uśredniaj wynik z ostatnich: 1pomiarów PM
    Wysyłanie danych do AirMonitor/Luftdaten/Smoglist co: 2 minut
    Wysyłanie danych do ThingSpeak/InfluxDB/MQTT co: 2 minut
    DeepSleep: nie
  2. wartości mają duże wahania, również wartości 0
    Ciągłe pomiary PM: nie
    Wykonywanie pomiarów PM co: 1minut
    Uśredniaj wynik z ostatnich: 1 pomiarów PM
    Wysyłanie danych do AirMonitor/Luftdaten/Smoglist co: 2 minut
    Wysyłanie danych do ThingSpeak/InfluxDB/MQTT co: 2 minut
    DeepSleep tak
  3. prawie zawsze są 0
    Ciągłe pomiary PM: nie
    Wykonywanie pomiarów PM co: 1minut
    Uśredniaj wynik z ostatnich: 8 pomiarów PM
    Wysyłanie danych do AirMonitor/Luftdaten/Smoglist co: 2 minut
    Wysyłanie danych do ThingSpeak/InfluxDB/MQTT co: 2 minut
    DeepSleep tak

Jakie powinny być ustawienia by to działało?

Dla akumulatora 18650 (około 2Ah) smogomierz z PMS7003 nie będzie działać dłużej niż dwa (niezależnie od częstotliwości pomiarów) z powodu nie wyłączania PMS7003 (nie wiem co robi pms.sleep(), ale na pewno nie wyłącza wiatraczka, który odpowiada praktycznie za cały pobór prądu czujnika). Czujnik PMS pobiera mniej więcej tyle samo co ESP.
Mój smogomierz działa na takim aku 2-3 dni, ESP załączane co 4 min na około 1 min (30 sekund mniej więcej trwa start drugie 30 sek trwa pomiar), wraz z EPS wyłączane jest PMS wraz z wiatraczkiem.
Powiedzcie dla jakiej baterii prawdziwe jest "możliwość pracy na baterii przez kilka tygodni"? ;)

Co do pracy na baterii to ja sobie dodałem pomiar napięcia za pomocą ADC_MODE(ADC_VCC)
Ja wyliczam sobie średnią z 10 pomiarów w ciągu 30 sekund bo mam straszne wahania (spadki napięcia przy większym poborze prądu) napięcia.

W skrócie ja mam zrobione:

  1. pomiar napięcia wraz z wysyłaniem
  2. punkt rosy wraz z wysyłaniem
  3. wyłączanie PMS
  4. zmiana mocy (TX_POWER)
  5. "first scan" - podczas startu uśredniania wartości PM są wpisywane wartości 0 i wartości średnie są nie poprawne, wyeliminowałem to, było to konieczne by usypiać ESP
  6. proste, optymalne, tanie zasilanie z aku 18650 :)

Jeśli kogoś coś z tego interesuje to proszę pisać, chętnie podzielę się tym co zrobiłem.

Dodanie nazwy miejscowości na głównej

Cześć, mały pomysł- można by dodać możliwość wprowadzenia jakichś danych lokalizacyjnych czujnika, np Miejscowość, adres, kto będzie chciał to sobie wprowadzi nazwę i adres kto nie to zostawi puste.
Wyświetlało by Smogomierz Pogoda i obok miejscowość

Jak zresetować sieć WiFi

Po przeprogramowaniu straciłem urządzenie na WiFi i pomimo ponownego programowania nie generuje się sieć Smogomierz.

Proszę o pomoc jak zresetować WiFi w smogomierzu, abym po zaprogramowaniu mógł zmienić jemu sieć WiFi.

Może jest opcja aby jednak ustawić domyślną sieć w kodzie i podać nazwę SSID oraz hasło do przyłaczenia sieci jako default.

Integracja z aqi.eco

znalazłem ciekawą stronę https://aqi.eco która zbiera wykresy, ma swój adres i jest przejrzysta :) da się dodać do smogomierza opcję: wysyłaj do własnego api i opcje do uzupełnienia: adres, ścieżka, port, nazwa użytkownika i hasło żeby móc z tego skorzystać ?

Projekt nie kompiluje się z ESP8266 2.6.0

Po aktualizacji paczki "esp8266" by ESP8266 Community do wersji 2.6.0 pojawia się błąd:
no matching function for call to 'SoftwareSerial::SoftwareSerial(int, int)'

Kalibracja

Czy mogę prosić o wskazanie materiałów źródłowych dla warunków i obliczeń w pm_calibration()?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.