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.
Supla + Arduino + influxDB - integracja
-
Herrero
- Posts: 26
- Joined: Wed Sep 25, 2019 7:29 am
- Location: Wrocław
Jeszcze się pobawiłem i bez supli mam 4100B. Jak wrzucę cały kod (supla + influx) to około 1300B. Oczywiście free memory
-
Herrero
- Posts: 26
- Joined: Wed Sep 25, 2019 7:29 am
- Location: Wrocław
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.
-
Herrero
- Posts: 26
- Joined: Wed Sep 25, 2019 7:29 am
- Location: Wrocław
Nie ma żadnego błedu, po prostu nie moze sie połączyć:
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ć.
Code: Select all
Not connected
Register in progress
Not connected
Connection fail. -
pzygmunt
- Posts: 20302
- Joined: Tue Jan 19, 2016 9:26 am
- Location: Paczków
- Been thanked: 59 times
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.
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.
-
Herrero
- Posts: 26
- Joined: Wed Sep 25, 2019 7:29 am
- Location: Wrocław
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
- a tak wygląda z moim kodem (nie ma różnicy czy mam dwie instacje klienta czy jedną:
- 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()=1474Code: 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-
Herrero
- Posts: 26
- Joined: Wed Sep 25, 2019 7:29 am
- Location: Wrocław
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