Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok python 3 ban...

Tomi_25 kérdése:

Hogyan tudok python 3 ban adatokat egy weblapon megjeleníteni? Raspbery Pi platform használata közben.

Figyelt kérdés
Célom hogy egy általam írt programot a terminálban írogatja a dolgokat (méréseket) és ezt szeretném egy weblapon figyelni, illetve ha van rá mód 1 Start és Stop gombbal 1 részt kiragadni, és lementeni

2016. ápr. 26. 17:41
1 2
 1/12 A kérdező kommentje:

Elnézést a fura fogalmazásért, tehát van 1 programom python 3 as nyelven íródott ami egy GPIO portra kötött jelet figyel van vagy nincs, ezt elmenti 1 .csv fájlba ha bezárom CTRL+C vel. Az lenne még a feladatom hogy ezt ne keljen sd kártáyrol mindig kiszednem hanem küldje el 1 általam készített weblapra ahol folyamatosan tudnám figyelni hogy volt jel vagy nem volt. Illetve ha megnyomok egy Start gombot rajta akkor nyit egy új fájlt belementi a dolgokat Stop al meg bezárja és utána letudom tölteni a csv fájlom vagy txt mindegy. Lényegében Távelérést szeretnék elérni amivel tudnám nézni hogy a kis málna pc miket mér úgy, hogy ne keljen mellette ülnöm folyamatosan.

Válaszaitokat előre is köszönöm!

2016. ápr. 26. 17:47
 2/12 anonim ***** válasza:

Több megoldás lehetséges:

1. A Raspberry Pi-re feltelepítesz egy webszervert, aminek a megfelelő könyvtárába (alapesetben általában /var/www) menti el a Python-szkripted a CSV-állományt. Ehhez készíthetsz egy Javascriptes alkalmazást, ami megnyitja a helyi .csv fájl, és megfelelő formában (táblázat, grafikon,...) megjeleníti.


2. Egy távoli szerveren létrehozol egy szerveroldali szkriptet, ami fogadja a Raspberry Pi-n levő Python szkripttől az adatokat. Szóval a Python szkript nem (csak) a lokális CSV-fájlba menti, hanem a szerveren egy URL-t (például [link] ) felkeresve "tölti fel" az adatokat.

2016. ápr. 26. 18:02
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

Flask és SSE használatával viszonylag egyszerűen össze lehet dobni egy ilyet, kb. 30-40 sorból mindennel együtt.


Lényegében csinálsz egy generátort ami minden pin változásnál visszadobja a megjelenítendő információt és ezt küldöd a weblapnak text/event-stream -ként. A weblapon pedig implementálod az SSE-t. Egy gombot vagy checkboxot hozzáadni pedig nem nagy dolog, ekkor az eventet nem csak megjeleníti de fájlba is írja.

2016. ápr. 26. 18:05
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:

Köszönöm szépen mind a két választ sajnos egyiket sem értettem :D

Reméltem hogy van valami nagyon egyszerű eljárás talán a távoli szerver létrehozását megtudom valósítani esetleg valami minta program nincs valahol amiből kitudnék indulni ?

Sajnos Javát már nagyon rég nem használtam akkor is csak nagyon alap szinten :(

2016. ápr. 26. 20:55
 5/12 anonim ***** válasza:

"Sajnos Javát már nagyon rég nem használtam akkor is csak nagyon alap szinten :("

Az nem Java, hanem Javascript, és az a lokális szerveres megoldásnál használatos.


Tehát például tegyük fel, hogy a Raspberry Pi-n a webszerver főkönyvtárából a /var/www könyvtárból tölti be az index.html-t. Akkor ugyanabba a könyvtárba írhatja a Python-szkript a CSV-állományt, amit a böngészőben megnyitott HTML-kódból meghívott Javascript-kód tud betölteni, kiértékelni.


Készítettem egy kis példát (jQuery és Flot könyvtárak segítségével):

[link]

letöltöd, kicsomagolod és megnyitod böngészőben az index.html-t.


Az előnye a dolognak, hogy csak egy webszerver kell hozzá - amit akár a Python is képes létrehozni (ez esetben az a könyvtár lesz a webszerver főkönyvtára, ahol elindítod a Simplewebservert):

[link]

nem kell hozzá semmilyen külön szerveroldali nyelv, és nem függ az Internettől se.

2016. ápr. 27. 00:50
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:

Áhám már értem mire gondoltál, nagyon jól néz ki az ábrázolás is, pont egy ilyen dologra gondoltam már végig néztem az összes blogot és feltettem 3 webszervert is de a végére sosem jutottam :D

Az miért van hogy pl a sudo apt-get install apache2 -y utasítás után létre jött egy index.html fájlom de módosítani nem tudtam nem engedte felülírni.

Ezeket a JavaScripteket mivel csináltad, vagy hogyan ?

2016. ápr. 27. 01:04
 7/12 anonim ***** válasza:

Hogyha nem kell überkirály biztonság, akkor egyszerűen a python programod nyisson egy TCP szervert valamilyen porton. Minden egyes kérés esetén jöjjön létre egy új szál, ami feldolgozza a kérést.


A böngésző valami ilyesmit fog neked küldeni, ha megnyitod a http://raspberry_ip_címe:port oldalt:

GET / HTTP/1.1

Accept-Language: hu-HU

Accept-Encoding: gzip


Ami a lényeg, az az első sora lesz a kérésnek. Az három részre osztható:

[kérés módja] [kért erőforrás] [protokoll verziója]


Erre a programod egy olyat fog válaszolni, hogy:

HTTP/1.1 200 OK

Content-Length: A küldött tartalom bájtokban

Content-Type: A küldött tartalom MIME-típusa

(ez egy üres sor)

és itt jön a tartalom, pl. egy HTML oldal forráskódja


És lőn weblap. A weblapba ágyazva leküldesz egy kis JavaScript programocskát, ami AJAX kérésekkel szépen valamilyen időközönként lekéri a mért adatokat. Szóval, ha kap egy olyat a TCP szerver, hogy:

GET /meresadatok HTTP/1.1

Vegye észre, hogy most nem a weboldalt, hanem a mérési adatokat kértük, és küldje le JSON formában, merthogy azzal JavaScript-ben baromi könnyű dolgozni.


A szabvány szerint egy ilyen webszervernek a GET és a HEAD kéréseket kötelező lenne kezelnie. A kettő között az a marha nagy különbség, hogy a GET-re válaszként elküldöd a fejlécet és a tartalmat, míg a HEAD esetében csak a fejlécet.

2016. ápr. 27. 01:51
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:

Hát ebből kb egy mukkot sem értetem :D

Első körben nekem nagyon tetszik az amit csináltál ilyen szinten nekem megfelel, az adatok elérése hogyan alkottad meg a scripteket? akárhogy próbálom nem tudom áthelyezni az index_html edből de még eltolni se semmi :D

2016. ápr. 27. 02:26
 9/12 A kérdező kommentje:
Valamilyen szinten működik köszönöm a segítségeket, de még nem az igazi jelenleg a var/www/html mapában lévő index.html weblap működik de ezt csak lokálisan tudom elérni tehát arra a célra pont nem jo nekem mivel nem itthon szeretném elérni a pi-t hanem az interneten keresztül bármikor már csináltam is egy ftp.atw.hu szervert arra kéne ezt a meresek.csv fájlt elküldenem ami jelenleg a var/www/html mappában van és itt is hivatkozok rá.
2016. ápr. 27. 12:22
 10/12 anonim ***** válasza:

"hogyan alkottad meg a scripteket?"

Leültem a gép elé és az általam preferált kódszerkesztőben - jelenleg ez a Komodo Edit - megírtam. ;)


Mindehhez ismerni kellett:

* a HTML leírónyelvet

* a CSS-t

* a Javascriptet ( [link] )

* a Jquery ( [link] ) függvénykönyvtárat


Illetve kellett keresni egy grafikon rajzolását végző, a Jquery-re épülő függvénykönyvtárat - ez a Flot ( [link] ) - aminek a dokumentációja alapján és az előbbiek ismeretében összerakható.


"index.html weblap működik de ezt csak lokálisan tudom elérni"

Ha a Raspberry Pi egy router mögött van, csak át kell engedni (port forward, virtual server néven keresd a routerben) a 80-as TCP portot a routerben. Hogy ne a változékony, külső, publikus IP-címed alapján kelljen elérni a Raspbery Pi-t, használhatsz DDNS szolgáltatást (ilyen például a [link] ).


"csináltam is egy ftp.atw.hu szervert arra kéne ezt a meresek.csv fájlt elküldenem"

Ez is egy megoldás - Pythonban van FTP-modul:

[link]

az általam elkészített szkriptet csak mellé fel kell tölteni.

2016. ápr. 27. 22:53
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!