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

  • brutella
    antwortet
    Zitat von MikeR Beitrag anzeigen
    Hallo zusammen,

    erstmal ein extrem großes Lob, an den Entwickler. Bin zwar noch am Testen, weil ich nicht so viel Zeit habe auch schon länger. Aber jedes mal wenn ich mich dran setze, bin ich echt begeistern und werde das Paket auch kaufen. Man sieht und "fühlt" was da an Arbeit drin steckt, plus dem Support. Dafür ist der Lizenzpreis absolut geschenkt!!!
    Vielen Dank für die netten Worte – das freut mich. ❤️

    Zitat von MikeR Beitrag anzeigen
    [...]die Erkennung des Terminierungssymbols "*GO*" bekomme ich nicht hin[...]
    Versuch mal testweise den empfangenen Wert ins Log auszugeben.
    Entweder die Message als Text
    Code:
    println(msg)
    oder am Besten als Hexwert
    Code:
    printf("% X", msg)
    ausgeben. Womöglich empfängst du einen anderen Text als erwartet oder vielleicht sind noch irgendwo Bytes darin versteckt, die du so nicht erwartest.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Das ist eine gute Idee. Bei einer OO-Sprache sollten die Operatoren ja entsprechende Überlastungen haben, aber ich kenne Go ja auch nicht.

    Ich Probier das heute Nacht mal, wenn ich das jetzt mache killt mich meine Frau.

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Ein Ansatz ist noch zwei Variablen anzulegen mit Inhalt "*GO*"​ und dann zu vergleichen
    Code:
    if (msg == varGO)​
    Damit wird zumindest klarer, ob ein Inhaltsvergleich oder der Vergleich der Pointer ausgeführt wird.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    E muss ja hier mehr Anwender, nicht zuletzt auch den Entwickler geben, die sowas schon mal gemacht haben.
    Ich denke ein String-Vergleich ist nicht ganz so exotisch und vermutlich auch nicht ein Vergleich mit einem Empfangenen DPT-16-0 Telegram

    Ich warte mal, bevor ich da selber Hand anlege. Is ja Wochenende und schönes Wetter

    Besten Dank aber schon mal für die Hilfe
    Mike

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Klar kann man den Stringvergleich auch zeichenweise selbst implementieren. Aber das erinnert mich an Asemmbler auf dem C64, als man selbst Integer-Multiplikationen selbst implementieren musst, weil der 6502/6510 Prozessor keine Multiplikation geschweige Division kannte.

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Hast Du beide Seiten der Kommunikation im Griff? Also das "*GO*"​ durch ein einzelnes Zeichen ersetzten wie "G"
    Alternativ den Vergleich zeichenweise implementieren

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Also mit Debug-Ausgaben (println) funktionieren die Zuweisungen.
    Das Problem ist schon der Stringvergleich, aber der ist sowohl syntaktisch als auch semantisch richtig, natürlich im Rahmen meines Verständnisses.
    .
    Ich vermute irgendeine blöde Type-Cast Geschichte, die mir fehlt.

    Auf dem BUs werden ja 16-Byte-Texte, die kürzer sind als 16 Byte immer mit aufgefüllten Nullen geschickt. Deswegen habe ich statt dem
    Code:
    TrimSpace(hkknx.ParseDPT16000(buf))"
    auch mal ein
    Code:
    Trim(hkknx.ParseDPT16000(buf), "\x00")
    probiert. Gleiches Nicht-Ergebnis

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Okay - GO gehört nicht zu "meinen" Sprachen; schau mal, ob das = für Initialisierung und das := für eine Zuweisung an eine Variable verwendet werden muss

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    In der Go-Doku gibt es noch die funktionale Alternative strings.Compare, aber die scheint in der HomeKit Bridge nicht zu funktionieren.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Ja, der == Operator. Ist in C++ auch so und steht auch in der Go-Doku. Ergebnis des Operators sollte Bool sein.

    bin aber dankbar für eine Korrektur.

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    in jeder bekannten Sprache muss an der Stelle ein String-Vergleich verwendet werden.

    Einen Kommentar schreiben:


  • MikeR
    antwortet
    Hallo zusammen,

    erstmal ein extrem großes Lob, an den Entwickler. Bin zwar noch am Testen, weil ich nicht so viel Zeit habe auch schon länger. Aber jedes mal wenn ich mich dran setze, bin ich echt begeistern und werde das Paket auch kaufen. Man sieht und "fühlt" was da an Arbeit drin steckt, plus dem Support. Dafür ist der Lizenzpreis absolut geschenkt!!!

    Nun zu meinem Problemchen, es geht um das Scripting. Ich muss zugeben. dass ich gerade das erste Mal mit GO zu tun hatte. Habe 30 Jahre lang als Softwareentwickler gearbeitet, aber die letzten Jahre im Projektmanagement kommt einem an intuitiver Erfahrung doch viel abhanden... :-(

    Was ich möchte ist Teilstrings, die via 14-Byte-Objekte vom HS über den Bus zur Homekit Brücke gehen, in dem Script sammeln und bei einem "*GO*" dann als Notification auf's Handy geschickt werden. Als allgemeine Alarmierungsfunktion. Klappt im Prinzip, nur - und das ist eigentlich peinlich - die Erkennung des Terminierungssymbols "*GO*" bekomme ich nicht hin

    [CODE
    ]var hkknx = import("hkknx")
    var strings = import("strings")

    var oCh = hkknx.GroupWriteNotify("0/5/200")
    var strComplete = ""



    for {
    buf = <-oCh
    msg = strings.TrimSpace(hkknx.ParseDPT16000(buf))

    if (msg == "*GO*") {
    hkknx.SendNotification("Meldung von HS", strComplete, "Mike")
    println("Send:" + strComplete)
    strComplete = ""
    } else {
    strComplete = strComplete + msg + " "
    }


    }[/CODE]

    Ich bitte untertänigst um Erleuchtung​
    Mike

    Nachtrag: Die ParseFunktion auf ASCII "ParseDPT16000" geändert, macht aber keinen Unterschied
    Zuletzt geändert von MikeR; 13.04.2024, 13:46.

    Einen Kommentar schreiben:


  • wwfr
    antwortet
    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)...

    Einen Kommentar schreiben:


  • wwfr
    antwortet
    brutella Danke für die Rückmeldung - wäre super wenn die Brücke DPT242.600 / XY Farbe unterstützen würde

    Einen Kommentar schreiben:


  • brutella
    antwortet
    Zitat von wwfr Beitrag anzeigen
    Liege ich richtig, dass dann sowohl die Farbansteuerung als auch eine Auswahl der CCT möglich ist - wie bei Philips Hue? D.h. die Brücke rechnet CCT in HSV um und leitet diese umgerechneten Werte weiter?​
    Nein, wenn du HSV, RGB, oder Farbe für eine Lampe konfiguriert hast, dann bekommst du die Farbauswahl in der Home-App angezeigt.
    Wenn du die Farbtemperatur konfiguriert hast, dann bekommst du die Farbtemperaturauswahl angezeigt. Eine Umrechnung von Farbtemperatur auf Farbe steht nicht zur Verfügung.

    Einen Kommentar schreiben:

Lädt...
X