Wpis z mikrobloga

#arduino #esp8266 #wifi #router #siecikomputerowe
Jeżeli mam ok 50 esp8266 podpiętych do jednej sieci wifi (jeden router robiący za access point) i chcę jeszcze w tej samej sieci móc normalnie korzystać z internetu np na komórce to co będzie lepsze:
1. każdy esp łączy się z wifi raz, IP z dhcp i utrzymuje to połączenie, a dane wysyła w ustalonych interwałach (60 sekund) - tak mam teraz
2. jak wyżej tylko stałe IP zahardcodowane w codzie esp
3. łączenie z wifi jedynie na czas wysyłki danych i po wysyłce disconect - IP zahardcodowane.
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@WuBe: Wszystko jedno, od pilnowania adresów jest DHCP. U mnie statyczne IP poza pulą rozdawaną przez DHCP mają tylko ESP zasilane bateryjnie po to aby skrócić do minimum czas łączenia i wysyłki danych, wszystkie inne są cały czas połączone z siecią - średnio 19 sztuk.
  • Odpowiedz
@dktr: podrzuć proszę przykładowy kod dla static ip bo coś chyba robię źle - czas mam dłuższy niż z dhcp.
Mój kod:

WiFi.disconnect();
  • Odpowiedz
@meetom: Są dwa protokoły ESP-MESH i nowszy ESP-NOW. Każdy z nich ma pewne plusy w zastosowaniach IoT nad WiFi. W NOW masz może mniejsze prędkości przesyłu, ale zazwyczaj nie przesyłasz przez ESP filmów, tylko dane z czujnika, których nie ma dużo. Dostajesz w zamian dużo większy zasięg (na wbudowanej antenie do 400m), szybsze i oszczędniejsze w energii przesłanie pakietu w eterze.
  • Odpowiedz
@dktr: Z BSSID i channel na sztywno mam od 1,4 do 2 sekund :/
Testuje na płytkach wemos d1 mini i nodemcu v3. Może to mieć znaczenie?
Sieć całkiem nowa zrobiona pod testy z routerem metr do esp.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@WuBe: znaczenie ma ustawienie core w arduino chyba v2 low memory, potestuj rożne. Nowe czujniki testuje na 160MHz i te łączą sie do sieci w 40ms
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
Dostajesz w zamian dużo większy zasięg (na wbudowanej antenie do 400m)

@lukaszw_: o widzisz, muszę testnąć. Chcę jedną końcówkę na balkon wrzucić, a tam mu już zasięgu brakuje, może pomoże ;)
  • Odpowiedz
@dktr:
Dobra doszedłem do ładu. Problemem było WiFi.disconnect(); które w sumie nie wiem po co dałem na początku, a
które kasuje zapisane dane sieci. Bez tego pierwsze połączenie jest w 1,2 s, a po restarcie robi autoreconect w ok 170ms.
Dzięki za pomoc!
  • Odpowiedz
@dktr: niestety mniej niż 150ms nie mogę zejść. Trudno i tak jest 15 razy lepiej. A jeszcze jedno pytanie, jak wysyłasz requesty http?
Moje:
#include
HTTPClient http;
http.begin("http://xyz/in/insertget.php?sensorid=" + sensor +
  • Odpowiedz
@WuBe:

int netupdate(int id, int batt) {
if (WiFi.status() == WL_CONNECTED) {
String temp = String(bme.readTemperature());
String pre = String(bme.readPressure()
dktr - @WuBe: 

int netupdate(int id, int batt) {
 if (WiFi.status() == WL_CONNECT...
  • Odpowiedz
@dktr: ciekawa sprawa. Włączyłem Debug port: serial, debuglevel" HTTPCLIENT i czas wysłania requesta zmniejszył się do 170ms. Wyłączam debug i czas wraca do 800ms.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@WuBe: masz gdzieś w tym Arduino IDE możliwość ustawienia flag optymalizacji?
Jeśli jest -O0 to kompiluje program praktycznie tak, jak jest napisany, jak jest jeszcze opcja -g to dodaje symbole debugowania.
Taki kod nie jest najszybszy, ale nadaje się do debugowania krok po kroku z podglądem źródeł(no prawie bo do ESP8266 nie da się chyba podłączyć JTAGa)

Sprawdź czy da się skompilować z innymi flagami(bez -g i np. -O2). Powinna
  • Odpowiedz