جدول المحتويات:

SmartWand: 6 خطوات
SmartWand: 6 خطوات

فيديو: SmartWand: 6 خطوات

فيديو: SmartWand: 6 خطوات
فيديو: طريقة توصيل باند شاومي وحل مشكلة توصيلها بالهاتف لاستقبال اشعارات التطبيقات 2024, يوليو
Anonim
سمارت واند
سمارت واند

هذا المشروع هو الحصول على برنامج نصي من Python للتحكم في Smartthings باستخدام عصا تشفير Kano كمدخل.

ابنتاي (8 و 12) من المعجبين الكبار بهاري بوتر وحصلا على عصا الترميز Kano Coding Wand لعيد الميلاد. تطبيق الترميز Kano رائع ويستمتعون به. أداة رائعة لتقديم مفاهيم الترميز.

لدينا أيضًا القليل من أتمتة المنزل في جميع أنحاء المنزل باستخدام SmartThings و Phillips Hue و Logitech Harmony hub وما إلى ذلك … لقد وصلوا حتمًا إلى النقطة التي أرادوا فيها تشغيل أضواء شجرة الكريسماس باستخدام العصا وبدأوا في إلقاء مصطلحات مثل Lumos و Nox في وجهي. بدا الأمر وكأنه تحدٍ ممتع ، لذا خضته.

كان من الضروري استخدام نظام تشغيل Linux نظرًا لأن عنصرًا حاسمًا (مكتبة Bluepy python للاتصال ببلوتوث العصا) متاح فقط على أنظمة Linux الأساسية. مناسب على أي حال من وجهة نظر الرغبة في تشغيل هذا على Raspberry Pi في النهاية.

هناك مرجعتان رئيسيتان هنا ، اللذان بدونهما ، لم أكن لأتمكن من القيام بذلك.

بفضل GammaGames لإنشاء ومشاركة نص Python لقراءة عصا الترميز Kano.

github.com/GammaGames/kano-wand-demos/blob…

و

بفضل rllynch لإنشاء ومشاركة نص بيثون لواجهة سطر أوامر SmartThings.

github.com/rllynch/smartthings_cli

من أجل الحفاظ على هذا كما هو ، سأقوم بنسخ معظم الخطوات إلى Instructable هذا لالتقاط أي تعديلات أحتاجها لجعلها تعمل على الإعداد الخاص بي.

إليك ما ستحتاجه:

  • مجموعة ترميز هاري بوتر كانو (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki …
  • نظام تشغيل Linux (قمت بتشغيله مع VirtualBox ، ثم تم تثبيته على Raspberry Pi)
  • محول Bluetooth USB (استخدمت محول Kensington Bluetooth 4.0 USB)
  • اتصال الإنترنت (بالنسبة إلى RPi ، استخدمت محول Edimax USB WiFi من مشروع سابق)

الخطوة 1: قم بتثبيت Linux على Raspberry Pi

اتبع الروابط أدناه لتثبيت نظام تشغيل Linux على Raspberry Pi. لقد استخدمت Raspbian Stretch مع سطح المكتب والبرامج الموصى بها ووميض باستخدام Etcher.

www.raspberrypi.org/learning/software-guid…

بمجرد إكمال التثبيت والحصول على موجه أوامر Linux ، من الجيد تشغيل الأمرين التاليين للتأكد من تحديث كل شيء.

sudo apt-get update

sudo apt-get ترقية

اكتب ما يلي في واجهة سطر الأوامر لتشغيل واجهة مستخدم سطح المكتب.

sudo ستارتكس

الشيء التالي الذي يجب إعداده هو اتصال بالإنترنت بحيث يمكنك الوصول إلى المستودعات وتثبيت المزيد من البرامج. سيكون الاتصال بالإنترنت مطلوبًا أيضًا للوصول إلى واجهة برمجة تطبيقات SmartThings. اتبع هذا الدليل للاتصال. بشكل مستقيم للأمام من سطح المكتب. لقد استخدمت محول USB wifi كنت أضعه.

www.raspberrypi.org/learning/software-guid…

بدلاً من Raspberry Pi ، يمكنك استخدام كمبيوتر آخر موجود إما للتمهيد المزدوج لنظام التشغيل Linux مع نظام التشغيل الحالي (نوع من الألم لأنه يتعين عليك إعادة التشغيل للتبديل بين الاثنين) أو تشغيل مثيل لنظام التشغيل Linux على فيرتثلبوإكس. لبدء هذا المشروع في البداية ، قمت بتثبيت Debian Stretch مع Raspberry Pi Desktop في Virtual Box باستخدام هذا الدليل:

thepi.io/how-to-run-raspberry-pi-desktop-o…

(ملاحظة: لقد أمضيت وقتًا طويلاً في تثبيت إضافات الضيف بشكل صحيح وفقًا للتعليمات أعلاه. لم يتم عمل القص واللصق بين المضيف والعميل ، وكان ذلك سيكون رائعًا ، لكنني تمكنت من تحديث الدقة للاستفادة منها حجم الشاشة الكامل. كانت هذه سلسلة من ثقوب google rabit التي لن أوثقها هنا.)

الخطوة الثانية: تثبيت Python 3

يجب تثبيت Python3 بالفعل مع Raspian Stretch.

الخطوة 3: إعداد وحدة العصا

اتبع هذا الدليل الذي أنشأته GammaGames

اضطررت أولاً إلى التغيير إلى دليل مختلف قبل استنساخ kano_wand repo ، وإلا فلن يتمكن برنامج python النصي من العثور عليه. ربما كان من الممكن تحديث بعض مراجع المسار في ملف ما في مكان ما ، لكنني لم أتعمق في ذلك.

cd /usr/local/lib/python3.5/dist-packages

استنساخ بوابة

sudo pip3 تثبيت moosegesture مخطط

كان لا بد من استخدام sudo لهؤلاء للحصول على الأذونات المناسبة. كان لا بد أيضًا من استخدام الأوامر التالية بدلاً من ذلك لتثبيت numpy ، لأي سبب من الأسباب ، لا يمكن تشغيل pip. ربما كانت مشكلة مسار أخرى ، لكن هذا نجح معي ، لذلك ذهبت معه:

sudo apt-get install python3-numpy

أخيرًا ، من أجل الحصول على الأذونات المناسبة لتشغيل bluepy من نص Python النصي ، وجدت هذا الأمر.

sudo setcap 'cap_net_raw ، cap_net_admin + eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper

هذا كل ما هو مطلوب للحصول على البرنامج النصي الخاص بنا وتشغيله. يسير باقي دليل GammaGames عبر الأجزاء خطوة بخطوة المطلوبة في نص Python. إنه تفصيل رائع لفهم كيفية هيكلة النص بشكل أكبر وما يفعله كل كائن. شكراً جزيلاً لـ GammaGames لتقديم هذه الوثائق. قد يكون مفيدًا أيضًا في استكشاف الأخطاء وإصلاحها لأحد أقسام البرنامج النصي. على سبيل المثال ، يقوم الكائن الأول المعروض بمهمة المسح بحثًا عن الصولجانات وإرجاع قائمة بالعصي التي تم اكتشافها. تحقق جيد من أن إعداد البلوتوث الخاص بك يعمل على جميع الأسطوانات. للقيام بذلك ، يمكنك نسخ الكود من test1_BLE_wand_detect.py الموجود في الريبو التالي:

github.com/maspieljr/SmartWand

الخطوة 4: إعداد SmartThings CLI

فيما يلي نسخة من التعليمات المضمنة في smartthings_cli repo على جيثب (https://github.com/rllynch/smartthings_cli).

لقد أدرجت هنا التعديلات الصغيرة التي كان عليّ إجراؤها في الإعداد الخاص بي لتشغيل كل شيء. شكرا مرة أخرى ل rllynch لتوفير هذا.

1) قم بتسجيل الدخول وتحت My SmartApps ، قم بإنشاء تطبيق SmartApp جديد مع الكود في groovy / app.groovy.

* لاحظ في الخطوة الأولى أن هناك إشارة إلى موقع SmartThings على الويب. انتبه جيدًا إلى مكان وجود حساب smartthings الخاص بك. لقد أوقفني هذا لفترة من الوقت حيث سمح لي الموقع الآخر بتسجيل الدخول ، لكن لم أستطع العثور على أي من أشيائي. اضطررت إلى استخدام الرابط التالي للوصول إلى حساب SmartThings الخاص بي.

(مرحبًا بك في الساعتين اللتين قضيتهما في فرز ذلك:) سيكون هذا مهمًا أيضًا في خطوة لاحقة.)

2) انقر فوق إعدادات التطبيق وضمن OAuth ، انقر فوق تمكين OAuth في التطبيق الذكي. دوّن معرّف عميل OAuth وسر عميل OAuth. قم بتحديث عرض عميل OAuth إلى عنصر تحكم CLI في SmartThings. انقر فوق تحديث.

3) ارجع إلى My SmartApps ثم انقر فوق SmartThings CLI Control. انقر فوق نشر => بالنسبة لي.

4) قم بنسخ مستودع smartthings_cli ، وإنشاء virtualenv إذا رغبت في ذلك (لم أفعل ذلك) ، ثم قم بتشغيل الأوامر التالية ، واستبدل CLIENTID و CLIENTSECRET بالمعرف والسري من الخطوة 2.

لاستنساخ smartthings repo ، يمكنك استخدام الأمر التالي. تأكد من وجود موجه أوامر linux في دليل المشروع الذي تم إنشاؤه أثناء إعداد وحدة Wand.

استنساخ بوابة >

then change directory again down to the smartthings_cli directory that was just created.

cd smartthings_cli

python setup.py install

smartthings_cli --clientid clientid --clientsecret clientsecret

5) smartthings_cli will direct you to a url to authorized access. copy the url from the response in the command window and be sure to update it with the proper path as we had to in step 1. go to that url in a browser and specify which devices the cli should be able to access. click authorize when finished. you should be redirected to a page reporting smartthings_cli.py received auth code.

last few things i needed to do in order to get rid of a warning that kept coming up:

sudo apt-get install libssl-dev

pip install service_identity

pip install attrs pip install pyopenssl pip install pyasn1 pip install pyasn1-modules pip install ipaddress

raspberry pi should now be set-up to issue smart thing commands from the command line interface, try it out with these examples:

smartthings_cli query switch all

smartthings_cli query switch "switch name"

smartthings_cli set switch "switch name" on

step 5: improve response

everything is running at this point but there's a bit of a lag once the wand gesture is captured. in attempt to speed up the response, i've embedded the smarthings logic into the smartwand python script rather than calling it from a command line as it does in smartwand.py. this eliminated the need to repeatedly import the modules required for smartthings communication, which is what was slowing everything down. here's what i had to do to get that working:

python3 -m pip install future

python3 -m pip install twisted

made update to the python script. see smartwand2.py stored in the following repo:

github.com/maspieljr/smartwand

step 6: make smartwand execute on raspberry pi bootup

so you only need to plug in the raspberry pi near your smartthings things and not require a monitor, and keyboard, i followed these instructions to get the script to run on boot or any time a command line terminal is launched. the script seems pretty robust but does get hung up from time to time, requiring a reboot. alternatively you could have a keyboard connected and use alt+f4 to kill a running script and ctrl+alt+t to launch a new terminal without needing a monitor to see anything.

method 2: modify the.bashrc file as described in the link below:

www.dexterindustries.com/howto/run-a-progr…

موصى به: