الإعلانات
حلم أي متحمس للمنزل الذكي هو منزل يمكنك التحدث إليه ، لكن الواقع بعيد جدًا عن ذلك.
يتيح لك Amazon Echo ، على سبيل المثال ، استخدام أي عدد من ميزات التحكم الصوتي ، ولكن يجب أن تبدأ الحوار مع سؤال - لا يمكنك فقط أن تطلب منها الإعلان عن رسالة مهمة.
أنت يستطيع يمكنك القيام بذلك باستخدام نظام Sonos وقليل من سحر DIY Raspberry Pi. اليوم سأوضح لك كيفية إعداد الإشعارات الصوتية على نظام Sonos الخاص بك ، وتقديم اثنين من وصفات IFTTT المفيدة ، وتكاملات OpenHAB ، والمزيد ، للاستفادة من ميزة الإعلام.
لاحظ أن هناك ربط Sonos محلي لـ OpenHAB متاح ، ولكن من المعروف أنه يسبب مشاكل في الذاكرة بسبب وجود خطأ في مكتبة uPnP. أقترح تخطي ذلك الآن ، واستخدام الطريقة في هذا البرنامج التعليمي بدلاً من ذلك.
يعتبر Raspberry Pi الذي يشغل Raspian linux مثاليًا لهذا البرنامج التعليمي ، ولكن يجب أن يعمل أيضًا على أي خادم منزلي يعمل بنظام Linux. في هذه الحالة ، أستخدم نفس Raspberry Pi الذي يعمل OpenHAB ، نظام التشغيل الآلي للمنزل مفتوح المصدر ابدأ مع OpenHAB Home Automation على Raspberry PiOpenHAB عبارة عن منصة أتمتة منزلية ناضجة ومفتوحة المصدر تعمل على مجموعة متنوعة من الأجهزة لا يعرف البروتوكول ، مما يعني أنه يمكن الاتصال بأي أجهزة أتمتة منزلية تقريبًا في السوق اليوم. اقرأ أكثر . يفترض ما تبقى من هذا البرنامج التعليمي أنك تقوم أيضًا بتشغيل هذا على Raspberry Pi ، وإما أن لديك نافذة طرفية محلية مفتوحة على سطح المكتب ، أو تم تسجيل الدخول عن بعد باستخدام SSH إعداد Raspberry Pi للاستخدام بدون رأس مع SSHيمكن لـ Raspberry Pi قبول أوامر SSH عند الاتصال بشبكة محلية (إما عن طريق Ethernet أو Wi-Fi) ، مما يتيح لك إعدادها بسهولة. فوائد SSH تتجاوز إزعاج الفحص اليومي ... اقرأ أكثر .
انك سوف تحتاج
- التوت بي 2 (يجب أن تعمل الموديلات القديمة ، ولكن تحقق من وجود تغييرات محددة في التعليمات)
- مرة على الأقل المتكلم سونوس (أنظمة الصوت الأخرى غير مدعومة ، هذا برنامج تعليمي لـ Sonos فقط)
- حساب مجاني على VoiceRSS.org [لم يعد متاحًا]. ثم سجل ابحث عن مفتاح API الخاص بكوالذي سنحتاجه لاحقًا لإنشاء الرسائل الصوتية.
تثبيت العقدة الأحدث
تحقق من إصدار العقدة لديك بكتابة:
العقدة -v.
لاحظ أن الإصدار 6 غير معتمد. إذا كانت لديك العقدة 6 ، فعليك إزالتها أولاً ، ثم اتباع الإرشادات أدناه لتثبيت الإصدار 5.5.
إذا لم يكن لديك الإصدار 5 أو إذا ظهر لك خطأ لم يتم العثور عليه ، فاتبع هذه الإرشادات لتثبيت العقدة. يفترض الأمر التالي Raspberry Pi 2 ؛ للنماذج القديمة ، استخدم armv6l بدلا من armv7l.
wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gz. tar -xvf node-v5.12.0-linux-armv7l.tar.gz. العقدة cd-v5.12.0-linux-armv7l. sudo cp -R * / usr / local.
قم بالتأكيد مرة أخرى عن طريق كتابة:
العقدة -v
ويجب أن ترى الإصدار v5.12 (أو أيًا كان آخر ما قمت بتنزيله).
بعد ذلك ، لدينا بعض وحدات العقدة للتثبيت. نريد أيضًا مدير حزمة العقدة.
sudo apt-get تثبيت npm. sudo npm install -g npm. sudo npm install -g node-gyp.
هذا هو الشرط المسبق للخروج من الطريق ، الآن على الأشياء الممتعة.
Sonos HTTP API
ال Sonos HTTP API ينشئ خادم ويب على الشبكة المحلية ، مما يسمح لنا باختبار اتصال عنوان URL برسالة للإعلان عنها Sonos (والتحكم فيه عن بُعد إذا أردت ، على الرغم من أن هذا البرنامج التعليمي يركز فقط على الإعلام الصوتي جانب).
استنساخ بوابة https://github.com/jishi/node-sonos-http-api.git سونوس. سونوس مؤتمر نزع السلاح. تثبيت npm - الإنتاج. بدء npm.
إذا رأيت رسالة حول وحدة كذا لم يتم العثور عليها ، فقط قم بعمل أخرى تثبيت npm واسم الوحدة ، ثم حاول بدء npm مرة أخرى. إذا واجهت أخطاء تتعلق بـ "يتطلب مترجم C ++ 11"، إصلاح بالأوامر التالية:
sudo apt-get install gcc-4.8 g ++ - 4.8. sudo - بدائل التحديث - install / usr / bin / gccgcc / usr / bin / gcc-4.6 20. sudo update-Alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. sudo - بدائل التحديث - install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. sudo update-Alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50.
في النهاية سترى شيئًا مثل هذا:
الخادم يعمل الآن ، ويتواصل مع Sonos. تنسيق واجهة برمجة التطبيقات هذه سهل:
http://[SERVER IP]: 5005 / [ROOM NAME] / [ACTION]
أو كمثال محدد:
http://192.168.1.99:5005/kitchen/playlist/chillout
الإجراء الذي يهمنا هو أمر "say" ، المستخدم كالتالي:
http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb
ستسمع رسالة خطأ حول الحاجة إلى التسجيل في مفتاح واجهة برمجة التطبيقات في VoiceRSS.org. يجب أن تكون قد قمت بذلك بالفعل ، لذا اكتب ما يلي والصق في مفتاح واجهة برمجة التطبيقات الخاص بك كتطبيق صحيح:
nano settings.json
{
"voicerss": "YOURAPIKEY" }
(اضغط CTRL-X ، Y ، لحفظ الملف)
أعد تشغيل الخادم ثم قم بإجراء الأمر ping URL مرة أخرى. بعد بضع ثوانٍ ، يجب أن تسمع صوتًا إنجليزيًا ممتعًا (على الرغم من تغيير نهاية عنوان URL إلى en-us إذا كنت تفضل). لتشغيل خادم Sonos HTTP API مرة أخرى عند إعادة تشغيل Pi:
sudo nano /etc/rc.local
أضف سطرًا قبل مخرج 0:
sudo node /home/pi/sonos/server.js dev / null &
لديك الآن القدرة على إنشاء رسالة صوتية من أي مكان على الشبكة المحلية ببساطة عن طريق اختبار ping لعنوان URL ، وبالتالي فإن الاحتمالات مفتوحة على نطاق واسع في هذه المرحلة. إذا كنت تكافح من أجل الأفكار ، فقم بقراءة بعض الإشعارات المفيدة التي قمت بإعدادها.
إخطارات OpenHAB على الأحداث
لنأخذ مثالاً بسيطًا أولاً: كشف الحركة. هذه حالة استخدام شائعة لتنشيط الأضواء ، ولكنك قد ترغب في إعلام صوتي أيضًا إذا كان مستشعر الحركة في منطقة ذات حركة مرور منخفضة ، أو ربما كتحذير أمامي من أن شخصًا ما قادم إلى الحديقة مسار.
قاعدة "تم الكشف عن حركة الحديقة" عندما يتم تغيير عنصر Garden_Motion ثم var سلسلة الرسالة = "لديك زائر" sendHttpGetRequest (" http://localhost: 5005 / مطبخ / say / "+ message.encode (" UTF-8 ") +" / en-gb ") النهاية.
يجب أن ترى كيف يمكنك دمج هذه الإشعارات الصوتية البسيطة في أي من قواعدك ، ولكن لنجرب شيئًا أكثر تعقيدًا بعض الشيء.
تقرير الطقس اليومي من IFTTT إلى OpenHAB إلى Sonos
في هذه الوصفة ، سنقوم بإعلان تقرير الأحوال الجوية اليومي في الوقت الذي تفضله.
ستحتاج إلى My. تم تمكين ربط OpenHAB ، حيث يؤدي ذلك إلى إنشاء اتصال آمن بين خادم OpenHAB الداخلي وخدمة IFTTT الخارجية. قم بإعداد ذلك إذا لم تقم بذلك بالفعل - يمكنك الرجوع إليه الجزء الأول من دليل OpenHAB الخاص بنا ابدأ مع OpenHAB Home Automation على Raspberry PiOpenHAB عبارة عن منصة أتمتة منزلية ناضجة ومفتوحة المصدر تعمل على مجموعة متنوعة من الأجهزة لا يعرف البروتوكول ، مما يعني أنه يمكن الاتصال بأي أجهزة أتمتة منزلية تقريبًا في السوق اليوم. اقرأ أكثر للحصول على التعليمات الكاملة ، وإلا سأفترض أنك قد قمت بالفعل بإعداده مع تمكين المثابرة لجميع العناصر.
بعد ذلك ، قم بإنشاء عنصر سلسلة جديد في تثبيت OpenHAB ، والذي سيخزن تقرير الطقس اليومي. قبل أن يكون هذا مرئيًا في My. قناة OpenHAB ، سنحتاج إلى تهيئتها باستخدام بعض المتغيرات الافتراضية. تنفيذ الأمر ping على URL التالي (تغيير raspberrypi.local إلى خادم OpenHAB ، أو استخدم فقط عنوان IP الخاص به ، و طقس اليوم إلى كل ما سمته بالسلسلة):
http://raspberrypi.local: 8080 / كمد؟ Todays_Weather = Sunny
تسجيل الدخول إلى My. OpenHAB [تمت إزالة عنوان URL المكسور] وتحقق من العناصر القائمة لضمان تصدير المتغير الآن.
مرة أخرى على IFTTT ، إنشاء وصفة جديدة ، واستخدام قناة الطقس كمشغل في الوقت المفضل لديك من اليوم. ستحتاج إلى تعيين موقعك أولاً إذا لم تستخدمه من قبل.
حدد My. OpenHAB كإجراء ، واختر Todays_Weather كمتغير ليتم تحديثه.
في الوقت الحالي ، ما عليك سوى اختيار فتحة النصف ساعة التالية للاختبار - يمكنك تحديث الوصفة لاحقًا بمجرد معرفة أنها تعمل.
بالتأكيد ، في وقت الاختبار (في الواقع ، قبل ذلك بقليل) ، تم تحديث توقعات اليوم بنجاح.
2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.mi. MyOpenHABServiceImpl] - أمر مستلم اليوم معظمه غائم! مع ارتفاع 7 درجات مئوية و 1 درجة مئوية منخفضة. كرر. ستكون الظروف غائمة في الغالب اليوم ، مع ارتفاع 7 درجة مئوية وانخفاض 1 درجة مئوية. للعنصر Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.mi. MyOpenHABServiceImpl] - store (Todays_Weather)، state = غائم غالبًا اليوم! مع ارتفاع 7 درجات مئوية و 1 درجة مئوية منخفضة. كرر. ستكون الظروف غائمة في الغالب اليوم ، مع ارتفاع 7 درجة مئوية وانخفاض 1 درجة مئوية.
بعد ذلك ، نحتاج إلى قاعدة OpenHAB لإرسال هذا المتغير إلى عنوان URL "قل" لـ Sonos. يجب القيام بما يلي:
قاعدة "نعلن تقرير الطقس اليومي" عندما تلقى البند Todays_Weather التحديث. ثم إرسال HttpGetRequest (" http://localhost: 5005 / kitchen / say / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") النهاية.
هذا أمر بسيط بما فيه الكفاية: كلما تم تحديث متغير Todays_Weather (والذي سيكون تلقائيًا عند الساعة 8 صباحًا كل يوم) ، قم باختبار اتصال URL. نحن نستخدم ترميز ("UTF-8") دالة String لجعل الجملة من IFTTT مناسبة للاستخدام في عنوان URL. لاختبار هذا الجزء يدويًا من النظام ، ما عليك سوى استخدام OpenHAB HTTP API مرة أخرى:
http://raspberrypi.local: 8080 / كمد؟ Todays_Weather = غائم ، مع فرصة لكرات اللحم.
الاتصال بـ IFTTT بدون OpenHAB ، باستخدام If-This-Then-Node
أخيرًا ، دعنا نلقي نظرة على كيفية الاتصال من أي وصفة IFTTT بدون وسيط OpenHAB. بدلاً من ذلك ، سنقوم بتثبيت خادم ويب آخر ، ونكشف ذلك على الإنترنت المفتوحة. هذا لا يخلو من المخاطر: أي نوع من الخادم المفتوح يمثل خطرًا أمنيًا ، ولكننا نخفف هذا الأمر من خلال عدم تشغيل حزمة خادم كاملة ، خدمة معينة تقبل فقط أوامر معينة بتنسيق حزمة بيانات JSON آمن (لذلك لن تكون هناك هجمات إدخال أو مصادقة SQL ممكن). بمجرد الانتهاء من ذلك ، سيكون لديك عنوان URL عام يمكنك إرسال رسائل إليه من قناة IFTTT Maker.
ابدأ بإعداد واحد من العديد خدمات DNS ديناميكية مجانية أفضل 5 مزودي DNS ديناميكي مجانييمكن أن تساعدك خدمة DDNS على الاتصال بجهاز الكمبيوتر المنزلي أثناء التنقل. فيما يلي أفضل مزودي DNS الديناميكيين مجانًا. اقرأ أكثر هناك - أوصي بـ DuckDNS ، على وجه التحديد لأنه يعطي مجموعة بسيطة من تعليمات ل Raspberry Pi، مما يمكنها من تحديث عنوان IP الخاص بك تلقائيًا. تابع مع هذه ، وتذكر عنوان URL الخاص بك للخطوات التالية. قد يحتوي جهاز التوجيه أيضًا على وظيفة DNS ديناميكية مدمجة ، لذا تحقق من ذلك أولاً. في حالتي ، يمكنني الحصول على * .mynetgear.com عنوان URL مجانًا ، لذلك استخدمته.
بعد ذلك ، ابحث عن جهاز التوجيه الخاص بك ميناء الشحن ما هو ميناء الشحن وكيف يمكن أن يساعدني؟ [MakeUseOf يوضح]هل تبكي قليلًا عندما يخبرك أحدهم أن هناك مشكلة في إعادة توجيه المنفذ ، ولهذا السبب لن يعمل تطبيقك الجديد اللامع؟ جهاز Xbox الخاص بك لن يسمح لك بلعب الألعاب ، وترفض تنزيلات التورنت الخاصة بك ... اقرأ أكثر صفحة التكوين ؛ هذا هو المكان الذي سنخبره بما يجب فعله بالطلبات الواردة. إعادة توجيه جميع طلبات HTTP (المنفذ 80) إلى المنفذ 1337 على خادم Raspberry Pi. أفترض أن لديك عنوان IP محجوز بالفعل لـ Raspberry Pi - إذا لم تقم بذلك ، تحقق من تكوين جهاز التوجيه الخاص بك صفحة لعناوين IP المحجوزة أثناء وجودك هناك ، لأنك لا تريد تغييرها الأسبوع المقبل ولإيقاف الخادم فجأة يعمل.
الآن لتثبيت الجزء الأخير من برنامج الخادم.
https://github.com/sebauer/if-this-then-node.git. مؤتمر نزع السلاح if-this-then-node / تثبيت npm. عقدة server.js.
يجب أن ترى ما يلي.
لا بأس ، هذا يعني أننا بحاجة إلى تحديث تفاصيلنا. افتح config.js في نانو وتحرير تلك التفاصيل إلى أي شيء آخر غير الافتراضي ، ثم حفظ. عندما تقوم بتشغيل الخادم مرة أخرى ، يجب أن تشاهد هذا:
عظيم. اختبر جهازك يمكن الوصول إليه من العالم الخارجي من خلال كتابة اسم مضيف DNS الديناميكي الخاص بك ، وإلحاق /ifttn / إلى نهاية عنوان URL. إذا كان كل شيء يعمل ، فإن الرسالة "IFTTN - الإصدار 2.0.1 if-this-then-node جاهز للعمل!" سيتم عرضه في متصفحك. مرة أخرى ، لتشغيل هذا البرنامج النصي عند بدء التشغيل ، قم بتحرير /etc/rc.local ملف وإضافة:
sudo node /home/pi/if-this-then-node/server.js dev / null &
If-This-Then-Node يعمل من خلال المكونات الإضافية - هناك عدد قليل من المكونات الافتراضية التي يتم توفيرها ، ولكن لا تهمنا. بدلاً من ذلك ، قم بتنزيل هذا المكون الإضافي المخصص الذي كتبته لك بالأوامر التالية.
الإضافات مؤتمر نزع السلاح. wget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js
ستحتاج أيضًا إلى تثبيت طلب وحدة.
طلب تثبيت npm.
ثم أعد تشغيل الخادم. المكون الإضافي بسيط للغاية ، ولكنه مختلف قليلاً عن عنوان URL الذي نستخدمه حتى الآن. في هذه الحالة ، استخدمت الإجراء الخاص "sayall" ، الذي يرسل الرسالة إلى كل جهاز Sonos.
طلب(' http://localhost: 5005 / sayall / '+ params.message +' / en-gb '، function (error، response، body)
إذا كنت تفضل أن تكون قادرًا على استهداف أجهزة معينة ، فاستبدل هذا الخط بما يلي:
طلب(' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb '، function (error، response، body)
أضف معلمة سطر أخرى تسمى جهاز لطلب JSON أدناه لتحديد اسم جهاز Sonos.
لاختبار ذلك ، أستخدم تطبيق زر "فعل" IFTTT. قم بإنشاء وصفة جديدة ، وتصفح القنوات ، وحدد صانع قناة.
اصنع وصفة جديدة. أدخل عنوان URL الذي قمت بتكوينه مسبقًا من موفر DNS ديناميكي مجاني (بما في ذلك /ifttn/ في نهاية عنوان URL. لا تنس تلك الخطوط المائلة). تحديد بريد طلب، تطبيق / json المحتوى ونص الرسالة على النحو التالي ، مع استبدال جميع المتغيرات حسب الحاجة مع تلك التي قمت بتكوينها مسبقًا:
{"action": "sonos"، "user": "YOURUSER"، "pw": "YOURPASSWORD"، "message": "الرسالة الواردة للجميع: العشاء جاهز! كرر. العشاء جاهز. اصعد حميرك الآن. "}
الآن لدي زر يمكن الوصول إليه بسهولة سيعلن عن الرسالة على كل جهاز Sonos في المنزل. يمكنك بالطبع إقران هذا مع أي قناة IFTTT تريد إنشاء رسالة مخصصة باستخدام متغيرات من تلك القناة. يجب أن تكون قادرًا على نسخ تقرير الطقس من الأعلى دون استخدام OpenHAB الآن ، على الرغم من أنه استغرق جهدًا إضافيًا لتثبيت خادم آخر.
ملاحظة: سوف يقوم المتسللون بفحصك تلقائيًا. يحدث هذا طوال الوقت ، ولكن إذا كنت تعرض السجلات ، فقد يبدو الأمر مقلقًا. يمكنك أدناه رؤية شخص ما حاول بشكل منهجي التأكد مما إذا كان يمكن الوصول إلى أي من واجهات PHPMyAdmin القياسية. وهو ما لم يفعلوه. لا تقلق إذا رأيت شيئًا مشابهًا. إنه المكافئ على الإنترنت لأرقام الهاتف العشوائية للاتصال البارد لمعرفة ما إذا كان هناك أي شخص.
ماذا ستعلن؟
يجب أن يكون لديك الآن الأدوات والمعرفة لتستحم منزلك بالكامل باستمرار في إشعارات صوتية حول كل شيء يمكن أن تفكر فيه. من يحتاج للموسيقى؟ الحد الوحيد الخاص بك هو 350 طلبًا يوميًا من VoiceRSS.org - ولكن هذا واحد كل 4 دقائق ، لذا يجب أن تكون على ما يرام.
لذا ماذا ستفعل بهذا؟ شارك أفكارك أو وصفة IFTTT في التعليقات!
ائتمانات الصورة:قهوة وامرأة بواسطة S_Photo عبر Shutterstock
جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي ، وهو حاصل على شهادة CompTIA A + و Network +. وهو المطور الرئيسي لـ MakeUseOf ، ويقضي وقت فراغه في لعب كرة الطلاء VR وألعاب الطاولة. لقد كان يبني أجهزة الكمبيوتر منذ أن كان طفلاً.