Supla + Arduino + influxDB - integracja

User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Arduino ide podczas kompilacji pokazuje ile pamięci jest zaalokowane przez stałe obiekty (np globalne, static).
Sprawdzenie dostępnej pamięci w runtime pokazuje ile jest dostępne w danej chwili.
Jeśli ide po kompilacji pokazuje 4 kB, a free memory pokazuje 900 B, to znaczy, że w danym momencie masz do dyspozycji 900 B i niestety SuplaDevice nie będzie działać. Pozostałe 3 kB zjadły prawdobobnie jakieś allokacje w runtime.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

Jeszcze się pobawiłem i bez supli mam 4100B. Jak wrzucę cały kod (supla + influx) to około 1300B. Oczywiście free memory
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

W weekend zrobiłem parę testów dotyczących zużycia pamięci RAM, i jej wymaganej ilości do uruchomienia supli. Okazuje się, że po uruchomieniu supli trzeba mieć około 1300B wolnej pamięci, aby chodziło to stabilnie. Zmniejszyłem swój kod do wymaganego poziomu i mam teraz po uruchomieniu supli razem z moim kodem około 1500B wolnej pamięci. Czyli moje problemy w tej chwili na 100% nie są związane z RAMem. Pozostaje kwestia jednoczesnego podłączenia do dwóch serwerów. Jak już wspomniałem próbowałem stworzyć drugi obiekt klasy EthernetClient, ale nie działa - supla nie może się połączyć. Czy ktoś próbował nawiązać połączenie do dwóch serwerów jednocześnie? Chyba, że próbować do influxa wrzucac po udp?
Last edited by Herrero on Mon Oct 07, 2019 8:32 am, edited 1 time in total.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Jakie błędy terez masz?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

Nie ma żadnego błedu, po prostu nie moze sie połączyć:

Code: Select all

Not connected
Register in progress
Not connected
Connection fail. 
Myślę, że jest to wina tworzenia dwóch obiektów typu EthernetClient. pzygmunt napisał mi, że trzeba przerobić helpera z biblioteki supla, żeby można było współdzielić instancję client - niestety nie wiem jak się za to zabrać.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Powinno to też teoretycznie działać z dwoma instancjami EtnernetClient. Pytanie czy ta biblioteka na to pozwala.
Musisz prześledzić czy prawidłowo wykonuje się iterate(). Dodatkowo porównaj co jest wysyłane przez

https://github.com/SUPLA/arduino/blob/m ... ._cpp_#L34

o odbierane w
https://github.com/SUPLA/arduino/blob/m ... ._cpp_#L27

w przypadku gdy działa tylko Sulpa oraz Supla z Twoim kodem.

[EDIT]
Do logu dodaj sobie też czas tak abyś mógł porównać różnice w czasie przesyłanych/odbieranych pakietów.
SUPLA.... Nareszcie w domu.
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

Nie wiem co jest w buforach tcp , wiec do końca wiem jak to zinterpretować - teraz rzutowałem na char (w buforze jest słowo SUPLA i potem nie wiem co). Po słowie read/write jest wyświetlane millis(). Okazuje się, że jak dorzucę swój kod to w ogóle supla nie robi tcp read/write... Poniżej jak to wygląda czasowo:
- sama supla

Code: Select all

localIP: 10.10.10.102
subnetMask: 255.255.255.0
gatewayIP: 10.10.10.254
dnsServerIP: 10.10.10.254
Supla callbackSupla callbackSupla callbackSupla callbackSupla callback
SuplaDevice initialized
Not connected
Register in progress
write:
5006
SUPLA	
freeMemory()=2552
read:
6028
SUPLA	
Registered and ready.
write:
6033
SUPLA	
Supla callbackSupla callbackSupla callbackSupla callbackSupla callback
read:
6039
SUPLA	
write:
6042
SUPLA	
write:
6044
SUPLA	
freeMemory()=1474
freeMemory()=1474
freeMemory()=1474
Supla callbackSupla callbackSupla callbackSupla callbackSupla callback
write:
16045
SUPLA	
write:
16047
SUPLA		
freeMemory()=1474
freeMemory()=1474
freeMemory()=1474
freeMemory()=1474
Supla callbackSupla callbackSupla callbackSupla callbackSupla callback
write:
26050
SUPLA	

write:
26052
SUPLA	
freeMemory()=1474
freeMemory()=1474
freeMemory()=1474
Supla callbackSupla callbackSupla callbackSupla callbackSupla callback
write:
36056
SUPLA	
write:
36058
SUPLA	
freeMemory()=1474
- a tak wygląda z moim kodem (nie ma różnicy czy mam dwie instacje klienta czy jedną:

Code: Select all

localIP: 10.10.10.102
subnetMask: 255.255.255.0
gatewayIP: 10.10.10.254
dnsServerIP: 10.10.10.254
Supla callbackSupla callbackSupla callbackSupla callbackSupla callbackSupla
Device initialized
Not connected
Register in progress
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
freeMemory()=1347
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Sprawdź czy wywołuje się iterate
SUPLA.... Nareszcie w domu.
User avatar
Herrero
Posts: 26
Joined: Wed Sep 25, 2019 7:29 am
Location: Wrocław

Post

iterate się wywołuje. Wrzuciłem w paru miejscach logowanie i wygląda na to, że raz sprawdza, czy podłączony, czy zarejestrowany. Wygląda to mniej wiecej tak:

Code: Select all

iterate-begin
iterate-check_connection
Not connected
iterate-check-registered
Register in progress
freeMemory()=1276
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
iterate-begin
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Porównaj log z tym który jest generowany jak to działa wraz z Twoim kodem.


Sprawdź tez czy w ogóle próbuje czytać z socketa.
SUPLA.... Nareszcie w domu.

Return to “Pomoc”