Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 sty 2025, o 13:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 20 lis 2015, o 17:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

W tej chwili pracuje sterownik z modułem WIFI ustawionym na połączenie z moim IP i łączę się z nim ze swojego tel. Jak rozwiązać połączenie do sterownika z różnych IP (odpada broadcast bo to numery z innej sieci) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2015, o 18:08 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Ja bym może coś podpowiedział ale najpierw musiałbym zrozumieć o co tobie chodzi. Niestety z tego opisu praktycznie nic nie rozumiem :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2015, o 18:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Ok, no więc tak: Sterownik mierzy kilka wartości i poprzez WIFI wysyła je do mnie via UDP do innej sieci, na mój IP który ustawiłem w konfiguracji modułu w sekcji "Destination IP address". Ok, wszystko działa, tylko że chciałbym te parametry odczytywać na większej ilości urządzeń pracujących w różnych sieciach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2015, o 18:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Nie wiem, czy dobrze podpowiem, ale zrób serwer UDP i niech każde urządzenie odpytuje o pomiar - wtedy odpowiesz każdemu, które zapyta.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2015, o 22:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

icer_cmg napisał(a):
Nie wiem, czy dobrze podpowiem, ale zrób serwer UDP i niech każde urządzenie odpytuje o pomiar - wtedy odpowiesz każdemu, które zapyta.


No właśnie to jest słuszna droga - jedna z możliwości .... zamiast myślenia o jakichś broadcastach ;)

Zamiast myślenia przy protokole UDP na takiej zasadzie:
mario napisał(a):
wysyła je do mnie via UDP do innej sieci, na mój IP który ustawiłem w konfiguracji modułu w sekcji "Destination IP address". Ok, wszystko działa, tylko że chciałbym te parametry odczytywać na większej ilości urządzeń pracujących w różnych sieciach.


Bo w tym momencie - sam sobie panie mieszasz i jak to zwykle u początkującego bywa - kręcisz jak w maszynce do mięsa pojęcia client/server przez co wychodzi mielonka, którą trudno samemu ogarnąć .... ;)

A teraz stop! nie wpuszczamy do maszynki do mięsa.

czyli - pomyśl - jak tylko piszesz że jakiś tam twój układ z WiFi ma coś WYSYŁAĆ - to myślisz - aha to będzie CLIENT - bo klient wysyła - rozumiesz? wysyła co ? wysyła jakieś zapytanie ... a jak client wysyła to gdzie do serwera (no bo musi być client/serwer)

A jeśli piszesz, że jakiś inny układ ma coś odczytywać z twojego urządzenia z WiFi to co ? To znaczy to on ma być CLIENTEM - i wysyłać - wysyłać co? zapytanie do serwera (żeby cały czas mieć na uwadze client/serwer)

REASUMUJĄC projektując coś - ZAWSZE musisz obmyśleć od której strony będziesz patrzył - kto będzie CLIENTEM a kto SERVEREM

i tak jak kolega wyżej pisze - niech twoje urządzenie z wifi będzie serwerem UDP, wtedy ono samo NIGDZIE nie będzie nic wysyłać pod żadne jakieś tam IP bo po co ? nie mieszaj ;) ... Serwer ma nasłuchiwać ... (uwaga!) nasłuchiwać i odpowiadać .... A zatem - każdy CLIENT z zewnątrz może wysłać do serwera zapytanie

Cytuj:
"hej serwer podaj mi dane ze swoich czujników!"


takie zapytanie spowoduje, że serwer odpowiada na takie zapytanie KLIENTOWI - i to DOKŁADNIE temu który zadał to pytanie (o ile mówimy o UDP) bo w przypadku TCP przy naszych modułach byłoby nieco inaczej ale teraz nie będę o tym pisał bo powstanie zamieszanie

Zatem droga UDP będzie tutaj bardzo dobra ;) ale przy takiej właśnie konfiguracji

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 01:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Wszystko świetnie rozumiem, nawet wiem jak to zrobić na urządzeniu z np. androidem. Ale jak to rozwiązać na kontrolerze z jakąś megą+moduł wifi to ni w ząb. Z tego co rozumiem , to sterownik wyśle odpowiedź na adres jaki jest ustawiony w module jako destination ? W tej chwili zestawiam system na prostym tablecie, który będzie właśnie robił za serwer. Może błędnie, ale doszedłem do wniosku , że na kontrolerze z modułem wifi chyba nie da się tego zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 08:57 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

mario napisał(a):
Może błędnie, ale doszedłem do wniosku , że na kontrolerze z modułem wifi chyba nie da się tego zrobić.

aha czyli pomimo, że piszę ci wprost, że można, pomimo że sam widzisz że jest opcja w ustawieniach modułu ATNEL-WIFI232 - UDP/SERVER, pomimo, że często pokazywałem to w poradnikach - to ty dochodzisz do wniosku, że nie da się ustawić modułu w tryb UDP/SERVER ? .... no to teraz ja ciebie mocno nie rozumiem :(

mario napisał(a):
Ale jak to rozwiązać na kontrolerze z jakąś megą+moduł wifi to ni w ząb

No ale o czym kolega mówi ? To znaczy rozumiem, że nigdy w życiu nie udało ci się nawiązać połączenia np telefonem czy komputerem z prockiem zaopatrzonym w taki moduł WiFi ? Sorki ale albo piszesz strasznie niejasno albo ja już nie wiem o co chodzi ?

Toż gdy skonfigurujesz moduł wifi przy procku jako UDP/Server to co ? nie możesz w telefonie podać jego numeru IP i się z nim połączyć i odczytać danych ?

To co? gdy skonfigurujesz ten moduł to nie możesz w komputerze PC podać jego numeru IP i się z nim połączyć i pobrać danych z czujników

a NAWET jeśli masz inny procek! z modułem Wifi to nie możesz (tego modułu wifi ustawić jako Client) i połączyć się z tym pierwszym modułem ?

Panie kolego proszę cię - zadając pytanie nie oszczędzaj słów tylko opisuj ZAWSZE jakąś mini konfigurację o jaką ci chodzi, podawaj więcej jakichś szczegółów - bo to nie jest zagadnienie typu miganie diodą LED .... I chyba wypada wręcz porządnie zadawać pytania nie sądzisz ? Bo ty piszesz jedno albo półtorej zdania a ja rozpisuję się na trzy kartki a później się okazuje, że i tak piszę z twojego punktu widzenia o czymś innym ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 09:40 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Kolego Mario, Mirek dobrze radzi. Aktualnie pracuję również nad projektem w którym sterownik z AVR wysyła informacje do tabletu i nie tylko. Jak to w moim przypadku działa. Moduł wifi ustawiony w udp/serwer. Tak jak Mirek napisał w aplikacji na androida podaje (jeszcze ręcznie) adres ip i port modułu wifi. Wysyłam z androida zapytanie w postaci stringa np" odczyt" w avr odbieram tą komendę i wysyłam dane do androida jak? Ano tak jak wysyła się po rs232 np uart_str(" to ja sterownik"). Teraz jak odpytam innym urządzenie z androidem to avr za pomocą komendy uart_str("to ja sterownik") wysyła odpowiedz ale już nie na tablet tylko na inne urządzenie. Czyli avr wysyła dane do urządzenia które ostatnio sie łączyło z nim.

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 16:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Spróbuję bardziej precyzyjnie i trochę uproszczę moje pytanie. Załóżmy, że to ma wyglądać tak jak na schemacie:

Obrazek

każdy z elementów składa się z pary kontroler+moduł WIFI.
Wszystkie moduły skonfigurowane jako serwery UDP. Czyli serwer odpytuje konkretny czujnik i dopiero wtedy czujnik wysyła odczyt. Ponieważ docelowo planuję ok. 20 takich czujników, chcę , żeby to serwer "mówił" im kiedy mają przesłać pakiet a nie "zawalały" go danymi wszystkie naraz. I tego właśnie nie wiem jak zrobic z poziomu C AVrka. Jak wysłać pakiet na konkretny IP.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 17:27 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

mario napisał(a):
chcę , żeby to serwer "mówił" im

I to jest twój błąd w podejściu do projektowania systemów tego typu.

Oczywiście teraz ślicznie przedstawiłeś o co chodzi ale zapamiętaj sobie - że jak serwer (to nie będzie nikomu mówił) .... zapamiętaj - SERWER - NASŁUCHUJE i odpowiada na zapytania - rozumiesz ?

CLIENT - wysyła zapytania i dostaje odpowiedzi

no kurczaczki - jak się tego nie zrozumie to się zawsze będzie błądziło z pomysłami z kosmosu niestety ;)

------------------------------

wracając do twojego ślicznie narysowanego schematu .... to twój SERVER skonfigurowałbym jako UDP/CLIENT z adresem Broadcastowym 255.255.255.255 bo tu aż się prosi o taką konfigurację, zaś twoje moduły czujników jako UDP/SERVER

i wtedy twój ala SERVER może np co sekundę wysyłać po Broadcascie taką ramkę, przykład oczywiście:

"czujnik_01,podaj_temperaturę"

po sekundzie

"czujnik_02,podaj_temperaturę"

po sekundzie

"czujnik_03,podaj_temperaturę"

itd itp

Każdy z twoich czujników po odebraniu ramki sprawdza czy to zapytanie do niego - no bo przecież na początku ramki jest oznaczenie z numerem czujnika prawda? a po przecinku komenda co ma zrobić moduł czujnika, więc jak dostanie komendę "podaj_temperaturę" to grzecznie odeśle tę temperaturę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 17:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Ok, rozumiem..chyba ;)

Ale tu rodzi się kolejne moje pytanie. Z tej centralnej jednostki, która zbiera dane ze wszystkich czujników chciałbym otrzymać wszystkie dane na urządzeniach znajdujących się w innej sieci (np. 192.168.10.xx). Czyli np. na adroidzie muszę zrobić klienta do klienta ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 17:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Androidem to ty się możesz podłączyć do tego serwera przez jego AP

czyli ustaw moduł w tryb AP+STA

i wtedy android zobaczy sieć twojego "ala serwera" - podłączysz się do niej i już - możesz gadać po UDP ile chcesz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 17:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Nie nie, to będzie połaczenie przez internet. Ale już rozumiem o co biega :)
Korzystając z okazji zadam jeszcze jedno malutkie pytanko: jak w B4A uzyskać jakąś pętlę czasową nie zatrzymującą programu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 17:52 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

mario napisał(a):
orzystając z okazji zadam jeszcze jedno malutkie pytanko: jak w B4A uzyskać jakąś pętlę czasową nie zatrzymującą programu ?

powiem tak ;)

Tfuuu, na psa urok, przez lewe ramię ..... masakra - zapomnij o takich głupotach w B4A ! :lol: .... to jest MASAKRA i niech ci to do głowy nawet nie przychodzi. Tutaj od razu trzeba to sobie porządnym młotkiem z głowy wybić RAZ NA ZAWSZE ;) i nigdy nawet przez sen nie mówić i pętli opóźniającej w Androidzie ;)

Pomijam już że gdybyś to zrobił to po prostu (brzydko mówiąc) "zachlastasz albo inaczej zaszlachtujesz" aplikację :lol: ..... to przecież masz tu kurna chata pełne zdarzenia, kurczę - timery .... no wszystko czego dusza zapragnie - tak jak na PC .... praktycznie ..... Więc mam nadzieję, że rozumiesz dlaczego tak ostro wybijamy sobie z głowy tak kocie pomysły ;)

------------------------ [ Dodano po: 2 minutach ]

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



a potem gdzieś

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 18:40 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

mario napisał(a):
Ale tu rodzi się kolejne moje pytanie. Z tej centralnej jednostki, która zbiera dane ze wszystkich czujników chciałbym otrzymać wszystkie dane na urządzeniach znajdujących się w innej sieci

Oprócz konfiguracji APSTA o której napisał Mirek można jeszcze uruchomić socketB na innym porcie i tenże port "wystawić na zewnątrz" i łączyć się z nim przez internet.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2015, o 20:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Rafał555 napisał(a):
Oprócz konfiguracji APSTA o której napisał Mirek można jeszcze uruchomić socketB na innym porcie i tenże port "wystawić na zewnątrz" i łączyć się z nim przez internet.

DOKŁADNIE, są i jeszcze inne możliwości jakby dobrze pokombinować ;) no ale przede wszystkim warto zacząć i popróbować tych podstawowych żeby zrozumieć ... co i jak działa

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO