Alexa Plugin

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • pmayer
    LoxBus Spammer
    • 27.02.2017
    • 379

    #31
    Ich kann euch zumindest sagen, dass es genau so ist wie von mir vermutet


    Code:
    10c46cba-004a-1ed4-ffffc77349a79e74
    1="Bewegung",2="Test1",3="Test2"

    Man muss also beim enableStatusUpdate nach der uuid der sceneList suchen.

    Gleiches gilt für den Lightcontroller V2

    Code:
    10c1d7ad-020c-136d-ffff4f14287ac648
    [{"name":"Viel Licht","id":777,"static":false,"used":1},{"name":"Aus","id":778,"static":true},{"name":"Testszene","id":1,"static":false}]


    Ich frage mich nur gerade, wo ich diese Info im Node mitgeben kann... weil ich müsste ja dann speziell prüfen, ob diese scenelist zu meiner event-uuid gehört und wie ich die Zuordnung sicher stellen kann...
    Zuletzt geändert von pmayer; 30.11.2017, 22:18.
    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
      Auf gleichem Weg erhält man auch die Statustexte für einen "Virtuellen Status" und die Favoriten-Farben der Lichtmodule.
  • Gast

    #32
    Wuhuu.. Das sind gute Nachrichten
    Vielen Dank schonmal an alle zusammen.
    Ich werd mich morgen mal drann hängen und veruschen das bei mir zu implementieren.

    Kommentar

    • pmayer
      LoxBus Spammer
      • 27.02.2017
      • 379

      #33
      Hmm.... ich glaube gerade, dass ich noch nicht mal irgendwas für node-red-contrib-loxone machen muss.

      Die sceneList bekommt man bei einem connect/reconnect über einen control-in node auf "sceneLists" des Lichtmoduls. Über "activeScene" kommt beim schalten die Scene-Nummer.
      Ich bilde ja absichtlich in node-red-contrib-loxone keine Logik ab. Man kann sich also die Szenen zwischenspeichern in node-red und dann, wenn man sie denn braucht, beim event zu "activeScene" entsprechend kombinieren.

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bildschirmfoto 2017-11-30 um 22.32.49.png Ansichten: 1 Größe: 28,7 KB ID: 130902Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bildschirmfoto 2017-11-30 um 22.32.56.png Ansichten: 1 Größe: 31,0 KB ID: 130903
      Zuletzt geändert von pmayer; 30.11.2017, 22:39.
      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

      • Gast

        #34
        So ich habe das nun mal überprüft und ich bekomme vom Miniserver Daten geschickt.
        Soweit ich das verstanden habe sind das Binärdaten --> https://www.loxone.com/dede/wp-conte...ver.pdf?x62000
        Auf Seite 11 wird beschrieben wie man die MessageHeader interpretieren muss um die entsprechenden Daten auslesen zu können.

        In meinem Fall wäre es Nummer 3: Event-Table Text-States
        Da ich ja die Texte/Namen der Szenen empfangen möchte.
        Seite 12 erklärt wie der Table aufgebaut ist.
        UUID = 16 Byte (0-16)
        UUIDIcon = 16 Byte (16-32)
        TextLength = 4 Byte (32-36)

        Der Text wird dann von 36 weg bis zur TextLength gelesen.

        Ist das soweit richtig?
        Oder habe ich hier schon etwas falsch gemacht.
        Die UUID die ich parse scheint noch zu stimmen, aber der Text bzw die TextLenght passen nicht bei mir?

        Kommentar

        • Gast

          #35
          Ich habe das ähnlich wie hier gemacht: https://github.com/ppieczul/org.open...dateEvent.java
          Nur ist das Beispiel Java und ich bin unter C# unterwegs..

          Kommentar

          • Gast

            #36
            Was mir auch noch auffällt ist das die erste UUID im LoxApp3.json enthalten ist, wenn ich die Daten dann aber weiter durch parse, ist die neu geparste UUID nicht mehr enthalten --> Das ist schon mal ein Zeichen das die Logik falsch ist, denn ich gehe mal davon aus das nur UUIDs gesendet werden die auch im LoxApp3.json enthalten sind.
            Auch die geparste TextLength ist größer als die gesamte Antwort und dadurch kommt es sowieso zu einem Fehler.

            Was mache ich hier falsch?

            Kommentar

            • Gast

              #37
              Sooo, ich bin schon wieder ein wenig schlauer geworden..
              In der BinaryMessage die vom Miniserver gesendet wird bekomme ich ich nach jedem Block noch ein paar leere Bytes mit.
              Über diese muss ich drüber iterieren erst dann darf ich anfangen den nächsten Block zu lesen.

              Für meinen LightController V1 habe ich zumindest mal die Szenen ausgelesen.
              Bei V2 scheint noch was nicht zu stimmen, aber das kann auch nur mehr eine Kleinigkeit sein.

              Kommentar

              • pmayer
                LoxBus Spammer
                • 27.02.2017
                • 379

                #38
                Hier ist es in JavaScript in node-lox-ws-api gemacht, das ist die Lib die ich auch für den loxone node verwende:
                - https://github.com/alladdin/node-lox.../EventValue.js
                - https://github.com/alladdin/node-lox...essage/UUID.js

                Wenn ich es richtig weiß, handelt es sich um einen IEEE-754 double percision float: https://en.wikipedia.org/wiki/Double...g-point_format


                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

                • Gast

                  #39
                  Eine andere Frage habe ich noch: Wie finde ich automatisch alle Miniserver im Netzwerk?
                  Also im Prinzip genau so wie in der Loxone Config.

                  Was brauche ich damit ich das machen kann?

                  Kommentar

                  • pmayer
                    LoxBus Spammer
                    • 27.02.2017
                    • 379

                    #40
                    Das kann ich noch nicht sagen, wollte die Funktion auch noch implementieren.
                    Es sollte aber über uPNP oder mDNS funktionieren. Schau mal in das openhab binding, das kann das schon.
                    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

                    • Gast

                      #41
                      Ok alles klar.
                      Danke

                      Kommentar

                      • Gast

                        #42
                        Hi ich habe nun folgenden Code:

                        int offset = 0;

                        while (length > 0)
                        {
                        var uuid = new Uuid(new ArraySegment<byte>(buffer.Array, offset, offset + 16));
                        offset += 16;

                        var uuidIcon = new Uuid(new ArraySegment<byte>(buffer.Array, offset, offset + 16));
                        offset += 16;

                        int textLength = (int)BitConverter.ToUInt32(buffer.Array, offset);
                        offset += 4;

                        string text = Encoding.UTF8.GetString(buffer.Array, offset, textLength);


                        int newOffset = 36 + (textLength % 4 > 0 ? textLength + 4 - (textLength % 4) : textLength);
                        offset += newOffset;

                        length -= offset;
                        }

                        Mit diesem Code möchte ich gerne die TextStates vom Miniserver in den jeweiligen Text umwandeln.
                        Im Grunde ist das ganz das gleich wie die Implementierung in openhab: https://github.com/openhab/openhab2-...dateEvent.java

                        Wenn ich nun zum Miniserver "jdev/sps/enablebinstatusupdate" schicke sollte ich ja initial alle Szenennamen gesendet bekommen, richtig?
                        Lasse ich die Daten nun durch diesen Code laufen, bekomme ich einen komischen output. Siehe "loxone1.png"

                        Nun kann ich am Webinterface Szenen ändern und bekomme das sofort mit und das wird auch richtig geparsed.Siehe "loxone2.png"

                        Hat jemand einen Plan woran das liegen könnte?
                        Angehängte Dateien

                        Kommentar

                        Lädt...