Ich war in letzter Zeit eher abwesend von Gladys, möchte aber die Integration des enocean-Protokolls in Gladys 4 wieder aufnehmen.
Allerdings gefällt mir das Modul enocean-js nicht wirklich, der Entwickler macht zwar einen super Job, aber er ist allein, es gibt keine Dokumentation und ich komme einfach nicht weiter…
Da ich bei der Arbeit viel Python mache, schaue ich mich auf der Python-Seite um und finde Dinge, die ich gerne ausprobieren würde.
Aber dann wäre es eher im Modus eines externen Moduls mit MQTT-Austausch.
Was wäre der richtige Ansatz von Gladys aus? Sollte eine Gladys-Integration entwickelt werden, die für die Kommunikation über MQTT mit Python/Enocean zuständig ist, oder gibt es dafür eine Standardschnittstelle?
Ich gebe zu, dass ich mich bisher noch nicht so sehr mit der V4 beschäftigt habe, aber es ist Zeit, dass ich mich daran mache
Ich habe deinen Beitrag öffentlich gemacht, damit ihn alle sehen können
Also drei Optionen:
Eigentlich könntest du sehr gut Python-Code von Gladys aus aufrufen und diese Integration in Gladys behalten. Aber man muss sehen, wenn es wirklich ein Python-Programm ist, das dauerhaft läuft, ist das nicht ideal.
Du kannst dich an dem inspirieren, was beim Modul zigbee2mqtt gemacht wurde, das ein Dienst ist, dessen Arbeit von einem Docker-Container erledigt wird, der über MQTT mit Gladys kommuniziert. Es müsste also der ausgelagerte Dienst entwickelt werden, eine UI in Gladys erstellt werden, um alles zu steuern, und eine MQTT-API zwischen den beiden entwickelt werden, damit sie kommunizieren können. Danach, im Modul zigbee2mqtt, wurde das so gemacht, weil zigbee2mqtt ein externes Projekt ist, das wir nicht kontrollieren und das großartige Arbeit geleistet hat, die zigbee-Nachrichten von vielen Integrationen in MQTT umzuwandeln.
Tief in den Code von encoean-js einsteigen und eine native Integration in Gladys machen.. Ich habe mir das Repo von oncean-js angesehen, ich erwartete ein verlassenes Projekt und ehrlich gesagt sieht es solide und gut konzipiert aus. Die v4 ist nicht die v3, das Ziel der v4 ist es, eine Software für die breite Masse zu entwickeln, die einfach zu bedienen ist und « out of the box » funktioniert. Eine native Integration, wenn es möglich ist, ändert alles.
Du kannst dich von anderen Projekten inspirieren lassen, die enocean-js verwenden, wie node-red-contrib-enocean, der Code ist lesbar und ich denke, man könnte das relativ einfach in Gladys umsetzen
Gut, ich habe endlich mit der Entwicklung einer Enocean-Integration begonnen.
Nach einigen Stunden, in denen ich mir den Kopf zerbrochen habe, um zu verstehen, wie die V4 funktioniert, habe ich einen Dienst, der startet und sich mit meinem USB-Dongle verbindet
Ich werde also versuchen, das Modul enocean-js direkt in Gladys zu integrieren, was, soweit ich weiß, die Fähigkeit bietet, die gesamte Vielfalt der vorhandenen Geräte zu unterstützen… also werde ich zunächst versuchen, einfache Sensoren (wie Temperatur-, Bewegungsmelder usw.) zu integrieren und dann Schritt für Schritt weitermachen.
Was ich tun kann, ist, meinen Branch auf Git zu pushen, und vielleicht könntest du mir schon sagen, ob das, was ich begonnen habe, „Gladys-konform“ ist. Ich bin von der Z-Wave-Integration ausgegangen.
Eine Frage zur Verwaltung von Geräten und deren Funktionen.
Wenn ich mir die Xiaomi- und Z-Wave-Integrationen ansehe, habe ich den Eindruck, dass, wenn ein Wert von einem Sensor erfasst wird, eine Nachricht an Gladys mit dem Typ EVENTS.DEVICE.NEW_STATE gesendet wird, wobei das Geräteobjekt systematisch neu aufgebaut wird?
Ich dachte, ich müsste zunächst die bekannten/gepaarten/registrierten/gescannten Geräte speichern, bevor ich Daten senden/empfangen kann.
Ich bin mir hier bei dem zu schreibenden Algorithmus etwas unsicher.
Nein, du musst einfach ein Event mit der external_id des Devices (die eindeutige ID auf der EnOcean-Seite) sowie dem neuen Zustand auslösen.
Beispiel im Fall des Xiaomi-Dienstes:
Genau das muss man tun, nimm dir den Z-Wave-Dienst zum Vorbild. Es gibt zwei Registerkarten: eine für die Devices, die bereits mit Gladys verbunden sind, und eine, um neue Z-Wave-Devices mit Gladys zu verbinden.
Wenn es noch etwas gibt, das du nicht verstehst, zögere nicht
Es ist die Funktion addDevice.js, die dafür zuständig ist, ein Event mit dem neuen Gerät als Payload zu senden. Aber ich verstehe nicht, wie Gladys dieses Gerät in der Datenbank registriert. Ich sehe keinen Aufruf von gladys.device.create()
Nur die Frontend scheint auf das Event XIAOMI.NEW_DEVICE zu hören und, soweit ich verstanden habe, nur um die Liste der Geräte neu zu laden?
Da entgeht mir noch etwas
Derzeit rufe ich in dem, was ich geschrieben habe, selbst gladys.device.create() auf, ich gehe nicht über ein Event.
Ich wäre für etwas Aufklärung dankbar
Edit: Ok, ich habe gerade action.js bei Xiaomi gesehen … Ich verstehe besser… Ich werde mich daran orientieren!
Ich versuche endlich, Gladys wieder in Betrieb zu nehmen … diesmal wird es klappen
Derzeit mache ich Entwicklung bei der Arbeit, daher fällt es mir abends schwer, nochmal zu entwickeln … außer dass die V3 am Ende ist… Ich habe viele Enocean-Geräte, die ich nicht nutze, und das macht mich wütend …
Ich habe sogar fast Jeedom ausprobiert … nein, aber ernsthaft …
Also habe ich mich zusammengerissen und bin wieder in den Code eingestiegen!
Ich habe die Entwicklung der Enocean-Integration wieder aufgenommen, und es beginnt, etwas zu werden, ich fühle mich wohler mit der Code-Struktur.
Ich habe es geschafft, Geräte hinzuzufügen und sie korrekt im Dashboard anzuzeigen.
Mir bleibt noch zu:
mehr Geräteprofile verwalten.
Nachrichten verwalten, wenn ein Gerät etwas sendet
eine Nachricht an ein Gerät senden
die Tests schreiben
Ich habe gute Hoffnung, bald etwas Funktionales zu haben!
Und danach habe ich keine weiteren Integrationen zu machen, die ich in der V3 gemacht habe und die ich täglich nutze (unverzichtbar, um zu migrieren und die V3 zu Hause auszuschalten)
Hier ein bisschen Neuigkeiten, ich hoffe, ich falle nicht wieder in ein schwarzes Loch nach dieser E-Mail
Ich bin gut vorangekommen und kann die Werte verschiedener Gerätetypen abrufen.
Ich arbeite an Geräten, die derzeit Befehle empfangen können.
Mir bleiben auch noch die Tests, die ich schreiben muss.
Ich wende mich an die Besitzer von Enocean-Geräten. Könnten Sie mir bitte mitteilen, welche Geräte und EEP-Profile Sie bei sich haben?
Denn die Schwierigkeit wird sein, so viele Geräte wie möglich zu unterstützen.
Zur Information: Ich stütze mich auf das Modul enocean-js, dessen unterstützte Profile man hier sehen kann: https://enocean-js.github.io/enocean-js
Hallo, ich verfolge dein Projekt schon seit einiger Zeit. Ich denke, ja, die Schalter sind auch wichtig, sowie die Mikromodule wie Nodon für Beleuchtung und Rollläden, das ist das Wichtigste. Persönlich verwende ich Material von Eltako, das ein recht vollständiges EnOcean ist. Übrigens, ich werde dein Programm ausprobieren, wenn ich verstanden habe, wie man es installiert. LOL
Aktuell habe ich ein Problem mit den Wandschaltern (d2-01) zu arbeiten. Ich kann zwar einen steuern, aber wenn ich mehrere habe, sind alle miteinander gekoppelt, was unpraktisch ist.
Ich konnte bisher nicht weiterkommen.
Hey ein paar Neuigkeiten … es ist wirklich kompliziert, Zeit zu finden
Diese Tage habe ich mich motiviert und es geschafft, meine Schalter mit einem D2-01-00-Profil korrekt zu betreiben.
Ich habe kein Modul für die Rollläden @eric2-6, falls du mir einen Link zu dem geben kannst, was du besitzt, damit ich sehe, wie ich sie integrieren kann.
Deshalb habe ich angefangen, die Tests zu schreiben, aber ich habe Probleme @pierre-gilles
Ich habe die zwave-Bibliothek nicht installiert, und eslint schreit mich wegen des Imports in der z-wave-Integration an:
gladys-server@ pretest /home/jp/Gladys4/Gladys/server
> npm run eslint
> gladys-server@ eslint /home/jp/Gladys4/Gladys/server
> eslint .
/home/jp/Gladys4/Gladys/server/services/zwave/index.js
7:25 error Unable to resolve path to module 'openzwave-shared' import/no-unresolved
Also, um das zu umgehen, habe ich das pretest in den npm-Skripten grob entfernt. (okay, ich wollte es installieren, aber man muss auch das Binärprogramm installieren und ich habe Fehler beim make bekommen .. also bin ich zum einfachsten Weg gegangen)
Aber dann bekomme ich diesen Fehler:
> gladys-server@ test /home/jp/Gladys4/Gladys/server
> cross-env NODE_ENV=test ./node_modules/mocha/bin/mocha --recursive ./test/bootstrap.test.js "./test/**/*.test.js" --exit
/home/jp/Gladys4/Gladys/server/services/mqtt/node_modules/mqtt/mqtt.js:1
(function (exports, require, module, __filename, __dirname) { #!/usr/bin/env node
^
SyntaxError: Invalid or unexpected token
at new Script (vm.js:100:7)
Ja, ich habe es gelöst, ich musste mich hinsetzen und mich zum n-ten Mal damit auseinandersetzen, um das Prinzip zu verstehen. Das Problem ist, dass der Typ, der die Bibliothek pflegt, seit 6 oder 7 Monaten nicht mehr antwortet
Die Idee ist, dass ich es erstmal eine Weile bei mir laufen lasse, bevor ich einen Pull Request mache. Ich weiß nicht, wie ich meinen Code teilen soll, falls andere ihn testen wollen. Ich habe einen Post gesehen, in dem man über Integrationen Bilder erstellen kann…