Danke für die schnelle Antwort, leider ohne Erfolg, die Fehlermeldung verweist immer noch auf den "text": "Aussentemp.: "+str(round(float(wert[3])))+"°C"
Code: Alles auswählen
#!/usr/bin/env python3
#
# Ulanzi->Solaranzeige Connector V0.31
import logging
import time
import funktionen
version_nr = "0.31"
solaranzeige_url = "http://192.168.170.196" # URL der Solaranzeige
ulanzi_url = "http://192.168.170.197" # URL der Ulanzi Pixelclock
werte = ("solaranzeige,PV,Gesamtleistung",
"solaranzeige,AC,Verbrauch",
"solaranzeige,Summen,Wh_Heute",
"solaranzeige,Batterie,SOC")
start_zeit = "07:00" # Start der Darstellung der Werte auf Ulanzi-Clock
stop_zeit = "22:15" # Ende der Darstellung der Werte auf Ulanzi-Clock
trans_effect = "5" # Übergangseffekt 0 - Slide, 1 - Dim, 2 - Zoom, 3 - Rotate, 4 - Pixelate
# 5 - Curtain, 6 - Ripple, 7 - Blink, 8 - Reload, 9 - Fade
trans_effect_time = 500 # Effekt-Zeit in mS
log_datei = "/home/pi/scripts/ulanzi.log" # Pfad und Name der Logdatei
log_level = "INFO" # NOTSET =0, DEBUG =10, INFO =20, WARN =30, ERROR =40, and CRITICAL =50
# Logging definieren
logging.basicConfig(filename=log_datei, filemode='w', level=logging.getLevelName(log_level),
format='%(asctime)s - %(message)s',
datefmt='%d-%b-%y %H:%M:%S')
# Definition Loop
def loop():
wert = funktionen.db_abfrage(datenbank, measurement, datenpunkt, solaranzeige_url)
logging.info({wert})
################################# Beginn Block Auswertung #################################
if ((wert[0]) + "," + (wert[1]) + "," + (wert[2])) == "solaranzeige,PV,Gesamtleistung":
print(wert[3])
url = ulanzi_url + "/api/custom?name="+(wert[1])+(wert[2])
data = {
"text": str(int(float(wert[3]))) + " W",
"icon": 27283,
"rainbow": bool(1),
# "lifetime": 20,
"duration": 8
}
funktionen.ulanzi_senden(url, data)
################################## Ende Block Auswertung ##################################
################################# Beginn Block Auswertung #################################
elif ((wert[0]) + "," + (wert[1]) + "," + (wert[2])) == "solaranzeige,AC,Verbrauch":
print(wert[3])
url = ulanzi_url + "/api/custom?name=" + (wert[1]) + "_" + (wert[2])
data = {
"text": str(int(float(wert[3]))) + " W",
"icon": 53323,
"color": [252, 186, 3],
# "lifetime": 20,
"duration": 8
}
funktionen.ulanzi_senden(url, data)
################################## Ende Block Auswertung ##################################
################################# Beginn Block Auswertung #################################
elif (wert[0]) + "," + (wert[1]) + "," + (wert[2]) == "solaranzeige,Summen,Wh_Heute":
print(wert[3])
url = ulanzi_url + "/api/custom?name="+(wert[1])+(wert[2])
data = {
"text": str(round((float((wert[3])) / 1000), 2)) + " kWh",
"icon": 51301,
"color": [252, 186, 3],
# "lifetime": 20,
# "pushIcon": 1,
"duration": 8
}
funktionen.ulanzi_senden(url, data)
################################## Ende Block Auswertung ##################################
################################# Beginn Block Auswertung #################################
elif (wert[0])+","+(wert[1])+","+(wert[2]) == "solaranzeige,Batterie,SOC":
print(wert[3])
url = ulanzi_url + "/api/custom?"+(wert[1])+"_"+(wert[2])
if int(wert[3]) >= 1 and int(wert[3]) <= 10:
data = {
"text": (wert[3]) + " %",
"icon": 12832,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
elif int(wert[3]) >= 11 and int(wert[3]) <= 30:
data = {
"text": (wert[3]) + " %",
"icon": 6359,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
elif int(wert[3]) >= 31 and int(wert[3]) <= 50:
data = {
"text": (wert[3]) + " %",
"icon": 6360,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
elif int(wert[3]) >= 51 and int(wert[3]) <= 70:
data = {
"text": (wert[3]) + " %",
"icon": 6361,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
elif int(wert[3]) >= 71 and int(wert[3]) <= 90:
data = {
"text": (wert[3]) + " %",
"icon": 6362,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
elif int(wert[3]) >= 91 and int(wert[3]) <= 100:
data = {
"text": (wert[3]) + " %",
"icon": 6363,
"color": [154, 250, 10],
"duration": 8
}
funktionen.ulanzi_senden(url,data)
################################## Ende Block Auswertung ##################################
################################# Beginn Block Auswertung #################################
elif ((wert[0]) + "," + (wert[1]) + "," + (wert[2])) == "solaranzeige,aktuellesWetter,Temperatur":
print(wert[3])
url = ulanzi_url + "/api/custom?name="+(wert[1])+(wert[2])
data = {
"text": "Aussentemp.: "+str(round(float(wert[3])))+"°C",
"rainbow": bool(1),
"duration": 4
}
funktionen.ulanzi_senden(url, data)
################################## Ende Block Auswertung ##################################
else:
logging.info(' Keine passende Abfrage oder Fehler in Abfrage!?')
print("Nope, keine Auswertung verfügbar für " + str(wert[0]) + "," + str(wert[1]) + "," + (wert[2]))
# Ende Funktion Loop
## Programm starten ##
print(str(funktionen.url_verfuegbar(solaranzeige_url)) + " -> Solaranzeige URL verfügbar")
if not (funktionen.url_verfuegbar(solaranzeige_url)):
logging.info('Solaranzeige URL ist nicht erreichbar !!!')
exit("Solaranzeige unter der eingegeben URL nicht erreichbar!")
print(str(funktionen.url_verfuegbar(ulanzi_url)) + " -> Ulanzi URL verfügbar")
if not (funktionen.url_verfuegbar(ulanzi_url)):
logging.info('Ulanzi URL ist nicht erreichbar !!!')
exit("Ulanzi unter der eingegeben URL nicht erreichbar!")
# Ulanzi anschalten
funktionen.ulanzi_an_aus(ulanzi_url, 1)
# diverse Einstellungen vornehmen (senden)
# Übergangseffekt etc. festlegen
url = ulanzi_url + "/api/settings"
data = {
"TEFF" : trans_effect,
"TSPEED" : trans_effect_time
}
funktionen.ulanzi_senden(url,data)
# Intro senden
funktionen.intro(ulanzi_url, version_nr)
time.sleep(8)
x = True
# Loop starten
while True:
uhrzeit = time.strftime("%H:%M")
# print(uhrzeit)
if uhrzeit >= start_zeit and uhrzeit < stop_zeit:
if not x:
funktionen.ulanzi_an_aus(ulanzi_url, 1)
logging.info('-- Ulanzi *** an *** gesendet!')
x = True
zaehler = 0
for element in werte:
D_M_D = (werte[zaehler].split(","))
print(D_M_D)
datenbank = (D_M_D[0])
measurement = (D_M_D[1])
datenpunkt = (D_M_D[2])
loop()
logging.info(f'DB Abfrage mit ** {datenbank} , {measurement} , {datenpunkt} ** gestartet !')
time.sleep(30)
zaehler = zaehler + 1
else:
if x:
funktionen.ulanzi_an_aus(ulanzi_url, 0)
logging.info('-- Ulanzi *** AUS *** gesendet!')
x = False
print(uhrzeit + " Pause!")
time.sleep(60)