Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert vom Typ "str" weiterverarbeiten

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

    Wert vom Typ "str" weiterverarbeiten

    Hallo ihr,

    habe gestern den ganzen Tag hier im Forum gelesen und schon einige Dinge ausprobiert, finde aber keinen richtigen Ansatz.
    Folgendes Problem habe ich:

    Über einen MQTT Broker erhalte ich einen String der immer folgendermaßen aussieht:

    Code:
    {"update_time":1497302326058,"status":"ok"}
    Besteht also aus einem Zeitstempel, der mich nicht interessiert sowie einem Status, den ich irgendwie auswerten will.
    Der Status kann 5 verschiedene Zustände haben, (ok, closed, inhibit, open, alarm)

    Ich möchte jetzt einem Item ausschließlich diesen Zustand weitergeben und alles andere ignorieren.
    Gibt es die Möglichkeit den String irgendwie zu zerlegen?
    Vielleicht eine Möglichkeit mit eval?
    = Alarm wenn str *alarm* enthält?

    Über einen kurzen Anstoss würde ich mich sehr freuen.

    Vielen Dank.

    Gruß,

    Mark

    #2
    Eleganter wäre es vermutlich, wenn es bereits ein dict wäre. Du kannst grob schauen, ob ein string (hier 'ok') enthalten ist also ``eval = True if 'ok' in DeinStringHier`` so richtig schön und sauber ist das nicht. Besser wäre es den String in ein dict zu parsen und das dict dann zu prüfen. Aber dazu bräuchte man etwas mehr Informationen

    Kommentar


      #3
      Welche weiteren Infos würdest Du denn benötigen?
      Stelle ich sofort zur Verfügung.

      In dem neuen MQTT Plugin wird ein casting auf bestimmte Datentypen gemacht, so dass nach Umstellung auf dict folgendes herauskommt:

      Code:
      {'update_time': 1497338091863, 'status': 'open'}
      Den Key zu lesen mit sh.spc.linie7()['status'] funktioniert allerdings nicht.
      Wäre das überhaupt die richtige Vorgehensweise?

      Danke für Deine Unterstützung!


      Kommentar


        #4
        wenn alles ein string ist, dann sollte es hiermit gehen:
        PHP-Code:
        import ast
        ast.literal_eval("{'update_time': '1497338091863', 'status': 'open'}")
        status d['status'

        Kommentar


          #5
          Vielen Dank für die Info.
          Funktioniert mit einer Logik und ast genau so wie es soll!

          Kommentar

          Lädt...
          X