Skocz do zawartości
astex

TCP/ IP serwer klient, przesyłanie danych z czujnika

Pomocna odpowiedź

Witam,

Mam problem, chciałbym przesłać do laptopa wartość temperatury i wilgotności z czujnika DHT11 podłączonego do raspberry pi. Dotychczas stworzyłem komunikację między laptopem a maliną przy pomocy TCP/IP "socket" w pythonie i mogę np. uruchomić z laptopa przekaźnik podłączony do raspberry, który  zapala lampkę. Jednak od dłuższego czasu nie mogę wpaść na pomysł jak przesłać dane z czujnika. Sensor działa poprawnie na malince.

Proszę o pomoc 🙂 z góry dziękuję 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@astex witamy na forum! Czyli rozumiem że narazie masz nawiązaną komunikację ale tylko jednokierunkowo? Czy istota problemu jest w sposobie wysłania wartości liczbowej?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Na przykład dokładnie odwrotnie (serwer na laptopie, klient na malince).

Poza tym transmisja TCP/IP jest dwukierunkowa, możesz np. zapytać o coś malinkę i dostać odpowiedź (w ten sposób działają np. serwery http).

Do wyboru, do koloru 🙂

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Komunikacja działa w dwie strony. Po wpisaniu odpowiedniej komendy ze strony klienta, serwer importuje program, który włącza/wyłącza przekaźnik i wysyła wiadomość zwrotną o wykonanej czynności. Problem pojawia się podczas wysyłania wartości liczbowych z czujnika. Jestem początkującym użytkownikiem maliny i pythona, ale wydaje mi się, że problem może być z odpowiednim kodowaniem i dekodowaniem tych wartości. Próbowałem różnymi sposobami lecz bez powodzenia. Czy również powinienem importować program, który odpowiada za odczyty temperatury i wilgotność do serwera? Czy ten program powinien znajdować się w kodzie, który tworzy serwer? 

Pozdrawiam 🙂

Udostępnij ten post


Link to post
Share on other sites

@astex a potrafisz wysyłać i odbierać komunikaty tekstowe? Bo jeśli tak, to skonwertuj wynik z czujnika na napis i wyślij. Po pierwsze łatwiej to testować, bo na początek możesz po prostu wyświetlać co dostajesz, bez przetwarzania. Możesz też testować serwer niezależnie wysyłając mu napisy z dowolnego terminala. A jak już opanujesz wysyłanie gołych tekstów to poczytaj o formacie JSON, będziesz miał wtedy piękną możliwość przesyłania nawet całkiem skomplikowanych danych, czy wyników.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
14 godzin temu, astex napisał:

Jednak od dłuższego czasu nie mogę wpaść na pomysł jak przesłać dane z czujnika.

Użyj UDP a nie TCP chyba, ze koniecznie transfer musi mieć potwierdzenia i ponawianie błędnych ramek.

Temperatura, wilgotność w DHT11 mają rozmiar bajtu. Wysyłasz 2 bajty i to wszystko. Jak planujesz  przesyłać dane z większej liczby różnych rodzajów czujników to może to być XML, JSON, HTML. Możesz użyć formatu CSV, czy prostego własnego formatu tekstowego/binarnego np

parametr1=wartosc1
parametr2=wartosc2

 

Udostępnij ten post


Link to post
Share on other sites

A może pokażesz kod? Bo to mi wydaje się proste:

Masz zrobione: serwer odbiera wiadomość "włącz/wyłącz". Merda sobie przekaźnikiem i w odpowiedzi zwraca informację, że pomerdał.

A chcesz mieć dodatkowo: serwer odbiera wiadomość "pokaż czujnik". Odczytuje wartość czujnika i w odpowiedzi zwraca tę wartość.

Przy okazji: lepiej użyj serwera http zamiast socket, 90% rzeczy będziesz miał gotowe na dzień dobry.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...