Moin, ich versuche aktuell mit einem Python Programm einen DS18B20 Temperatursensor auszulesen. Das funktioniert auch schon. Jetzt will ich aber die Daten auf Sensemap hochladen und das IOS 14 Widget nutzen. Ich habe mich mal erkundigt und folgenden Code erstellt:
import os, sys, time
import time
from datetime import datetime
import sys
import numpy as np
import os
import time
import random
import json
import pytz
import requests
#Modul 1 Einlesen des DS18B20
# Global für vorhandene Temperatursensoren
tempSensorBezeichnung = [] #Liste mit den einzelnen Sensoren-Kennungen
tempSensorAnzahl = 0 #INT für die Anzahl der gelesenen Sensoren
tempSensorWert = [] #Liste mit den einzelnen Sensor-Werten
# Global für Programmstatus
programmStatus = 1
#Sensemap
headers = {'content-type': 'application/json'}
url = 'https://api.opensensemap.org/boxes/:SenseboxID/data'
def ds1820einlesen():
global tempSensorBezeichnung, tempSensorAnzahl, programmStatus
#Verzeichnisinhalt auslesen mit allen vorhandenen Sensorbezeichnungen 28-xxxx
try:
for x in os.listdir("/sys/bus/w1/devices"):
if (x.split("-")[0] == "28") or (x.split("-")[0] == "10"):
tempSensorBezeichnung.append(x)
tempSensorAnzahl = tempSensorAnzahl + 1
except:
# Auslesefehler
print ("Der Verzeichnisinhalt konnte nicht ausgelesen werden.")
programmStatus = 0
#Modul 2 DS18B20 auslesen
def ds1820auslesen():
global tempSensorBezeichnung, tempSensorAnzahl, tempSensorWert, programmStatus
x = 0
try:
# 1-wire Slave Dateien gem. der ermittelten Anzahl auslesen
#while x < tempSensorAnzahl:
dateiName = "/sys/bus/w1/devices/" + tempSensorBezeichnung[x] + "/w1_slave"
file = open(dateiName)
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
sensorwert = float(stringvalue[2:]) / 1000
temperatur = '%6.2f' % sensorwert #Sensor- bzw. Temperaturwert auf 2 Dezimalstellen formatiert
tempSensorWert.insert(x,temperatur) #Wert in Liste aktualisieren
x = x + 1
#Modul 3 Sensemap
data = {"sensordatavalues": [
{
"value_type": "DS18B20_1",
"value": "5.38"
},
{
"value_type": "DS18B20_2",
"value": "4.98"
}
]
}
params = {'Temperatur': 1}
r = requests.post(url, params=params, json=data, headers=headers)
print(r.status_code)
Ich habe die Fehlermeldung das die „params…“ Zeile einen Syntax Fehler hat. Kann mir jemand helfen?