مشروع Micropython لتحرير Sonoff WiFi Smart Socket من السحابة عن طريق تشغيل خادم الويب على الجهاز.
الأجهزة المختبرة:
سيقوم الجهاز بذلك على كل حذاء:
بعض الملاحظات حول وظيفة المؤقت:
يحاول الجهاز دائمًا تشغيل الطاقة/إيقاف تشغيلها بناءً على المؤقت الحالي. حتى بعد انقطاع التيار الكهربائي. ومع ذلك ، فإن هذا يعمل بشكل صحيح فقط إذا تم تعيين الوقت الحالي بشكل صحيح بواسطة RTC. يتم استرداد الوقت الحالي تلقائيًا من الإنترنت عبر مزامنة NTP. في التمهيد وتكرار أيضا بعد البدء. بالطبع ، لا يمكن أن يعمل هذا إلا إذا كان الجهاز متصلاً بالإنترنت عبر WiFi ؛)
يمكنك "الكتابة فوق" المؤقت الحالي في أي وقت عن طريق الضغط على الزر على الجهاز. سيبقى هذا الكتابة فوق الموقت التالي. بعد انقطاع التيار الكهربائي ، يتم حذف معلومات "الكتابة فوق" وينظم المؤقت القوة مرة أخرى.
الأشياء التي سيتم تنفيذها في الميزة القريبة:
أبعد عن ذلك:
تبدو صفحة الويب هكذا:
يمكن العثور على جميع لقطات الشاشة الحالية هنا:
3.3V و GND و TX و RXمعلومات جيدة جدًا للبدء ، هل يمكنك العثور عليها هنا:
config.h وتجميع yaota8266 والبرامج الثابتة_config_wifi.json استنساخ المصادر ، وإعداد VirtualEnv عبر pipenv :
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make updateلرؤية جميع الأهداف ، ما عليك سوى الاتصال ، على سبيل المثال:
~ /micropython-sonoff-webswitch$ make
make targets:
help This help page
docker-pull pull docker images
docker-build pull and build docker images
update update git repositories/submodules, virtualenv, docker images and build local docker image
thonny run Thonny IDE to access the Micropython REPL (Python prompt)
test Run pytest
micropython_shell start a bash shell in docker container " local/micropython:latest "
unix-port-shell start micropython unix port interpreter
build-firmware-combined compiles the micropython non-OTA firmware and store it here: /build/firmware-combined.bin
build-ota-firmware compiles the micropython OTA firmware and store it here: /build/firmware-ota.bin
yaota8266-rsa-keys Pull/build yaota8266 docker images and Generate RSA keys and/or print RSA modulus line for copy & paste into config.h
yaota8266-build Compile ota bootloader and store it here: build/yaota8266.bin
verify Check RSA key, config.h and compiled " yaota8266.bin "
erase-flash call esptool.py erase_flash
flash-firmware-combined Flash build/firmware-combined to location 0x3c000 via esptool.py
flash-yaota8266 Flash build/yaota8266.bin to location 0x0 via esptool.py
flash-ota-firmware Flash build/firmware-ota.bin to location 0x3c000 via esptool.py
hard-ota Start yaota8266 live-ota to hard-OTA Update the firmware file build/firmware-ota.bin.ota
soft-ota Start soft-OTA updates: Compile .py to .mpy and push missing/updated files ( * .mpy, * .css, * .html etc.) to the device
miniterm Low level debug device via miniterm.py (from pyserial) to /dev/ttyUSB0 يجب إنشاء docker-yaota8266/yaota8266/config.h وإدراج خط معامل RSA الخاص بك.
لإنشاء مفاتيح RSA وعرض الخط المطلوب لـ config.h فقط الاتصال:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------ملفات مفاتيح RSA التي تم إنشاؤها هنا:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.keyيجب عليك النسخ الاحتياطي ملفات أطروحات.
بعد إنشاء مفاتيح RSA الخاصة بك و config.h ، يمكنك تجميع yaota8266.bin و firmware-ota.bin ، على سبيل المثال:
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmwareيتم تخزين الملفات المترجمة هنا:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-flighting~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-المستخدمة في عملية Hard-OTAيجب وضع ESP8266 في وضع البرمجة قبل أن يتم تحميل البرامج الثابتة. لوضع ESP8266 في وضع البرمجة:
ربما يجب عليك إعطاء المستخدم أذونات للوصول إلى منفذ USB ، على سبيل المثال: sudo usermod -a -G dialout $USER وإلا ستحصل على رسالة خطأ مثل: Permission denied: '/dev/ttyUSB0'
الآن يمكن استخدام esptool . ولكن فقط لعملية واحدة ! بعد كل مكالمة esptool ، يجب عليك فصل الجهاز عن USB وتكرار هذا الإجراء!
في المرة الأولى ، يجب محو ذاكرة الفلاش ، اتصل على:
~ /micropython-sonoff-webswitch$ make erase-flash بعد erase-flash وبعد أن اتصلت بـ make yaota8266-build و make build-ota-firmware يمكنك وميض جهازك:
# put into Programming Mode and call:
~ /micropython-sonoff-webswitch$ make flash-yaota8266
# Again, put into Programming Mode and call:
~ /micropython-sonoff-webswitch$ make flash-ota-firmwareاستيراد : أوامر الفلاش هذه لجهاز Sonoff وقد لا تعمل على أجهزة ESP8266 الأخرى!
بالنسبة للأجهزة الأخرى ، استخدم فقط esptool مباشرة ، على سبيل المثال:
~ /micropython-sonoff-webswitch$ pipenv run esptool.py --port /dev/ttyUSB0 write_flash 0 build/yaota8266.bin
~ /micropython-sonoff-webswitch$ pipenv run esptool.py --port /dev/ttyUSB0 write_flash 0x3c000 build/firmware-ota.binملحوظة:
يجب أن يكون File firmware-ota.bin مع esptool.py وليس firmware-ota.bin.ota ! هذا الملف هو UES في عملية تحديث Hard-OTA.
يمكن العثور على مزيد من المعلومات حول الولادة في الوثائق الرسمية هنا: http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
بمجرد أن يكون لديك البرامج الثابتة على الجهاز ، يمكنك الوصول إلى Micropython REPL (موجه Python). هناك طرق مختلفة للقيام بذلك. لقد استخدمت ثوني ودعمه micropython
تم تثبيت thonny عبر Pipenv ، لبدء IDE ، فقط اتصل على:
~ /micropython-sonoff-webswitch$ make thonnyالخطوات الأولى في ثوني:
Tools / Options / Interpreter حدد: MicroPython (ESP8266)files : View / Files الآن يجب أن تكون قادرًا على الوصول إلى Micropython REPL عبر Ctrl-F2 . يمكنك أيضًا بدء البرامج النصية على الجهاز:
This computer ، انتقل إلى: .../micropython-sonoff-webswitch/helpersmpy_information.py في المحررF5 بعد تنسيق نظام ملفات الفلاش مثل littlefs2 : انسخ الملفات المفقودة إلى الجهاز ، باستخدام Soft-OTA:
يحتاج الجهاز إلى SSID/كلمات المرور لتتمكن من تسجيل الدخول إلى WLANs المختلفة. يقرأ بيانات الاعتماد من الملف _config_wifi.json . يجب إنشاء هذا الملف. القالب هو _config_wifi example.json.
نسخ وتحرير _config_wifi example.json إلى src/_config_wifi.json
سيتم نسخ جميع الملفات المفقودة في src إلى الجهاز عبر Soft-OTA.
لتوصيل الجهاز في بداية القبضة بشبكة WiFi الخاصة بك ، قم بتحرير وتشغيل هذا:
import time , network
sta_if = network . WLAN ( network . STA_IF )
sta_if . active ( True )
sta_if . connect ( 'your-ssid' , 'Your-WiFi-Password' )
while not sta_if . isconnected ():
time . sleep ( 0.5 )
print ( 'connected:' , sta_if . ifconfig ()) ما عليك سوى نسخ وصياغة مقتطف الرمز هذا في Thonny IDE ، وأدخل بيانات الاعتماد الخاصة بك وقم بتشغيله عبر F5
بعد توصيل الجهاز بشبكة WiFi الخاصة بك ، يمكنه تشغيل Soft-OTA ونسخ جميع ملفات src المفقودة.
ابدأ خادم Soft-OTA مع:
~ /micropython-sonoff-webswitch$ make soft-ota في الوقت نفسه ، افتح .../micropython-sonoff-webswitch/src/ota_client.py في thonny وابدأه عبر F5 .
الآن يجب أن يتم تشغيل Soft-Ota:
src إلى الجهازالآن يتم إعداد الجهاز ؛)
ملاحظة : هناك نوعان من تحديثات OTA:
"الصلب" عبر yaota8266 هو العمل أثناء التقدم ، انظر: #33
بعد الإعداد الأولي وعندما يعمل كل شيء ويتصل الجهاز بـ WLAN ، يمكنك استخدام تحديثات OTA.
سيقوم الجهاز بتشغيل /src/ota_client.py على كل صندوق.
ينتظر البرنامج النصي بعض الوقت لخادم OTA وبعد المهلة سيتم بدء تشغيل خادم الويب العادي.
لبدء soft-OTA Server ، قم بذلك:
~ /micropython-sonoff-webswitch$ make soft-otaإذا تم تشغيل الخادم: إعادة تشغيل الجهاز وابحث عن إخراج خادم OTA.
تطبيق تحديث OTA:
mpy_cross المثبت (إذا لم يكن مطابقة: رفض التحديث).py الموجود على الجهاز إذا تم إرسال ملف .mpy./bdist/ - ملفات .mpy (و .html ، .css ) التي سيتم تحميلها على الجهاز في soft-OTA./build/ ملفات البرامج الثابتة المترجمة ( hard-OTA yaota8266.bin firmware-*.bin./docker-yaota8266/ submodule https://github.com/jedie/docker-yaota8266 لتجميع yaota8266.bin عبر docker./helpers/ - بعض اختبارات الجهاز/البرامج النصية للمساعد للتمهيد والتطوير./micropython_config/ - ملفات التكوين المستخدمة لتجميع البرامج الثابتة micropython./mpy_tests/ - الاختبارات التي يمكن تشغيلها على جهاز micropython (سيتم أيضًا تشغيلها بواسطة Pytest مع Mocks)./sdist/ - يحتوي على جميع الوحدات النمطية التي سيتم تجميدها في البرامج الثابتة ، تم إنشاؤها عبر utils/make_sdist.py./soft_ota/ - رمز المصدر لخادم OTA./src/ - ملفات مصدر الجهاز./tests/ - بعض ملفات pytest (تشغيل على مضيف مع Cpython)./utils/ - utils للتشغيل المحلي (ترجمة ، رمز LINT ، المزامنة مع MPYCNTRL) yaota8266.bin عبر Docker: https://github.com/jedie/docker-yaota8266