Fehlermeldung bei Anzeige Aussentemperatur

Ulanzie Clock Anzeige TC001 für einzelne Daten.

Moderatoren: Ulrich, mr.big

Stephan Helfers
Beiträge: 19
Registriert: Di 7. Mai 2019, 17:50
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von Stephan Helfers »

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

Benutzeravatar
mr.big
Beiträge: 250
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 4 Mal
Danksagung erhalten: 67 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von mr.big »

vergleiche mal bitte damit:

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 ##################################
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,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)

   

Benutzeravatar
mr.big
Beiträge: 250
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 4 Mal
Danksagung erhalten: 67 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von mr.big »

20230807_175513_192.168.169.35 (Ad Hoc).jpg
Hier sieht man eventuell besser wie es aussehen soll!

Stephan Helfers
Beiträge: 19
Registriert: Di 7. Mai 2019, 17:50
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von Stephan Helfers »

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)

Benutzeravatar
mr.big
Beiträge: 250
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 4 Mal
Danksagung erhalten: 67 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von mr.big »

ergänze mal deine

Code: Alles auswählen

werte = ("solaranzeige,PV,Gesamtleistung",
         "solaranzeige,AC,Verbrauch",
         "solaranzeige,Summen,Wh_Heute",
         "solaranzeige,Batterie,SOC")
um

Code: Alles auswählen

"solaranzeige,aktuellesWetter,Temperatur"
dann wird es gehen!
:o

Stephan Helfers
Beiträge: 19
Registriert: Di 7. Mai 2019, 17:50
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von Stephan Helfers »

Leider nicht, immer noch die gleiche Fehlermeldung mit dem encoding.

Benutzeravatar
mr.big
Beiträge: 250
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 4 Mal
Danksagung erhalten: 67 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von mr.big »

Und ohne der Temperaturabfrage läuft es aber!?

gerihouse
Beiträge: 38
Registriert: Di 14. Mär 2023, 08:28
Hat sich bedankt: 43 Mal
Danksagung erhalten: 2 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von gerihouse »

Ich glaube es liegt an dem ° Symbol . was ja auch die Fehlermeldung sagt ;-) .
Kopiere das Grad Symbol aus dem Text oben

Benutzeravatar
mr.big
Beiträge: 250
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 4 Mal
Danksagung erhalten: 67 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von mr.big »

Dann hast du wahrscheinlich kein UTF8 bei dir installiert!
Hast du eine Solaranzeige Standart Installation auf einem Raspi?

gib mal auf der Konsole

Code: Alles auswählen

locale
ein?

Was passiert wenn du das Gradzeichen weglässt?

Stephan Helfers
Beiträge: 19
Registriert: Di 7. Mai 2019, 17:50
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Fehlermeldung bei Anzeige Aussentemperatur

Beitrag von Stephan Helfers »

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

Antworten

Zurück zu „Ulanzi Anzeige TC001“