*ਪੁਰਾਲੇਖ* = ਇੱਕ IoT ਪ੍ਰਬੰਧਨ ਵੈੱਬ ਸਰਵਰ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾਵੇ = ਹਾਏ ਦੋਸਤੋ, ਮੈਂ ਇੱਕ ਸ਼ੌਕੀ ਪ੍ਰੋਗਰਾਮਰ ਹਾਂ ਅਤੇ ਮੈਨੂੰ ਥੋੜੀ ਜਿਹੀ ਸਲਾਹ ਦੀ ਲੋੜ ਹੈ ਇਸਨੂੰ ਛੋਟਾ ਕਰਨ ਲਈ: ਮੈਂ ਘਰ ਵਿੱਚ ਆਪਣੇ ਫਿਲਿਪਸ ਹਿਊ ਲੈਂਪ ਅਤੇ ਹੋਰ IoT ਸਮੱਗਰੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਵੈੱਬ ਐਪ ਬਣਾਉਣਾ ਚਾਹੁੰਦਾ ਹਾਂ ਮੈਂ ਪਾਇਥਨ ਵਿੱਚ ਹਿਊ ਏਪੀਆਈ ਦੇ ਨਾਲ ਪਹਿਲਾਂ ਹੀ ਖੇਡਿਆ ਹੈ ਅਤੇ ਕੁਝ ਸਕ੍ਰਿਪਟਾਂ ਹਨ ਜੋ ਵਧੀਆ ਕੰਮ ਕਰਦੀਆਂ ਹਨ. ਮੇਰੇ ਕੋਲ ਕੁਝ ਸਕ੍ਰਿਪਟਾਂ ਵੀ ਹਨ ਜੋ ਇੱਕ ਵੱਖਰੀ ਡਿਵਾਈਸ ਤੇ ਪ੍ਰਤੀ SSH ਕਮਾਂਡਾਂ ਚਲਾਉਂਦੀਆਂ ਹਨ ਇਸ ਲਈ ਮੇਰੇ ਅਗਲੇ ਕਦਮ ਵਜੋਂ ਮੈਂ ਇੱਕ ਵਧੀਆ ਦਿੱਖ ਵਾਲਾ UI ਰੱਖਣ ਲਈ ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਉਣਾ ਚਾਹੁੰਦਾ ਹਾਂ ਮੇਰੇ ਅਤੀਤ ਵਿੱਚ ਮੈਂ ਇੱਕ ਛੋਟਾ ਐਂਡਰੌਇਡ ਐਪ ਵੀ ਬਣਾਇਆ, ਪਹਿਲਾਂ ਕੋਟਲਿਨ ਵਿੱਚ, ਫਿਰ ਫਲਟਰ ਅਤੇ ਫਾਇਰਬੇਸ ਵਿੱਚ ਅਤੇ ਮੈਂ ਹੈਰਾਨ ਸੀ ਕਿ ਮੈਂ ਫਲਟਰ ਵਿੱਚ ਕੰਮ ਕਰਨ ਵਾਲਾ ਇੱਕ ਅਰਧ ਵਧੀਆ ਦਿੱਖ ਵਾਲਾ UI ਕਿੰਨੀ ਆਸਾਨੀ ਨਾਲ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹਾਂ। ਮੈਨੂੰ ਪਤਾ ਹੈ ਕਿ ਫਲਟਰ ਨੂੰ ਵੈੱਬ ਐਪ ਦੇ ਤੌਰ 'ਤੇ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਮੈਨੂੰ ਨਹੀਂ ਲੱਗਦਾ ਕਿ ਇਹ ਇਸਦੇ ਲਈ ਸਹੀ ਟੂਲ ਹੈ ਮੈਂ ਰੀਐਕਟ ਅਤੇ ਐਂਗੁਲਰ 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰੀ ਅਤੇ ਸ਼ੁਰੂਆਤੀ ਗਾਈਡਾਂ ਰਾਹੀਂ ਕੰਮ ਕੀਤਾ। ਫਲਟਰ ਦੇ ਮੁਕਾਬਲੇ ਉਹ ਵਧੀਆ ਦਿੱਖ ਦੇਣ ਲਈ ਵਧੇਰੇ ਕੰਮ ਦੀ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ, ਪਰ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਮੈਨੂੰ ਇੱਕ ਬਿਹਤਰ ਟੈਮਪਲੇਟ ਦੀ ਲੋੜ ਹੋਵੇ ਮੇਰੀ ਕਲਪਨਾ ਵਿੱਚ ਮੈਂ ਮੌਜੂਦਾ ਸਥਿਤੀ ਨੂੰ ਇਕੱਠਾ ਕਰਨ ਲਈ ਇੱਕ ਸਕ੍ਰਿਪਟ ਨੂੰ ਟਰਿੱਗਰ ਕਰਨਾ ਚਾਹਾਂਗਾ, ਸਕ੍ਰਿਪਟ ਇਸਨੂੰ ਕੁਝ JSON ਫਾਈਲ ਵਿੱਚ ਲਿਖਦੀ ਹੈ ਅਤੇ UI ਇੱਕ ਵਧੀਆ ਗ੍ਰਾਫ ਜਾਂ ਚਿੱਤਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ. ਫਿਰ ਇੱਕ ਬਟਨ ਦਬਾਓ ਅਤੇ ਇਹ ਇੱਕ ਹੋਰ ਫਾਈਲ ਲਿਖਦਾ ਹੈ ਅਤੇ ਇੱਕ ਸਕ੍ਰਿਪਟ ਨੂੰ ਫਾਇਰ ਕਰਦਾ ਹੈ, ਜੋ ਫਾਈਲ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ, ਮੰਨ ਲਓ ਕਿ ਉਸ ਅਨੁਸਾਰ ਹਲਕਾ ਰੰਗ ਬਦਲਦਾ ਹੈ। ਹੁਣ, ਮੈਂ ਥੋੜਾ ਜਿਹਾ ਗੁਆਚ ਗਿਆ ਹਾਂ ਕਿ ਕੀ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ, ਈਮਾਨਦਾਰ ਹੋਣਾ ਜੋ ਮੈਂ ਇਕੱਠਾ ਕੀਤਾ ਉਸ ਤੋਂ ਮੈਂ ਐਂਗੁਲਰ ਨਾਲ ਫਰੰਟ-ਐਂਡ ਬਣਾ ਸਕਦਾ ਹਾਂ ਅਤੇ ਫਿਰ ਮੇਰੇ "ਫਾਈਲ ਸਿਸਟਮ"ਵਜੋਂ ਇੱਕ ਮੋਂਗੋਡੀਬੀ ਹੋ ਸਕਦਾ ਹੈ ਜਿੱਥੇ ਮੈਂ ਆਪਣੀਆਂ ਲਾਈਟਾਂ ਜਾਂ ਸੰਰਚਨਾ ਸਕ੍ਰਿਪਟਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਸਟੋਰ ਅਤੇ ਲੋਡ ਕਰ ਸਕਦਾ ਹਾਂ. ਮੈਨੂੰ ਲਗਦਾ ਹੈ ਕਿ ਫਿਰ ਮੈਨੂੰ DB ਨੂੰ ਮੇਰੇ UI ਨਾਲ ਜੋੜਨ ਲਈ ਇੱਕ API ਦੀ ਲੋੜ ਪਵੇਗੀ. ਮੈਨੂੰ ਉਮੀਦ ਹੈ ਕਿ ਮੈਂ ਘੱਟੋ ਘੱਟ ਅੰਸ਼ਕ ਤੌਰ 'ਤੇ ਸਹੀ ਹਾਂ: ਡੀ ਕੀ ਤੁਸੀਂ ਕਹੋਗੇ ਕਿ JS/TS ਨਾਲ ਸ਼ੁਰੂ ਕਰਨਾ ਅਤੇ ਐਂਗੁਲਰ ਜਾਂ ਰੀਐਕਟ ਵਿੱਚ UI ਬਣਾਉਣਾ ਸਹੀ ਦਿਸ਼ਾ ਹੈ? ਜਾਂ ਕੀ ਇਹ ਮੇਰੇ ਇਰਾਦਿਆਂ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਗਲਤ ਹੈ? ਤੁਹਾਡੀ ਸਲਾਹ ਲਈ ਧੰਨਵਾਦ! ਤੁਸੀਂ ਨਿਸ਼ਚਤ ਤੌਰ 'ਤੇ ਇੱਥੇ ਸਹੀ ਰਸਤੇ 'ਤੇ ਹੋ, ਜੋ ਬਿੱਟ ਤੁਸੀਂ ਗੁਆ ਰਹੇ ਹੋ ਉਹ ਸਰਵਰ ਲਈ ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਇਸ ਸਭ ਨੂੰ ਜੋੜ ਰਿਹਾ ਹੈ ਮੈਂ ਤੁਹਾਡੇ ਕੇਸ ਵਿੱਚ ਕੀ ਕਰਾਂਗਾ ਇੱਕ ਸਰਵਰ ਬਣਾਉਣਾ ਹੈ ਜੋ ਇੱਕ ਵੈਬ ਪੇਜ ਦੀ ਸੇਵਾ ਕਰਦਾ ਹੈ. ਵੈਬ ਪੇਜ ਸਰਵਰ ਦੁਆਰਾ ਪ੍ਰਗਟ ਕੀਤੇ ਗਏ ਇੱਕ REST API ਨੂੰ ਵਾਪਸ HTTP ਬੇਨਤੀਆਂ ਕਰਦਾ ਹੈ। ਸਰਵਰ ਤੁਹਾਡੇ ਫਰੰਟ-ਐਂਡ ਵੈਬ ਪੇਜ, ਤੁਹਾਡੀਆਂ ਸਕ੍ਰਿਪਟਾਂ, ਤੁਹਾਡੇ ਡੀਬੀ ਵਿਚਕਾਰ ਕੇਂਦਰੀ ਕਨੈਕਸ਼ਨ ਪੁਆਇੰਟ ਹੈ; ਵੈੱਬ ਪੇਜ ਤੋਂ DB ਨਾਲ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਨਾ ਕਰੋ ਜਾਂ ਸਰਵਰ ਵਿੱਚੋਂ ਲੰਘੇ ਬਿਨਾਂ ਲਾਈਟ ਸਥਿਤੀ ਨੂੰ ਨਾ ਬਦਲੋ ਆਪਣੇ API ਅੰਤਮ ਬਿੰਦੂਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਆਪਣੀਆਂ ਲਾਈਟਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ; ਸ਼ਾਇਦ ਤੁਹਾਨੂੰ ਲੋੜ ਹੈ: ਇੱਕ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ ਪ੍ਰਾਪਤ ਕਰੋ [ 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