BluGateway und Blu Button1 wie Tastendruck auslesen

  • Hallo an alle,

    da ich hier im Forum noch recht neu bin (lese aber schon längere Zeit als Gast mit) möchte ich mich für mein mangelndes Wissen schon mal vorab entschuldigen

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
    .

    Ich verwende bei mir im Haus einen LCN Bus (ca. 50 Module) und inzwischen immer mehr Shelly Geräte (ca. 20 Geräte, TRV, 2.5, 1P, Blu Button usw.) die bei meinem weiteren Umbau immer mehr zusammen wirken sollen. Da ich für meinen LCN Bus (Anbindung über ein LCN-PK mit Seriellen Daten im Protokoll der Datenader, kein PCHK) ein eigenes Programm unter vb.net geschrieben hatte, wollte ich die Shelly Geräte nun ebenfalls mit einbinden (bis jetzt nutze ich für die Blu Button ein 2.5 als Relais Ausgang welchen ich dann per Http Status abrufe und in meiner Anwendung auswerte und umgekehrt um beiden System miteinander zu verbinden) . Bei den TRV oder den 2.5 kann ich sie ohne Probleme ja per http Status Abfrage auslesen und in meiner Anwendung verarbeiten. Nur zu den BLU Geräten habe ich leider nicht gefunden was mir weitergeholfen hätte.

    Nun mal zu meinem kleinen Problem:

    Ich möchte das Tastendruck Event einen Blu Button 1, bzw. eines Blu RC Button 4 auslesen und in einer eigenen vb.net Anwendung auswerten. Bei den Netzwerk Komponenten kann ich das ja über eine Http Statusabfrage machen. Aber wie geht das bei den Blu Geräten? In der Shelly Blu App habe ich für den Blu Button 1 die Events gesehen aber weiß nicht wie ich sie über eine Http Abfrage auslesen kann.

    shelly_bluetooth_rel:80 ADV b0:c7:de:05:c0:d7: mfd={}, svc={"fcd2":"RAAOAWQ6AQ=="} - Taste 1 mal
    shelly_bluetooth_rel:80 ADV b0:c7:de:05:c0:d7: mfd={}, svc={"fcd2":"RAAPAWQ6Ag=="} - Taste 2 mal
    shelly_bluetooth_rel:80 ADV b0:c7:de:05:c0:d7: mfd={}, svc={"fcd2":"RAAQAWQ6Aw=="} - Taste 3 mal
    shelly_bluetooth_rel:80 ADV b0:c7:de:05:c0:d7: mfd={}, svc={"fcd2":"RAARAWQ6BA=="} - Taste lang

    Da ich gerade gar keine Ahnung habe nach was ich suchen soll hilf mir auch google und co nicht weiter.

    Könnte mir da jemand mal behilflich sein und mir ein Beispiel oder einen Code geben nach was ich suchen muß?

    Liebe Grüße Jörg

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
  • Da gibts ja 2 Gateways:

    Generell zu den BLU Devices:

    Wenn bei denen was passiert, zb. Tastendruck, schicken sie via BLE ein BTHome Packet https://bthome.io/format/ aus. Das muss irgendwo gelesen und geparsed werden. Und dann kannst du damit machen, was du willst.

    Zum "alten" Gateway:

    Du kannst hier zb. das Script https://github.com/ALLTERCO/shell…e-shelly-blu.js verwenden. Das wartet auf diese BTHome Pakete von Devices und erzeugt ein Event für jedes Paket. Auf dieses Event kannst du dann in einem anderen Script reagieren: https://shelly-api-docs.shelly.cloud/gen2/Scripts/S…ddstatushandler. Und der event handler könnte dann zb. einen HTTP request machen, oder etwas auf MQTT publishen, odgl. Deine Anwendung könnte also auf diese http requests horchen, oder diese via mqtt entgegen nehmen.

    Andere Skript Beispiele, die vl schon OOTB besser für dich passen oder wo du Anregung finden kannst:

    Auf den alten Gateways musst du das, meines Wissens nach, alles selber machen via Script machen.

    Side-Note: der "alte" Gateway unterstütz Encryption der BTHome Packete nicht.

    Zum Gen3 Gateway:

    Ich hab keinen da, um das genau zu checken. Aber ich glaube mich zu erinnern, dass man beliebige BTHome Devices registrieren kann. Auch mit Encryption. Und ich glaube, du kannst auch direkt am Gateway ohne scripting schon auf die Events dieser Devices reagieren, und es würde mich nicht wundern, wenn du direkt eine WebHook URL angeben oder direkt auf einen MQTT topic publishen kannst. Wenn nicht, dann muss halt wieder mittels custom script den HTTP request machen oder auf MQTT publishen.

    Alternative: Ohne Gateway

    Es gibt auch die Möglichkeit das ganze ohne Gateway zu machen, und die BTHome Pakete selbst zu lesen und zu verarbeiten. BTHome ist offen, und um die Pakete lesen zu können brauchst du irgendein Gerät, das BLE kann, und irgendeine Software, die BTHome parsen kann. Ggf. kannst du das direkt in deine Applikation integrieren. Hier als Bespiel ein go module und example, wie man BTHome lesen kann:

    https://github.com/hoegaarden/go-…uezScan/main.go

    Zusammengefasst:

    Du willst wahrscheinlich in irgendeiner Art die BTHome Packete verarbeiten. Und dann deiner Applikation mitteilen, dass was passiert ist, und diese darauf reagieren soll. Und nicht umgekehrt: deine Applikation wird nicht pollen (in Abständen nachfragen ob sich was getan hat).