Ankündigung

Einklappen
Keine Ankündigung bisher.

basic.print ignoriert "text" Format

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

    basic.print ignoriert "text" Format

    Hi

    Ich habe in SHNG zwei items, die einen String enthalten. Definitiv. Wird im Admin Interface auch so dargestellt wie es sein soll.

    Code:
    go_e:
        Status:
            type: dict
            mqtt_topic_in: go-eCharger/013817/status
            on_change:
            - ..fwv = value['fwv']
            - ..sse = value['sse']
        fwv:
            type: str
        sse:
            type: str
    In go_e.fwv steht korrekt "040.0"
    In go_e.sse steht korrekt "013817"

    In der Visu will ich die beiden Werte exakt so darstellen.
    basic.print weigert sich jedoch beharrlich das so auszugeben.

    Code:
    FW: {{ basic.print('', 'go_e.fwv', 'text') }}
    <br />
    SN: {{ basic.print('', 'go_e.sse', 'text') }}
    Laut Dokumentation gibt es für das Format den Wert 'text'. Klappt aber nicht, auch keine andere Kombination. basic.print interpretiert das anscheinend immer als eine Zahl.
    Was raus kommt ist dann "40" bzw. "13817", es werden also z.B. führende Nullen abgeschnitten.
    Hab ich bei basic.print nen Denkfehler oder ist das ein Bug?

    SHNG: 1.8.2
    smartVISU: 3.1.0

    Gruß, Martin

    #2
    Hi Martin,

    die Ausgabe von Zahlen als Text ist bisher tatsächlich nicht vorgesehen bzw. es ist nie aufgefallen, dass das nicht funktioniert. Leider ist die Änderung nicht leicht zu machen, da das Widget die item-Werte bereits in Zahlenform erhält. Die Wandlung passiert tief im System auf dem Weg vom Websocket in den widget.buffer. Wenn ich den widget.buffer manuell mit Anführungszeichen "012345" beschreibe und ein update triggere, dann stimmt auch die Anzeige in basic.print.

    Das Format im widget.buffer lässt sich sicher ändern, aber ich befürchte negative Ausweirkungen auf alle Widgets, die sich bisher darauf verlassen, dass das item in Zahlenformat übergeben wird. Da brauche ich einige Zeit, um das sauber abzusichern.

    Es gibt aber einen Workaround :
    Wenn Du im Backend den beiden Strings jeweils ein "&nbsp;" voranstellst, dann kannst Du mit dem Format "text2br", das den Text als html einfügt, die richtige Anzeige erreichen. Also go_e.fwv = "&nbsp;040.0".

    Gruß
    Wolfram

    Kommentar


      #3
      Alles klar, verstanden. Da muss ich mir dann ein Hilfs-Item bauen, weil die Werte, um die es geht, direkt vom go-e in das item geschrieben werden.
      Aber SO wichtig ist das in dem Fall jetzt zum Glück nicht.
      Hab da noch andere Baustellen. Das geniale status.toast macht noch Probleme, bzw. irgendwas im Zusammenhang damit. Ich bekomme Toast Meldungen immer wieder doppelt im Abstand von ein paar Sekunden. Aber das beobachte ich noch und mach gegebenenfalls ein neues Thema aus.

      Kommentar


        #4
        Mit dem &nbsp; klappt es. Leider bekomme ich es mit einem simplen eval in SHNG nicht hin. Habe ne Logik gebaut, aber das ist mit Kanonen auf Spatzen geschossen.

        Code:
        go_e.fwv:
             type: str
             eval: "&nbsp;" + value
        geht jedenfalls nicht. Das + wird angemeckert. Wäre auch zu schön/einfach gewesen
        Zuletzt geändert von Sipple; 27.07.2021, 17:56.

        Kommentar


          #5
          kann es sein, dass der Typ "string" ignoriert wird? Oder ist das gleichwertig mit "str"? Der eval-Ausdruck ist ja ein gültiger Python-Ausdruck und müsste funktionieren, wenn der Typ des items stimmt.

          Kommentar


            #6
            Da hab ich mich vertippt oder das war irgendeine Autovervollständigung. Ist schon korrekt "str".
            Das ist bestimmt was ganz einfaches, wenn man's weiß. Die Profis wie Msinn lachen da wahrscheinlich drüber.

            Kommentar

            Lädt...
            X