*محفوظ شدہ* = IoT مینجمنٹ ویب سرور کیسے بنایا جائے = ہیلو لوگو، میں ایک شوق پروگرامر ہوں اور مجھے تھوڑا سا مشورہ درکار ہے۔ اسے مختصر کرنے کے لیے: میں گھر پر اپنے فلپس ہیو لیمپ اور دیگر IoT چیزوں کو کنٹرول کرنے کے لیے ایک چھوٹی سی ویب ایپ بنانا چاہتا ہوں۔ میں پہلے ہی ازگر میں ہیو API کے ساتھ کھیل چکا ہوں اور اس کے پاس کچھ اسکرپٹ ہیں جو بہت اچھے کام کرتی ہیں۔ میرے پاس کچھ اسکرپٹس بھی ہیں جو ایک مختلف ڈیوائس پر فی SSH کمانڈ چلاتی ہیں۔ لہذا اپنے اگلے قدم کے طور پر میں ایک ویب ایپ بنانا چاہتا ہوں تاکہ ایک اچھا نظر آنے والا UI ہو۔ اپنے ماضی میں میں نے ایک چھوٹی سی اینڈرائیڈ ایپ بھی بنائی تھی، پہلے کوٹلن میں، پھر فلٹر اور فائربیس میں اور میں حیران رہ گیا تھا کہ میں فلٹر میں کام کرنے والا نیم اچھی نظر آنے والی UI کتنی آسانی سے حاصل کر سکتا ہوں۔ میں جانتا ہوں کہ فلٹر کو ویب ایپ کے طور پر بھی استعمال کیا جا سکتا ہے، لیکن مجھے نہیں لگتا کہ یہ اس کے لیے صحیح ٹول ہے۔ میں نے React اور Angular پر ایک نظر ڈالی اور ابتدائی گائیڈز کے ذریعے کام کیا۔ پھڑپھڑانے کے مقابلے میں وہ اچھے لگنے کے لیے زیادہ کام کی طرح نظر آتے ہیں، لیکن شاید مجھے صرف ایک بہتر ٹیمپلیٹ کی ضرورت ہے میرے تصور میں میں موجودہ صورتحال کو جمع کرنے کے لیے ایک اسکرپٹ کو متحرک کرنا چاہوں گا، اسکرپٹ اسے کچھ JSON فائل میں لکھتا ہے اور UI ایک اچھا گراف یا خاکہ دکھاتا ہے۔ پھر ایک بٹن دبائیں اور یہ ایک اور فائل لکھتا ہے اور اسکرپٹ کو فائر کرتا ہے، جو فائل کو پڑھتا ہے اور اس کے مطابق ہلکے رنگ کو تبدیل کرتا ہے۔ اب، میں تھوڑا سا کھو گیا ہوں کہ کیا شروع کروں، ایمانداری سے میں نے جو جمع کیا ہے اس سے میں انگولر کے ساتھ فرنٹ اینڈ بنا سکتا ہوں اور پھر اپنے "فائل سسٹم"کے طور پر ایک MongoDB رکھ سکتا ہوں جہاں میں اپنی لائٹس یا کنفگ اسکرپٹس کی سٹیٹس کو اسٹور اور لوڈ کر سکتا ہوں۔ مجھے لگتا ہے کہ پھر مجھے DB کو اپنے UI سے مربوط کرنے کے لئے ایک API کی ضرورت ہوگی۔ مجھے امید ہے کہ میں کم از کم جزوی طور پر ٹھیک ہوں: ڈی کیا آپ کہیں گے کہ JS/TS سے شروع کرنا اور Angular یا React میں UI بنانا صحیح سمت ہے؟ یا یہ میری نیت کے لیے بالکل غلط ہے؟ آپ کے مشورے کے لیے شکریہ! آپ یقینی طور پر یہاں صحیح راستے پر ہیں، آپ کو جس چیز کی کمی محسوس ہو رہی ہے وہ اس سب کو سرور کے لیے ایک قیاس میں جوڑ رہا ہے۔ میں آپ کے معاملے میں جو کروں گا وہ ایک سرور بنانا ہے جو ویب صفحہ کی خدمت کرتا ہے۔ ویب صفحہ HTTP درخواستیں سرور کے ذریعہ سامنے آنے والے REST API پر واپس کرتا ہے۔ سرور آپ کے فرنٹ اینڈ ویب پیج، آپ کے اسکرپٹس، آپ کے DB کے درمیان مرکزی کنکشن پوائنٹ ہے۔ ویب پیج سے 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