Wetterstation per TE923con auslesen / os.system

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
motte3009
User
Beiträge: 10
Registriert: Sonntag 17. März 2013, 20:37

Moin ! Ich muss mich mal wieder an die Experten unter euch wenden.

Ich lese mit dem TE923-Tool und einem Raspi eine Wetterstation per USB aus.

Das funktioniert einwandfrei. /usr/bin/te923con liefert mir eine Ausgabe mit allen Sensoren zurück:

Beispiel: 1356296694:23.00:45:9.50:89:10.50:84:i:i:i:1006.9:i:4:0:8:0.7:0.7:7.9:389

Jetzt habe ich ein Script geschrieben, welches te923con per os.system ausführt und das Ergebniss in eine Variable schreibt.

Das Ergebniss müsste so aussehen:
1:2:3:4:5:6:7

es sieht aber so aus:
1:2:3:4:5:6:7
0

Eigentlich möchte ich den Wert der Variable dann per GET an meinen Webserver senden, der die Daten dann in einer Datenbank ablegt.

Lasse ich die Daten an den Server übertragen, kommt als Ergebniss nur
"-0" an.

Ich bastel jetzt schon seit 2 Tagen da dran rum und finde den Fehler einfach nicht...

Anbei das Script:

import os
import time
import datetime
import string

temperature = os.system('/usr/bin/te923con -s')

print temperature

URL = "http://www.meinedomain.de/zuhause/raspb ... ?daten=-%s" %temperature

os.system('wget -q --spider %s' %URL)





Danke,

Gruss Motte
BlackJack

@motte3009: `os.system()` gibt nicht das zurück was Du denkst und die Ausgabe besteht nicht nur aus dem was Du mit ``print`` ausgibst, sondern auch das was das externe Programm so ausgibt. Du brauchst das `subprocess`-Modul wenn Du die Ausgaben von einem externen Programm in Deinem weiterverarbeiten möchtest.

Man sendet mit GET nichts an einen Webserver was dann in einer Datenbank landet. GET heist ”holen”. Für Anfragen die den Zustand des Servers/der Anwendung verändern verwendet man POST (oder PUT).

Das externe ``wget`` ist IMHO unschön. An Bord gibt es schon die Module `urllib` und `urllib2`, aber ich würde das externe `requests`-Paket verwenden.
Antworten