TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
HTTP-Server in Python …

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> eSOM/3517
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 09.08.2014, 07:09    Post subject: HTTP-Server in Python … Reply with quote

Hallo Forum.

Mit der eSOM/3517-Python-Portierung lässt sich auch recht einfach ein HTTP-Server realisieren. Hierzu ein Beispiel:

Speichern Sie die folgenden Zeilen Python-Code auf dem PC in einer Datei mit dem Namen igw935-svr-sim.py.

Code:
import time
from BaseHTTPServer import BaseHTTPRequestHandler

Temision = 550.87
Tengine = 77.24
pres = 2.84
speed = 1500
gas = 334
Tfor = 69.09
Tback = 44.90
Tgen = 65.10
power = 63.50
Epower = 452383
CO2 = 56432
Tpower = 234755

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(s):
        s.send_response(200)
        s.send_header('Content-type', 'application/json')
        s.end_headers()
        s.wfile.write('{')
        s.wfile.write('"Temison"' + ':' + str(Temision) + ',')
        s.wfile.write('"Tengine"' + ':' + str(Tengine) + ',')
        s.wfile.write('"pres"' + ':' + str(pres) + ',')
        s.wfile.write('"speed"' + ':' + str(speed) + ',')
        s.wfile.write('"gas"' + ':' + str(gas) + ',')
        s.wfile.write('"Tfor"' + ':' + str(Tfor) + ',')
        s.wfile.write('"Tback"' + ':' + str(Tback) + ',')
        s.wfile.write('"Tgen"' + ':' + str(Tgen) + ',')
        s.wfile.write('"power"' + ':' + str(power) + ',')
        s.wfile.write('"Epower"' + ':' + str(Epower) + ',')
        s.wfile.write('"CO2"' + ':' + str(CO2) + ',')
        s.wfile.write('"Tpower"' + ':' + str(Tpower))
        s.wfile.write('}')

if __name__ == '__main__':
    from BaseHTTPServer import HTTPServer
    server = HTTPServer(('', 8080), MyHandler)
    print 'Starting server, use <Ctrl-C> to stop'
    server.serve_forever()

Übertragen Sie diese Datei per FTP vom PC zum eSOM/3517 in das Verzeichnis /flash. Starten Sie dann dieses Python-Skript im Rahmen einer Telnet- bzw. SSH-Sitzung einfach durch die Eingabe:

Code:
cd /flash
python igw935-svr-sim.py


Das ist schon alles. Sie können nun mit einem Browser oder einem anderen HTTP-Client auf den Server zugreifen. Beachten Sie bitte, dass der Server unter dem Port 8080 erreichbar ist.

Der HTTP-Server liefert für jeden GET-Request (die URI spielt keine Rolle) ein JSON-Objekt der Form:

Code:
{"Temison":550.87,
 "Tengine":77.24,
 "pres":2.84,
 "speed":1500,
 "gas":334,
 "Tfor":69.09,
 "Tback":44.9,
 "Tgen":65.1,
 "power":63.5,
 "Epower":452383,
 "CO2":56432,
 "Tpower":234755}


Die Datenelemente dieses JSON-Objekts entsprechen der auf einem IGW/935 vorinstallierten Demo-Anwendung für die FDE (Field Data Engine).

Gruß KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 14.09.2014, 08:36    Post subject: Server-Template … Reply with quote

Hallo Forum.

Das folgende Beispiel zeigt einen kleinen HTTP-Server, der per GET /?Tengine=Wert angesprochen werden muss. Der Query-String wird extrahiert und ‚Wert‘ an eine externe Funktion übergeben:

Code:
import urlparse
from BaseHTTPServer import BaseHTTPRequestHandler

def TengineHandler(value):
    print 'Tengine is now ' + value

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(s):
        parsed_path = urlparse.urlparse(s.path)
        querystr = parsed_path.query.split('=')
        if querystr[0] == 'Tengine' and len(querystr) == 2:
            s.send_response(200)
            TengineHandler(querystr[1])
        else:
            s.send_response(400)
        s.end_headers()

if __name__ == '__main__':
    from BaseHTTPServer import HTTPServer
    server = HTTPServer(('', 8080), MyHandler)
    print 'Starting server, use <Ctrl-C> to stop'
    server.serve_forever()

Für den Test dieses Server sollte man cURL benutzen. Ein möglicher Aufruf wäre:

Code:
curl –v http://127.0.0.1:8080/?Tengine=1234


Weitere hilfreiche Informationen zum Python-BaseHTTPServer findet man auch unter: http://pymotw.com/2/BaseHTTPServer/

Gruß KDW
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> eSOM/3517 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015