Hallo,
bin neu hier und neu bei Python.
Ich würde gern mit dem RPI 3 eine externe Temperatur über 1Wire-Sensor (DS18B20) aufnehmen und an Thingspeak senden.
Ich habe zwar beides separat schon ausführen können, aber zusammen wollen die einfach nicht. Vielleicht kann mal ein Erfahrener Pythonier drüber schauen und mir helfen.
Hier der Code zum auslesen:
#!/usr/bin/python
# coding=utf-8
# messprogramm.py
#----------------
import os, sys, time
def aktuelleTemperatur():
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/28-000005d2e508/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
rueckgabewert = '%6.2f' % temperature
return(rueckgabewert)
#schleifenZaehler = 0
#schleifenAnzahl = 20
#schleifenPause = 1
#print "Temperaturabfrage für ", schleifenAnzahl,
# " Messungen alle ", schleifenPause ," Sekunden gestartet"
print(temperature)
#while schleifenZaehler <= schleifenAnzahl:
# messdaten = aktuelleTemperatur()
# print "Aktuelle Temperatur : ", messdaten, "°C",
# "in der ", schleifenZaehler, ". Messabfrage"
# time.sleep(schleifenPause)
#schleifenZaehler = schleifenZaehler + 1
print("Temperaturabfrage beendet")
1Wire Temp auslesen und via Internet senden
-
- User
- Beiträge: 5
- Registriert: Freitag 20. Oktober 2017, 12:05
Und den folgenden Code wollte ich so abändern, dass nur die 1Wire-Temp gesendet wird.
Hier der Sende Code:
#!/home/pi/Schreibtisch/
#
#
from __future__ import print_function
import paho.mqtt.publish as publish
import psutil
# The ThingSpeak Channel ID
# Replace <YOUR-CHANNEL-ID> with your channel ID
channelID = "339864"
# The Write API Key for the channel
# Replace <YOUR-CHANNEL-WRITEAPIKEY> with your write API key
apiKey = "9N3W0XT64YCH5IRN"
# The Hostname of the ThinSpeak MQTT broker
mqttHost = "mqtt.thingspeak.com"
# Set the transport mode to WebSockets
tTransport = "websockets"
tPort = 80
# Create the topic string
topic = "channels/" + channelID + "/publish/" + apiKey
while(1):
# get the system performance data
cpuPercent = psutil.cpu_percent(interval=15)
ramPercent = psutil.virtual_memory().percent
print (" CPU =",cpuPercent," RAM =", ramPercent)
# build the payload string
payload = "field1=" + str(cpuPercent) + "&field2=" + str(ramPercent)
# attempt to publish this data to the topic
try:
publish.single(topic, payload, hostname=mqttHost, transport=tTransport, port=tPort)
except (KeyboardInterrupt):
break
except:
print ("There was an error while publishing the data.")
Hier der Sende Code:
#!/home/pi/Schreibtisch/
#
#
from __future__ import print_function
import paho.mqtt.publish as publish
import psutil
# The ThingSpeak Channel ID
# Replace <YOUR-CHANNEL-ID> with your channel ID
channelID = "339864"
# The Write API Key for the channel
# Replace <YOUR-CHANNEL-WRITEAPIKEY> with your write API key
apiKey = "9N3W0XT64YCH5IRN"
# The Hostname of the ThinSpeak MQTT broker
mqttHost = "mqtt.thingspeak.com"
# Set the transport mode to WebSockets
tTransport = "websockets"
tPort = 80
# Create the topic string
topic = "channels/" + channelID + "/publish/" + apiKey
while(1):
# get the system performance data
cpuPercent = psutil.cpu_percent(interval=15)
ramPercent = psutil.virtual_memory().percent
print (" CPU =",cpuPercent," RAM =", ramPercent)
# build the payload string
payload = "field1=" + str(cpuPercent) + "&field2=" + str(ramPercent)
# attempt to publish this data to the topic
try:
publish.single(topic, payload, hostname=mqttHost, transport=tTransport, port=tPort)
except (KeyboardInterrupt):
break
except:
print ("There was an error while publishing the data.")
-
- User
- Beiträge: 5
- Registriert: Freitag 20. Oktober 2017, 12:05
Ja, also es wäre gut wenn ich noch halbwegs wüsste was da passiert. Weil ich das beim Studium präsentieren soll und evtl. bis fast sicher Fragen beantworten muss.
Also Büdeeee hilft mir jemand. :K
Also Büdeeee hilft mir jemand. :K
@elektrobot74: wo ist Dein konkretes Problem? Deine Skripte tuten nicht, weil die Einrückungen fehlen. Und ist das im zweiten Skript Dein echter API-Key? Dort ist auch die Shebang-Zeile kaputt. `return` und `while` sind keine Funktionen, sollte man also auch nicht mit Klammern schreiben. Nakte Excepts sollte man nie verwenden, weil die wirklich jeden Fehler (auch manche Programmierfehler) abfangen; immer die konkreten Exceptions angeben. Benutze Stringformatierung, statt Strings mit + zusammenzustückeln.
-
- User
- Beiträge: 5
- Registriert: Freitag 20. Oktober 2017, 12:05
Danke Sirius 3,
die Codes sind nicht von mir, die habe ich im Internet gefunden. Könntest Du mir bei dem zusammenstückeln helfen? Ich habe auch nicht ganz verstanden wie ich das was du gesagt hast korrigieren soll.
die Codes sind nicht von mir, die habe ich im Internet gefunden. Könntest Du mir bei dem zusammenstückeln helfen? Ich habe auch nicht ganz verstanden wie ich das was du gesagt hast korrigieren soll.
-
- User
- Beiträge: 5
- Registriert: Freitag 20. Oktober 2017, 12:05
Ok - anscheinend sind Einrückungen wichtig.
Wie rückt man eigentlich richtig ein - gibt es da eine Hilfestellung?
Wie rückt man eigentlich richtig ein - gibt es da eine Hilfestellung?
Das offizielle Python Tutorial. Das erklärt sämtliche Sprachgrundlagen. https://docs.python.org/3/tutorial/
- noisefloor
- User
- Beiträge: 3829
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
exakt den gleichen Thread gibt's übirgens auch im Raspi-Forum: https://forum-raspberrypi.de/forum/thre ... et-senden/
Der 'Tenor docht ist der gleiche wie hier...
Gruß, noisefloor
exakt den gleichen Thread gibt's übirgens auch im Raspi-Forum: https://forum-raspberrypi.de/forum/thre ... et-senden/
Der 'Tenor docht ist der gleiche wie hier...
Gruß, noisefloor