NEWS
Anfrage zur Erweiterung des BTHome-plugins im BT-Adapter
-
Hallo,
ich verwende ein Bluetooth-Device um einen 32bit Zählwert zu übertragen und nutze darin das BTHome Protokoll (Obj.-Id. 0x3E). Um zusätzlich einen zweiten, separaten Wert zu übertragen wollte ich die BTHome Obj.-Id. 0x5B verwenden. Nach einigen Versuchen fiel mir auf, daß diese gar nicht im BTHome-Plugin des Bluetooth-Adapters hinterlegt ist.Meine Frage/Bitte, könnte das in einem kommenden Update mit integriert werden?
Auch die 8bit und 16bit signed int , Id 0x59 und 0x5A sind nicht hinterlegt.Kann ich diese Object-Id's vorläufig händisch im BTHome-Plugin ( … /plugins/lib/bthome_protocol.ts) eintragen?
Überlebt so ein händischer Eintrag die nächste Aktualisierung des Bluetooth-Adapters?Der händische Eintrag müsste wohl
{ id: 0x5b, label: "count", signed: true, size: 4 },
lauten.
Links:
https://bthome.io/format/ Supported data types
https://github.com/AlCalzone/ioBroker.ble/blob/master/src/plugins/lib/bthome_protocol.ts -
@heidi02
Für Fehlermeldungen (Bugs) oder Erweiterunsgwünsche (Features) leg bitte ein Issue im Adapter--Repository (https://github.com/AlCalzone/ioBroker.ble) auf Github an.Hier geht das zu 99% unter.
Und nein, ein Eintrag in *.ts wird zu 99,9% nichts bewirken, da .tx taypescript files sind die noch compiliert werden bevor sie verwendet werden.
-
@mcm1957
Danke, für Deine Antwort und den Hinweis auf github!
Das war die Gelegenheit mich dort endlich mal anzumelden.Schade, daß man lokal keine Erweiterung "hinein basteln" kann.
-
Du kannst - wenn ein wenig javascript kannst - jederzeit den Adapter für dich modifizieren.
Grobe Anleitung:
-
Repository auf Github forken
-
Repository auf eine lokale Arbeitsumgebung (typisch am PC) clonen. Pers. nehme ich die (Windows) Software Github Desktop dazu
-
in der lokalen Arbeitsumgebung alle npm Pakete installieren (
npm i
) -
deine Änderungen am Source durchführen
-
typescript kompileren - typisch mit dem Befehl
npm run build
-
alles was geändert wurde committen und auf Github puschen
-
deinen Fork via "Katze" im Expertenmodus installieren
-
wenn diese Änderung funktioniert kannst du diese dann per PR an den orginalen Dev zurückgeben damit er das übernehmen kann.
Das ganze ist nur eine sehr kurze Kurzanleitung. Aber wenn dich die Entwicklung von Adaptern interessiert kannst dich gener auf unseren Developer Channels (Telegramm, Discord - Invite links auf www.iobroker.dev) melden.
Aber bitte unbedingt eines beachten:
Optimalerweise solltes du deinen geänderten Adaptercode auf einen TESTSYSTEM ausprobieren. Testversionen auf produktiven Systemen zu installieren ist meist keine gute Idee da ein fehlerhafter Code auch ernsthaften Schaden am Gesammtsystem anrichten kann. Ein funktionierendes Backup ist jedenfalls Pflicht (oder gute Beherrschung um nachher nicht zu heulen)Und noch was:
Im Kern sollten die kopilierten Datein im Verzeichnis "build" liegen. Wenn du dort die Stelle findest wo du was einfügen willst kannst du das natürlich tun. Aber ich hab das nie geschrieben weil von derdirekten Modifikation von Code am Usersystem ist absolut abzuraten. Ersten verschwindet das beim nächsten Update (hoffentlich) wieder und andrerseits erschwert es Hilfe / Fehlersuche ungemein wenn der Code der läuft nicht der ist den man annimmt dass er läuft ... -
-
@mcm1957
Vielen Dank, für Deine umfangreiche Antwort!
Wenn ich mir Deine "kurze Kurzanleitung" so ansehe, würde ich mir das durchaus zutrauen. Ich werde mir dazu mal einen freien Tag aussuchen, von dem ich weiß, daß ich Zeit habe und dranbleiben kann.
Zu sagen, daß ich Javascript kann, würde ich mir niemals wagen. Daher wäre ich auf einem Developer Channel sicher fehl am Platz.Ich bin ursprünglich eher der Elektronik-Hardware-Bastler incl. Platinenlayout usw. Im Zuge der Zeit habe ich dann irgenwann mit den AtMegas angefangen mich in C einzuarbeiten. In der Zeit bevor die Arduinos aufkamen. Das klappt auch für den Hausgebrauch. Javascript und anderes hat sich dann hier und da einmal so nebenbei eingeschlichen. Hier im ioBroker schreibe ich meine Scripte in Typescript.
BTW: Durch Deine erste Antwort ist mir erstmals bewußt geworden, das Typescript eine Compiler/Transpiler-Sprache ist. Daran hatte ich noch nie gedacht. -
Als Zwischenlösung zum Problem im Startbeitrag werde ich wohl meine beiden Zählwerte in "einem Rutsch" übertragen.
BTHome bietet ja die Möglichkeit mehrere Werte, auch gleichen Typs, gemeinsam zu übertragen. Im Plugin werden sie dann separat ausgegeben. In den "Objekten" des Bluetoothmoduls erscheint dann halt "count" und "count (2)".
Wenn also der zweite Wert übertragen werden soll, muss auch der erste mit gesendet werden, damit die Zuordnung erhalten bleibt. -
@heidi02
also wenn du eh schon scripts in typescript schreibst kannst du zu 100% genug typescropt um in fie Adapterentwicklung eknzusteigen.javescript ist ja typescript ohne typing ...
gibt auch nen eigenen starters channel.
ist aber natürlich deine Entscheidung. Es word dort aber nienand gebissen.
-
@mcm1957 said in Anfrage zur Erweiterung des BTHome-plugins im BT-Adapter:
Es wird dort aber niemand gebissen.
Na, das ist ja schon mal viel wert.
Du hast meine Scripte noch nicht gesehen…Danke! Vorläufig wird das wohl nichts.
Ich habe schon die Zeit vor Augen, wo ich deutlich mehr Freizeit haben werde. Dann komme ich bestimmt auch öfter mal dazu ein paar Kleinigkeiten zu programmieren.
Dann kann ich ja diesbezüglich noch mal in mich gehen.Grüße
Jürgen