REST API Abfragen (IRR, interne Werte)

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

    REST API Abfragen (IRR, interne Werte)

    Hallo zusammen,

    Ich möchte verschiedene Werte auslesen, die ich nur in der Visu finde. Im Speziellen: die absoluten Temperaturen (Komfort, Party, Nacht etc...) vom Baustein "Intelligente Raumregelung".

    Gedankengang: die Visu verwendet doch die JSON3 Strukturdatei, um auszulesen unter welchen Adressen welche Werte abzurufen sind. Das kann ich doch auch über einen virtuellen Http Eingang mit eben diesem Aufruf.

    Nun habe ich in meine JSON3 geschaut, und finde folgendes:

    Code:
    "0ec5c35c-0074-3e3b-ffff931b6b3075d3":
        {
        "name":"Intelligente Raumregelung",
        "type":"IRoomController",
        "uuidAction":"0ec5c35c-0074-3e3b-ffff931b6b3075d3",
        "room":"0ec5be21-02e3-04f3-ffff931b6b3075d3",
        "cat":"0ec5be21-0292-032a-ffff931b6b3075d3",
        "defaultRating":1,
        "isFavorite":false,
        "isSecured":false,
        "details":
            {
            "restrictedToMode":2,
            "temperatures":
                {
                "0":{"isAbsolute":false},
                "1":{"isAbsolute":true},
                "2":{"isAbsolute":true},
                "3":{"isAbsolute":true},
                "4":{"isAbsolute":true},
                "5":{"isAbsolute":false},
                "6":{"isAbsolute":false}
                },
            "format":"%.1f°"
            },
        "states":
            {
            "tempTarget":"0ec5c35c-0074-3e36-ffffa13c92cb6011",
            "tempActual":"0ec5c35c-0074-3e15-ffffa13c92cb6011",
            "error":"0ec5c35c-0074-3e34-ffffa13c92cb6011",
            "mode":"0ec5c35c-0074-3e32-ffffa13c92cb6011",
            "serviceMode":"0ec5c35c-0074-3e33-ffffa13c92cb6011",
            "currHeatTempIx":"0ec5c35c-0074-3e09-ffffa13c92cb6011",
            "currCoolTempIx":"0ec5c35c-0074-3e0a-ffffa13c92cb6011",
            "override":"0ec5c35c-0074-3e39-ffffa13c92cb6011",
            "isPreparing":"0ec5c35c-0074-3e3a-ffffa13c92cb6011",
            "valveHeat":"0ec5c35c-0074-3e29-ffffa13c92cb6011",
            "valveCool":"0ec5c35c-0074-3e2d-ffffa13c92cb6011",
            "openWindow":"0ec5c35c-0074-3e16-ffffa13c92cb6011",
            "stop":"10d2af24-0230-0ea2-ffffc8f94c542523",
            "overrideTotal":"1000db3a-0361-140e-ffff931b6b3075d3",
            "movement":"1000db3a-0361-140d-ffff931b6b3075d3",
            "manualMode":"1000db3a-0361-140f-ffff931b6b3075d3",
            "temperatures":
                [
                "0ec5c35c-0074-3e1d-ffffa13c92cb6011",
                "0ec5c35c-0074-3e1e-ffffa13c92cb6011",
                "0ec5c35c-0074-3e1f-ffffa13c92cb6011",
                "0ec5c35c-0074-3e22-ffffa13c92cb6011",
                "0ec5c35c-0074-3e23-ffffa13c92cb6011",
                "0ec5c35c-0074-3e21-ffffa13c92cb6011",
                "0ec5c35c-0074-3e20-ffffa13c92cb6011"
                ]
            },
        "subControls":
            {
            "0ec5c35c-0074-3e07-ffffa13c92cb6011":
                {
                "name":"Heating",
                "type":"IRCDaytimer",
                "uuidAction":"0ec5c35c-0074-3e07-ffffa13c92cb6011",
                "defaultRating":0,
                "isFavorite":false,
                "isSecured":false,
                "details":
                    {
                    "analog":true,
                    "format":"%.1f°"
                    },
                "states":
                    {
                    "entriesAndDefaultValue":"0ec5c35c-0074-3e07-ffffa13c92cb6011",
                    "mode":"0ec5c35c-0074-3e37-ffffa13c92cb6011",
                    "modeList":"1000db3a-0361-140b-ffff931b6b3075d3",
                    "value":"0ec5c35c-0074-3e09-ffffa13c92cb6011"
                    }
                },
            "0ec5c35c-0074-3e08-ffffa13c92cb6011":
                {
                "name":"Cooling",
                "type":"IRCDaytimer",
                "uuidAction":"0ec5c35c-0074-3e08-ffffa13c92cb6011",
                "defaultRating":0,
                "isFavorite":false,
                "isSecured":false,
                "details":
                    {
                    "analog":true,
                    "format":"%.1f°"
                    },
                "states":
                    {
                    "entriesAndDefaultValue":"0ec5c35c-0074-3e08-ffffa13c92cb6011",
                    "mode":"0ec5c35c-0074-3e38-ffffa13c92cb6011",
                    "modeList":"1000db3a-0361-140c-ffff931b6b3075d3",
                    "value":"0ec5c35c-0074-3e0a-ffffa13c92cb6011"
                    }
                }
            }
        },
    Folgende Anfrage geht: (oberster Knoten von der IRR):

    Code:
    http://miniserver/dev/sps/io/0ec5c35c-0074-3e3b-ffff931b6b3075d3
    <LL control="dev/sps/io/0ec5c35c-0074-3e3b-ffff931b6b3075d3" value="1.000" Code="200"/>
    Folgendes geht leider nicht (Erste Temperatur)
    Code:
    http://miniserver/dev/sps/io/0ec5c35c-0074-3e1d-ffffa13c92cb6011
    <LL control="dev/sps/io/0ec5c35c-0074-3e1d-ffffa13c92cb6011" value="" Code="404"/>
    Habt ihr eine Idee, wo ich hier einen Fehler mache? Der Loxone-Support konnte/wollte die Anfrage nicht beantworten: die API soll man nicht benutzen (?!).

    Vielen Dank im Voraus und schöne Feiertage!

    Zuletzt geändert von Gast; 22.12.2017, 09:56.
  • svethi
    Lebende Foren Legende
    • 25.08.2015
    • 6289

    #2
    Die Meisten der internen Werte kannst Du so gar nicht abfragen, sondern musst das über Websocket machen und Dich für Änderungen registrieren. Dann bekommst Du als ersters alle Werte und danach jede Änderung und da sind die Werte dann auch mit dabei
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar

    • Gast

      #3
      Vielen Dank für Deine Rückmeldung!

      Ach schade... Wäre ja so schön einfach gewesen. Auf der anderen Seite hätte ich den Wert ständig auf Änderungen prüfen müssen was auch doof ist.

      Ok, also die große Nummer... Ein Programm was irgendwo läuft, einen Websocket anschmeißt, die Daten abholt, ein paar Listener auf die relevanten Schlüssel welche im JSON3 vorgefunden wurden und diese dann per Http an den Miniserver schicken.

      Kommentar

      • svethi
        Lebende Foren Legende
        • 25.08.2015
        • 6289

        #4
        Sieh Dir pmayer und sein Node Projekt an, da ist alles dabei was Du brauchst
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar

      • Gast

        #5
        Oha, vielen Dank für den Hinweis, da muss ich mich erstmal einlesen. Schaut sehr interessant aus!

        Von weitem schaut es aus, als müsste ich dafür ein PI einsetzen - mal schauen, ob ich es versuchsweise unter Windows zum laufen kriege.

        Kommentar


        • pmayer
          pmayer kommentierte
          Kommentar bearbeiten
          node-red läuft so ziemlich überall ;-)

          Auch unter Windows geht, die meisten Anleitungen beziehen sich aber auf Linux. Mach dich doch einfach mit VirtualBox eine kleine VM und installiere es da drin: https://nodered.org/docs/getting-started/
      • Gast

        #6
        Also, ich habe mir node-red angeschaut - soweit sehr interessant! Ich habe mir zusätzlich das Dashboard installiert, und ein paar Knoten miteinander verbunden (Control In mit Dashboard Widgets).

        Jetzt komme ich aber an eine Grenze: Wie komme ich bei einer Intelligenten Raumregelung an die Temperaturen? Sprich die aktuelle Komforttemperatur, Party, Tiefschlaf usw... Temperaturen?

        unter Temperatures ist in der Strukturdatei ein Array, ich habe es im Display Widget mit msg.payload[0] probiert - funktionniert aber auch nicht.

        Habt ihr eine Idee?

        Vielen Dank im Voraus!

        Kommentar

      • Gast

        #7
        So schaut das Ganze ungefähr aus:

        Code:
        "0ec5c35c-0074-3e3b-ffff931b6b3075d3":
            {
            "name":"Intelligente Raumregelung",
            "type":"IRoomController",
            "uuidAction":"0ec5c35c-0074-3e3b-ffff931b6b3075d3",
            "room":"0ec5be21-02e3-04f3-ffff931b6b3075d3",
            "cat":"0ec5be21-0292-032a-ffff931b6b3075d3",
            "defaultRating":1,
            "isFavorite":false,
            "isSecured":false,
            "details":
                {
                "restrictedToMode":2,
                "temperatures":
                    {
                    "0":{"isAbsolute":false},
                    "1":{"isAbsolute":true},
                    "2":{"isAbsolute":true},
                    "3":{"isAbsolute":true},
                    "4":{"isAbsolute":true},
                    "5":{"isAbsolute":false},
                    "6":{"isAbsolute":false}
                    },
                "format":"%.1f°"
                },
            "states":
                {
                "tempTarget":"0ec5c35c-0074-3e36-ffffa13c92cb6011",
                "tempActual":"0ec5c35c-0074-3e15-ffffa13c92cb6011",
                "error":"0ec5c35c-0074-3e34-ffffa13c92cb6011",
                "mode":"0ec5c35c-0074-3e32-ffffa13c92cb6011",
                "serviceMode":"0ec5c35c-0074-3e33-ffffa13c92cb6011",
                "currHeatTempIx":"0ec5c35c-0074-3e09-ffffa13c92cb6011",
                "currCoolTempIx":"0ec5c35c-0074-3e0a-ffffa13c92cb6011",
                "override":"0ec5c35c-0074-3e39-ffffa13c92cb6011",
                "isPreparing":"0ec5c35c-0074-3e3a-ffffa13c92cb6011",
                "valveHeat":"0ec5c35c-0074-3e29-ffffa13c92cb6011",
                "valveCool":"0ec5c35c-0074-3e2d-ffffa13c92cb6011",
                "openWindow":"0ec5c35c-0074-3e16-ffffa13c92cb6011",
                "stop":"10d2af24-0230-0ea2-ffffc8f94c542523",
                "overrideTotal":"1000db3a-0361-140e-ffff931b6b3075d3",
                "movement":"1000db3a-0361-140d-ffff931b6b3075d3",
                "manualMode":"1000db3a-0361-140f-ffff931b6b3075d3",
                "temperatures":
                    [
                    "0ec5c35c-0074-3e1d-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e1e-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e1f-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e22-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e23-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e21-ffffa13c92cb6011",
                    "0ec5c35c-0074-3e20-ffffa13c92cb6011"
                    ]
                },
            "subControls":
                {
                "0ec5c35c-0074-3e07-ffffa13c92cb6011":
                    {
                    "name":"Heating",
                    "type":"IRCDaytimer",
                    "uuidAction":"0ec5c35c-0074-3e07-ffffa13c92cb6011",
                    "defaultRating":0,
                    "isFavorite":false,
                    "isSecured":false,
                    "details":
                        {
                        "analog":true,
                        "format":"%.1f°"
                        },
                    "states":
                        {
                        "entriesAndDefaultValue":"0ec5c35c-0074-3e07-ffffa13c92cb6011",
                        "mode":"0ec5c35c-0074-3e37-ffffa13c92cb6011",
                        "modeList":"1000db3a-0361-140b-ffff931b6b3075d3",
                        "value":"0ec5c35c-0074-3e09-ffffa13c92cb6011"
                        }
                    },
                "0ec5c35c-0074-3e08-ffffa13c92cb6011":
                    {
                    "name":"Cooling",
                    "type":"IRCDaytimer",
                    "uuidAction":"0ec5c35c-0074-3e08-ffffa13c92cb6011",
                    "defaultRating":0,
                    "isFavorite":false,
                    "isSecured":false,
                    "details":
                        {
                        "analog":true,
                        "format":"%.1f°"
                        },
                    "states":
                        {
                        "entriesAndDefaultValue":"0ec5c35c-0074-3e08-ffffa13c92cb6011",
                        "mode":"0ec5c35c-0074-3e38-ffffa13c92cb6011",
                        "modeList":"1000db3a-0361-140c-ffff931b6b3075d3",
                        "value":"0ec5c35c-0074-3e0a-ffffa13c92cb6011"
                        }
                    }
                }
            },
        Eine UUID ist also vorhanden, ich finde aber nicht, wo ich im Node-Red Dashboard eine UUID direkt eintragen kann?

        Kommentar

        • Xenobiologist
          Lox Guru
          • 15.01.2016
          • 1112

          #8
          Wie würdest du es denn manuell machen? Hast du die gewünschten Werte in der abgefragten Strukturdatei gefunden?
          Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
          https://www.loxforum.com/forum/germa...d-grafana-visu
          Mit Loxone einen Windows-PC steuern:
          https://www.loxforum.com/forum/faqs-...indows-steuern

          Kommentar


          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Manuell würde ich die UUIDs jeweils in einem EventListener eintragen und diesen beim Miniserver registrieren - die UUIDs selbst habe ich in der Strukturdatei gefunden, es handelt sich um einen solchen Block (wie im Beispiel weiter oben):

            "temperatures":
            [
            "0ec5c35c-0074-3e1d-ffffa13c92cb6011",
            "0ec5c35c-0074-3e1e-ffffa13c92cb6011",
            "0ec5c35c-0074-3e1f-ffffa13c92cb6011",
            "0ec5c35c-0074-3e22-ffffa13c92cb6011",
            "0ec5c35c-0074-3e23-ffffa13c92cb6011",
            "0ec5c35c-0074-3e21-ffffa13c92cb6011",
            "0ec5c35c-0074-3e20-ffffa13c92cb6011"
            ]

            Wie gesagt, mir ist nicht ganz klar, wie ich das mit dem node-red-dashboard umsetzen kann. Dort finde ich die UUIDs nicht.
        • pmayer
          LoxBus Spammer
          • 27.02.2017
          • 379

          #9
          Die Events kommen beim Einschalten von "enableStatusUpdates" beim Verbinden zum Miniserver im Node. Wie im anderen Beitrag beschrieben kommen die Daten dort ja als SubControl.

          Bei der intelligenten Raumregelung müsste man aber wirklich nach dem Event der passenden UUID fragen... ich glaube es müsste auch noch Sub-Sub-Controls geben, damit man diese holen kann. Temperatures ist ja nicht auswählbar...

          Ich guck mir das mal an...
          https://allgeek.de/

          https://twitter.com/pregopm, https://github.com/codmpm/
          https://github.com/codmpm/node-red-contrib-loxone
          https://github.com/codm/wled-controller

          Kommentar


          • pmayer
            pmayer kommentierte
            Kommentar bearbeiten
            Das SubControl "temperatures" feuert leider keinen Event. Wenn ich die Komforttemperatur ändere, und auf "mode" lausche, bekomme ich einen event aber eben nicht die uuid's der temperatures (siehe details im msg-object)

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Hab gerade versucht es zu reproduzieren mit einem Stream-All. Wenn ich eine Komforttemperatur ändere bekomme ich nur:

            Code:
            {
            "uuid":{
              "string":"0ec76d8f-02b7-af23-ffff2d5d1214dc8e",
              "data_length":16},
            "defValue":0,
            "entries":10,
            "entry":[
              {"mode":3,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":4,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":5,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":6,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":7,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":8,"from":0,"to":1440,"needActivate":0,"value":2},
              {"mode":9,"from":0,"to":1440,"needActivate":0,"value":2}, 
              {"mode":-3,"from":0,"to":1440,"needActivate":0,"value":4},
              {"mode":-4,"from":0,"to":1440,"needActivate":0,"value":5},
              {"mode":-5,"from":0,"to":1440,"needActivate":0,"value":6}],
            "data_length":268}

          • pmayer
            pmayer kommentierte
            Kommentar bearbeiten
            Da es sich bei den Temperaturen nicht um Controls handelt, sollten die da nicht raus kommen.
            Das Problem liegt etwas anders...

            Schau mal PN bitte.
        • Xenobiologist
          Lox Guru
          • 15.01.2016
          • 1112

          #10
          Du kannst die aktuelle Zieltemperatur an der IRR abgreifen. Reicht das nicht? Du könntest damit auch über einen Statusbaustein die Texte mappen. Reicht das nicht? Die Temeraturabweichungen passt man doch so gut wie nie an.
          Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
          https://www.loxforum.com/forum/germa...d-grafana-visu
          Mit Loxone einen Windows-PC steuern:
          https://www.loxforum.com/forum/faqs-...indows-steuern

          Kommentar

          • pmayer
            LoxBus Spammer
            • 27.02.2017
            • 379

            #11
            So, Gast und ich haben gerade mal eine kleine Debugsession hinter uns. Für States können nun auch "SubStates" ausgewählt werden. Damit können bei "temperatures" des IRR auch die zugehörigen 7 Werte separat ausgelesen werden. Sowie vom Miniserver ein Event davon gefeuert wird, lässt sich die hinterlegte Temperatur mit einem Control-In Node abfragen.

            Die Temperaturen verteilen sich wie folgt:

            0: Spartemperatur (relativ)
            1: Komforttemperatur Heizbetrieb (absolut)
            2: Komforttemperatur Kühlbetrieb (absolut)
            3: Tiefschlaftemperatur (absolut)
            4: Hitzeschutztemperatur (absolut)
            5: Erhöhter Wärmebedarf (relativ)
            6: Partytemperatur (relativ, Abweichung nach unten)

            Danke auch noch mal Xenobiologist für dein Ohr.
            https://allgeek.de/

            https://twitter.com/pregopm, https://github.com/codmpm/
            https://github.com/codmpm/node-red-contrib-loxone
            https://github.com/codm/wled-controller

            Kommentar


            • Xenobiologist
              Xenobiologist kommentierte
              Kommentar bearbeiten
              Top! Probiere ich morgen mal aus.
          Lädt...