Ankündigung

Einklappen
Keine Ankündigung bisher.

string split mit eval

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

    string split mit eval

    Hat jemand eine Idee, wie ich items vom type string einfach kürzen kann ?
    über mqtt erhalte ich z.B. folgende item Werte:

    image.png

    die beiden langen strings möchte ich gerne kürzen; "disconnected" und "idle" würden mir reichen.
    ginge das mit eval ? oder besser in der VISU mit basic.print ?

    #2
    Moin Wil,

    in der VISU mit basic.print kannst Du dies über die Formel machen.
    Code:
    basic.print('','myItem','text','VAR1.replace("CHARGER_CONNECTION_STATUS_","").toLowerCase()')
    ergibt "disconnected".

    Ohne toLowerCase() bleibt es bei der Großschreibung.

    Gruß
    Wolfram

    Kommentar


      #3
      Danke Wolfram,

      klappt so wunderbar.

      Items "Ampere" und "Watt" musste ich als type: str definieren, weil sonst bei NULL ein Fehler kommt.
      Ist das OK ? oder hast Du dazu eine andere Lösung ? aber wie sollte man NULL und 0 sonst anzeigen; vielleicht als - und 0.

      Gruß Wil

      Kommentar


        #4
        Moin Wil,

        Wenn die str-Typen nicht stören, würde ich das so lassen. Wenn Du in den items die Zahlenwerte brauchst, dann musst Du null abfangen, während 0 kein Problem sein sollte.
        Code:
        basic.print('','myItem','text','VAR1==null?“—-":VAR1')
        Evtl. null in doppelte Anführungszeichen setzen.

        Gruß
        Wolfram

        Kommentar


          #5
          Nachtrag aus der Diskussion (Rest des Threads ist ins smartVISU-Forum verschoben):

          Man kann auch durch ein basic.symbol den ganzen Wert ""CHARGER_CONNECTION_STATUS_DISCONNECTED" durch einen Text oder ein Symbol ersetzen.

          Offenbar speichert Polestar die Anführungszeichen mit dem Text ab, was zu Problemen bei der Darstellung führt. In shNG wird man dies im betreffenden item los, indem man die Anführungszeichen löscht:
          Code:
          eval: value.strip('\"')

          Kommentar


            #6
            Zitat von wvhn Beitrag anzeigen
            Offenbar speichert Polestar die Anführungszeichen mit dem Text ab,
            Klitzekleine Korrektur.
            Das liegt mal ausnahmsweise nicht an Polestar. Das wird eher von der zugrundeliegenden API Abfrage kommen, die den Wert erst mal per MQTT (mit Hilfe von Node Red, wenn ich es richtig im Kopf habe) an einen Broker schickt und von dort an SHNG weitergeleitet wird. Irgendwo auf der Strecke werden anscheinend die Anführungszeichen mit rein genommen. Vielleicht sogar Absicht, warum auch immer.
            Meine eigene SHNG Logik, die ohne MQTT auskommt, schreibt das ohne Anführungszeichen rein und ich habe da nichts explizit machen müssen.

            Aber wenn sie drin stehen, dann ist Wolfram's Lösung natürlich erste Sahne. Einfacher geht es nicht
            Zuletzt geändert von Sipple; 27.11.2024, 09:03.

            Kommentar


              #7
              Zitat von Sipple Beitrag anzeigen
              Aber wenn sie drin stehen, dann ist Wolfram's Lösung natürlich erste Sahne. Einfacher geht es nicht
              ja, funktioniert prima.

              ich schaue mir dann noch mal das Coding in Github an, wo die blöden " eingesetzt werden.

              Kommentar

              Lädt...
              X