snowdd1 / homebridge-knx-de

German Issue/Discussion forum for homebridge-knx
https://github.com/snowdd1/homebridge-knx
20 stars 4 forks source link

FakeGatoHistory als Handler einbinden... #49

Open ctschach opened 6 years ago

ctschach commented 6 years ago

Im Moment versuche ich mich daran, FakeGatoHistory als CustomHandler einzubauen:

https://github.com/simont77/fakegato-history

Meine Idee war eigentlich ganz simpel: Ich erstelle einen CustomHandler, der den entsprechenden Wert in die History schreibt. Im meinem Fall dann einfach "TemperatureHistory".

In der index.js definiere ich FakeGateHistoryService als globale Variable und in der Funktion "registry" definiere ich FakeGateHistoryService entsprechend der Anleitung.

        // Include FakeGate History Service
        FakeGatoHistoryService = require('fakegato-history')(homebridgeAPI);
        globs.FakeGatoHistoryService = FakeGatoHistoryService;

In meinem CustomHandler rufe ich dann im constuct(knxAPI) die funktion auf: this.loggingService = new FakeGatoHistoryService(historyType, this.accessory, {size: this.log_days*24*6, storage:'fs'});

Allerdings fällt er hier auf die Nase, weil FakeGateHistoryService nicht bekannt ist.

Mit ist klar, dass das sicherlich eine generelle JavaScript frage ist, dennoch wäre eine Hilfe hier total lieb :-)

ctschach commented 6 years ago

Okay, bin ein wenig weiter...aber dennoch brauche ich etwas Hilfe:

An welcher Stelle kann ich auf das Homebridge-Accessory zugreifen. In der Datei "service-knx.js" unter "loadServiceData" hole ich mir das Accessory als lokale Variable:

this.platformAccessory = platformAccessory;

Dieses wir ja dann beim Aufruf von "new CharacteristicKNX" mit übergeben. So gesehen steht mir "platformAccessory" innerhalb der Characteristic's zur Verfügung.

Ist das denn das korrekte Accessory?

Ich bin so weit, das mit für den Sensor (z.B. Temperatur) in der Zwischenzeit das Temperatur-Diagram angezeigt wird, allerdings werden dort keine Daten dargestellt. Ich vermute, dass ich hier mit dem falschen Accessory arbeite...

ctschach commented 6 years ago

Giving up with this approch...so I close this issue....

snowdd1 commented 6 years ago

Sorry dass ich noch nicht geantwortet hatte. Klingt eigentlich interessant, habe ich allerdings noch nicht selbst benutzt.

Hast Du Deine Version als Fork gespeichert? Würde mir das gerne mal ansehen (voraussichtlich am Wochenende)

ctschach commented 6 years ago

Schau mal hier:

https://github.com/ctschach/homebridge-knx

Leider habe ich noch das problem, dass der History Graph in Eve zwar angezeigt wird, die Daten laut Debug auch hinzugefügt werden (auch in der persist-storage datei), jedoch in Eve werden keine Measurements angezeigt.

Stehe da leider ein wenig auf dem Schlauch...

Sobald es funktioniert würde ich natürlich die anderen ServiceTypes einbauen.

ctschach commented 6 years ago

So, es funktioniert....WOW...kann es selbst kaum glauben.

Diese doofe Device Seriennummer. Die muss bei eve für jedes Device eindeutig sein, damit die Daten korrekt zugeordnet werden können.

Also entweder im Config definieren oder - wenn nicht angegeben - wird jetzt eine eindeutige Seriennummer erstellt sobald der History Service aktiv ist.

snowdd1 commented 6 years ago

Habe mal reingesehen, aber es noch nicht ausprobiert. Warum nimmst Du nicht die Service SUB UUID als Seriennummer? Die ist automatisch erzeugt und persistent, bis man den Service aus der config löscht.

snowdd1 commented 6 years ago

Bin total gespannt das mal zu Hause auszuprobieren! Super Arbeit!

ctschach commented 6 years ago

Ja, ich bin auch gespannt....die meiste Zeit habe ich damit verbracht, "Deine" Struktur zu verstehen und zu sehen, wo und wie man das am besten einbaut.

Das mit der SUB UUID als Device Serial ist natürlich eine Möglichkeit...kann ich ja nochmal ändern....

ctschach commented 6 years ago

Das hier wäre dann nochmal was für Dich :-)

Für die "Door" History muss man zusätzliche Characteristics von Eve aktivieren. Hier ein beispiel:

// Used in Eve Door this.createService('ContactSensor', hap.Service.ContactSensor.UUID, [ hap.Characteristic.ContactSensorState, eve.Characteristic.TimesOpened, eve.Characteristic.OpenDuration, eve.Characteristic.ClosedDuration, eve.Characteristic.LastActivation ])

https://github.com/ebaauw/homebridge-lib/blob/master/lib/EveHomeKitTypes.js

ctschach commented 6 years ago

Okay, alle offenen Probleme sind in meinem Fork gelöst. Ich habe nun auch eine simple Möglichkeit gebaut, mit der man einfach eigenen Services und Characteristics erstellen kann.

Wer Interesse hat, einfach mal reinschauen: https://github.com/ctschach/homebridge-knx

Hier auch mal die Doku mit ein paar schönen Screenshots (Bilder sagen ja mehr als 1.000 Worte):

https://github.com/ctschach/homebridge-knx/blob/master/knx_config-fakegato-history.json.md