Ankündigung

Einklappen
Keine Ankündigung bisher.

Benzinpreis-Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • psilo
    antwortet
    Msinn kann ich reproduzieren. ich checke das

    Offenbar nimmt er LAT und LON nicht.. ich übergebe korrekt, bekomme dann aber
    2022-12-05 12:13:19 ERROR plugins.tankerkoenig {'status': 'error', 'ok': False, 'message': 'lng nicht angegeben, oder ausserhalb der gültigen Grenzen\nlat nicht angegeben, oder ausserhalb der gültigen Grenzen'}

    Nach dieser Zuweisung ist lat = None:

    Code:
    self.logger.error(lat)
    self.logger.error(lon)
    lat = self._lat if not lat else None
    lon = self._lon if not lon else None
    self.logger.error(lat)​
    Sisamiwe ich habe mal wie folgt umgebaut. Deckt das das ab, was Du an der Stelle wolltest?
    Code:
    if lat is None:
        lat = self._lat
    if lon is None:
        lon = self._lon​
    Damit gehts bei mir wieder...
    Zuletzt geändert von psilo; 05.12.2022, 13:07.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Die Fehler sind raus. Allerdings bekomme ich noch regelmäßig eine Warnung:

    Code:
    2022-12-05  10:12:22 WARNING  plugins.tankerkoenig Plugin 'tankerkoenig': Tankerkönig didn't return any station
    Ich habe den Radius auf 25 km hoch gesetzt, aber die Warnung bleibt.
    Ich habe in die Logik noch ein Logging eingebaut und die Meldung kommt aus dem Aufruf, mit dem ich die billigste Tankstelle bestimmen möchte:

    Code:
    cheapest = sh.tankerkoenig.get_petrol_stations(sh._lat, sh._lon, 'e10', 'price', rad=25)
    und len(cheapest) ist 0

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Habs umgebaut und gepusht. Gerne nochmal testen.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Ich schreibs morgen früh um. Der PR zieht sich..

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich gehe/ging davon aus, dass das Plugin unverändert funktionieren sollte. Da ist das umbenennen einer Funktion eher ungünstig.

    Bei dem stolpern über den String Wert: Public Functions eines Plugins sollten fehlertoleranter sein als normale Methoden eines Plugins und nicht unbedingt sofort eine Exception schmeißen.

    Bei einem unpassenden Datentyp sollte entweder ein verständlicher Log Eintrag erfolgen oder (was hier einfacher ist) ein Casting auf den richtigen Typ vorgenommen werden.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Msinn ich habe die funktion in get_petrol_station_full umbenannt (plugin.yaml sollte angepasst sein). Sisamiwe hatte eine 2te ohne Benzinpreise gebaut, die nutzt jetzt die "_full" und eleminiert danach die Benzinpreise. Kann auch "_full" wieder rausnehmen. Wie es gewünscht ist. Wobei mir grade kommt, dass ich einfach nen bool übergeben kann und den Originalnamen wieder verwenden kann.

    PS: Der Check rad > 25 ist neu, daher ist das Plugin bisher mit deinem str nie auf die Nase geflogen.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich habe die Zeile wie oben beschrieben eingetragen -> Keine Änderung

    Dann bin ich auf die Suche gegangen. Ich habe vor der Exception Zeile den rad Wert ausgeben lassen.
    Der stammt aus einer Logik. In der Logik, wird er auch als String angegeben (was früher keine Probleme machte), obwohl er in der Konfig-Doku als Float dokumentiert ist.

    Nachdem ich in der Logik den Wert als numerischen Wert übergebe, ist der Fehler weg. Dafür habe ich einen neuen:

    Code:
    2022-12-04  20:04:05 ERROR    logics.tankerkoenig  In der Logik ist ein Fehler aufgetreten:
       Logik 'tankerkoenig', Datei '/usr/local/shng_dev/logics/tankerkoenig.py', Zeile 27
       Hauptroutine der Logik, Exception: 'TankerKoenig' object has no attribute 'get_petrol_station_detail'
    Da scheint eine Funktion auf der Strecke geblieben zu sein.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Sisamiwe dem Fehler nach landet im rad>25 ein "str". Die Frage ist warum. Drum mal auf die Antwort von Msinn abwarten.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von psilo Beitrag anzeigen
    Ohne das tiefer zu prüfen aber ich glaube die Syntax macht Mist.
    Das glaube ich nicht.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Probier bitte mal folgende Zeile:
    def get_petrol_stations(self, lat=None, lon=None, price='diesel', sort='price', rad=4):
    anstatt
    def get_petrol_stations(self, lat: float = None, lon: float = None, price: str = 'diesel', sort: str = 'price', rad: float = 4) -> list:

    Ohne das tiefer zu prüfen aber ich glaube die Syntax macht Mist.

    Noch ne Frage: es kracht ja wenn "rad>25" geprüft wird. Was übergibst Du als rad? Vielleicht macht das Probleme?
    https://github.com/smarthomeNG/plugi...init__.py#L191
    Zuletzt geändert von psilo; 04.12.2022, 18:34.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Python 3.8.3

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Msinn python version? habs eigentlich mit 3.7 und 3.9 jetzt getestet gehabt.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich habe eben gepullt und neu gestartet. Nun bekomme ich beim Start folgenden Fehler:
    Code:
    2022-12-04  16:15:13 ERROR    logics.tankerkoenig  In der Logik ist ein Fehler aufgetreten:
       Logik 'tankerkoenig', Datei '/usr/local/shng_dev/plugins/tankerkoenig/__init__.py', Zeile 191
       function get_petrol_stations(), Exception: '>' not supported between instances of 'str' and 'int'

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von psilo Beitrag anzeigen
    wenn du auch mal gegenchecken könntest.
    Kann ich gern machen. Gib mir einfach Bescheid.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Sisamiwe ich versuche gerade methoden zusammenzulegen und passe dafür auch meine logiken an. wäre klasse, wenn du auch mal gegenchecken könntest.

    Einen Kommentar schreiben:

Lädt...
X