logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Ethernet - Sterowanie urządzenia opartego na uP przez przeglądarkę www.

Pea5 26 Cze 2013 18:04 2373 15
  • #1 12459094
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    Witam,
    problem w temacie oczywisty, można postawić serwer www na uP, udostepnić odpowiedni port i wszystko gra, takie rozwiązanie mam teraz.
    Potrzebuję jednak ominąć problem zmiennego IP, i nie interesują mnie żadne rozwiązania pod tytułem no-ip.org albo coś w tym stylu. Rozwiązanie problemu, jakie wymyśliłem ja to użycie serwera pośredniczącego, do którego uP łączyłby się co okreslony kwant czasu (np 5s) i sprawdzał czy są nowe dane dla niego przeznaczone, jednocześnie przesyłając swoje dane (np odczyt temperatury). Idea przedstawiona jest na poniższym grafie:
    Ethernet - Sterowanie urządzenia opartego na uP przez przeglądarkę www.

    Moje pytanie brzmi tak, czy ktoś już tego próbował, jeśli tak to jak użył protokół?
    Ja myślałem o FTP, ale niestety stos TCP/IP Microchipa nie ma przykładu clienta FTP. Druga myśl jaka przyszła mi do głowy to protokół HTTP.

    Z góry dzięki za odp.
  • #2 12459601
    Pawel2420
    Poziom 31  
    Posty: 1554
    Pomógł: 136
    Ocena: 101
    Znacznie wygodniejszy, szybszy i efektywniejszy będzie protokół HTTP.
  • #3 12459853
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    Czyli tak jak myślałem,
    Ale teraz nadchodzi pytanie z serii głupich, jak zaprogramować serwer? tzn podejrzewam że tam jakieś programowanie tzw. webowe będzie wchodzić w grę jakieś php czy coś, mylę się ?
    Bo chciałbym żeby serwer HTTP był po stronie serwera a nie mikroprocesora właśnie.

    dzięki za Odp.
  • #4 12461044
    Pawel2420
    Poziom 31  
    Posty: 1554
    Pomógł: 136
    Ocena: 101
    Po stronie uP potrzebna jest obsługa protokołu HTTP. W tym wypadku określenie "obsługa" sprowadza się jedynie do wysłania "GET ..." przez TCP i odebrania odpowiedzi.
    Po stronie serwera wystarczy umieścić prosty skrypt np. w PHP odsyłający potrzebne dane.
  • #5 12461138
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    Ok, w zasadzie to utwierdziłeś mnie w przekonaniu.
    Pytanie tylko jak łagodnie zacząć z skryptami PHP ? dodam że kompletnie się na tym nie znam :/
    Będę wdzięczny za pomoc.
  • #6 12461170
    Pawel2420
    Poziom 31  
    Posty: 1554
    Pomógł: 136
    Ocena: 101
    Zacznij od odebrania przez uP ciągu "Hello World" z takiego skryptu
    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #7 12461177
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    ok, pytanie absolutnie banalne, ale nie wiem gdzie taki skrypt umieścić. Tzn zakładam hosting np na cba.pl i mam darmowy serwer HTTP, i co dalej?
    wrzucam plik index.html którego zawartością jest ten skrypt?

    Chodzi o to że potrzebuje narzędzia do sprawdzania czy dobrze tworzę architekturę oprogramowania na uP.

    Dzięki
  • Pomocny post
    #8 12461209
    Pawel2420
    Poziom 31  
    Posty: 1554
    Pomógł: 136
    Ocena: 101
    Nie.
    Tworzysz plik z rozszerzeniem php np. "test.php".
  • #9 12461705
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    ok i z punktu widzenia uP po połączeniu się do serwera i wysłania polecenia GET powinniśmy otrzymać odpowiedź Hello World na uP. Spróbuję to zaimplementować i zobaczymy co z tego wyjdzie, w razie czego będę pisał :)
  • #10 12495979
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    Witam ponownie,
    "Postawiłem" Stos TCPIP Microchip na uP PIC32 i tak jak Pawel2420 radził stworzyłem prosty skrypt:
    <?php
    $test= $_GET['data'];
    echo $test;
    ?>
    Który innymi słowy zwraca przesłaną w linku wartość, np:
    http://www.pea5.cba.pl/?data=17

    Wszystko działa, można sprawdzić z przeglądarki. Problem natomiast stanowi teraz odbieranie przez klienta TCP (uP) danych przesyłanych przez serwer. Tzn w tym momencie uP łapie do tablicy całe źródło strony (nie będę wklejał tutaj bo duża objętość, ale wystarczy wrzucić powyższy link do przeglądarki i dać prawym klikiem myszy "źródło strony") W każdym razie jest to bardzo dużo danych i trochę są z mojego punktu widzenia nadmiarowe. Czy macie jakiś pomysł jak przesłać dane z serwera na uP ? Oczywiście tworzenie serwera na uP i przesyłanie do niego za pomocą GET/POST odpada z powodu mojego pierwszego postu :)

    Bardzo proszę o porady :)
  • #11 12495990
    McMonster
    Poziom 32  
    Posty: 1942
    Pomógł: 182
    Ocena: 57
    Rozwiązaniem jest hosting, który nie dokleja tego całego syfu do stron. Albo w ogóle serwer shellowy z udostępnieniem portu, dedykowana aplikacja w dowolnym języku i prosty protokół opakowany w TCP.
  • #12 12496088
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    a ta dedykowana aplikacja w dowolnym języku to rozumiem że chodzi o jakąś webową ?

    A mógłbyś coś bardziej podpowiedzieć, jakimś linkiem podratować albo coś ?
    Chciałbym móc sterować jakimiś LEDami np, w ten sposób że uP okresowo (np co 1sekundę) łączył się z serwerem i pobierał dane dla niego i wprowadzał w życie. Więc rozumiem że pobieranie danych przez klienta polega przez zaciągnięcie przez niego całego źródła, dobrze rozumiem ?

    Sorry za takie banalne pytania, ale jak wspomniałem całe życie bawię się z elektroniką i od webowych spraw mi daleko. Teraz staram się coś robić tym zakresie żeby się poduczyć.
  • #13 12496119
    McMonster
    Poziom 32  
    Posty: 1942
    Pomógł: 182
    Ocena: 57
    Nie webową, opartą o najzwyklejsze sockety. Stos TCP już masz, więc możesz gołe bajty wysyłać i odczytywać z pakietów praktycznie bez narzutu. Do poczytania dowolny tutorial dotyczący socketów w wybranym języku.
  • #14 12496152
    Pea5
    Poziom 12  
    Posty: 78
    Ocena: 2
    ok, to jeszcze jedno nurtujące mnie pytanie. Jak podejrzeć to co uP przesłał na serwer ?
    Prymitywnie to zabrzmi, ale naprawdę trochę już tego szukałem i nic. Np. uP przesyła daną na serwer za pomocą GET: http://www.pea5.cba.pl/?data=17
    i jak teraz z przeglądarki podejrzeć że to tam doszło ?, albo jak przygotować dla uP paczkę informacji (np o zapalonych diodach LED). Tzn patrząc na zdjęcie w pierwszym moim poście:

    Wchodzę poprzez przeglądarkę i ustawiam znacznik LED1 = 1 np tak:
    http://www.pea5.cba.pl/?LED1=1
    i chciałbym żeby uP co 1s łączył się na ten serwer i czytał czy LED1 = 1 czy też LED1 = 0.
    Jest to dla mnie naprawdę nie lada problem jak to zrobić, bo póki co zmienne mi się kasują i uP nic nie odczytuje.. Poratujecie? Potrzebuje tego żeby jakoś zacząć z tym działać.
  • #15 12498256
    Pawel2420
    Poziom 31  
    Posty: 1554
    Pomógł: 136
    Ocena: 101
    Pea5 napisał:
    Problem natomiast stanowi teraz odbieranie przez klienta TCP (uP) danych przesyłanych przez serwer. Tzn w tym momencie uP łapie do tablicy całe źródło strony (nie będę wklejał tutaj bo duża objętość, ale wystarczy wrzucić powyższy link do przeglądarki i dać prawym klikiem myszy "źródło strony") W każdym razie jest to bardzo dużo danych i trochę są z mojego punktu widzenia nadmiarowe. Czy macie jakiś pomysł jak przesłać dane z serwera na uP ?

    Ustaw w skrypcie Content-Type np. na binary/octet-stream. Zapewne serwer domyślnie uznał, że jest to text/html i dokleił reklamy.
  • #16 12498325
    kradam
    Poziom 15  
    Posty: 125
    Pomógł: 11
    Ocena: 6
    Pea5 napisał:
    Jest to dla mnie naprawdę nie lada problem jak to zrobić, bo póki co zmienne mi się kasują i uP nic nie odczytuje..

    No, to nie tak działa :-). To co wysyłasz parametrem w adresie żyję tylko do momentu wygenerowania strony. Żeby przeżyło dłużej musisz gdzieś to zapisać, np. w pliku lub bazie danych. A potem w momencie gdy wywołuje klient z pliku lub bazy odczytać i wyświetlić zamiast "Hello World". Generalnie temat nie jest na kwadrans, ale myślę, że jest odpowiedni, aby nauczyć się aplikacji webowych i PHP przy okazji.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje rozwiązania do zdalnego sterowania urządzeniem opartym na mikroprocesorze (uP) przez przeglądarkę internetową, z problemem zmiennego IP. Proponuje użycie serwera pośredniczącego, do którego uP łączyłby się co określony czas, aby wymieniać dane. W dyskusji zasugerowano wykorzystanie protokołu HTTP jako bardziej efektywnego niż FTP. Użytkownik dowiaduje się, jak stworzyć prosty skrypt PHP do obsługi żądań GET oraz jak zorganizować architekturę oprogramowania. Pojawiają się pytania dotyczące odbierania danych przez uP oraz sposobu ich przechowywania, co prowadzi do wniosku, że dane muszą być zapisywane w pliku lub bazie danych, aby były dostępne dla klienta TCP.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA