Skocz do zawartości

Esp8266 serwer + esp8266 klient – więcej urządzeń


Pomocna odpowiedź

Napisano

Sytuacja wygląda następująco : jakiś czas temu zrobiłem sobie na esp8266 sterowanie pilotem przez Wifi – odczytałem kody przycisków na pilocie i zaprogramowałem esp8266 tak by za pomocą nadajnika podczerwienie mógłbym przełączać programy na dekoderze. Spowodowane było to tym że mam podłączony do dekodera spliter hdmi i w sypialni nie mam możliwości przełączania kanałów (pilot przez ścianę nie działała).

Idąc za ciosem postanowiłem ip (lokalne) esp8266 „wystawić na zewnątrz” (do testów) tak bym poza domem mógł obsługiwać pilota. Skonfigurowałem usługę DDNS (NO-IP) na routerze i generalnie wszystko działa poprawnie.

No i w tym momencie nasuwa mi się pytanie. Bo chciałbym jeszcze dodać np. 2 esp8266 – jeden np. do odczytywania temperatury w pokoju a drugi np. do sterowania przełącznikami 433Mhz 230v.

Lokalnie byłbym nawet w stanie to ogarnąć – każdemu esp8266 nadać inne ip lokalne – i lokalnie by to działało. No ale co w przypadku „wystawienia na zewnątrz” ? jak to tego podejść? Jeden esp8266 ma być serwerem ? to „wystawione na zewnątrz” a pozostałem esp8266 mają być klientami ?

Mogę prosić jakieś wskazówki ? pomoc ? w powyższym temacie ?

Możesz wszystkie esp wystawić "na zewnątrz", tylko musiałbyś na routerze podefiniować reguły przekierowywania portów.

Albo wystawić tylko jeden - z zewnątrz widziany jako serwer www a wewnątrz jako klient dla pozostałych lokalnych esp. Wtedy ten serwero-klient byłby "integratorem" dostępnych z zewnątrz usług realizowanych przez wewnętrzne "serwery"

Cytat

Albo wystawić tylko jeden - z zewnątrz widziany jako serwer www a wewnątrz jako klient dla pozostałych lokalnych esp. Wtedy ten serwero-klient byłby "integratorem" dostępnych z zewnątrz usług realizowanych przez wewnętrzne "serwery"

Hmm no w sumie to chyba byłoby najlepsze rozwiązanie... takie o które mi chodzi...

Tylko jak to wykonać, jak to zrobić... ? ? ?

W takim przypadku to chyba wolałbym jednak wziąć Pi jako ten, nazwijmy to, "kliento-serwer" i na nim odpalić jakiś HomeAssistant/OpenHab/Domoticz czy co tam jeszcze innego integrującego to wszystko.

Generalnie to się nie wystawia na zewnątrz, router ma być takim serwerem, ma firewalla i jakieś podstawowe zabezpieczenia, lepiej przekierować porty. Wchodzisz w ustawienia sieci (każdy router ma to subtelnie inaczej, znajdziesz w Google jak w tym modelu to zrobić) i sobie przekierowujesz określone porty, np. możesz mieć przekierowany port 5333 na port 80 urządzenia 192.168.0.22 i do ESP dostaniesz się wtedy po adresie "mojanazwa.ddn.org:5333" czy jak tam sobie ustawiłeś tą nazwę dla swojego IP.

Jak chcesz mieć odczyt temperatury to sobie załóż konto na ThingSpeak, możesz założyć darmowo ze 3 kanały, każdy ma 8 pól, w Arduino wrzucasz bibliotekę, podłączasz czujnik, wartość czujnika co 15s czy tam minut wysyłasz na ThingSpeak, to zostaje zapisane w serwerze i masz do tego dostęp jak do każdej strony WWW, możesz sobie obejrzeć aktualną wartość i historię na wykresie. W Androidzie możesz sobie też zainstalować widget ThingSpeak, będzie pobierał dane z serwera i prezentował wartości na pulpicie, możesz tu ustawić alarmy przekroczenia zadanego progu.

https://play.google.com/store/apps/details?id=ua.livi.thingspeakmonitor&hl=en_US

Cytat

Generalnie to się nie wystawia na zewnątrz, router ma być takim serwerem, ma firewalla i jakieś podstawowe zabezpieczenia, lepiej przekierować porty. Wchodzisz w ustawienia sieci (każdy router ma to subtelnie inaczej, znajdziesz w Google jak w tym modelu to zrobić) i sobie przekierowujesz określone porty, np. możesz mieć przekierowany port 5333 na port 80 urządzenia 192.168.0.22 i do ESP dostaniesz się wtedy po adresie "mojanazwa.ddn.org:5333" czy jak tam sobie ustawiłeś tą nazwę dla swojego IP.

Ok masz racje, po co wystawiać ESP na domyślnym porcie 80 - można zmienić na taki który tylko ja znam

Cytat

Jak chcesz mieć odczyt temperatury to sobie załóż konto na ThingSpeak, możesz założyć darmowo ze 3 kanały, każdy ma 8 pól, w Arduino wrzucasz bibliotekę, podłączasz czujnik, wartość czujnika co 15s czy tam minut wysyłasz na ThingSpeak, to zostaje zapisane w serwerze i masz do tego dostęp jak do każdej strony WWW, możesz sobie obejrzeć aktualną wartość i historię na wykresie. W Androidzie możesz sobie też zainstalować widget ThingSpeak, będzie pobierał dane z serwera i prezentował wartości na pulpicie, możesz tu ustawić alarmy przekroczenia zadanego progu.

https://play.google.com/store/apps/details?id=ua.livi.thingspeakmonitor&hl=en_US

Z tą temperaturą to był tylko przykład. Chodzi mi o to żeby kilka ESP zintegrować tak żebym mógł je obsługiwać / odczytywać dane "z zewnątrz" Na jednym obsłużyć pilota, na drugim łączenie świateł a na trzecim odczyt temperatury <- przykład

47 minut temu, busyboy napisał:

Hmm no w sumie to chyba byłoby najlepsze rozwiązanie... takie o które mi chodzi...

Tylko jak to wykonać, jak to zrobić... ? ? ?

Tego "serwero-klienta" konfigurujesz jako AP-STA.

Lokalnym IP łączysz się z tymi serwerami temperatury, a tym IP co dostał z routera łączysz się ze światem.

 

Albo jeszcze prościej - wszystkie są w tej samej podsieci i się wymieniają informacjami, ale ze świata możesz wbić się tylko na jeden.

Jak ktoś jest paranoikiem, to wewnątrz można używać esp-now zamiast kompletnego stosu ip albo bluetooth albo lora. Tylko fantazja ogranicza 🙂

 

Darmowy ThingSpeak ma ograniczenie do 15s, ale można zrobić tak, że jak w pole 1 kanału wpiszesz wartość, do drugi ESP to odczyta i coś z tym zrobi. Są też serwery MQTT i na telefon prosta aplikacja, na Arduino biblioteki do obsługi mgtt, tu raczej jest stałe połączenie i nasłuch na kanale. Ja używam swojego serwera Websockets w jednym ESP, inne esp mogą się do niego podłączyć jako klienci i sępić dane w czasie rzeczywistym, przykład serwera wrzuciłem w wątku obok. ESP ma ograniczenie do 4 połączeń, dlatego lepiej jest patrzeć na zewnętrzne serwery.

Można też po prostu wgrać Tasmotę w ESP i ustawić komunikację między nimi, jest filmik na Youtube jak z dwóch zrobić zdalnie sterowany termostat, tu też jest ograniczenie do 4 połączeń.

 

Przy większej ilości lepiej esp-now, ma co prawda ograniczenia ale trochę mniejsze (szczególnie jeśli nie włączasz szyfrowania).

A w ogóle jako ten koncentrator lepiej by się sprawił jakiś RPi Zero W.

Cytat

Albo jeszcze prościej - wszystkie są w tej samej podsieci i się wymieniają informacjami, ale ze świata możesz wbić się tylko na jeden.

No ok, z zewnątrz mogę się wbić tylko na jeden - ale co mi to da ? tylko na jeden ? skoro chciałbym np. z esp1 odczytać temperaturę a z esp2 łączyć światło a z esp3 spuścić rolety - i to wszystko z zewnątrz a nie lokalnie.

14 godzin temu, busyboy napisał:

No ok, z zewnątrz mogę się wbić tylko na jeden - ale co mi to da ? tylko na jeden ? skoro chciałbym np. z esp1 odczytać temperaturę a z esp2 łączyć światło a z esp3 spuścić rolety - i to wszystko z zewnątrz a nie lokalnie.

Ten centralny esp realizuje twoje requesty łącząc się dowolnym wewnętrznym protokołem z innymi esp.

Czyli np w przeglądarce piszesz http://centralny-esp/temp1

A handler serwera www wysyła pytanie o temperaturę do "podrzędnego" esp i zwraca info przeglądarce.

Co za różnica, czy zrobisz analogRead() lokalnego pina, czy SerialRead() zdalnego strumienia danych?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...