Fehlermeldung bei Anzeige Aussentemperatur
-
- Beiträge: 38
- Registriert: Di 7. Mai 2019, 17:50
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Fehlermeldung bei Anzeige Aussentemperatur
Hallo in die Runde,
ich bekomme immer eine Fehlermeldung wenn ich die Abfrage der Aussentemperatur einfüge,
pi@solaranzeige:~ $ /home/pi/scripts/ulanziconnect.py
SyntaxError: Non-UTF-8 code starting with '\xb0' in file /home/pi/scripts/ulanziconnect.py on line 166, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
wobei sich Zeile 166 auf diesen Bereich bezieht:
"text": "Aussentemp.: "+str(round(float(wert[3])))+"°C",
Vielleicht hat ja schon einer daselbe Problem gehabt.
Vielen Dank für Eure Unterstützung
Stephan
ich bekomme immer eine Fehlermeldung wenn ich die Abfrage der Aussentemperatur einfüge,
pi@solaranzeige:~ $ /home/pi/scripts/ulanziconnect.py
SyntaxError: Non-UTF-8 code starting with '\xb0' in file /home/pi/scripts/ulanziconnect.py on line 166, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
wobei sich Zeile 166 auf diesen Bereich bezieht:
"text": "Aussentemp.: "+str(round(float(wert[3])))+"°C",
Vielleicht hat ja schon einer daselbe Problem gehabt.
Vielen Dank für Eure Unterstützung
Stephan
- mr.big
- Beiträge: 595
- Registriert: Mi 7. Sep 2022, 12:12
- Wohnort: tief im Osten...
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 121 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
vergleiche mal bitte damit:
Das ist aktueller Stand, damit muss es laufen!
Überprüfe bitte auch mal ob die "Einrückungen" (Leerzeichen vor dem Text) mit dem Blöcken davor/danach übereinstimmen!?
Sollte in etwa so aussehen!
Code: Alles auswählen
################################# 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 ##################################
Überprüfe bitte auch mal ob die "Einrückungen" (Leerzeichen vor dem Text) mit dem Blöcken davor/danach übereinstimmen!?
Sollte in etwa so aussehen!
Code: Alles auswählen
################################# Beginn Block Auswertung #################################
elif (wert[0]) + "," + (wert[1]) + "," + (wert[2]) == "solaranzeige,Summen,Wh_GesamtHeute":
print(wert[3])
url = ulanzi_url + "/api/custom?name="+(wert[1])+(wert[2])
data = {
"text": str(round((float((wert[3])) / 1000), 2)) + " kWh",
#"pos": 2,
"icon": 51301,
"color": [252, 186, 3],
# "lifetime": 20,
# "pushIcon": 1,
"duration": 4
}
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",
#"pos": 3,
"rainbow": bool(1),
# "lifetime": 20,
"duration": 4
}
funktionen.ulanzi_senden(url, data)
################################## Ende Block Auswertung ##################################
################################# Beginn Block Auswertung #################################
elif (wert[0]) + "," + (wert[1]) + "," + (wert[2]) == "solaranzeige,Batterie,Strom":
print(wert[3])
url = ulanzi_url + '/api/indicator1'
if round(float(wert[3])) == 0:
data = {
"color": [0, 0, 0]
}
funktionen.ulanzi_senden(url, data)
- mr.big
- Beiträge: 595
- Registriert: Mi 7. Sep 2022, 12:12
- Wohnort: tief im Osten...
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 121 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
Hier sieht man eventuell besser wie es aussehen soll!
-
- Beiträge: 38
- Registriert: Di 7. Mai 2019, 17:50
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
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)
- mr.big
- Beiträge: 595
- Registriert: Mi 7. Sep 2022, 12:12
- Wohnort: tief im Osten...
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 121 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
ergänze mal deine
um
dann wird es gehen!
Code: Alles auswählen
werte = ("solaranzeige,PV,Gesamtleistung",
"solaranzeige,AC,Verbrauch",
"solaranzeige,Summen,Wh_Heute",
"solaranzeige,Batterie,SOC")
Code: Alles auswählen
"solaranzeige,aktuellesWetter,Temperatur"
-
- Beiträge: 38
- Registriert: Di 7. Mai 2019, 17:50
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
Leider nicht, immer noch die gleiche Fehlermeldung mit dem encoding.
- mr.big
- Beiträge: 595
- Registriert: Mi 7. Sep 2022, 12:12
- Wohnort: tief im Osten...
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 121 Mal
- mr.big
- Beiträge: 595
- Registriert: Mi 7. Sep 2022, 12:12
- Wohnort: tief im Osten...
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 121 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
Dann hast du wahrscheinlich kein UTF8 bei dir installiert!
Hast du eine Solaranzeige Standart Installation auf einem Raspi?
gib mal auf der Konsole ein?
Was passiert wenn du das Gradzeichen weglässt?
Hast du eine Solaranzeige Standart Installation auf einem Raspi?
gib mal auf der Konsole
Code: Alles auswählen
locale
Was passiert wenn du das Gradzeichen weglässt?
-
- Beiträge: 38
- Registriert: Di 7. Mai 2019, 17:50
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 2 Mal
Re: Fehlermeldung bei Anzeige Aussentemperatur
Ja tatsächlich ohne °Zeichen funktioniert es. Ist auch die Standart Installation der Solaranzeige.
Bei locale wird aber UTF-8 angezeigt
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Ich habe jetzt das Gradzeichen durch folgenden Eintrag ersetzt, \N{DEGREE SIGN} und damit funktioniert es.
Somit sieht es jetzt so aus: "text": "Aussentemp.: "+str(round(float(wert[3])))+"\N{DEGREE SIGN}C",
Vielen Dank an alle für Ihre superschnelle Hilfe!!!
Gruß
Stephan
Bei locale wird aber UTF-8 angezeigt
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Ich habe jetzt das Gradzeichen durch folgenden Eintrag ersetzt, \N{DEGREE SIGN} und damit funktioniert es.
Somit sieht es jetzt so aus: "text": "Aussentemp.: "+str(round(float(wert[3])))+"\N{DEGREE SIGN}C",
Vielen Dank an alle für Ihre superschnelle Hilfe!!!
Gruß
Stephan