Skocz do zawartości

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


busyboy

Pomocna odpowiedź

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 ?

Link do komentarza
Share on other sites

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"

Link do komentarza
Share on other sites

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ć... ? ? ?

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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 🙂

 

Link do komentarza
Share on other sites

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ń.

 

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.