في أنظمة الميزانية في المنزل الذكي ، عادةً ما يتم استخدام المفاتيح القياسية - ويطلق على نوع المخرجات أيضًا
"الاتصال الجاف" . ومع ذلك ، هذا ليس الخيار الوحيد: بحثًا عن مفتاح جميل ، جئت عبر الأجهزة مع بروتوكول Modbus RTU في الداخل. بالإضافة إلى المظهر الجميل ، فهي تسمح لك بتكوين وضع التشغيل لكل زر ، والتحكم في الإضاءة الخلفية بالتفصيل ، وتوصيلها
بوحدة التحكم المركزية (استخدمت
Wiren Board 5 ) ، وأربعة أسلاك كافية - الطاقة والأرض وخطين ل RS-485.
كيفية توصيل مثل هذا المفتاح وتكوين التحكم في الضوء والتهوية منه ، انظر أدناه. ستوضح المقالة أيضًا بالتفصيل كيفية العمل مع أجهزة Modbus بشكل عام.
شرح من Wiren Board المسوق: ولد هذا المقال من موضوع تم إنشاؤه بواسطة Kallyanbl4 في منتدانا . بعد طلبنا ، كتب مقالة كاملة وسمح بنشرها على مدونتنا ، والتي نشكره عليها. جميع النصوص كتبها المؤلف ، باستثناء الملاحظات في النهاية.وصف المفاتيح
بعد دراسة ما هو الآن في السوق ، اشتريت
هذه المفاتيح المثيرة للاهتمام من الصينيين:

مزاياها:
- التصميم الجيد.
- مفاتيح اللمس ، عند الضغط عليها ، يومض ، مضاءة في الظلام بلون أبيض لطيف ؛
- السعر المنخفض نسبيا - 2000 روبل لكل منهما. يشمل السعر النقش بالليزر الفردي.
- مفتاح قابل للبرمجة - يمكنك ضبط الزر لأي إجراء تقريبًا: قم بتشغيل الضوء ، والتحكم في المصابيح ، ورفع / خفض الستارة ، ...
مواصفات التبديل:
- جهد الإمداد - 12 فولت ؛
- معدل نقل البيانات - 19200 بت / ثانية ؛
- عدد البتات المرسلة - 8 ؛
- عدد بتات التوقف - 1 ؛
- مراقبة التكافؤ - لا تحقق.
عند العمل على Modbus RTU ، تحتوي الأجهزة المتصلة على ما يسمى بالسجلات - الخلايا التي يتم تخزين المعلومات فيها. في لقطة الشاشة ، وصف السجلات الخاصة بمفتاح التبديل رباعي المفاتيح:

عند النقر فوق أحد أزرار اللمس ، ستتغير القيم الموجودة في السجلات من 0-3 من 0 إلى 1.
قاطع الدائرة
في وحدة تحكم Wiren Board 5 ، اعتمادًا على التكوين ، هناك من اثنين إلى أربعة منافذ RS-485. يجب توصيل المحولات (في حالتي 27 منها) بهذه المنافذ.
في هذه الحالة ، يمكن أن تعمل كافة المفاتيح على ناقل مشترك واحد. يمكن توصيل المفاتيح في سلسلة ، مما يؤدي إلى توصيل الكابل من مفتاح إلى آخر ، لكنني قررت توصيل جميع الكابلات في درع واحد.
كابل توصيل - Cat 5e UTP ثماني النواة. يمكنك استخدام أربعة نواة ، لكني عادة أقوم بكل شيء على أساس "فقط في حالة". يمكنك التفكير في الكابلات الأربعة الأخرى ، ولكن النقطة المهمة هي أنه يجب حماية الكبل ، لأنه حتى على الرغم من التردد المنخفض للإشارة ، لا يتم استبعاد الخسائر والتداخل.
نتيجة لذلك ، يتم توصيل جميع المفاتيح ببعضها البعض كما هو موضح في الصورة:

كما يتبين من الشكل ، فإن جميع المفاتيح متصلة ببعضها البعض باستخدام مفتاح UTP السلبي. بالنسبة للنوى 1 و 2 (البرتقالي والأبيض-البرتقالي) يتم إرسال البيانات (الخطان A و B) ، يتم توصيل طاقة 12 فولت بالنوى 7 و 8 (البني والأبيض-البني). أستخدم Mean Well NDR-75-12 كمصدر للطاقة .
لم أكن أعرف كيف تصرف مفتاح UTP الصيني السلبي ، لذلك ، عند تصميم الدرع ، قدمت مكانًا لمحول RS-423 نشط. ألاحظ أن الدائرة تعمل من خلال مفاتيح سلبية وغير نشطة. وحتى عندما تكون متصلة ببعضها البعض.

التحكم بالضوء عن طريق التتابع
وفقًا
لمشروعي ، تم التخطيط لـ 27 جهازًا مستقلًا (أضواء ، مراوح) في الشقة ، مدعومة بـ 220 فولت. تم اختيار ثلاث وحدات ترحيل
WBIO-DO-R10A-8 وواحدة
WBIO-DO-R10R-4 للتحكم فيها. يرجع الاختيار إلى حقيقة أن جميع الإضاءة تقريبًا في الشقة هي LED ، والتي تختلف عن المصابيح المتوهجة بتيار بدء عالي. يمكن للمرحلات المختارة توفير التبديل الحالي حتى 10 أمبير لكل قناة ، وهو أمر غير ضروري في حالتي - ولكن ، كما ذكرنا سابقًا ، "فقط في حالة وجود هامش".

يحدث تبديل التتابع من خلال
واجهة الويب لجهاز التحكم . الإجراء بديهي ، لا يلزم تعليمات أو تلميحات.
جزء البرنامج
ملف المنفذنتعلم من
وصف الأجهزة لـ Wiren Board 5 أنه يحتوي على
منفذي جهاز
/ dev / ttyAPP1 و
/ dev / ttyAPP4 مقابل
منفذي RS-485. في حالتي ، يتم توصيل المفتاح بالمنفذ
/ dev / ttyAPP1 .
عنوان الجهاز (التبديل)عند تبادل البيانات باستخدام بروتوكول Modbus RTU ، يتم تحديد كل جهاز برقمه الفريد - عنوان Modbus. كقاعدة ، تشير الشركة المصنعة إلى هذا العنوان في شكل ثلاثة أرقام على الجهاز نفسه ، ولكن إذا لم يكن هناك مثل هذا الرقم على الجهاز ، فيمكنك
التكرار عبر العناوين من سطر الأوامر (يتم استخدامه لتخزين العنوان في سجل Modbus 0x80):
root@wirenboard:~
يجب أن تكون النتيجة في الشكل:
Data: 0x008e
تم استلام الإجابة بتنسيق سداسي عشري وهي تقابل 142 بصيغة عشرية.
وتجدر الإشارة إلى أنه في كل مرة يتم فيها
استدعاء الأداة المساعدة
modbus_client ، يجب إيقاف معيار برنامج الاستقصاء
wb-mqtt التسلسلي لوحدة التحكم ؛ وإلا ، لن تعمل الأداة المساعدة
modbus_client .
تبادل البيانات بين Switch و Wiren Boardأعلاه ، يتم كتابة حلقة تستقصي جميع عناوين Modbus المحتملة وتعيد قيمة العنوان إذا تم العثور على جهاز. تستخدم الحلقة الأداة المساعدة
modbus_client ، وهي ضرورية لتصحيح أخطاء الأجهزة المتصلة. عند هذه النقطة ، باستخدامه ، سوف نتأكد من أن كل شيء متصل بشكل صحيح ، وأن المفتاح يتفاعل مع وحدة التحكم بشكل صحيح. للقيام بذلك ، حاول قراءة البيانات في مفتاح تسجيل 0x01:
root@wirenboard:~
(وصف الأداة المساعدة ومفاتيحها موجود في وثائق وحدة التحكم).
ستكون النتيجة كما يلي:
Opening /dev/ttyAPP1 at 19200 bauds (N, 8, 1) [8E][03][00][64][00][01][DA][EA] Waiting for a confirmation... <8E><03><02><00><01><2C><5B> SUCCESS: read 1 of elements: Data: 0x0001
مثل هذه النتيجة تعني كتابة قيمة منفصلة 1 في السجل. بعد الضغط على أحد أزرار المحول ، ستتغير قيمة السجل إلى القيمة المعاكسة:
SUCCESS: read 1 of elements: Data: 0x0000
إذا لوحظت النتيجة ، كما هو الحال في هذه الفقرة ، فإن كل شيء متصل بشكل صحيح ، والمفتاح ووحدة التحكم يفهمان بعضهما البعض.
برنامج التشغيل الأصلي للمفتاحبعد التأكد من أن جهاز التحكم والمفتاح يفهمان بعضهما البعض ، فقد حان الوقت لتقديم وصف لمفاتيح التبديل على مستوى البرنامج. يقترح المطورون إضافة وصف للجهاز المتصل إلى ملف /etc/wb-mqtt-serial.conf أو إنشاء قالب مخصص في شكل /usr/share/wb-mqtt-serial/templates/config-*.json.
ذهبت في الطريق الثاني ، يبدو النموذج الخاص بي كما يلي:
{ "device_type": "4-band-switch", "device": { "name": "4-band-switch", "id": "4bsw", "enabled": true, "channels": [{ "name": "All", "reg_type": "holding", "address": "0x00", "type": "switch" }, { "name": "Window", "reg_type": "holding", "address": "0x01", "type": "switch" }, { "name": "Side", "reg_type": "holding", "address": "0x02", "type": "switch" }, { "name": "Diode", "reg_type": "holding", "address": "0x03", "type": "switch" } ] } }
يوجد وصف مفصل للقالب المكتوب أعلاه في
وصف برنامج تشغيل wb-mqtt-serial . تعامل بإيجاز مع الحقول:
- "الاسم": "الكل" هو اسم الزر. إذا تم هجاء النموذج بشكل صحيح ، فسيظهر هذا الزر في علامة التبويب "الإعدادات" مع العنوان / devices / 4bsw_142 / control / All
- "Reg_type": "عقد" - نوع وحجم التسجيل. يستخدم المحول "الاحتفاظ" - وهو سجل 16 بت متوفر للقراءة والكتابة.
- "العنوان": "0x00" - عنوان تسجيل المفتاح الذي ستقرأ منه وحدة التحكم البيانات.
- "النوع": "التبديل" - كيف سيتم عرض المفتاح في واجهة الويب. في حالة "التبديل" - في شكل مفتاح منفصل.
احفظ القالب على وحدة التحكم. بعد ذلك ، في قسم واجهة الويب (Configs -> /etc/wb-mqtt-serial.conf) ، يمكنك إضافة جهاز جديد مع هذا القالب (4-band-switch). أضف مفتاحنا الأول وانقر على حفظ.
القاعدة التي تنشط التتابع عند الضغط على زر التبديل
داخل وحدة تحكم الحالة ، يتم وصف جميع الأجهزة المتصلة بواسطة
رسائل MQTT . يتم التحكم في الأجهزة أيضًا عن طريق إرسال رسائل MQTT. عملاء قائمة انتظار رسائل MQTT (وسيط) هم واجهة الويب
ومحرك القواعد .
للتوضيح ، سنرى كيف تتعامل واجهة الويب مع الرسالة الواردة. نفتح علامة التبويب "الإعدادات" في واجهة الويب ونرى ما يحدث عند الضغط على الزر "الكل" في المحول: داخل المفتاح ، تتغير قيمة سجل Modbus ، يستقصي برنامج تشغيل
wb-mqtt-serial المحول ، ووفقًا لقالب الجهاز ، يرسل المحول رباعي النطاق رسالة MQTT في الموضوع
/ الأجهزة / 4 bsw_142 / الضوابط / الكل - وعلى صفحة الإعدادات ،
ستتغير القيمة في الموضوع
/ الأجهزة / 4bsw_142 / الضوابط / الكل على الفور من 0 إلى 1.
خذ بعين الاعتبار العميل الثاني - محرك القواعد. يعمل المحرك ، مثل واجهة الويب ، مع قائمة انتظار الرسائل ، ويمكنه الاستجابة للتغيرات في القيمة - عند
استخدام وظيفة
التغيير لهذا الغرض. في حالتي ، بدت القاعدة كما يلي:
يسعدني أن أجيب على جميع الأسئلة في التعليقات.
ملاحظات المسوق
- من الأفضل وضع خط RS-485 بكابل KSPEVG 2x2x0.35 (يكلف 30 روبل فقط لكل متر) ، وليس بنجمة ، ولكن مع حافلة.
- ننصحك بأن تكون حذرًا مع مصابيح LED - يمكن أن يتجاوز تيار بدء التشغيل الأوقات 150 (!) المصنفة (ستكون هذه مقالة منفصلة) - انظر إلى وحدات الترحيل القوية WB-MR6 : التيار 16 أمبير لكل قناة ، بما في ذلك تيار التدفق حتى 800 (!) أمبير في التعديل س.