X
-
Hast du bei deiner HomeKit Konfiguration auf iOS etwas geändert?
Einen Kommentar schreiben:
-
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:
-
wwfr Sorry, deine Frage hab ich übersehen. Ich pack dieses Feature mal auf Github → https://github.com/brutella/hkknx-public/issues/309
- Likes 1
Einen Kommentar schreiben:
-
brutella Würde mich um kurze Rückmeldung freuenZitat von wwfr Beitrag anzeigenNoch 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)...
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:
-
Perfekt, funktioniert genau so wie erwartet!
Vielen Dank für die schnelle Reaktion und die saubere Lösung
Mike
- Likes 1
Einen Kommentar schreiben:
-
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 mitfunktionieren. Bitte ausprobieren – danke.Code:msg == "*GO*"
Einen Kommentar schreiben:
-
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:
Das Ergbsnis bleibtCode: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 (nochmal nachträglich eingefügte) manuelle Beschneiden am Anfang mit dem Subarray klappt natürlich, die Trims nicht.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
Komme mir gerade etwas unfähig vor!?!Zuletzt geändert von MikeR; 14.04.2024, 18:04.
Einen Kommentar schreiben:
-
Seufz...
...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.Code:buf = <-oCh msg = strings.TrimRight(buf,"\x00") printf("% X",msg)
Einen Kommentar schreiben:
-
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:
-
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
Bzgl. hkknx.ParseDPT16000 hast du Recht. Die zusätzliche Null am Beginn scheint ein Fehler zu sein. Werde ich in einem Update beheben.Code:var trimmed = strings.TrimRight(msg, "\x00") if trimmed == "*GO*" { ... }
Einen Kommentar schreiben:
-
P.S.: Ich habe das "hkknx.ParseDPT16000()" raus geschmissen, weil mir das noch eine zusätzliche führende Null erzeugte
Einen Kommentar schreiben:
-
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:


Einen Kommentar schreiben: