Warning: Illegal string offset 'name' in [path]/includes/functions.php on line 6439
ESP8266webserver un php
+

thread: ESP8266webserver un php

  1. #1
    Senior Member
    Mar 2011
    1,120

    ESP8266webserver un php

    Ir ES8266 uz kura ir webserveris (paprovētas dažādas webserveru variācijas) + savs kods sensora datu nolasīšanai un apstrādei. Ar parastām HTML lapām viss skaidrs un liekas ka lielu problēmu nav ierakstu kodā vai atmiņā un tiek servētas bez aizķeršanās, bet par PHP netieku gudrs. Vai php faili vispār var darboties uz ESP vai tur bez kāda Apache vai ka cita nav ko iesākt? Mēģināju ar šādu kodiņu, bet nekas nesanāca - GET nemeklē nekādus mainīgos un pati lapa parādās ka kods nevis rezultāts. Tai pat laikā ar uzraxtīto kodu server.arg(name) uz ESP es tieku klāt GET mainīgajiem. Bet tikko tas ir HTML kodā tā nereaģē. Piem uz šādu
    :
    <script type=\"text/javascript\">  document.getElementById('location').value = \"<?php echo $_GET['location'];?>\";</script>
    Droši vien ka elementāras lietas nepārzinu, bet ja varat tad paskaidrojiet. Esmu pavisam zaļš šajās lietās.

    Testam pavisam vienkāršu kodu paņēmu.
    šo form.htm atveru uz planšetes un aizpildu
    :
    <!DOCTYPE HTML>
    <html>  
    <body>
    
    <form action="welcome_get.php" method="get">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    <input type="submit">
    </form>
    
    </body>
    </html>

    šo welcome_get.php serveris atsūta pēc "submit", bet redzu kā kodu nevis rezultātu
    :
    <html>
     <body>
      Welcome <?php echo $_GET[\"pot2\"]; ?><br>
      Your email address is: <?php echo $_GET[\"units\"]; ?>
     </body>
    </html>
    kodi no https://www.w3schools.com/php/php_forms.asp

  2. #2
    Senior Member
    Mar 2011
    716

    PHP jau ir skriptēšanas valoda, attiecīgi, jā, nu, jābūt kaut kam, kas to PHP uz Tava ESP izpilda. Apache to nedara, to dara tieši PHP. Vai tas ir taisīts uz ESP - nu, īsti nezinu. Vai mikrokontrolieris ir īstā vide uz kuras griezt skriptus pildošas vides, nu, par to arī nezinu, drīzāk šaubos. Tev tiešām vajag caur webu tikt klāt pie katra sensora atsevišķi? To sensoru lietu nevar kaut kā centralizēt, ka to savāktos datus koncentrē vienā vietā, nu, kaut vai Rasberijā un tad webojas caur to?

  3. #3
    Senior Member
    Mar 2011
    1,120

    Piemērs. Uz planšetes ir slaideris (range), kurš pēc pabīdīšanas nosūta sensoram darba režīmu (0-255). Pabīdot slaideri sensorsdarbojas ar jaunaiem parametrie, BET uz planšetes slaideris pēc "submit" pārlec iepriešējā pozīcjā (nolasa no programmas uint8_t value, kurš vēl nav paspēts nomainīt un jauno vērtību). Ja uztaisu Refresh, tad viss bumbās, jo dati jau ieraxtīti programmas kodā, bet tas nav normāli, tādēļ vajag lai slaideris nolasa nosūtīto/ieraxtīto $_GET["name"] uzreiz pēc "submit" un tādā pozīcijā arī nostāda slaideri (arī dropbox, radio buttons utt). Kaut ka sarežģīti sanāca skaidrot, bet nu kaut ka tā.
    Patiesība visa tā "dancošana" ir tikai dēļ tā, ka interfeiss "atpaliek" par vienu soli no reālās darbības. Citādi viss darbojas bez bēdu. Varētu pielikt papildus Refresh, bet nepatīk man ka tā lapa refrešojas un raustās. Gribu visu pa smuko.
    .. tagad iedomājos ka varētu caur ajax viņu uzlikt pareizu pēc "submit", bet atkal tāda raustīšanās sanāk - pabīdu slaideri (viss kruta) salieku dropboxu un radio buton punktus ( viss kruta) nospiežu submit (viss saliktais pārlec uz default #$@%@%$#%$@) un tad pēc brītiņa pārleks uz reālajām vērtībām. Īsti labi nav

  4. #4
    Moderator
    Jan 2009
    Rīga
    4,429

    Kāreiz līdzīgs projekts ir padomā. Kā tiks atrisināts? Brutāli: izmetot ESP un uzliekot RPi. Saprotu ka Tev tas nederēs.
    Pirms izmest ESPi, tika izskatīts, kas derēs un kas nederēs. Programmētājs saka ka ESPis sagurs ja vajadzēs apstrādāt vairāk kā vienu useri. Pat ja lielā skaitļošana griežas usera browserī un ESPis tikai iedod datu caur soketu. Viena lietotāja gadījumā vel varētu savērt, bet ja gribās vairāk, tad tāds čakars, ka programmētājs grib savu iemīļoto pilnvērtīgo python, nevis micropython vai arduino C un nečakarēties.

    Esaku papētīt ko var no soketa izspiest un uzrakstīt maksimāli daudz javascriptu browser pusē.

  5. #5
    Senior Member
    Mar 2011
    1,120

    Programmētājs saka ka ESPis sagurs ja vajadzēs apstrādāt vairāk kā vienu useri. .
    neesmu baigais spečuks, bet esmu dzirdējis ka ja webserveri taisa asinhronu (īsti nesaprotu ko tas nozīmē), tad viņš burtiski lido. Varbūt tas ir kaut kas šāds?
    https://github.com/me-no-dev/ESPAsyncWebServer
    un to ka ESPis var daudz pavilkt (man pietiek un pāri paliek) sapratu pēc tā ka 192kHz/12bit dzen cauri šim mazajam štruntam. Saprotu, ka tas nav īstais rādītājs, bet tomēr.

    Esaku papētīt ko var no soketa izspiest .
    Ja es vēl saprastu ko tas nozīmē

    Raxtīt man daudz nav ko - slodze uz proci praktiski nekāda - aizsūtu darba režīmu un atpūšos. Skatos tik ik pa brīdim atsūtītos rādījumus.

  6. #6
    Moderator
    Jan 2009
    Rīga
    4,429

    Sokets šajā gadījumā ir domāts vecais labais TCP ports, kur pats sūti datus kā tev vajag. Saka ka web browseris to atbalsta.
    Vēl eksistē arī tādi WebSocketi, bet tas vairāk saistīts ar HTML lietām.

    Jā, 192kHz/12bit nav rādītājs, jo visu laiku cilpā ņemam datus un spēlējam vai sūtam.
    Stāsts ir par to, ka ir vairāki useri un katrs kaut ko spaida. Par cik tu esi vienīgais jūseris, tad arī web lietas būs vienkāršākas.

  7. #7
    Senior Member
    Mar 2011
    1,120

    hi hi, beidzot tomēr apčakarēju softu bez visādiem $_GET u.c. Viss izrādījās vienkāršāk nekā domāju - varbūt kādam arī noder - uzliku neredzamu iframe, kur atveras jaunā lapa un rezultātā man lapā pēc onchange="submit()" smuki paliek uz vietas visi uzregulētie slaideri un parējais.
    :
    <iframe name='name' height='0' frameborder='0'></iframe>

  8. #8
    Senior Member
    Sep 2006
    Riga
    3,053

    un kurš tad "ķer" submit? jeb POST metodi?
    Tev jau vajag kaut kādu JSON/POST otrā galā apstrādāt, lai strādātu ne jebkura telefona/planšetes ar jQuery.

  9. #9
    Senior Member
    Mar 2011
    1,120

    un kurš tad "ķer" submit?.
    server.args()

+