Ankündigung

Einklappen
Keine Ankündigung bisher.

Benzinpreis-Plugin

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

    #31
    das im master ist ein im dev gefixter bug

    dev plugins und master core funktionieren nicht. zumindest ein grossteil. zu viele aenderungen am core mit pluginrelevanz

    Kommentar


      #32
      Update: Nachdem ich gestern schon im Halbschlaf war... Neben der Tatsache dass viele DEV Plugins mit dem Master Core nichtmehr tun, glaube ich, dass Du nicht einfach das Plugins Verzeichnis anders benennen darfst...

      das war übrigens der fix für deinen fehler aus dem master: https://github.com/smarthomeNG/plugi...e08e46c060e57f

      Kommentar


        #33
        Also mit Core und Plugins auf Develop klappt es.
        DANKE.

        Kommentar


          #34
          Ich habe gerade den PR von Sisamiwe gemerged. leider haben wir jetzt ne reihe redundente funktionen. ich werde diese noch vereinheitlichen, ggf müssen dann meine "legacy" beispiele angepasst werden.

          Kommentar


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

            Kommentar


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

              Kommentar


                #37
                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'
                Viele Grüße
                Martin

                There is no cloud. It's only someone else's computer.

                Kommentar


                  #38
                  Msinn python version? habs eigentlich mit 3.7 und 3.9 jetzt getestet gehabt.

                  Kommentar


                    #39
                    Python 3.8.3
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      #40
                      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.

                      Kommentar


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

                        Kommentar


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

                          Kommentar


                            #43
                            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.
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #44
                              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.

                              Kommentar


                                #45
                                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.
                                Viele Grüße
                                Martin

                                There is no cloud. It's only someone else's computer.

                                Kommentar

                                Lädt...
                                X