Experte für Zwave, ich habe einfach nur viele Module
Ich stimme dir bei den von dir genannten Punkten zu. Funktional gesehen muss man auch die „command class central“ abrufen und in den Szenen nutzen können.
Für den Teil „Verbesserung des Network-Tabs“ denkst du an eine lesbarere Matrix und die Anzahl der Nachrichten, die von der Schlüssel noch zu verarbeiten sind?
Eine direkte Verknüpfung beschränkt sich darauf, zwei Z-Wave-Geräte zusammenarbeiten zu lassen, zum Beispiel: Das Fibaro Auge erkennt eine Bewegung und weist meine Steckdose an, sich einzuschalten.
Die Central Scene Command Class ist viel leistungsfähiger, da sie den Z-Wave-Stick über ein Ereignis mit einem sceneId/Wert-Paar benachrichtigt!
Du kannst diese Informationen also abrufen und Gladys-Szenen auslösen, um beliebige Gerätetypen zu steuern.
Zum Beispiel,
ich drücke die Taste Nr. 1 meiner Wallmote (das ist eine 4-Zonen-Touch-Fernbedienung für Z-Wave)
der Stick wird benachrichtigt: nodeId = 4; sceneId = 1; Wert 1.
Gladys erkennt diese Informationen als Auslöser für eine Szene: „Ich gehe ins Bett“
die Szene führt die folgenden Aktionen aus: Alle meine Lichter ausschalten dank meiner Fibaro-Dimmer und alle Rollläden schließen, die von meinen Arduinos gesteuert werden, und meine Alarmanlage einschalten.
Siehst du die Logik und den Nutzen dieser Funktion?
Hallo, ich interessiere mich etwas mehr für das Gateway für zukünftige Entwicklungen, die ich plane, und ich habe wohl etwas verpasst, also komme ich und bitte um etwas Hilfe.
Was die API angeht, die über das Gateway verfügbar ist, handelt es sich dabei um eine Replik der lokalen Gladys-API, die überall verfügbar ist (mit einigen zusätzlichen Routen, die mit dem Gateway zusammenhängen)? Ich erkläre es: Wenn man einen Dienst entwickelt, der einen Controller enthält, ist es dann möglich, auf die Route sowohl von innen als auch von außen des Netzwerks (über das Gateway) zuzugreifen? Stellen wir uns einen Dienst vor, der Informationen von Tasker oder einer anderen Anwendung eines Benutzergeräts empfangen kann. Es gibt diejenigen, die nur mit Gladys kommunizieren müssen, wenn sie zu Hause sind, und diejenigen, die mit Gladys kommunizieren müssen, egal wo sie sind (mit dem Gateway). Muss man den Grunddienst Gladys und einen « Dienst » auf der Gateway-Seite entwickeln? Oder reicht der Grunddienst?
Für mich war die Antwort ja, ich hatte im Kopf, dass es sich um ein einfaches Gateway handelt, das den Zugriff auf alles von Gladys von außen ermöglicht, als ob wir im Netzwerk des Raspberry wären. Ich stelle diese Frage, weil der Owntrack-Code auf der Gateway-Seite liegt. Vielen Dank für Ihre Hilfe.
Die Websocket-API, die Ende-zu-Ende verschlüsselt ist, ist ein Durchgang zwischen deinem Web-Client (plus.gladysassistant.com) und deiner lokalen Instanz.
Jede in Gladys verfügbare Route ist auch in der Websocket-API verfügbar, da das Gateway nur Anfragen von einem zum anderen weiterleitet und das Gateway keine Kenntnis von den aufgerufenen Routen oder dem Verkehr hat. Die Nachrichten sind vollständig verschlüsselt von deinem Browser zu deinem Client.
Die Open API REST für Owntracks
Damit wir Owntracks sehr einfach verwenden können, habe ich eine Owntracks-Route entwickelt, die den gesendeten JSON-Body an die Gladys-Instanz des Benutzers weiterleitet.
Da wir den Code der Owntracks-Clientanwendungen nicht kontrollieren, ist diese Route nicht Ende-zu-Ende verschlüsselt. Sie ist natürlich während des Transports über HTTPS verschlüsselt, aber nur zwischen dem Mobilgerät und dem Gateway und dann zwischen dem Gateway und der Gladys-Instanz. Das ist schade, aber wir kontrollieren den Owntracks-Code nicht.
Ich hatte ähnliche Anfragen wie du, um die Möglichkeit zu haben, mehr oder sogar alle Gladys-Routen als Open API auf dem Gateway verfügbar zu machen: Das ist eine echte Überlegung und eine echte Debatte.
Routen zu entwickeln, die genauso einfach aufrufbar sind wie eine klassische API, ohne Ende-zu-Ende-Verschlüsselung, finde ich schade… Das würde bedeuten, dass ich als Maintainer des Gladys Gateway vollen Zugriff auf die Instanzen meiner Benutzer hätte… Ist das das, was wir wollen? Ich glaube nicht!
Meine persönliche Meinung
Man müsste einen Weg finden, die Ende-zu-Ende-Verschlüsselung über Tasker zu realisieren! Ich habe gesehen, dass Tasker JS-Code ausführen kann, sodass man sehr gut denselben Verschlüsselungscode wie im Gladys Plus JS-Client aufrufen könnte, das ist nicht sehr kompliziert!
Entschuldigung für den langen Text, aber es war eine Erklärung für diese hybride Funktionsweise nötig, und ich wollte in meiner Antwort präzise sein
Danke für diese Details, genau das habe ich verstehen wollen.
Genau das wollte ich gerade sagen, alles, was zu dieser Open API kommt, ist nicht verschlüsselt.
Sobald es möglich ist, sollte man verschlüsseln, aber das wird nicht in allen Fällen möglich sein. Du hast sicher recht mit Tasker, das muss man prüfen, aber ich habe es nur als Beispiel genannt. Es wird andere Anwendungen/Dienste geben, bei denen das nicht möglich ist. Totof hat hier PhoneTrack erwähnt: Utiliser Owntracks avec Gladys 4! - #24 par Totof, die Daten werden in einer HTTP-Anfrage übertragen, wir können sie nicht von der Anwendung aus verschlüsseln. In deiner Präsentation des Gateways hast du von der Verbindung mit externen Diensten gesprochen (Google Assistant, Alexa, IFTTT…), ich weiß nicht genau, wie sie funktionieren, aber wenn sie einen Webhook zu Gladys benötigen, wird es das Gateway sein und wieder einmal können wir leider nichts daran ändern. Ich verstehe das Ziel der Ende-zu-Ende-Verschlüsselung voll und ganz, ich bin persönlich absolut dafür, und Gladys hat unter anderem die Sicherheit und den Schutz der Privatsphäre als wesentliche Punkte. Leider wird es in einigen Fällen vielleicht Vertrauen erfordern (wie bei OwnTrack), mit dem Hinweis, den Benutzer in der Dokumentation gut zu warnen. Wir tun unser Bestes für die Verschlüsselung und sind transparent für den Rest.
Was die Liste der Open API-Routen betrifft, weiß ich nicht, ob es sich lohnt, alle Gladys-Routen einzubeziehen. Ich habe noch nicht viele Szenarien im Kopf, aber die Einschränkung der Open API auf einige Routen, die sie wirklich benötigen, würde uns zwingen, diese Datenexposition am Gateway wirklich zu begrenzen, und uns zwingen, immer nach der sichersten Lösung zu suchen.
Wie du sagst, bleibt die Überlegung völlig offen, ich werde sie in den kommenden Tagen weiter untersuchen.
In der Tat gibt es Fälle, in denen eine Ende-zu-Ende-Verschlüsselung nicht möglich ist und keinen Sinn ergibt (Google Assistant, Alexa, IFTTT usw.) und in diesem Fall bin ich 100% einverstanden, dass es sich lohnt, eine Open-API-Route des Gateways zu öffnen, um eine einfache Verbindung von außen zu ermöglichen
Hattest du einen konkreten Bedarf, um das zu fragen? Ich denke, man muss von Fall zu Fall überlegen!
Wie ich im ersten Beitrag bereits erwähnte, war dies zunächst nur zur Information. Ich wollte das Funktionieren der Gateway verstehen, um die zukünftigen Dienste, die ich entwickeln werde, gut zu gestalten.
Langfristig möchte ich einen PhoneTrack-Dienst erstellen, da ich die Anwendung bereits seit einigen Monaten mit einer Nextcloud-Instanz nutze und sie mir gefällt. Um anzufangen, wird man wahrscheinlich darüber nachdenken müssen, wie die API-Schlüssel auf Gladys-Seite verwaltet werden. Mir scheint, dass sie auf der Gateway existieren, aber nicht auf der Gladys-Instanz. Persönlich würde ich sie über die Gateway nutzen, aber ich möchte, dass der Dienst direkt auf Gladys verfügbar ist, und zwar aus mehreren Gründen (diejenigen, die ihre Gladys-Instanz öffentlich hosten, diejenigen, die nur ihre Positionen des Tages abends beim Nachhausekommen speichern möchten…).
Tatsächlich, ich habe die API-Schlüssel bereits in der Version 3 des Gateways implementiert. Allerdings wurde die Open API mit Langzeit-Tokens noch nicht in Gladys 4 implementiert. Es ist ein Entwicklungspunkt, der auf Github aufgelistet ist, aber noch niemand hat sich daran gemacht!
Genau, ich denke, ich werde etwas Generisches machen, das mit beiden funktioniert
@bertrandda Top! Bevor du mit der Entwicklung beginnst, könntest du die technischen Spezifikationen im GitHub-Issue schreiben, damit wir uns über die Implementierung einig sind?
Tatsächlich ist das ein guter Hinweis, es sollte eine Funktion geben, die es ermöglicht, eine Nachricht wie « max. 1 Mal pro Stunde » oder « max. 1 Mal pro Tag » zu senden. Dadurch könnte man ein Alarmsystem erstellen, das nicht zu sehr spammt.
Darüber sollte man nachdenken, danke für das Feedback auf jeden Fall!
Ich hatte genau denselben Bedarf, ich wollte eine Warnung erhalten, sobald die Temperatur eines Raumes einen Schwellenwert überschreitet, aber ich erhalte Nachrichten, sobald sich die Temperatur ändert und über dem Schwellenwert liegt, nicht ideal
Übrigens, ich habe mich gefragt, ob es möglich wäre, eine Variable aus einer Aktion abzurufen, um sie in der nächsten Aktion per Nachricht zu übertragen?
Schließlich habe ich etwas im Dashboard bemerkt, wenn man die Bearbeitung aktiviert und auf eine andere Seite wechselt, ist die Bearbeitung beim Zurückkehren zum Dashboard immer noch aktiv. Ich weiß nicht, ob das gewolltes Verhalten ist, ich fand es seltsam!
Als ich mir das Github von Gladys angesehen habe, habe ich gesehen, dass es viele offene Issues und Features gibt… also habe ich Lust, mich daran zu versuchen.
Ich poste hier, weil dieses Thema gut verfolgt wird, aber ich kann es verschieben, falls nötig.
Ich bin ein Anfänger in JavaScript. Ich mache HTML/PHP/SQL, aber ich bin kein Berufsentwickler… (ich schreibe eigentlich aeronautische Dokumentation, haha)
Hier ist, was ich brauche:
Wenn ihr gute, gut strukturierte JavaScript-Kurse habt, bin ich interessiert!
Ich habe schon welche, aber es schadet nicht
Ressourcen zu PreactJS, das ich nicht kenne
Die Grundlagen von GitHub: Wie macht man einen PR? Was ist codecov und die Tests, die ich überall sehe?
Sobald ich das alles durchgearbeitet habe, wäre es absolut großartig, wenn eine gute Seele motiviert genug wäre, mich über Skype oder ähnliches zu führen, um eine saubere Entwicklungsumgebung einzurichten.
(Ich glaube, es gab hier einen Link zu einem Tutorial, aber ich finde ihn nicht mehr…)
Vielen Dank an alle, die dem motivierten Newbie, der ich bin, ein wenig ihrer Zeit schenken möchten!
Man muss schließlich irgendwo anfangen…^^
Hallo @Biscotte! Es ist toll, dass du helfen möchtest
Ich habe keinen speziellen Kurs für dich, aber aus Erfahrung ist die beste Art zu lernen, einfach zu üben Für Preact kannst du ein Tutorial zu React machen (es ist fast das Gleiche). Ich empfehle dir, danach ein kleines Projekt zu starten, um das alles zu testen (vielleicht etwas Einfacheres als Gladys)
Github hat viele Tutorials auf ihrer Website für diesen Teil.
Codecov dient dazu, die Codeabdeckung unserer automatisierten Tests zu messen. Das Ziel ist es, sicherzustellen, dass der gesamte von uns geschriebene Code ordnungsgemäß getestet wird. Dadurch werden Regressionen vermieden und die Software wird langfristig stabiler