Seite 2 von 2
Re: AVM Heizkörperventil Temperatur setzen
Verfasst: Montag 10. März 2025, 09:26
von __blackjack__
@El Achimo: Die Fehlerbehandlung ist kaputt. Falls die Anmeldung fehlschlägt, wird trotzdem `set_target_temperature()` aufgerufen, was natürlich nicht funktioniert wenn man nicht angemeldet ist.
Re: AVM Heizkörperventil Temperatur setzen
Verfasst: Montag 10. März 2025, 10:39
von anonym108
Danke für den Tipp.
Das einzige, was in der Exeption schief gehen kann, ist der Login.
Hier ist der angepasste Code.
Code: Alles auswählen
# from pyfritzhome import *
from pyfritzhome import Fritzhome
import sys
# Verbindung zur FRITZ!Box herstellen
host = '10.0.0.1'
username = 'fhem'
password = 'strengstens geheim'
fha = Fritzhome(host=host, user=username, password=password)
try:
fha.login()
print ("Login erfolgreich")
except:
print ("Login fehlgeschlagen")
sys.exit()
# AIN des Heizkörperreglers
ain = '13979 0362472' # Beispiel-AIN; ersetzen Sie dies durch die tatsächliche AIN Ihres Geräts
print(ain)
# Neue Solltemperatur in °C
neue_solltemperatur = 15.5
# Setzen der neuen Solltemperatur
fha.set_target_temperature(ain, neue_solltemperatur)
Re: AVM Heizkörperventil Temperatur setzen
Verfasst: Montag 10. März 2025, 11:34
von noisefloor
Hallo,
man sollte _nie_ nackte `try...except` verwenden, weil man damit _alle_ Fehler abfängt und wegbügelt, auch Programmierfehler. Will man aber in der Regel nicht. Darum Fehler immer gezielt abfangen. Im gegebenen Fall macht es IMHO Sinn, eine `try...except..else`block zu verwenden:
Code: Alles auswählen
...
try:
fha.login()
print ("Login erfolgreich")
except LoginError: #<- welche Exception wirklich geworfen wird prüfen und korrigieren
print ("Login fehlgeschlagen")
else:
# AIN des Heizkörperreglers
ain = '13979 0362472' # Beispiel-AIN; ersetzen Sie dies durch die tatsächliche AIN Ihres Geräts
print(ain)
# Neue Solltemperatur in °C
neue_solltemperatur = 15.5
# Setzen der neuen Solltemperatur
fha.set_target_temperature(ain, neue_solltemperatur)
Eingerückt wird gem. PEP8 immer mit 4 Leerzeichen, nicht mit 3 oder wie viel auch immer.
Gruß, noisefloor
Re: AVM Heizkörperventil Temperatur setzen
Verfasst: Montag 10. März 2025, 11:46
von __blackjack__
Sich sauber wieder von der Fritzbox abmelden, wäre auch ganz nett.
Code: Alles auswählen
#!/usr/bin/env python3
from pyfritzhome import Fritzhome, LoginError
HOST = "10.0.0.1"
USERNAME = "fhem"
PASSWORD = "strengstens geheim"
HEIZKOERPERREGLER_AIN = "13979 0362472"
NEUE_SOLLTEMPERATUR = 15.5 # in °C
def main():
fritzhome = Fritzhome(host=HOST, user=USERNAME, password=PASSWORD)
try:
fritzhome.login()
except LoginError:
print("Login fehlgeschlagen")
else:
print("Login erfolgreich")
print(HEIZKOERPERREGLER_AIN)
fritzhome.set_target_temperature(
HEIZKOERPERREGLER_AIN, NEUE_SOLLTEMPERATUR
)
finally:
fritzhome.logout()
if __name__ == "__main__":
main()