*gearchiveerd* = Hoe een IoT-beheerwebserver te bouwen = Hallo jongens, Ik ben een hobbyprogrammeur en heb wat advies nodig Om het kort te houden: ik wil een kleine web-app maken om mijn Philips Hue-lampen en andere IoT-dingen thuis te bedienen Ik heb al gespeeld met de Hue API in Python en heb een paar scripts die geweldig werken. Ik heb ook enkele scripts die opdrachten per SSH uitvoeren op een ander apparaat Dus als mijn volgende stap wil ik een web-app maken om een ​​mooie gebruikersinterface te hebben In mijn verleden heb ik ook een kleine Android-app gemaakt, eerst in Kotlin, daarna in Flutter en Firebase en ik was verbaasd hoe gemakkelijk ik een semi-mooie gebruikersinterface kon laten werken in Flutter. Ik weet dat Flutter ook als webapp kan worden gebruikt, maar ik denk niet dat dit de juiste tool hiervoor is Ik heb React en Angular bekeken en de beginnershandleidingen doorgenomen. Vergeleken met Flutter zien ze eruit als meer werk om ze er goed uit te laten zien, maar misschien heb ik gewoon een betere sjabloon nodig In mijn verbeelding zou ik één script willen activeren om de huidige status te verzamelen, het script schrijft het in een JSON-bestand en de gebruikersinterface geeft een mooie grafiek of diagram weer. Druk vervolgens op een knop en dit schrijft een ander bestand en activeert een script, dat het bestand leest en, laten we zeggen, de lichtkleur dienovereenkomstig verandert Nu ben ik een beetje verdwaald met wat ik moet beginnen, om eerlijk te zijn Van wat ik heb verzameld, kan ik de front-end bouwen met Angular en dan misschien een MongoDB als mijn "bestandssysteem"hebben waar ik de toestanden van mijn lichten of configuratiescripts kan opslaan en laden. Ik denk dat ik dan een API nodig zou hebben om de DB met mijn gebruikersinterface te verbinden. Ik hoop dat ik in ieder geval gedeeltelijk gelijk heb :D Zou je zeggen dat beginnen met JS/TS en het creëren van een gebruikersinterface in Angular of React de juiste richting is? Of is dit helemaal verkeerd voor mijn bedoelingen? Bedankt voor je advies! Je bent hier zeker op de goede weg, het enige wat je mist is alles samen te voegen tot een specificatie voor een server Wat ik in jouw geval zou doen, is een server bouwen die een webpagina bedient. De webpagina stuurt HTTP-verzoeken terug naar een REST API die door de server wordt weergegeven. De server is het centrale verbindingspunt tussen uw front-end webpagina, uw scripts, uw DB; probeer geen verbinding te maken vanaf de webpagina met de database of verander een lichte status zonder via de server te gaan Definieer uw API-eindpunten. Stel dat u uw lichten wilt bedienen; misschien heb je nodig: Verkrijg een authentificatietoken [ 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