*Archiviert* = So bauen Sie einen IoT-Management-Webserver auf = Hallo Leute, Ich bin Hobbyprogrammierer und brauche ein wenig Rat Um es kurz zu machen: Ich möchte eine kleine Web-App erstellen, um meine Philips Hue-Lampen und andere IoT-Sachen zu Hause zu steuern Ich habe bereits mit der Hue-API in Python herumgespielt und habe ein paar Skripte, die großartig funktionieren. Ich habe auch einige Skripte, die Befehle per SSH auf einem anderen Gerät ausführen Als nächsten Schritt möchte ich also eine Web-App erstellen, um eine gut aussehende Benutzeroberfläche zu haben In meiner Vergangenheit habe ich auch eine kleine Android-App erstellt, zuerst in Kotlin, dann in Flutter und Firebase, und ich war erstaunt, wie einfach ich eine halbwegs gut aussehende Benutzeroberfläche in Flutter zum Laufen bringen konnte. Ich weiß, dass Flutter auch als Web-App verwendet werden kann, aber ich denke nicht, dass dies das richtige Tool dafür ist Ich habe mir React und Angular angeschaut und die Anfänger-Guides durchgearbeitet. Im Vergleich zu Flutter sehen sie nach mehr Arbeit aus, damit sie gut aussehen, aber vielleicht brauche ich einfach eine bessere Vorlage In meiner Vorstellung möchte ich ein Skript auslösen, um den aktuellen Status zu erfassen, das Skript schreibt ihn in eine JSON-Datei und die Benutzeroberfläche zeigt eine schöne Grafik oder ein Diagramm an. Dann einen Knopf drücken und dieser schreibt eine weitere Datei und feuert ein Skript ab, welches die Datei liest und, sagen wir mal, die Lichtfarbe entsprechend ändert Jetzt weiß ich ein wenig nicht, was ich anfangen soll, um ehrlich zu sein Von dem, was ich gesammelt habe, kann ich das Frontend mit Angular bauen und dann vielleicht eine MongoDB als mein "Dateisystem"haben, wo ich die Zustände meiner Lichter oder Konfigurationsskripte speichern und laden kann. Ich denke, dann bräuchte ich eine API, um die DB mit meiner Benutzeroberfläche zu verbinden. Ich hoffe, ich liege zumindest teilweise richtig :D Würden Sie sagen, dass es die richtige Richtung ist, mit JS/TS zu beginnen und eine Benutzeroberfläche in Angular oder React zu erstellen? Oder ist das für meine Absichten völlig falsch? Danke für deinen Rat! Sie sind hier definitiv auf dem richtigen Weg, das bisschen, was Sie vermissen, ist, alles zu einer Spezifikation für einen Server zusammenzufügen Was ich in Ihrem Fall tun würde, ist, einen Server zu bauen, der eine Webseite bedient. Die Webseite sendet HTTP-Anforderungen zurück an eine vom Server bereitgestellte REST-API. Der Server ist der zentrale Verbindungspunkt zwischen Ihrer Frontend-Webseite, Ihren Skripten, Ihrer DB; Versuchen Sie nicht, sich von der Webseite mit der DB zu verbinden oder einen Lichtstatus zu ändern, ohne den Server zu durchlaufen Definieren Sie Ihre API-Endpunkte. Nehmen wir an, Sie möchten Ihre Beleuchtung steuern; vielleicht brauchst du: Holen Sie sich ein Authentifizierungstoken [ HTTP GET/api/token with creds in header], returns token or 401 Get status of devices [ HTTP GET /api/devices with token in header], returns JSON status of all devices Get status of lights [ HTTP GET /api/devices/lights with token in header] returns JSON status of all lights Control a single light [ HTTP POST /api/light/ with token in header, payload specifying RGB], returns empty 200 on valid request, 422 otherwise And so forth. Once you have an API spec you can develop whatever you want to first; the server code for the API (Django is good if you're comfortable with Python), the front-end code, the server code for integrating your scripts or the DB. As long as the API is sufficiently specified then the parts will all talk to each other nicely. Separation of concerns makes it simple to build some bits, mock others up, modify and replace as needed A tip: don't write anything to files if you're just sending JSON data around. The server itself can *probably* just call all the script code directly with no need to pass files, and can definitely serve the JSON via HTTP to the web page for display purposes This sounds like a fun project. Can you tell me a little about your end goal with it? Maybe I’ll do something like it at my house. I guess what I’m wondering is aside from being a fun project, what (if any) controls does it give you over your devices that don’t come sort of “baked in” via remote controls or apps for example that may come with the device. Just would like to hear about your real world advantages of doing this == About Community == Members Online