mschlenstedt / loxberry-plugin-nuki Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Optional=0 ist für Lock
Für Opener muss der Typ mitgegeben werden.
lockAction benötigt auch den deviceType für den Opener im Template, haben wir aber schon drin.
Wenn ich den Input/Output Popup öffne, wird er zunächst schmal geöffnet und nach laden dann verbreitert. Dabei springt der Bildschirm "unschön" hin und her.
Das Gleiche beim Bridge-Details-Popup, wobei es hier nur minimal ist.
-> On the Fly Inhalt im Popup auf max-width beschränken.
-> Eventuell Schrift im Popup auch etwas kleiner (wirkt auf meinem Laptop sehr groß)
Das checkonline (führt /info ohne Token aus) ist überflüssig, weil checktoken (/info mit Token) das gleiche macht.
Es reicht ein checktoken. Das Ergebnis ist dann entweder
Es behebt den von uns erwarteten Error im Log.
Das geht dann auch schneller.
Irgendein Fehlerhandling muss noch kommen, wenn die Callback-Pflege seinen Callback anlegen will, aber die Liste der drei Callbacks bereits voll ist.
Derzeit gibt die Funktion auf und nichts weiter.
Wenn eine Bridge authentifiziert wird, soll automatisch nach neuen Devices gesucht werden.
Bei Requests und Responses
Am besten maskieren (L*****)
Die Ladezeit des SecurePIN-Checks ist zu hoch, weil schon so viel Code und Libs geladen sind.
-> eigenes .cgi nur mit LB:System und dem SecurePIN-Teil, ohne andere Libs. Response mit hardcodetem json statt JSON-Libs.
Mir kommt generell die Ladezeit der Forms langsam vor.
Es muss noch geprüft werden, ob alle AJAX-Calls mit SecurePIN geschützt sind.
Scheint bei Umlauten ("Haustür") sonst nicht mit allen Browsern zu funktionieren.
https://www.loxforum.com/forum/projektforen/loxberry/plugins/210944-nuki-smartlock-plugin?p=219778#post219778
Dateinamen:
Möglichkeit alte oder falsche Callbacks zu löschen. Editieren soll explizit nicht möglich sein.
Fehlen noch komplett
WARNUNG NUKI SmartLock: HARDCODED PATH'S: Das Plugin nutzt einen hardkodierten Pfad zu /opt/loxberry. Dies könnte zu Problemen führen und sollte vom Plugin-Author behoben werden: [email protected]
Wenn die /Auth-Funktion fehlschlägt, gibt es eine entsprechende Meldung im GUI (z. B. wenn das Anlegen des Callbacks fehlschlägt).
LoxBerry-Plugin-Nuki/templates/settings.html
Line 462 in ff5b776
Wenn man eine Bridge manuell hinzufügt, muss die BridgeID anschließend ausgelesen werden, sonst kann bei einer falschen BridgeID die Callback-Funktion fehlschlagen.
Aktuell wird die eingegebene BridgeID nicht überprüft. Zudem ist die in der app angezeigte BridgeID unterschiedlich zur BridgeID, die per JSON zurückkommt!
Ich habe Dummy-Icons im Code, die noch befüllt/korrigiert werden müssen:
Bei Status-Abfragen direkt vom Keyturner soll ein Retry stattfinden, wenn die Bridge das Gerät nicht erreichen konnte.
https://www.loxforum.com/forum/projektforen/loxberry/plugins/210944-nuki-smartlock-plugin?p=247855#post247855
Unter -80 ist schlechte Verbindung (Rot)
https://developer.nuki.io/t/rssi-value-boundaries-and-green-yellow-red/2532/2?u=christiantf
Der stündliche Cronjob soll nicht nur die Callbacks prüfen, sondern auch einen Statusabruf bei den Bridges durchführen, und senden.
Index.cgi:
Es muss erkannt werden, ob der Aufruf von CLI oder Apache kommt.
Jeder Apache Call muss vorher den SecPin prüfen.
Settings.html:
Jeder Ajax-Call muss implizit den SecPin mitsenden.
Security Issue ist, dass Ajax-Calls teilweise ohne SecPin funktionieren.
Das er beim Callback den Hostnamen nimmt zerschiesst zumindest bei mir die Konfiguration.
Ich hab den Hostnamen im LoxBerry WebIf nicht geändert (ist folglich per Default "loxberry"). In der Fritte habe ich aber dem LoxBerry den Namen "loxberrydevil" zugewiesen.
Der Callback zeigt jetzt auf http://loxberry:80/plugins/nukismartlock/callback.php?lbuid=ouXDU und geht damit ins Leere...
Keine Ahnung, aber ich mach das mit der Fritte immer so... Vielleicht ist das ein genereller Bug im LoxBerry. Er müsste seinen Hostnamen eigentlich per DNS abfragen und dann selbst korrekt setzen. Oder per DHCP (kriegt er den mitgeliefert?) setzen. So ist es auf jeden Fall bei mir zerschossen.
Endpoint: /log
Example-Response | [ {"timestamp": "2018-10-06T16:46:05+00:00", "deviceType": “...” }, {"timestamp": "2018-10-06T16:46:05+00:00", "deviceType": “...” }, …]
https://developer.nuki.io/page/nuki-bridge-http-api-1-12/4#heading--log
Mit irgendeinem jQm-Tag kann man den Popups einen Close-Button verpassen.
Damit erschließt es sich leichter, wie man das Popup wieder schließt.
Zur Überwachung von Callbacks
...muss noch integriert werden. Code vom MiRobot-Plugin: https://github.com/mschlenstedt/LoxBerry-Plugin-MiRobot2Lox-NG
PHP Skript anpassen für mehrere Bridges/Devices und zum Lesen der Config aus den Configfiles.
Ich habe hier
LoxBerry-Plugin-Nuki/templates/settings.html
Line 139 in f757eb2
LoxBerry-Plugin-Nuki/templates/settings.html
Line 486 in f757eb2
Geöffnet werden kann das Popup derzeit durch Klick auf die Bridge-ID, es steht aber noch nichts drin.
Hier können Details wie Firmware-Version usw. angezeigt werden, wichtig wäre mir jedoch die Liste der Callbacks und eine Lösch-Funktion (Button) der Callbacks.
Funktionen zum Listen und Löschen gibt es schon im index.cgi (aber noch ohne ajax=... Aufruf-Funktion), und der Response der Funktionen ist noch undefiniert.
Use-Case bei der Callback-Liste ist, dass man alte, falsche oder fremde Callbacks löschen kann. Ein Hinzufügen oder Editieren der Callbacks ist explizit nicht gewünscht.
Aktuell noch Festwerte: https://github.com/mschlenstedt/LoxBerry-Plugin-Nuki/blob/master/webfrontend/html/callback.php
Ist im Prinzip das gleiche.
Wenn eine Bridge aus dem WebIf gelöscht wird, soll auch der Callback gelöscht werden.
Zudem sollen auch alle zugehörigen Devices zur Bridge aus der Config entfernt werden (sollte gehen, indem "searchdevices" einfach erneut aufgerifen wird).
...fehlen noch
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.