Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

SmarthomeNG mit eval von type: str nach type: int konvertieren

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

    SmarthomeNG mit eval von type: str nach type: int konvertieren

    ... ich steh auf den Schlauch...

    eigentlich dachte ich das sollte ganz einfach sein ein item mit dem Value str (das ich über mqtt einlese) in ein Integer umzuwandelen.

    Leider dann doch nicht so einfach. ... unter anderem habe ich folgendes verucht:

    image.png

    Wisst ihr wie es geht?
    ​​

    #2
    Das int im eval sieht syntaktisch korrekt aus - wie lautet denn die Fehlermeldung im Log?

    /tom

    Edit: Ich rate mal - Du willst vielleicht:
    eval: int(sh.HAUS.Zaehler2())
    eval_trigger: HAUS.Zaehler2
    ???
    Zuletzt geändert von Tom Bombadil; 21.11.2022, 20:54.

    Kommentar


      #3
      Hi Tom,
      danke schon mal fürs Feedback. Ich habe den kleinen Fehlerausgebaut... Allerdings das selbe verhalten.
      In den Logs kann ich keinen Fehlereintrag finden. Hier nochmal mein Yaml Auszug.


      HAUS:
      Zaehler:
      type: str
      mqtt_topic_in: "mbusmeters/gas"
      Gaszaehler:
      type: num
      eval: int(sh.HAUS.Zaehler2())
      eval_trigger: HAUS.Zaehler2
      database: 'yes'
      enforce_updates: 'true'
      influx: true
      Zaehler2:
      type: str
      mqtt_topic_in: "mbusmeters/gas"
      on_change: ..Gaszaehler2 = int(value)
      Gaszaehler2:
      type: num
      ​​

      Kommentar


        #4
        Was für einen Wert enthält denn Zaehler2? Welche Werte zeigt Dir die AdminGUI zu den drei Items an?
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Hi Martin,

          hier ein Auszug Wert: "358035"

          image.png

          Kommentar


            #6
            und noch die anderen beiden.... hier mal nur eins da sie identisch sind. Kein update - nur durch init

            image.png

            Kommentar


              #7
              ... ich habe nochmals probiert im eval syntax prüfer das ganze zu testen. Hier gibt es eine Fehlermeldung

              Eingabe: int(sh.HAUS.Zaehler2())

              Ausgabe: Problem evaluating int(sh.HAUS.Zaehler2()): invalid literal for int() with base 10: '"358035"

              Das geht wiederum int(str(358035)) ???

              Es scheint ein Problem mit dem return aus​ sh.HAUS.Zaehler2() zugeben. Aber es ist doch genau das selbe... keine whitespaces nichts...
              Kennt von euch einer ein Workaround?
              Zuletzt geändert von pancho7; 22.11.2022, 20:37.

              Kommentar


                #8
                Irgendwie ist bei dem String in Zaehler2 ein ' zuviel --> " ' 3 5 8 0 3 5 1 "
                Daran scheint das int() sich die Ohren zu brechen. Altes Grundproblem: Shit in, shit out.
                Wo kommt das ' her?

                Als Workaround zur Not int(sh.HAUS.Zaehler2 + "'") (ein ' zwischen den " ").

                /tom
                Zuletzt geändert von Tom Bombadil; 22.11.2022, 20:50.

                Kommentar


                  #9
                  leider ist es das nicht ... hat wohl ausversehen ein ' beim pasten unterschlagen... sorry

                  wenn ich folgendes im Syntaxprüfer eingebe : sh.HAUS.Zaehler2()
                  bekomme ich folgendes Ergebnis:
                  Ergebnis der Berechnung des Ausdrucks: "358035"
                  Datentyp des berechneten Ausdrucks: str

                  bei: int(sh.HAUS.Zaehler2())
                  Ergebnis der Berechnung des Ausdrucks: Problem evaluating int(sh.HAUS.Zaehler2()): invalid literal for int() with base 10: '"358035"'
                  Datentyp des berechneten Ausdrucks: str

                  Kommentar


                    #10
                    Probier mal int(value.replace('"',""))

                    Kommentar


                      #11
                      Zitat von Onkelandy Beitrag anzeigen
                      Probier mal int(value.replace('"',""))
                      Grandma-finds-the-Internet-Titelbild.jpg

                      /tom

                      Kommentar


                        #12
                        Vielen Dank, das wars :-)
                        ich habe mich irritieren lassen, das es im Itemtree keine ' ' angezeigt wurden, komischerweise auch nicht in der bash.
                        Gut das es den Sytax Prüfer gibt!

                        Danke nochmals ymmd

                        Kommentar

                        Lädt...
                        X