*Arkiverad* = Hur man bygger en IoT-hanteringswebbserver = Tjena, Jag är en hobbyprogrammerare och behöver lite råd För att göra det kort: Jag vill skapa en liten webbapp för att styra mina Philips Hue-lampor och andra IoT-grejer hemma Jag har redan lekt med Hue API i Python och har några skript som fungerar utmärkt. Jag har också några skript som kör kommandon per SSH på en annan enhet Så som mitt nästa steg vill jag skapa en webbapp för att få ett snyggt användargränssnitt I mitt förflutna skapade jag också en liten Android-app, först i Kotlin, sedan i Flutter och Firebase och jag blev förvånad över hur lätt jag kunde få ett halvsnyggt användargränssnitt som fungerar i Flutter. Jag vet att Flutter också kan användas som webbapp, men jag tror inte att detta är rätt verktyg för detta Jag tog en titt på React och Angular och gick igenom nybörjarguiderna. Jämfört med Flutter ser de ut som mer jobb för att få dem att se bra ut, men jag kanske bara behöver en bättre mall I min fantasi skulle jag vilja trigga ett skript för att samla in den aktuella statusen, skriptet skriver in det i någon JSON-fil och användargränssnittet visar en snygg graf eller diagram. Tryck sedan på en knapp och detta skriver en annan fil och avfyrar ett skript, som läser filen och låt oss säga ändrar ljusfärgen därefter Nu är jag lite vilse med vad jag ska börja om jag ska vara ärlig Från det jag samlat in kan jag bygga fronten med Angular och sedan ha kanske en MongoDB som mitt "filsystem"där jag kan lagra och ladda tillstånden för mina lampor eller konfigurationsskript. Jag tror att jag skulle behöva ett API för att ansluta DB till mitt användargränssnitt. Jag hoppas att jag har åtminstone delvis rätt :D Skulle du säga att börja med JS/TS och skapa ett användargränssnitt i Angular eller React är rätt riktning? Eller är detta helt fel för mina avsikter? Tack för ditt råd! Du är definitivt på rätt spår här, den bit du saknar är att knyta ihop allt till en spec för en server Vad jag skulle göra i ditt fall är att bygga en server som servar en webbsida. Webbsidan gör HTTP-förfrågningar tillbaka till ett REST API som exponeras av servern. Servern är den centrala anslutningspunkten mellan din front-end webbsida, dina skript, din DB; försök inte ansluta från webbsidan till DB eller ändra en ljusstatus utan att gå via servern Definiera dina API-slutpunkter. Låt oss säga att du vill styra dina lampor; kanske du behöver: Skaffa en autentiseringstoken [ 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