Mam zagwozdke i rozkmine.
Kombinuje nad zdalna idiotoodporna konfiguracja uC poprzez neta wraz z odczytem danych z uC (typu liczniki czasu etc). Ma ktos jakies sprawdzone rozwiazanie bo sam jedynie na co wpadlem to wysylanie z uC maila, a w druga strone odczyt pliku txt na serwerze.
Odczyt/zapis zmiennych internet<>uC
- maras52
- Użytkownik
- Posty: 65
- Rejestracja: 24 mar 2019, 10:22
- Lokalizacja: Racibórz
- Kontakt:
- squeez
- GRafik
- Posty: 158
- Rejestracja: 16 paź 2017, 23:52
Re: Odczyt/zapis zmiennych internet<>uC
maila z uC? to chyba trochę masochizm.
Chyba najbardziej powszechne podejście do tego to REST API. a format to pewnie JSON albo jak chcesz oszczędzać ilość przesyłanych danych to np. CBOR (taki binarny JSON), minus taki że w prosty sposób nie podejrzysz tego ale za to "narzut" kontenera przesyłanych danych jest niewielki.
Możesz też na zwykłych gniazdach, i mieć jakiś ustandaryzowany "binarny format" co gdzie się znajduje.
W obu przypadkach musisz mieć maszynę która będzie dostępna w necie np. https://mikr.us/
Chyba najbardziej powszechne podejście do tego to REST API. a format to pewnie JSON albo jak chcesz oszczędzać ilość przesyłanych danych to np. CBOR (taki binarny JSON), minus taki że w prosty sposób nie podejrzysz tego ale za to "narzut" kontenera przesyłanych danych jest niewielki.
Możesz też na zwykłych gniazdach, i mieć jakiś ustandaryzowany "binarny format" co gdzie się znajduje.
W obu przypadkach musisz mieć maszynę która będzie dostępna w necie np. https://mikr.us/
- Nefarious
- Magyster
- Posty: 82
- Rejestracja: 17 paź 2017, 10:03
- Lokalizacja: Łódź
Re: Odczyt/zapis zmiennych internet<>uC
do takich rzeczy idealnie nadaje się MQTT. Są gotowe libsy np na ESP32. Po stronie servera musisz mieć brokera np https://mosquitto.org/download/.
Ja widzę to połączenie tak:
device1_node <====> MQTT Broker <========> aplikacja_webowa
device2_node <====>
zakładamy że masz dwa urządzenia. MQTT jest protokołem dwustronnym, to znaczy że może wysyłać jak i odbierać dane do serwera (brokera).
Po stronie serwera masz też aplikacja webową, działającą normalnie na porcie 80. Teraz załóżmy że chcesz ustawić jakiś parametr. Robisz sobie prostą apkę webową która w bakendzie komunikuje się brokerem MQTT . W tej apce masz formularz, po jego wysłaniu, twój backend go otrzyma, wyśle do brokera jako wiadomość MQTT a Twój broker dostarczy te wiadomości do twoich urządzeń połączonych przez MQTT do brokera. Twoje urzadzenia nie muszą miec publicznego IP. Natomiast Twój serwer http jak i broker muszą mieć IP publiczne żeby były dostępne z internetu. Zatem jeżeli nie masz prywatnie przydzielonego publicznego IP to wystąp o takowe i wtedy serwer jak i broker stawiasz na Rpi czy innym kompie u siebie. Jak nie masz takiej możliwości to zostaje Ci zewnętrzny server VPS na którym postawisz sobie swoją aplikację.
Jeżeli coś namieszałem to niech mnie inni poprawią. Sam dopiero raczkuje w temacie.
Ja widzę to połączenie tak:
device1_node <====> MQTT Broker <========> aplikacja_webowa
device2_node <====>
zakładamy że masz dwa urządzenia. MQTT jest protokołem dwustronnym, to znaczy że może wysyłać jak i odbierać dane do serwera (brokera).
Po stronie serwera masz też aplikacja webową, działającą normalnie na porcie 80. Teraz załóżmy że chcesz ustawić jakiś parametr. Robisz sobie prostą apkę webową która w bakendzie komunikuje się brokerem MQTT . W tej apce masz formularz, po jego wysłaniu, twój backend go otrzyma, wyśle do brokera jako wiadomość MQTT a Twój broker dostarczy te wiadomości do twoich urządzeń połączonych przez MQTT do brokera. Twoje urzadzenia nie muszą miec publicznego IP. Natomiast Twój serwer http jak i broker muszą mieć IP publiczne żeby były dostępne z internetu. Zatem jeżeli nie masz prywatnie przydzielonego publicznego IP to wystąp o takowe i wtedy serwer jak i broker stawiasz na Rpi czy innym kompie u siebie. Jak nie masz takiej możliwości to zostaje Ci zewnętrzny server VPS na którym postawisz sobie swoją aplikację.
Jeżeli coś namieszałem to niech mnie inni poprawią. Sam dopiero raczkuje w temacie.
- squeez
- GRafik
- Posty: 158
- Rejestracja: 16 paź 2017, 23:52
Re: Odczyt/zapis zmiennych internet<>uC
Można MQTT ale wydaje mi się że podejście RESST API jest bardziej uniwersalne.
MQTT sprawdza się do "asynchornicznej" wymiany. Tu uC chce odpytać o konfig. Więc po stronie serwera (python np. FLASK) może takie reqesty przyjmować i dostarczać konkretny kontent.
Np. endpoint: dala konfiguracji 1: http://rest.costa.pl:8080/configuration/v1 dla innej może być np. http://rest.costa.pl:8080/configuration/v1_custom
I serwer HTTP obsugujący tego REST API odpowiada już czym tam się che (JSON, CBOR, string do parsowania czy co tam się wymysli).
Rozwiązanie z MQTT wydaje mi się bardziej "skomplikowane".
MQTT sprawdza się do "asynchornicznej" wymiany. Tu uC chce odpytać o konfig. Więc po stronie serwera (python np. FLASK) może takie reqesty przyjmować i dostarczać konkretny kontent.
Np. endpoint: dala konfiguracji 1: http://rest.costa.pl:8080/configuration/v1 dla innej może być np. http://rest.costa.pl:8080/configuration/v1_custom
I serwer HTTP obsugujący tego REST API odpowiada już czym tam się che (JSON, CBOR, string do parsowania czy co tam się wymysli).
Rozwiązanie z MQTT wydaje mi się bardziej "skomplikowane".
- maras52
- Użytkownik
- Posty: 65
- Rejestracja: 24 mar 2019, 10:22
- Lokalizacja: Racibórz
- Kontakt:
Re: Odczyt/zapis zmiennych internet<>uC
Kurla jak szefo uslyszy o vps'ach to
a no i zapomnialem chyba napisac tu niestety esp by dzialalo w trybie at 



Zdravim