Rest oder Webapi, auslesen der Lichtszenen Namen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Labmaster
    Lox Guru
    • 20.01.2017
    • 2592

    #1

    Rest oder Webapi, auslesen der Lichtszenen Namen

    Servus,
    ich hab bisher wenig bis nichts mit der Rest Api bzw. der WebSock Geschichten zu tun gehabt, habe nun aber eine Anforderung wo ich mir dachte dass es hierüber ja eventuell einen Weg geben könnte ?
    Ich möchte auf externe KNX Displays die Lichtszenen Namen anzeigen lassen, diese müsste ich per Text GA dorthin senden.
    Jetzt wäre es natürlich super wenn man die Szenen-Namen nicht extra pflegen müsste, sondern diese aus den jeweiligen Lichtbausteinen ausgelesen werden würden.
    Kommt man an diese Informationen darüber ran, wenn ja, wie oder müsste ich dazu die komplette "LoxAPP3.json" in den Miniserver einlesen und parsen ?
    Eine externe Lösung über Loxberry o.Ä. (NodeRed ..) kommt für mich nicht in Frage wenn, dann muss alles auf dem MS laufen.
    Zuletzt geändert von Labmaster; 26.10.2024, 03:45.
  • Tico
    Lox Guru
    • 31.08.2016
    • 1035

    #2
    Sie müssen eine virtuelle Texteingabe mit dem Standardtext als - erstellen.

    ECHO(Lico)

    Verbinden Sie diesen VTI mit dem AC-Anschluss des Lighting Controllers.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Program version.png
Ansichten: 156
Größe: 19,1 KB
ID: 444925

    Die einfachste Möglichkeit besteht darin, ein Programmmodul an den AC-Ausgang anzuschließen, um den Text zu analysieren.

    Code:
    // Parse mood name from API connector response strings.
    
    // Given input on text input T1, will output
    // the mood name on Txt1 output, and a
    // boolean on O1 value output indicating
    // if that mood is on or off.
    
    // Example:
    // input T1: "DISPLAYECHO(Lico;Relaxing)"
    // output Txt1: "Relaxing"
    // output O1: true
    
    #define MAX_MOOD_LEN 16
    char  moodName[MAX_MOOD_LEN+1];
    char *inStr, *moodSt;
    int eventMask, inNo, moodLen;
    int reps = 0;
    while(TRUE) {
    sleep(100);
    eventMask = getinputevent();
    for (inNo = 0; inNo <3; inNo++) {
      if ((eventMask & (1<<inNo)) == 0) continue;
      reps++;
      setoutput(12,reps);
      inStr = getinputtext(inNo);
      moodSt = strstrskip(inStr, "Lico;");
      if (moodSt == 0) continue;
    
      moodLen = strlen(moodSt) - 1;  // strip trailing )
      if (moodLen > MAX_MOOD_LEN) {
        moodLen = MAX_MOOD_LEN;
      }
      strncpy(moodName, moodSt, moodLen);
      setoutputtext(inNo, moodName);
      setoutput(inNo, !!strcmp(moodName, "Off"));
    }
    }​

    Eine alternative Möglichkeit ist die Verwendung von Befehlserkennungsblöcken und Statusblöcken, wenn die Wahrscheinlichkeit besteht, dass mehr als 8 Lichtsteuerungen vorhanden sind.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Lico2.png
Ansichten: 105
Größe: 45,7 KB
ID: 444926

    Sie haben dann die ASCII-Werte für die Zeichen. Diese können mit Statusblöcken gemäß dem Link verbunden werden -



    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Status Block Long Form.png
Ansichten: 100
Größe: 33,8 KB
ID: 444927
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar

    • Labmaster
      Lox Guru
      • 20.01.2017
      • 2592

      #3
      Hi Tico, Danke für deinen Vorschlag.

      Meine Lichtsteuerungsbausteine haben leider kein AC (API Connector), ich bin mit der FW noch auf 10.3 und kann das auch nicht ändern. (mit neueren Versionen funktionieren bei mir diverse Timings von KNX Ansteuerungen nicht mehr korrekt)
      Auch brauche ich alle in der jeweiligen Lichtsteuerung definierten Szenen Texte und nicht nur den gerade aktiven.
      Deshalb auch die Frage bezüglich RestApi / Websock ...
      Auch sollte man mit Status Bausteinen eher sparsam umgehen, da diese im MS jeweils relativ viel Rescourcen belegen und ich alleine schon wegen meiner tausenden KNX GA's entsprechend aufpassen muss.
      Zuletzt geändert von Labmaster; 26.10.2024, 03:48.

      Kommentar


      • Tico
        Tico kommentierte
        Kommentar bearbeiten
        Bevor ich versucht habe, den Mood-Namen aus dem Lighting Controller zu bekommen, habe ich verschiedene Möglichkeiten ausprobiert, ihn aus der LoxAPP3.json zu bekommen.

        Ich konnte nirgends finden, wo die Mood Names in der LoxAPP3.json aufgeführt sind

        Ihr Vorschlag, die Szenennamen separat zu pflegen, ist wahrscheinlich die einzige Möglichkeit.
    • Labmaster
      Lox Guru
      • 20.01.2017
      • 2592

      #4
      Aber es muss ja einen Weg geben, denn NodeRed z.B. kommt an diese Informationen auch ran:

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: LoxoneMoodlist2.png Ansichten: 0 Größe: 50,2 KB ID: 445111
      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: LoxoneMoodlist.png Ansichten: 0 Größe: 41,0 KB ID: 445112

      The NodeRed MS communication seems to be based on this:

      Angehängte Dateien
      Zuletzt geändert von Labmaster; 28.10.2024, 06:13.

      Kommentar

      • Jan W.
        Lox Guru
        • 30.08.2015
        • 1398

        #5
        Die Infos sind im Structure File in sceneList, siehe https://www.loxone.com/dede/wp-conte...?x94623#page41

        Das Parsen von JSON auf dem MS ist ziemlich umständlich und wäre über die UUIDs möglicherweise präziser.
        Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
        Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
        Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
        Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
        Node-RED: IKEA Tradfri

        Kommentar

        • Labmaster
          Lox Guru
          • 20.01.2017
          • 2592

          #6
          Ja, den Link zum Structur File hatte ich ja oben auch schon angegeben.
          Ich finde leider nirgends ein Beispiel wie der Zugriff auf diese Information über die UUID auszusehen hat.
          Hab jetzt schon viel probiert, komme da aber nicht wirklich weiter :-(

          Kommentar

          • nufke
            Smart Home'r
            • 10.11.2018
            • 62

            #7
            The Structure File itself only defines the static information like available controls, rooms and categories, and for each control the dynamic elements have an UUID such that they are getting updated when there are state changes. As such for the lightcontroller this moodlist is part of the state.
            You can check my Lox2MQTT plugin how I connect to the Miniserver websocket and pass all control data including state changes to the MQTT broker (LoxBerry required). If you enable "publish control state changes" and debug, you will see the actual JSON content for the state updates.

            Kommentar

            Lädt...