Błędny pierwszy odczyt na drugim kanale

User avatar
pzygmunt
Posts: 6598
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Tue Sep 17, 2019 10:19 am

Przed usunięciem

Code: Select all

union {
		uint8_t last_val;
		double last_val_dbl1;
		double last_val_dbl2;
	};
Po usunięciu

Code: Select all

uint8_t last_val;
double last_val_dbl1;
double last_val_dbl2;
Asica10
Posts: 52
Joined: Thu Feb 28, 2019 8:12 pm

Tue Sep 17, 2019 4:30 pm

Wielkie dzięki. Działa jak należy.

Czy można w jakiś sposób zmiejszyć częstotliwość wysyłania danych do serwera, ale tak by w aplikacji caly czas były wartości anie kreski? W tym momencie moge uśpić modul max na ok 20-25s
User avatar
pzygmunt
Posts: 6598
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Tue Sep 17, 2019 8:06 pm

klew
Posts: 56
Joined: Thu Jun 27, 2019 12:16 pm

Wed Sep 18, 2019 9:16 am

Zybi wrote:
Mon Sep 16, 2019 11:50 pm
pzygmunt wrote:
Mon Sep 16, 2019 10:03 pm
Z tej unii można zrezygnować.
I to jest lepsze rozwiązanie, bo jednak poprawka jw. zakłóca działanie kanału przekaźnika - testowałem na Sonoff-ie Basic.
Co się dzieje z tym przekaźnikiem? Patrzę na kod i nie widzę co mogłoby zaburzać jego pracę.
Zybi
Posts: 1369
Joined: Sun Jun 26, 2016 4:24 pm

Wed Sep 18, 2019 9:28 am

Przyczyny jeszcze nie znam. Testowałem to bardzo późno i zostawiłem temat, bo rezygnacja z unii poszła bezproblemowo.
Może jeszcze wrócę do tego.
Asica10
Posts: 52
Joined: Thu Feb 28, 2019 8:12 pm

Mon Sep 23, 2019 2:42 pm

Po zrezygnowaniu z tej uni problem sie rozwiazal.

Problem pojawia się znowu po dodaniu czujnika dystansu 1 odczyt kreski w aplikacji, po drugim jest ok. Ktoś wie jak tym razem rozwiązać problem?
z góry dziekuje.
klew
Posts: 56
Joined: Thu Jun 27, 2019 12:16 pm

Mon Sep 23, 2019 9:46 pm

Asica10 wrote:
Mon Sep 23, 2019 2:42 pm
Po zrezygnowaniu z tej uni problem sie rozwiazal.

Problem pojawia się znowu po dodaniu czujnika dystansu 1 odczyt kreski w aplikacji, po drugim jest ok. Ktoś wie jak tym razem rozwiązać problem?
z góry dziekuje.
Musiałbyś zrobić pierwszy odczyt wartości przed rejestracją urządzenia w chmurze.
Poszukaj metody "begin_thermometer" w SuplaDevice.cpp. Możesz dopisać analogiczną metodą "initDistanceSensor" i wywołać ją w tej samej pętli. Powinna sprawdzić, czy kanał jest sensorem odległości, po czym odczytać wartość z sensora i zapisać ją do kanału metodą channelSetDoubleValue.
Ewentualnie możesz tą inicjalizację zrobić w metodzie "addDistanceSensor" i tam odczytać wartość z sensora i przypisać zamiast wartości "-1".
Trzecia opcja to dopisanie sensora odległości do "begin_thermometer" - tam i tak już jest czujnik ciśnienia, wagi, wiatru...
Post Reply