*Arquivado* = Como construir um servidor web de gerenciamento de IoT = Oi, pessoal, Sou um programador amador e preciso de um conselho Para resumir: quero criar um pequeno aplicativo da web para controlar minhas lâmpadas Philips Hue e outras coisas de IoT em casa Já brinquei com a API Hue em Python e tenho alguns scripts que funcionam muito bem. Também tenho alguns scripts que executam comandos por SSH em um dispositivo diferente Então, como minha próxima etapa, quero criar um aplicativo da web para ter uma interface de usuário de boa aparência No passado, também criei um pequeno aplicativo Android, primeiro em Kotlin, depois em Flutter e Firebase, e fiquei surpreso com a facilidade com que consegui uma interface de usuário semi-boa funcionando no Flutter. Sei que o Flutter também pode ser usado como web app, mas não acho que seja a ferramenta certa para isso Dei uma olhada no React e no Angular e trabalhei nos guias para iniciantes. Em comparação com o Flutter, eles parecem mais trabalhosos para torná-los bonitos, mas talvez eu só precise de um modelo melhor Em minha imaginação, gostaria de acionar um script para coletar o status atual, o script o grava em algum arquivo JSON e a interface do usuário exibe um bom gráfico ou diagrama. Em seguida, pressione um botão e isso grava outro arquivo e aciona um script, que lê o arquivo e, digamos, altera a cor da luz de acordo Agora, estou um pouco perdido com o que começar, para ser honesto Pelo que reuni, posso construir o front-end com Angular e talvez ter um MongoDB como meu "sistema de arquivos", onde posso armazenar e carregar os estados de minhas luzes ou scripts de configuração. Acho que precisaria de uma API para conectar o banco de dados à minha interface do usuário. Espero estar pelo menos parcialmente certo :D Você diria que começar com JS/TS e criar uma interface do usuário em Angular ou React é a direção certa? Ou isso é completamente errado para minhas intenções? Obrigada pelo Conselho! Você está definitivamente no caminho certo aqui, o que está faltando é juntar tudo em uma especificação para um servidor O que eu faria no seu caso é construir um servidor que atenda a uma página da web. A página da web faz solicitações HTTP de volta para uma API REST exposta pelo servidor. O servidor é o ponto de conexão central entre sua página web front-end, seus scripts, seu banco de dados; não tente se conectar da página da web ao banco de dados ou alterar um status de luz sem passar pelo servidor Defina seus endpoints de API. Digamos que você queira controlar suas luzes; talvez você precise: Obtenha um token de autenticação [ 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