أريد أن أتحدث عن تجربتي الصغيرة في العمل مع مساعد المنزل (المشار إليها فيما يلي باسم HA) في Raspberry pi وعن توصيل وظيفة تسجيل الفيديو ومستشعر الحركة ، وبالتالي وظيفة أمن المنزل لاستقبال الصور عن طريق البريد في حالة حدوث عملية "أمان".بالطبع ، أحد الأسباب هو الرغبة في أن نفهم من تعليقاتك أن ما فعلته "خطأ" بعد كل شيء ، تنفيذ هذا السيناريو.هناك ثلاث طرق لتكوين الوظائف المذكورة أعلاه: "بدون مشاكل" و "قصيرة" و "مستقلة". في الحالة الأولى ، قمت بتنزيل الصورة النهائية من الموقع https://ViaMyBox.com/downloadpageبالنسبة لـ Raspberry pi ، يمكنك أن ترى كيف يبدو كل شيء في النموذج الذي تم تكوينه بالفعل. في الحالة الثانية ، يمكنك تنزيل ملف zip من موقع الويب أو من مشروع github ، وتثبيت وتثبيت صورة HA docker من خلال الأداة المساعدة (sudo via-setup.sh) لمعرفة كيفية تكوين كل شيء. وأخيرًا ، الطريقة الثالثة هي إعداد "كل شيء بطريقتك الخاصة": خذ شيئًا مفيدًا من الموقع أو بوابة المشروع ، أو من هذا البرنامج التعليمي. روابط لكل شيء في نهاية المقال.افترض أن لديك بالفعل مساعد منزلي يعمل (HA). في هذه المقالة ، سننظر فقط في جوانب تكوين تكوينات yaml ووصف تسلسل القواعد والشروط التي تؤدي إلى إجراء معين ، في حالتنا ، اتصال "أمن المنزل" والبرنامج النصي الذي يبدأ في التقاط الصور في غضون 5 ثوانٍ بعد تشغيل مستشعر الحركة. ونتيجة لذلك ، يرسل مساعد المنزل الصور التي تم التقاطها عن طريق البريد. أنا لست متخصصًا في yaml أو في إنشاء تكوينات لـ Home Assistant ، ولكن باتباع أمثلة العمل ، حصلت على تكوين عامل أريد مشاركته.جميع الملفات التي سنشير إليها ، سأضعها في نهاية المقالة لمراجعة أكثر ملاءمة. لن أتعامل هنا مع عمل مخطوطات لتسجيل الفيديو في باش أو بيثون في هذا المثال. مساعد المنزل فقط. ولكن إذا كان لديك أسئلة - ويلكوم!في النهاية ، يبدو كل شيء مثل هذا بالنسبة لي (تم تمييزه باللون الأحمر الذي سننظر فيه في المقالة):
أستخدم Raspberry pi كمنصة. و طريقي إلى ملفات التكوين هو / usr / share / hassio / homeassistant /. قد يختلف المسار إلى ملفات التكوين عن المسار الخاص بي. في ذلك الوقت ، كان لدي مساعد المنزل 0.101.3. سنكون مهتمين بملفات التكوين في هذا الدليل: config.yaml و automation.yaml.بعد كل تغيير لهذه الملفات ، من المهم أن تتذكر أنه سيكون من الضروري التحقق من التكوين بعد التغييرات التي أجريناها لأية أخطاء حدثت فيه. يتم ذلك في علامة التبويب لوحة تحكم Home Assistant -> التكوين -> عناصر تحكم الخادم -> التحقق من التكوين. وبعد ذلك ، في نفس المكان ، نقوم بإعادة تحميل الأتمتة وإعادة تحميل البرامج النصية ، إذا كان التحقق ناجحًا. وفي حالة الشك ، - تقوم إدارة الخادم بإعادة التشغيل في نفس علامة التبويب بتحديث التكوين بدقة.جهاز استشعار الحركة HC-SR501 متصل بناقل Raspberry pi GPIO. من الضروري توصيل أسلاك الاتصال الثلاثة بشكل صحيح بـ GPIO ، ويمكننا استخدام المستشعر الخاص بنا في العمل. يحتوي المستشعر على ثلاث جهات اتصال: power gcc (+) ، صفر gnd (-) ، جهة اتصال التحكم (البيانات). بعد قراءة وصف GPIO ، قمت بتوصيلهم بتوت العليق على النحو التالي. لقد قمت بتوصيل hc-sr501 بموصل GPIO: pin # 2 - 5.5vvcc؛ دبوس # 26 (الصف 13) - اتصال البيانات و دبوس # 6 - gnd (-) من المستشعر.أستخدم إما كاميرا USB أو كاميرا csi بالتزامن مع mjpg-streamer كمصدر للصورة. كيفية تثبيت وتكوين mjpg-streamer على Raspberry pi ، لن نفكر هنا. أمثلة على التثبيت السريع على الإنترنت كثيرًا. ومع ذلك ، أود أن أقول إنني أستخدم البيانات من هذا المشروعيتم وصف تركيب هذه الوحدة أيضًا بالتفصيل هناك. أو استخدم أي طريقة مناسبة لك لالتقاط الصور ومقاطع الفيديو. بعد كل شيء ، ما هو برنامج bash لربط HA ، في نهاية المطاف ، متروك لك.سنقوم الآن بوصف المستشعر في التكوين. yaml ، على سبيل المثال ، من خلال سطر الأوامر:sudo nano /usr/share/hassio/homeassistant/configuration.yaml
على الرغم من أن استخدام notepad ++ مع winscp قد يكون أكثر ملاءمة ...نحن نصف تسلسل إعدادات HC-SR501 مثل هذا:binary_sensor:
- platform: rpi_gpio
#name: HC-SR501
ports:
7: Sensor HC-SR501
invert_logic: false
وتجدر الإشارة إلى أن الشيء المهم هنا هو الإعدادات في الخطوط التي تصف الاتصال بجهات اتصال التحكم (البيانات) الخاصة بأجهزة الاستشعار: pin # 7المنافذ:7: Sensor HC-SR501يحتوي Home Assistant على أداة مدمجة لتنشيط وظيفة أمن المنزل. سنصف ذلك في config.yaml ، باستخدام الوصف: www.home-assistant.io/integrations/manualalarm_control_panel:
- platform: manual
name: Home Alarm
pending_time: 60
delay time 40
triggered:
pending_time: 0
code: 1234
يعني هذا الإعداد أن لدينا 60 ثانية لمغادرة المنزل (بعد هذا الوقت سيتم تشغيل المنبه) ، و 40 ثانية لإيقاف تشغيله (بكلمة مرور 1234) عند العودة إلى المنزل. لسبب ما ، تغادر دائمًا لفترة أطول من قدومك.)الآن سنصف آلية تشغيل الصور وإيقاف تشغيلها من خلال تشغيل مستشعر الحركة في التكوين لدينا. yaml (المزيد عن التبديل - يمكن العثور على منصة Command_line هنا ): - platform: command_line
switches:
start_stop_motion_rec_timelapse:
friendly_name: 'Record motion timelapse video'
command_on: 'curl http://localhost/start_mjpgstrm.php && curl http://localhost//rec-motion-mjpg.php'
command_off: 'curl http://localhost/stop_mjpgstrm.php && curl http://localhost/rec-motion-mjpg-stop.php'
قمنا هنا بربط الأمر Enable Command_on و Command_off off بالأوامر النصية التي تتحكم في تسجيل الكاميرا. في هذه الحالة ، عندما يتم تنفيذ الأمر Command_on ، يتم تنفيذ سكريبتين على التوالي. سيؤدي ذلك إلى تشغيل ملف mjpg-streamer وتشغيل تسجيل مستشعر الحركة. الوصول إلى نصوص bash يمر عبر ملف php لموقع العمل على Raspberry pi. للقيام بذلك ، قمت بتكوين nginx والوصول إلى الويب ، وعند الوصول من خلال المتصفح في النموذج http: // <ip address of Raspberry pi> /start_mjpgstrm.php ، يجب تنفيذ برنامج php النصي الخاص بنا. ينفذ هذا النص البرمجي mjpg-streamer في هذه الحالة.لا نعتبر تكوين الوصول إلى الويب في هذه المقالة. بالتأكيد ، هذا ليس أمانًا ، ولكن نظرًا لأن لدي HA على عامل الميناء ، فقد واجهت حقيقة أن لدي بيئة عامل ميناء معزولة و "العالم الخارجي" لنظام التشغيل الذي يمكنني رؤيته من خلال الاتصال بموقعي من خلال php. ربما هناك مجموعة من الحلول الجيدة من عامل الميناء أو معلمي HA. الكتابة ، سيكون من المثير للاهتمام معرفة!سأترك قائمة بهذه النصوص تحت المقالة ، لن نتطرق إليها. في هذه المقالة ، أرغب في تتبع فقط تكوين تسلسل الإجراءات في مساعد المنزل.يتم وضع كل هذا في كائن start_stop_motion_rec_timelapse. سيكون مفتاح التبديل البصري الذي سنتحكم به في تسجيل الصور عند تشغيل مستشعر الحركة.
يمكننا تصور هذه الكائنات التي أنشأناها في علامة التبويب Home Assistant -> Overwiew ، وتبديل تنشيط وضع تكوين تكوين واجهة المستخدم في الزاوية اليمنى العليا.
أعد تشغيل HA في المتصفح في علامة التبويب "التكوين -> التحكم في الخادم" لالتقاط config.yaml.بعد ذلك ، حدد علامة زائد صفراء في أسفل نافذة المتصفح ، وانقر على بطاقة الكيانات وأرفق الكائنات التي تم إنشاؤها لدينا بالخرائط.
بالنسبة لمستشعرنا ، حدد بطاقة المستشعر. ستبدو كما يلي:
كما ترى في الصورة ، في الحقل الثاني من الكيان ، يكون التبديل أعلاه هو: switch.start_stop_motion_rec_timelapse.يسمح لنا بتشغيل التسجيل على مستشعر الحركة وإيقاف تشغيله ، بغض النظر عن تضمين وظيفة "أمن المنزل". وبشكل عام ، يجب أن تعمل بالفعل بعد كل الإجراءات المذكورة أعلاه.حسنًا ، وبالتالي ، خريطة لوحة الإنذار:
هناك نقطة أخرى مثيرة للاهتمام. أستخدم مساعد المنزل كحاوية عامل ميناء. في هذا الصدد ، سيكون المسار إلى نصنا مختلفًا عن المسار الحقيقي إلى ملف البرنامج النصي. بعد كل شيء ، يكون هيكل الملف داخل الحاوية ظاهريًا ومرتبطًا ببنية الملف الحقيقية من خلال أحجام أرصفة محمولة. يبدو أن هذا: المسار داخل الحاوية: / config / scripts / Path داخل نظام التشغيل: / usr / share / hassio / homeassiatnt / scripts. لذا انظر إلى إعدادات الحاوية الخاصة بك ، وكيف يتم تكوين هذه المجلدات في حقل Binds. إذا كان لديك HA هناك.sudo docker inspect homeassistant|less
عندما يتم تشغيل مستشعر الحركة ، في الوقت الذي يتم فيه تشغيل المنبه: أريد ، بالإضافة إلى حقيقة أننا نبدأ التصوير السريع (لقطات اللقطة) ، سوف أتلقى تحذيرًا عبر البريد وصورة. لقد توازنت العمليات. في الصورة الأولى ، يحدث التسجيل (لقطات اللقطة) في غضون بضع ثوانٍ بعد تشغيل المستشعر. للقيام بذلك ، أقوم بتشغيل mjpg- streamer curl localhost / start_mjpgstrm.php ، وابدأ php: surl http: //localhost/rec-motion-mjpg.php . وهو بدوره يدير النص البرمجي لـ python mov.py. جميع الملفات والروابط الموصوفة في نهاية المقالة حسب المرجع. ويأخذ نص نصي آخر لـ TakeSnapshotWebcam.sh لقطة ، والتي أرسلها في بريد إلكتروني. أصف هذه النصوص في تكويننا. yaml مثل هذا:shell_command:
#
take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
# mjpg-streamer
start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
# mjpg-streamer
stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
# 5
start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
#
stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'
هناك ، في config.yaml ، نصف كائننا البريدي:notify:
- name: ha_sendmail
platform: smtp
# gmail
server: smtp.gmail.com
port: 587
timeout: 15
#
sender: user@gmail.com
encryption: starttls
username: user@gmail.com
password: passwd
# ( , )
recipient:
- user@gmail.com
sender_name: My Home Assistant
نقطة مهمة! لكي يقوم HA بتوصيل وإرسال الرسائل (حقل المرسل) ، يجب أن نسمح لـ gmail باستخدام هذا المربع لخدمة HA الخاصة بنا. كيفية القيام بذلك هو الرابط هنا: myaccount.google.com/lesssecureappsوبعد ذلك ، نصف آلية الأتمتة نفسها عند تشغيل منبه home_alarm في automation.yaml:# (alias) “ , ”
- alias: 'Trigger alarm while armed away'
#alias , “on”
trigger:
- platform: state
entity_id: binary_sensor.sensor_hc_sr501
to: 'on'
# , “armed away”
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: armed_away
#
action:
# mjpg-streamer ( )
- service: shell_command.start_mgpg_streamer
# ,
- service: shell_command.start_motion_rec
# “ ” HA “ ”
- service: alarm_control_panel.alarm_trigger
entity_id: alarm_control_panel.home_alarm
مجموعة الشروط والإجراءات التالية هي إرسال رسالة وحدة التحكم عند تعطيل "الأمان" وإيقاف البرامج النصية لتسجيل الحركة لدينا:- alias: 'Send notification when alarm is Disarmed'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'disarmed'
action:
- service: shell_command.stop_mgpg_streamer
- service: shell_command.stop_motion_rec
- service: persistent_notification.create
data:
message: The alarm is Disarmed at {{ states('sensor.date_time') }}"
وأخيرًا ، المجموعة الثالثة - نرسل رسالة تحتوي على صورة:- alias: 'Send notification when alarm triggered'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'triggered'
action:
- service: persistent_notification.create
data:
message: Notification when alarm triggered. Motion sensor HC-SR501 detected.
- delay:
seconds: 4
#
- service: script.webcam_snapshot
# configuration.yaml: notify.ha_sendmail
- service: notify.ha_sendmail
data:
title: 'Intruder alert'
message: '{{now().strftime("%H:%M %Y-%m-%d")}}:Notification when alarm triggered. Motion sensor HC-SR501 detected.'
data:
images:
# script.webcam_snapshot
- /config/camera/snapshot.jpg
تذكر أن تخطيط الخط مهم في ملفات yaml ، وأن أحرف المسافة قبل الأوامر تلعب دورًا مهمًا في تكوين كتل التعليمات البرمجية ، وهيكلها. تحقق من جميع التغييرات على yaml الخاص بك من خلال تكوين Home Assistant (HA) -> Server Controls -> Check Config.يبدو أن كل شيء على ما يرام ، ويتحول شكل Raspberry pi إلى أنيق ... إذا لم يكن البرق عالقًا!)هنا - أتمتة العمل HA ، قم بإعداده بيديك! تأكد من أن تكتب لي رأيك في هذا!وإذا كنت لا تزال تقرأ حتى النهاية ، فأنا أقدم الروابط الموعودة:https://viamybox.com/downloadpage
https://github.com/viatc/viamyboxملفات التكوين الموضحة هنا:automation.yaml ، config.yaml ، takeSnapshotWebcam. sh ، rec-motion-mjpg.php ، mov.py