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

IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS: 8 خطوات
IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS: 8 خطوات

فيديو: IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS: 8 خطوات

فيديو: IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS: 8 خطوات
فيديو: Stress, Portrait of a Killer - Full Documentary (2008) 2024, يوليو
Anonim
IOT123 - محور مستشعر متماثل: مكونات ويب ICOS10 CORS
IOT123 - محور مستشعر متماثل: مكونات ويب ICOS10 CORS
IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS
IOT123 - محور مستشعر ASSIMILATE: ICOS10 CORS WEBCOMPONENTS

تقوم ASSIMILATE SENSOR / ACTOR Slaves بتضمين البيانات الوصفية المستخدمة لتحديد المرئيات في كروتون. هذا البناء يختلف قليلاً عن سابقاتها ؛ لا توجد تغييرات في الأجهزة. يدعم البرنامج الثابت الآن استضافة برامج تحرير مخصصة (أكثر ثراءً) يمكن دمجها في أحدث إصدار من AssimilateCrouton. سيتم إيلاء المزيد من الاهتمام لشرح البرنامج الثابت ولوحة معلومات MQTT في هذه المقالة.

تتمثل إحدى مزايا خدمة WebComponents من الجهاز الذي يتحكمون فيه في أن التحكم الأكثر تقدمًا في الجهاز يقتصر على الشبكة التي يتصل بها الجهاز: نقطة وصول WiFi الخاصة بك. على الرغم من أنك بمجرد استخدام خادم MQTT مع المصادقة ، هناك ما يشبه الحماية ، على الشبكات العامة إذا تركت المستعرض الخاص بك للحظات (موقع AssimilateCrouton) ، يمكن لشخص ما القفز والتحكم في أجهزة الأتمتة الخاصة بك. تتيح ميزة CORS WebComponent هذه إمكانية عرض القراءات فقط (درجة الحرارة ومستويات الضوء والرطوبة) للجمهور ووظائف الأوامر (تشغيل / إيقاف تشغيل ، والجدولة) فقط من شبكة الجهاز.

على الجهاز ، لا تزال جميع ميزات خادم الويب مع المصادقة والاستضافة في SPIFFS مدعومة ، ولكن تم التركيز بشكل خاص على دعم CORS (مشاركة الموارد عبر الأصل) لمكونات الويب Polymer (يستخدم Crouton Polymer 1.4.0).

في AssimilateCrouton (شوكة كروتون المستخدمة في Assimilate IOT Network) ، تشمل التغييرات

  • دعم بطاقة الجهاز (assim-device) التي تعرض وتخفي ، من بين أشياء أخرى ، للمستخدم ، بطاقات فردية لجهاز
  • خاصية info على جميع البطاقات التي تعرض نخبًا من المعلومات السياقية المفيدة للبطاقة
  • دعم مكونات الويب CORS ، في هذه الحالة مستضافة على خادم الويب على الجهاز (ESP8266).

الخطوة 1: كروتون

كروتون
كروتون
كروتون
كروتون

Crouton هي لوحة تحكم تتيح لك تصور أجهزة IOT الخاصة بك والتحكم فيها مع الحد الأدنى من الإعداد. بشكل أساسي ، إنها أسهل لوحة تحكم للإعداد لأي متحمس لأجهزة IOT باستخدام MQTT و JSON فقط.

تحتوي ASSIMILATE SLAVES (المستشعرات والممثلين) على بيانات وصفية وخصائص مدمجة يستخدمها المعلم لبناء حزمة deviceInfo json التي يستخدمها Crouton لبناء لوحة القيادة. الوسيط بين ASSIMILATE NODES و Crouton هو وسيط MQTT متوافق مع مآخذ الويب: يستخدم Mosquito في العرض التوضيحي.

نظرًا لأن ASSIMILATE MASTER يطلب الخصائص ، فإنه يقوم بتنسيق قيم الاستجابة بالتنسيق المطلوب لتحديثات Crouton. تضيف شوكة AssimilateCrouton بعض الميزات التي تمكنك من تطبيق اللامركزية على قواعد العمل التي تشغل جهازك ، أي أن جهاز IOT لا يحتاج إلى أي قواعد عمل مضمنة ، إنه مجرد خط أنابيب لاتصالات MQTT / I2C إلى الجهات الفاعلة والمستشعرات الأكثر ذكاءً (التي يتحكم فيها ATTINY).

الخطوة 2: قم بتجميع كروتون

قم بتجميع كروتون
قم بتجميع كروتون

التغييرات في كروتون

تتضمن التغييرات من الإصدار المتشعب ما يلي:

  • إذا كانت نقطة النهاية تحتوي على خاصية مسار محددة ، فسيقوم WebComponent للبطاقة بتنفيذ HTMLImport لمورد CORS (خادم الويب على ESP8266 في هذا الإصدار).
  • تتم الإشارة إلى أي موارد منبع (تبعيات) أحد مكونات CORS WebComponent كما لو تم تقديمها من موقع Crouton ؛ عندما يفشلون في تحميل معالج استثناء ، يعيد تجميع المسارات والتحميل إذا كان من موقع الويب.
  • يتم عرض التوقيت المحلي الحالي أعلى اليمين ، وهو مفيد لجدولة التحقق.

اعتمادات البوليمر والكورسات

يمكن استضافة أوراق شجرة تبعية البوليمر في CORS. نظرًا لأنه يمكن استخدام تبعيات الجذر عدة مرات في أحد التطبيقات ، فلا يمكن الرجوع إليها من موقعين (موقع الويب والجهاز) لأن Polymer Module Loader يعاملهما على أنهما موردان منفصلان وأخطاء تسجيل متعددة تتعثر بسرعة في أحد التطبيقات.

لهذا السبب فإن WebComponent للبطاقة (ملف HTML في 1.4.0) وملف CSS المرتبط هما الملفات الوحيدة المستضافة على الجهاز. تتم الإشارة إلى التبعيات الأخرى كما لو كان WebComponent مستضافًا في مجلد "html" على موقع الويب الأصلي ، مما يجعل من السهل تطوير WebComponents من هذا المجلد حتى يصبح جاهزًا للتحميل إلى SPIFFS على ESP8266. AssimilateCrouton سيعمل على كيفية الحصول على الملفات الصحيحة.

تعيين

كتب edfungus منشئ Crouton الأصلي المصدر في Pug / Less وكان لديه سلسلة أدوات NPM / Grunt. لقد قدمت Pug / Less كـ HTML / css وقمت للتو بتحرير / توزيع الملفات المقدمة. أدى هذا إلى كسر سلسلة أدوات NPM / Grunt. يتم تغطية إصلاح هذا في قسم المستقبل.

يمكنك اختبار لوحة القيادة محليًا على صندوق DEV الخاص بك:

  • من سطر الأوامر في المجلد الجذر
  • بدء npm
  • تم نسج الخادم الخفيف لـ https:// localhost: 10001

النشر إلى خادم ويب ثابت:

  • نسخ كافة المجلدات باستثناء node_modules
  • نسخ index.html (وربما web.config)

مستقبل

أحد الأهداف الرئيسية هو الترقية إلى Polymer3 والعمل من Polymer CLI. تعد إضافة برامج تحرير وإطار عمل متقدمة لمطوري IOT لتطوير برامجهم الخاصة أولوية عالية. في نهاية المطاف ، سيتم تشغيل النظام الآلي المتقدم بالكامل من عملاء MQTT المنفصلين مثل AssimilateCrouton.

مثال على حزمة deviceInfo المستخدمة في AssimilateCrouton:

{
"deviceInfo": {
"نقاط النهاية": {
"CC_device": {
"اسم الجهاز": "ash_mezz_A3"،
"نوع البطاقة": "assim-device" ،
"ssid": "Corelines_2"،
"ip_addr": "192.168.8.104" ،
"نقاط النهاية": [
{
"title": "Grow Lights"،
"نوع البطاقة": "كروتون-بسيط-تبديل"،
"نقطة النهاية": "تبديل"
},
{
"العنوان": "Planter Lights"،
"نوع البطاقة": "كروتون-أسيم-ويكفيو" ،
"نقطة النهاية": "CC_switch"
}
]
},
"CC_switch": {
"نوع البطاقة": "assim-weekview"،
"info": "اضبط الأضواء أو أطفئها في فترات زمنية مدتها 15 دقيقة" ،
"المسار": "https://192.168.8.104/cors" ،
"العنوان": "Planter Lights"،
"الفاصل الزمني_دقيقة": 15 ،
"القيم": {
"القيمة": ""
}
},
"تحول": {
"title": "Grow Lights"،
"نوع البطاقة": "كروتون-بسيط-تبديل"،
"info": "تشغيل الأضواء أو إيقاف تشغيلها حسب الحاجة" ،
"ملصقات": {
"خطأ": "إيقاف"،
"صحيح": "تشغيل"
},
"الرموز": {
"خطأ": "sun-o"،
"صواب": "sun-o"
},
"القيم": {
"القيمة": 0
}
}
},
"الحالة": "جيدة" ،
"الاسم": "ash_mezz_A3"،
"description": "Office at Ashmore، Mezzanine، Area A2"،
"اللون": "# 4D90FE"
}
}

عرض rawdeviceInfo.json مستضاف مع ❤ بواسطة GitHub

الخطوة 3: تجميع الجهاز

تجميع الجهاز
تجميع الجهاز
تجميع الجهاز
تجميع الجهاز
تجميع الجهاز
تجميع الجهاز

نظرًا لعدم وجود تغييرات في الأجهزة ، فإليك الروابط إلى المعلومات ذات الصلة:

  • تجميع شل
  • المواد والأدوات
  • تحضير MCU
  • إعداد الإسكان MCU
  • بناء جانب العبيد المنخفض التبديل / إعادة ضبط لوحة الابنة
  • تجميع المكونات الرئيسية

الخطوة 4: البرامج الثابتة

البرامج الثابتة
البرامج الثابتة
البرامج الثابتة
البرامج الثابتة
البرامج الثابتة
البرامج الثابتة
البرامج الثابتة
البرامج الثابتة

التغييرات الرئيسية في هذا المبنى

لكي يتمكن تطبيق AssimilateCrouton من استخدام موارد CORS من الجهاز ، يجب تكوين رؤوس الاستجابة بطريقة معينة. تم تنفيذ ذلك في هذا الإصدار من البرنامج الثابت (static_server.ino => server_file_read ()).

كما يجب أن يكون الرسم البياني الرئيسي للتبعية للبوليمر من أصل واحد. تم استخدام إستراتيجية لإضافة معالج عند حدوث خطأ (corsLinkOnError) إلى ملفات SPIFFS CORS لإعادة تحميل الموارد من موقع AssimilateCrouton عندما لا يتم العثور عليها على الجهاز.

تمت إضافة اصطلاحين جديدين إلى نظام ملفات SPIFFS لتخصيص نقاط النهاية التي تم إنشاؤها في deviceInfo - والتي يستخدمها AssimilateCrouton لإنشاء بطاقات لوحة المعلومات:

  • /config/user_card_base.json تعريف نقطة النهاية مع تبديل متغيرات وقت التشغيل أولاً: ، ،. هذا هو المكان الذي ستتم فيه إضافة بطاقة جهاز assim. هذا لا يتصل بالجهاز.
  • /config/user_card_#.json تعريف نقطة النهاية مع تبديل متغيرات وقت التشغيل أولاً: ، ،. هذا هو المكان الذي ستتم فيه إضافة المحرّرين الثريين مثل بطاقة العرض الأسبوعي assim موصولة إلى التابع I2C (الممثل / المستشعر) المرتبط بـ #.

الرسم / المكتبات

في هذه المرحلة ، تم تجميع المشروع كمثال لمكتبة AssimilateBus Arduino. هذا بشكل أساسي لتسهيل الوصول إلى جميع الملفات الضرورية من Arduino IDE. المشغولات البرمجية الرئيسية هي:

  • mqtt_crouton_esp8266_cors_webcomponents.ino - نقطة الدخول الرئيسية.
  • assimilate_bus.h / assimilate_bus.cpp - المكتبة التي تتعامل مع اتصال I2C مع المستشعر / الفاعلين التابعين
  • VizJson.h / VizJson.cpp - المكتبة التي تنسق / تبني أي ملف JSON منشور عبر MQTT
  • config.h / config.cpp - المكتبة التي تقرأ / مربعات / تكتب ملفات التكوين على SPIFFS
  • static_i2c_callbacks.ino - عمليات رد نداء I2C لخاصية يتم استلامها ودورة طلبات العبيد تكون كاملة static_mqtt.ino - وظائف MQTT
  • static_server.ino - وظائف خادم الويب
  • static_utility.ino - الدوال المساعدة

تم استخدام وظائف INO الثابتة (بدلاً من المكتبات) لعدة أسباب ، ولكن بشكل أساسي يمكن أن تعمل وظائف Webserver و MQTT معًا بشكل جيد.

موارد SPIFFS

يمكن العثور على تفسيرات تفصيلية لملفات SPIFFS هنا.

  • favicon.ico - مورد يستخدمه محرر Ace
  • التكوين

    • device.json - تكوين الجهاز (Wifi ، MQTT …)
    • slave_metas _ #. json - تم إنشاؤه في وقت التشغيل لكل رقم عنوان تابع (#)
    • user_card _ #. json - نقطة نهاية مخصصة ليتم دمجها في deviceInfo لكل رقم عنوان تابع (#)
    • user_card_base.json - نقطة نهاية مخصصة ليتم دمجها في deviceInfo للجهاز
    • user_meta _ #. json - تتجاوز البيانات الوصفية المخصصة تلك الخاصة بالعبيد لكل رقم عنوان تابع (#)
    • user_props.json - أسماء خصائص مخصّصة لتجاوز تلك الموجودة في البيانات الوصفية للرقيق
  • كورس

    • card-webcomponent.css - ورقة أنماط لمختلف البطاقات المخصصة
    • card-webcomponent.html - مكون ويب لبطاقات مخصصة متنوعة
  • محرر

    • assimilate-logo-p.webp" />
    • edit.htm.gz - gzip من محرر Ace HTML
    • edit.htm.src - HTML الأصلي لمحرر Ace
    • favicon-32x32-p.webp" />

تحميل البرنامج الثابت

  • يمكن العثور على مستودع الكود هنا (لقطة).
  • يمكن العثور على ملف ZIP للمكتبة هنا (لقطة).
  • تعليمات "استيراد مكتبة مضغوطة" هنا.
  • بمجرد تثبيت المكتبة ، يمكنك فتح المثال "mqtt_crouton_esp8266_cors_webcomponents".
  • تعليمات إعداد Arduino لجهاز Wemos D1 Mini هنا.
  • التبعيات: ArduinoJson و TimeLib و PubSubClient و NeoTimer (انظر المرفقات في حالة حدوث تغييرات في المستودعات).

تحميل إلى SPIFFS

بمجرد تحميل الكود في Arduino IDE ، افتح device.json في مجلد data / config:

  • قم بتعديل قيمة wifi_ssid باستخدام WiFi SSID الخاص بك.
  • قم بتعديل قيمة wifi_key باستخدام مفتاح WiFi الخاص بك.
  • قم بتعديل قيمة mqtt_device_name بتعريف الجهاز المفضل لديك (لا يلزم الانضمام).
  • قم بتعديل قيمة mqtt_device_description مع وصف الجهاز المفضل لديك (في كروتون).
  • احفظ الجهاز json.
  • قم بتحميل ملفات البيانات إلى نظام SPIFFS.

نقطة الدخول الرئيسية لمثال AssimilateBus:

/*
*
* من المتوقع أن يتم التحكم في قواعد العمل الخاصة بجهازك عبر MQTT - لا يتم وضعها في هذا البرنامج الثابت
*
* بخلاف الإعداد والتكرار في هذا الملف
* الأجزاء المتحركة المهمة هي
* on_bus_received and on_bus_complete in static_i2c_callbacks.ino
* و
* mqtt_publish و mqtt_callback في static_mqtt.ino
*
*/
# تضمين "type.h"
# تضمين "VizJson.h"
# تضمين "assimilate_bus.h"
# تضمين "debug.h"
# تضمين "config.h"
#يشمل

#يشمل

// تعيين MQTT_MAX_PACKET_SIZE إلى 3000 ~ (أو احتياجاتك لـ deviceInfo json)

#يشمل
#يشمل
#يشمل
#يشمل
#يشمل
// --------------------------------- إعلانات الذاكرة
// ------------------------------------------------ - يعرّف
# حددDBG_OUTPUT_FLAG2 // 0، 1، 2 MINIMUMUM، RELEASE، FULL
#define_mqtt_pub_topic "outbox" // CROUTON CONVENTIONS
#define_mqtt_sub_topic "صندوق الوارد"
// ------------------------------------------------ - كائنات الطبقة
تصحيح _debug (DBG_OUTPUT_FLAG) ،
AssimilateBus _assimilate_bus ؛
VizJson _viz_json ؛
التكوين _config_data ؛
WiFiClient _esp_client ؛
PubSubClient _client (_esp_client) ،
WiFiUDP Udp ؛
ESP8266WebServer _server (80) ،
Neotimer _timer_property_request = Neotimer (5000) ؛
// ------------------------------------------------ - هياكل البيانات / المتغير
RuntimeDeviceData _runtime_device_data ؛
PropertyDto _dto_props [50] ؛ // بحد أقصى 10 عبيد × 5 خصائص كحد أقصى
// ------------------------------------------------ - التحكم في التدفق
volatilebool _sent_device_info = خطأ ؛
بايت _dto_props_index = 0 ؛
bool _fatal_error = false ؛
// --------------------------------- إعلانات نطاق الوظيفة
// ------------------------------------------------ - static_i2c_callbacks.ino
voidon_bus_received (بايت slave_address ، بايت prop_index ، دور دور ، اسم char [16] ، قيمة char [16]) ؛
voidon_bus_complete () ،
// ------------------------------------------------ - static_mqtt.ino
voidmqtt_callback (char * topic، byte * payload، unignedint length) ؛
voidmqtt_loop () ،
int8_tmqtt_get_topic_index (char * topic) ؛
voidmqtt_init (constchar * wifi_ssid ، constchar * wifi_password ، constchar * mqtt_broker ، int mqtt_port) ؛
voidmqtt_create_subscriptions () ،
voidmqtt_publish (char * root_topic، char * deviceName، char * endpoint، constchar * payload) ؛
boolmqtt_ensure_connect () ،
voidmqtt_subscribe (char * root_topic، char * deviceName، char * endpoint) ؛
voidi2c_set_and_get (عنوان البايت ، رمز البايت ، كونستشار * بارام) ؛
// ------------------------------------------------ - static_server.ino
String server_content_type_get (String filename) ؛
boolserver_path_in_auth_exclusion (مسار السلسلة) ؛
boolserver_auth_read (مسار السلسلة) ؛
boolserver_file_read (مسار السلسلة) ،
voidserver_file_upload () ،
voidserver_file_delete () ،
voidserver_file_create () ،
voidserver_file_list () ،
voidserver_init () ،
voidtime_services_init (char * ntp_server_name ، بايت time_zone) ؛
time_tget_ntp_time () ،
voidsend_ntp_packet (عنوان IP وعنوانه) ؛
char * time_stamp_get () ؛
// ------------------------------------------------ - static_utility.ino
سلسلة spiffs_file_list_build (مسار السلسلة) ؛
voidreport_deserialize_error () ،
voidreport_spiffs_error () ،
boolcheck_fatal_error () ،
boolget_json_card_type (بايت slave_address ، بايت prop_index ، char * card_type) ؛
boolget_struct_card_type (بايت slave_address ، بايت prop_index ، char * card_type) ؛
boolget_json_is_series (بايت slave_address ، بايت prop_index) ؛
voidstr_replace (char * src ، constchar * oldchars ، char * newchars) ؛
بايت get_prop_dto_idx (بايت slave_address ، بايت prop_index) ؛
//---------------------------------الأساسية
الإعداد باطل(){
DBG_OUTPUT_PORT.begin (115200) ،
SetupDeviceData device_data ؛
Serial.println () ، Serial.println () ، // هامش لقمامة وحدة التحكم
تأخير (5000) ؛
إذا (DBG_OUTPUT_FLAG == 2) DBG_OUTPUT_PORT.setDebugOutput (صحيح) ؛
_debug.out_fla (F ("الإعداد") ، صحيح ، 2) ؛
// الحصول على التكوين المطلوب
إذا (SPIFFS.begin ()) {
_debug.out_str (spiffs_file_list_build ("/") ، صحيح ، 2) ؛
إذا (! _config_data.get_device_data (device_data، _runtime_device_data)) {
report_deserialize_error () ،
إرجاع؛
}
}آخر{
report_spiffs_error () ،
إرجاع؛
}
// استخدام قيمة المؤقت المعينة في device.json
_timer_property_request.set (device_data.sensor_interval) ؛
mqtt_init (device_data.wifi_ssid ، device_data.wifi_key ، device_data.mqtt_broker ، device_data.mqtt_port) ؛
time_services_init (device_data.ntp_server_name ، device_data.time_zone) ؛
server_init () ؛
// إطلاق مجموعة البيانات الوصفية
_assimilate_bus.get_metadata () ،
_assimilate_bus.print_metadata_details () ،
mqtt_ensure_connect () ،
// يحتاج إلى خاصية جهاز الاستشعار (أسماء) لإكمال جمع البيانات الوصفية
_assimilate_bus.get_properties (on_bus_received، on_bus_complete) ؛
_timer_property_request.reset () ، // يمكن أن يختصر وقتًا ملحوظًا حتى هذه النقطة ، لذا ابدأها مرة أخرى
}
حلقة فارغة(){
إذا عاد (! check_fatal_error ()) ؛
mqtt_loop () ،
_server.handleClient () ،
إذا (_timer_property_request.repeat ()) {
_assimilate_bus.get_properties (on_bus_received، on_bus_complete) ؛
}
}

عرض rawmqtt_crouton_esp8266_cors_webcomponents.ino مستضاف مع ❤ بواسطة GitHub

الخطوة 5: بطاقة الجهاز

بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز
بطاقة الجهاز

بطاقة الجهاز (نوع البطاقة: assim-device) مستضافة على الموقع وليس من الضروري تقديمها من الجهاز (CORS).

قوائم صفحاتها الافتراضية:

  • موضوعات MQTT للقراءة والكتابة على الجهاز
  • نقطة الوصول التي يتصل بها الجهاز
  • ارتباط إلى محرر ملف SPIFFS المستضاف على الجهاز باستخدام محرر ACE
  • رمز عين يكشف عن صفحة إظهار / إخفاء البطاقة.

تسرد صفحة إظهار / إخفاء البطاقة:

  • كل بطاقة كعنصر منفصل
  • الخط الأزرق الغامق عند العرض
  • الخط الأسود العادي عند إخفاءه
  • أيقونة توضح نوع البطاقة.

يمكن إخفاء البطاقة عن طريق النقر فوق زر إخفاء على البطاقات ، أو النقر فوق عنصر خط أزرق غامق في القائمة. يمكن إظهار البطاقات من خلال النقر على عنصر خط أسود عادي في القائمة.

ترتبط هذه الميزة بشكل فضفاض بنخب المعلومات. إذا تم تعيين خاصية معلومات لأي من نقاط النهاية في deviceInfo ، فسيتم عرض زر المعلومات بجوار زر الإخفاء على البطاقة. عند النقر فوق المعلومات السياقية المحددة في نقطة النهاية سيتم "تحميصها" إلى النافذة.

إذا لم يتم تعريف بطاقة الجهاز ، فلن تظهر أزرار الإخفاء على البطاقات. هذا لأنه بمجرد إخفاءه ، لا توجد طريقة لإظهارها مرة أخرى.

راجع تخصيص نقطة النهاية لتفاصيل كيفية إضافة بطاقة جهاز assim عبر ملفات SPIFFS على ESP8266.

AssimilateCrouton WebComponent

إشارات حديدية>
div>
إظهار إخفاء الرمز
أنا> سبان>
شكل الجهاز
مواضيع MQTT
/ outbox / {{endPointJson.device_name}} / * div>
/ inbox / {{endPointJson.device_name}} / * div>
WIFI SSIDdiv>
{{endPointJson.ssid}} div>
عنوان IP
{{endPointJson.ip_addr}} a> div>
div>
إظهار إخفاء القائمة
عنصر>paper-item>
نموذج>
مربع قائمة الورق>
div>
كروتون بطاقة>
نموذج>
دوم>

اعرض rawassim-device.html الذي يستضيفه ❤ بواسطة GitHub

الخطوة 6: بطاقة WEEKVIEW

بطاقة WEEKVIEW
بطاقة WEEKVIEW
بطاقة WEEKVIEW
بطاقة WEEKVIEW
بطاقة WEEKVIEW
بطاقة WEEKVIEW

بطاقة عرض الأسبوع (نوع البطاقة: assim-weekview) مستضافة على الجهاز (مجلد cors). يتم حقنه في حزمة deviceInfo المنشورة لـ AssimilateCrouton ، عن طريق إضافة ملف config / user_card _ #. json إلى SPIFFS (في هذه الحالة user_card_9.json).

نظرة عامة

يتم عرض أيام الأسبوع كقوائم للفترات الزمنية. يتم تعيين دقة الفاصل الزمني باستخدام الخاصية "الفاصل الزمني" في config / user_card _ #. json. يجب أن تكون جزءًا من ساعة أو مضاعفات الساعة على سبيل المثال 10 ، 15 ، 20 ، 30 ، 60 ، 120 ، 360. يؤدي النقر فوق فتحة زمنية إلى ضمان حالة التشغيل للجهاز المرتبط في ذلك الوقت. إذا كانت الفترة الزمنية هي الآن ، فسيتم إرسال (نشر) أمر للجهاز على الفور. عادة يتم فحص الحالة / نشرها كل دقيقة. يتم حفظ التحديدات في LocalStorage ، لذلك سيتم إعادة تحميل الأوقات مع تحديث المتصفح.

استخدم حالات

في حالتها الحالية ، تعد طريقة عرض الأسبوع مناسبة للأجهزة التي يمكنها استخدام مفتاح Toggle لتصور حالتها ، أي أنها إما في وضع التشغيل أو الإيقاف وبعد ضبطها تظل في تلك الحالة. المصابيح والمراوح وسخانات المياه هي مرشحات جيدة.

القيود / الفجوات

  • يجب أن تكون الفترات الزمنية هي إحدى القيم المذكورة أعلاه
  • لا يدعم عرض الأسبوع الإجراءات اللحظية المجدولة أيضًا ، مثل تشغيل النقر لفترة وجيزة (5 ثوانٍ) مرتين في اليوم.

مستقبل

  • من المتوقع أن يتم دعم الإجراءات اللحظية.
  • التخزين المتزامن عبر الأجهزة ، لتحديدات الجدول قيد النظر.

الخطوة 7: تخصيص نقطة النهاية

كما ذكرنا في breifly في FIRMWARE ، هناك اتفاقيتان جديدتان تمت إضافتهما إلى نظام ملفات SPIFFS لتخصيص نقاط النهاية. ملفات JSON عبارة عن أجزاء يتم إضافتها إلى خاصية نقاط النهاية في حزمة معلومات الجهاز المرسلة إلى وسيط MQTT الذي يصبح تعريف لوحة المعلومات.

يتم إنشاء مفاتيح نقاط النهاية في البرامج الثابتة:

  • CC_device (بطاقة مخصصة) لـ user_card_base.json
  • CC_SLAVE_ENDPOINT NAME لـ user_card _ #. json (يمثل # العنوان التابع)

كما ذكرنا سابقًا ، هناك متغيرات يتم استبدالها بالقيم في وقت التشغيل:

  • mqtt_device_name
  • wifi_ssid
  • عنوان IP المحلي

user_card_base.json

مثال:

user_card _ #. json

مثال:

الخطوة 8: الفيديو

موصى به: