Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten von JSON auf KNX weiterleiten

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

    Daten von JSON auf KNX weiterleiten

    Hallo zusammen,

    ich würde gerne Daten von einer JSON-Abfrage an KNX weiterleiten.

    Was bisher problemlos geht ist die Weiterleitung über ein Proxy-Item:

    knx.things:
    Code:
    Type number : PV_P_PV_KNX         "PV-Leistung"            [ ga="14.056:6/3/0" ]
    fronius.items:
    Code:
    Number PV_P_PV "PV-Leistung [%.0f W]" <inverter> (PV,PV_Graf) { http="<[fronius_GetPowerFlowRealtimeData:1000:JSONPATH($.B ody.Data.Site.P_PV)]" }
    Number PV_P_PV_KNX "PV-Leistung [%.0f]" <inverter> { channel="knx:device:bridge:generic:PV_P_PV_KNX" }
    knx_bridge.rules:
    Code:
    rule "PV_P_PV_KNX"
    when
        Item PV_P_PV changed
    then
       if(PV_P_PV.state instanceof Number) {
          PV_P_PV_KNX.sendCommand((PV_P_PV.state as Number).floatValue)
       }
    end
    So weit, so gut.

    Geht das auch einfacher, also ohne die Notwendigkeit einer eigenen Rule? Eine direkte Verbindung will bei mir leider nicht klappen (openhab 2.5.9):

    knx.things:
    Code:
    Type number : PV_P_Load_KNX         "Stromverbrauch Haus"        [ ga="14.056:6/3/1" ]
    fronius.items:
    Code:
    Number PV_P_Load                "Stromverbrauch Haus [%.0f W]"        <inverter>    (PV,PV_Graf)    { http="<[fronius_GetPowerFlowRealtimeData:1000:JSONPATH($.Body.Data.Site.P_Load)]", channel="knx:device:bridge:generic:PV_P_Load_KNX" }
    Im ETS-Busmonitor sehe ich keine Daten auf dieser GA.
    "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren." - Benjamin Franklin

    #2
    Du musst dazu das Profile auf follow setzen, damit die Statusänderung als Command weitergeleitet wird.

    Kommentar


      #3
      Ach, das habe ich völlig übersehen, vielen Dank! Jetzt klappts auch mit der Weiterleitung:

      knx.things:
      Code:
      Type number : PV_P_Load_KNX "Stromverbrauch Haus" [ ga="14.056:6/3/1" ]
      fronius.items:
      Code:
      Number PV_P_Load "Stromverbrauch Haus [%.0f W]" <inverter> (PV,PV_Graf) { http="<[fronius_GetPowerFlowRealtimeData:1000:JSONPATH($.B ody.Data.Site.P_Load)]", channel="knx:device:bridge:generic:PV_P_Load_KNX" [profile="follow"] }
      Allerdings werden Items mit einer Prozentzahl als Wert (DPT 5.001) scheinbar nicht weitergeleitet. Gibt es hier etwas zu beachten?

      knx.things:
      Code:
      Type dimmer : PV_Autonomy_KNX         "Autarkiegrad in %"            [ ga="5.001:6/3/4" ]
      fronius.items:
      Code:
      Number PV_Autonomy                "Autarkiegrad [%.0f %%]"        <inverter>    (PV)        { http="<[fronius_GetPowerFlowRealtimeData:1000:JSONPATH($.Body.Data.Site.rel_Autonomy)]", channel="knx:device:bridge:generic:PV_Autonomy_KNX" [profile="follow"] }
      In der OpenHAB Sitemap wird der Wert korrekt ausgegeben, im Busmonitor kommt allerdings nichts an:

      fronius.sitemap:
      Code:
      Text item=PV_Autonomy
      "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren." - Benjamin Franklin

      Kommentar


        #4
        DPT 5.001 ist ein Short Unsigned Integer (8 Bit, 0-100% in 256 Schritten). Falls Fronius hier einen Float Typ liefert, wird das schief gehen. Keine Ahnung, ob es eine Möglichkeit gibt, das automatisch beim follow zu konvertieren.

        Kommentar


          #5
          Ja, die Rohdaten kommen als float. Dann müsste aber folgender Code, mit einem Proxy-Item, für eine Umwandlung sorgen, oder?

          knx.things:
          Code:
          Type number : PV_Autonomy_KNX             "Autarkiegrad"            [ ga="5.001:6/3/4" ]
          fronius.items:
          Code:
          Number PV_Autonomy "Autarkiegrad [%.0f %%]" <inverter> (PV) { http="<[fronius_GetPowerFlowRealtimeData:1000:JSONPATH($.Body.Data.Site.rel_Autonomy)]" }
          Number PV_Autonomy_KNX "Autarkiegrad [%.0f]" <inverter> { channel="knx:device:bridge:generic:PV_Autonomy_KNX " }
          knx_bridge.rules:
          Code:
          rule "PV_Autonomy_KNX"
          when
              Item PV_Autonomy changed
          then
             if(PV_Autonomy.state instanceof Number) {
                PV_Autonomy_KNX.sendCommand((PV_Autonomy.state as Number).intValue)
             }
          end
          Leider kommt trotzdem nichts über den Äther; auf der Sitemap hingegen wird der Wert korrekt ausgegeben.
          Zuletzt geändert von wuestenfuchs; 23.10.2020, 14:59.
          "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren." - Benjamin Franklin

          Kommentar


            #6
            Da ist im Item im Channel Link hinten ein Leerzeichen drin, was da nicht hingehört.

            Kommentar


              #7
              Das Leerzeichen muss beim Einfügen hier in das Forum reingerutscht sein.

              Ich habe das gelöst, indem ich in der knx.things die DPT-Angabe rausgenommen habe. Also statt

              Code:
              Type number : PV_Autonomy_KNX "Autarkiegrad" [ ga="5.001:6/3/4" ]
              steht jetzt drin:

              Code:
              Type number : PV_Autonomy_KNX "Autarkiegrad" [ ga="6/3/4" ]
              Das standardmäßige DPT für "Number" ist laut den docs ein 9.001, sofern nichts anderes angegeben. Es war also tatsächlich ein Umwandlungsproblem. Danke für deine Hilfe!
              "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren." - Benjamin Franklin

              Kommentar

              Lädt...
              X