Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

HomeKit Brücke für KNX

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

  • harnibal
    antwortet
    Nein, keine Änderung.

    Einen Kommentar schreiben:


  • brutella
    antwortet
    Hast du bei deiner HomeKit Konfiguration auf iOS etwas geändert?

    Einen Kommentar schreiben:


  • harnibal
    antwortet
    Hallo,
    ich mache gerade die ersten Gehversuche mit hkknx, tolles Projekt! Vielen Dank dafür!

    Gestern habe ich alles nötige auf meinem raspberrypi installiert und die Grundeinstellungen vorgenommen. Nach ein paar anfänglichen Schwierigkeiten konnte ich dann die erste Lampe und Rolladen hinzufügen und auch bedienen.

    Heute wollte ich dann mit weiteren Geräten testen, aber es funktioniert irgendwie nicht mehr. Unter Status > Netzwerk ist zwar alles grün, der Gruppenmonitor zeigt auch die Aktivität auf dem Bus, aber die Geräte sind nicht erreichbar und wenn ich neue anlege, dann schlägt die Synchronisation fehl.
    "Fehler: Accessory MeinNeuesGerät not found."

    Jemand eine Idee, woran das liegen könnte, oder wie ich bei der Fehlersuche vorgehen könnte?

    Einen Kommentar schreiben:


  • brutella
    antwortet
    wwfr Sorry, deine Frage hab ich übersehen. Ich pack dieses Feature mal auf Github → https://github.com/brutella/hkknx-public/issues/309

    Einen Kommentar schreiben:


  • wwfr
    antwortet
    Zitat von wwfr Beitrag anzeigen
    Noch eine weitere Frage bzgl. der Temperatursteuerung: Ist der Kelvin-Wert links und rechts festeingestellt bzw. von HomeKit vorgegeben?

    IMG_9359.png
    IMG_9360.png
    Ich möchte Lampen ansteuern die einen sehr hohen CCT-Bereich abdecken können (von 1800-16000K)...
    brutella Würde mich um kurze Rückmeldung freuen


    Es fehlt in hkknx eine Funktion, die die min. und max. Kelvin der Leuchte definiert, damit der Temperaturpicker in der Home App die richtigen Werte/das volle Spektrum der Lampe abdecket. Thinka hat das implementiert: hier

    Screenshot 2024-04-22 at 21.08.47.png

    Einen Kommentar schreiben:


  • brutella
    antwortet
    Danke für die Rückmeldung. Somit ist 2.8.2 jetzt offiziell verfügbar.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Perfekt, funktioniert genau so wie erwartet!

    Vielen Dank für die schnelle Reaktion und die saubere Lösung
    Mike

    Einen Kommentar schreiben:


  • brutella
    antwortet
    MikeR Hab jetzt das Problem mit dem Dekodieren als String DPT 16.000 und DPT 16.001 in 2.8.2-b2 behoben. Somit sollte ein einfacher Vergleich mit
    Code:
    msg == "*GO*"
    funktionieren. Bitte ausprobieren – danke.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Ja klar, war an der Stelle betriebsblind...
    ...und bin es wohl immer noch?

    Die Parse-Funktionen sind doch dafür da aus dem Byte-Buffer einen String zu machen, also sieht mein Testcode so aus:
    Code:
    buf = <-oCh
    msg1 = hkknx.ParseDPT16000(buf)
    printf("Nach Parse: % X", msg1)
    msg2 = msg1[1:]
    msg3 = strings.TrimLeft(msg2, "\x00")
    printf("Nach TrimLeft: % X", msg3)
    msg4 = strings.TrimRight(msg3, "\x00")
    printf("Nach TrimRight: % X", msg4)​
    Das Ergbsnis bleibt
    Code:
    Nach Parse: 00 54 65 73 74 00 00 00 00 00 00 00 00 00 00
    Nach TrimLeft: 54 65 73 74 00 00 00 00 00 00 00 00 00 00 <<- Das ist wegen dem Subarray korrekt, nicht wegen dem TrimLeft
    Nach TrimRight: 54 65 73 74 00 00 00 00 00 00 00 00 00 00​
    Das (nochmal nachträglich eingefügte) manuelle Beschneiden am Anfang mit dem Subarray klappt natürlich, die Trims nicht.

    Komme mir gerade etwas unfähig vor!?!
    Zuletzt geändert von MikeR; 14.04.2024, 18:04.

    Einen Kommentar schreiben:


  • brutella
    antwortet
    Du musst den Text trimmen, nicht die Bytes.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Seufz...

    Code:
    buf = <-oCh
    msg = strings.TrimRight(buf,"\x00")
    printf("% X",msg)​
    ...liefert bei einem über den Bus geschickten "Test" als hex ein "54 65 73 74 00 00 00 00 00 00 00 00 00 00". Der "TrimRight" tut als bei TrailingZeros nicht was man von im erwartet.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Wäre es da nicht auch in der Parser-Funktion sinnvoll die Nullen am Ende zu eliminieren, wenn die immer dabei sind.
    Mag an einer Beschränkung meinerseits liegen, aber ich kann mir nicht vorstellen, dass jemand über das eh schon suboptimal DPT16 auch noch mit Absicht Nullen schicken will!?!

    Einen Kommentar schreiben:


  • brutella
    antwortet
    Ich hab mir dein Problem mal etwas näher angesehen und zu möglichen Lösungen gekommen. → https://go.dev/play/p/oUuturdL15A

    Lösung 1. Du verwendest `strings.HasPrefix(msg, "*GO*")`
    Lösung 2 (Mein Favorit). Du löscht alle nachführenden Nullen mit `strings.TrimRight` und überprüfst dann wie gewohnt mit `msg == "*GO*"`

    Also

    Code:
    var trimmed = strings.TrimRight(msg, "\x00")
    if trimmed == "*GO*" {
        ...
    }
    Bzgl. hkknx.ParseDPT16000 hast du Recht. Die zusätzliche Null am Beginn scheint ein Fehler zu sein. Werde ich in einem Update beheben.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    P.S.: Ich habe das "hkknx.ParseDPT16000()" raus geschmissen, weil mir das noch eine zusätzliche führende Null erzeugte

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Ja, das stimmt. Danke für den Tipp mit der HEX-Ausgabe.
    Ich bekomme IMMER ein 14-byte großes Zeichen-Array, das am Ende des Payload-Textes mit Nullen aufgefüllt ist. In meinem Fall also "2A 47 4F 2A 00 00 00 00 00 00 00 00 00 00".

    Ich könnte natürlich Einfach ein msg[0:4] auf "*GO*" prüfen, ist aber auch nicht schön.

    Ein "msg = strings.TrimRight(buf, '\000')" trimmt nix, und ein "strings.Index(msg,'\000')" liefert -1 für nicht gefunden. Würde gerne die Nullen irgendwie loswerden, anstatt implizite Annahmen über Längen zu machen.

    Aber wenn keiner mehr eine Idee hat, dann bleibe ich beim dem Sub-Array

    Besten Dank und liebe Grüße aus Wiesbaden
    Mike

    Einen Kommentar schreiben:

Lädt...
X