תוכן עניינים:

IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS: 8 שלבים
IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS: 8 שלבים

וִידֵאוֹ: IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS: 8 שלבים

וִידֵאוֹ: IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS: 8 שלבים
וִידֵאוֹ: מוקד טכני בזק 2024, יולי
Anonim
IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS
IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS
IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS
IOT123 - מוקד חיישנים אסמילירטיים: ICOS10 CORS WEBCOMPONENTS

ה- ASSIMILATE SENSOR/ACTOR עבדים מטמיעים מטא נתונים המשמשים להדמיה חזותית בקרוטון. מבנה זה שונה במקצת מהקודמים; אין שינויים בחומרה. הקושחה תומכת כעת באירוח עורכים מותאמים אישית (עשירים יותר) הניתנים לשילוב במבנה העדכני ביותר של AssimilateCrouton. תשומת לב נוספת תינתן להסבר הקושחה ולוח המחוונים של MQTT במאמר זה.

אחד היתרונות של הגשת רכיבי Web מהמכשיר שהם שולטים בו הוא שהשליטה המתקדמת יותר במכשיר מוגבלת לרשת שאליה מחובר המכשיר: נקודת הגישה ל- WiFi שלך. למרות שברגע שאתה משתמש בשרת MQTT עם אימות יש דמיון להגנה, ברשתות ציבוריות אם אתה עוזב את הדפדפן לרגע (אתר AssimilateCrouton) מישהו יכול לקפוץ ולשלוט במכשירי האוטומציה שלך. תכונה זו של CORS WebComponent מאפשרת להציג רק בפומבי קריאות (טמפ ', רמות אור, לחות) ופונקציות פקודה (הפעלה/כיבוי, תזמון) זמינות רק מרשת המכשירים.

במכשיר, כל תכונות שרת האינטרנט עם אימות ואירוח ב- SPIFFS עדיין נתמכות, אך הושם דגש מיוחד על תמיכה ב- CORS (Cross Origin Resource Sharing) על רכיבי Webmer Polymer (Crouton משתמש בפולימר 1.4.0).

ב- AssimilateCrouton (המזלג של קרוטון המשמש עבור Assimilate IOT Network) השינויים כוללים

  • תמיכה בכרטיס התקן (assim-device) שבין היתר מציג ומסתיר, עבור משתמש, כרטיסים בודדים למכשיר
  • נכס info על כל הכרטיסים המציג טוסט של מידע הקשר שימושי לכרטיס
  • תמיכה ברכיבי אינטרנט של CORS, במקרה זה מתארח בשרת האינטרנט במכשיר (ESP8266).

שלב 1: CROUTON

קרוּטוֹן
קרוּטוֹן
קרוּטוֹן
קרוּטוֹן

Crouton הוא לוח מחוונים המאפשר לך לדמיין ולשלוט במכשירי IOT שלך עם הגדרה מינימלית. בעיקרו של דבר, זהו לוח המחוונים הקל ביותר להתקנה עבור כל חובב חומרת IOT המשתמש רק ב- MQTT ו- JSON.

ל- ASSIMILATE SLAVES (חיישנים ושחקנים) מוטבעות מטא נתונים ומאפיינים בהם המאסטר משתמש כדי לבנות את מנות ה- json deviceInfo שבהן משתמש קרוטון לבניית לוח המחוונים. המתווך בין ASSIMILATE NODES לקרואטון הוא מתווך MQTT שהוא ידידותי לשקעים: יתוש משמש להדגמה.

מכיוון שה- ASSIMILATE MASTER מבקש מאפיינים, הוא מעצב את ערכי התגובה בפורמט הנדרש לעדכוני Crouton. מזלג AssimilateCrouton מוסיף כמה תכונות המאפשרות לך לפזר את כללי העסק שמפעילים את המכשיר שלך כלומר מכשיר IOT אינו זקוק לכללי עסקים מוטבעים, הוא רק צינור לתקשורת MQTT/I2C לשחקנים וחיישנים עבדים חכמים יותר (ATTINY נשלטים) וחיישן..

שלב 2: הקצאת קרוטון

קרוס אוטומטי
קרוס אוטומטי

שינויים בקרוטון

השינויים מהגרסה המזלגת כוללים:

  • אם נקודת קצה מכילה נכס נתיב, רכיב ה- Web של הכרטיס יבצע HTMLImport עבור משאב CORS (שרת האינטרנט ב- ESP8266 במבנה זה).
  • כל המשאבים במעלה הזרם של (תלות של) רכיב אינטרנט של CORS מוזכרים כאילו הם מוגשים מאתר Crouton; כאשר הם לא מצליחים לטעון מטפל חריג דוחה את הנתיבים ונטען אם מהאתר.
  • מוצג זמן מקומי נוכחי בצד ימין למעלה, שימושי לתזמון אימות.

תלות ופולימר בפולימר

ניתן לארח את העלים של עץ תלות בפולימר ב- CORS. מכיוון שניתן להשתמש בתלות השורש מספר פעמים באפליקציה, לא ניתן להתייחס אליהן משני מיקומים (האתר והמכשיר) מכיוון שמטען ה- Polymer Module Loader מתייחס אליהם כאל 2 משאבים נפרדים ושגיאות רישום מרובות מכשילות אפליקציה במהירות.

מסיבה זו רכיב האינטרנט לכרטיס (קובץ HTML ב- 1.4.0) וקובץ ה- CSS המשויך הם הקבצים היחידים המתארחים במכשיר. התלות האחרות מתייחסות כאילו רכיב ה- Web מתארח בתיקיית "html" באתר המקור, מה שמקל על פיתוח רכיבי ה- Web מהתיקיה עד שמוכן להעלות ל- SPIFFS ב- ESP8266. AssimilateCrouton יברר כיצד להשיג את הקבצים הנכונים.

פְּרִיסָה

יוצר edfungus של הקרוטון המקורי כתב את המקור ב- Pug/Less והיה לו מחזיק כלים של NPM/Grunt. עיבדתי את הפאג/פחות כ- HTML/css ורק ערכתי/הפצתי את הקבצים המעובדים. זה שבר את שרשרת הכלים NPM/Grunt. תיקון זה מכוסה בסעיף העתיד.

תוכל לבדוק את לוח המחוונים באופן מקומי בתיבת ה- DEV שלך:

  • משורת הפקודה בתיקיית השורש
  • npm התחלה
  • השרת lite מסובב עבור https:// localhost: 10001

פריסה לשרת אינטרנט סטטי:

  • העתק את כל התיקיות למעט node_modules
  • העתק index.html (ואולי web.config)

עתיד

אחת המטרות העיקריות היא לשדרג ל- Polymer3 ולעבוד מתוך ה- Polymer CLI. הוספת עורכים מתקדמים ומסגרת למפתחי IOT לפתח משלהם היא בעדיפות גבוהה. בסופו של דבר המערכת האוטומטית המתקדמת תופעל באופן מלא מלקוחות MQTT מנותקים כמו AssimilateCrouton.

דוגמה לחבילת deviceInfo המשמשת ל- AssimilateCrouton:

{
"deviceInfo": {
"endPoints": {
"CC_device": {
"device_name": "ash_mezz_A3",
"type card": "מכשיר אסים",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
"נקודות קצה": [
{
"title": "לגדל אורות",
"card-type": "קרוטון-פשוט-להחליף",
"נקודת קצה": "מתג"
},
{
"title": "אורות צמחים",
"card-type": "crouton-assim-weekview",
"נקודת קצה": "CC_switch"
}
]
},
"CC_switch": {
"card-type": "view-assim week",
"info": "הדלק או כבה את האורות בחלקי זמן של 15 דקות",
"נתיב": "https://192.168.8.104/cors",
"title": "אורות צמחים",
"interval_mins": 15,
"ערכים": {
"ערך": ""
}
},
"החלף": {
"title": "לגדל אורות",
"card-type": "קרוטון-פשוט-להחליף",
"info": "הדלקה או כיבוי של אורות באופן אד -הוק",
"תוויות": {
"false": "כבוי",
"true": "ON"
},
"אייקונים": {
"false": "sun-o",
"true": "sun-o"
},
"ערכים": {
"ערך": 0
}
}
},
"status": "טוב",
"name": "ash_mezz_A3",
"description": "משרד באשמור, הביניים, אזור A2",
"color": "#4D90FE"
}
}

הצג rawdeviceInfo.json המתארח אצל ❤ על ידי GitHub

שלב 3: הרכבה של מכשירים

הרכבה של המכשיר
הרכבה של המכשיר
הרכבה של המכשיר
הרכבה של המכשיר
הרכבה של המכשיר
הרכבה של המכשיר

מכיוון שאין שינויים בחומרה, להלן הקישורים למידע הרלוונטי:

  • הרכבה של מעטפת
  • חומרים וכלים
  • הכנת MCU
  • הכנת דיור MCU
  • בניית מתג הצדדים הנמוך/עבדים לוח הבת
  • הרכבת המרכיבים העיקריים

שלב 4: תוכנת תוכנה

תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה
תוכנת תוכנה

שינויים עיקריים בבניין זה

על מנת שאפליקציית AssimilateCrouton תוכל להשתמש במשאבי CORS מהמכשיר, יש להגדיר כותרות תגובה בצורה מסוימת. זה יושם במהדורה זו של הקושחה (static_server.ino => server_file_read ()).

כמו כן, גרף התלות העיקרי של פולימר צריך להיות ממוצא אחד. נעשה שימוש באסטרטגיה להוספת מטפל מטעות (corsLinkOnError) לקבצי SPIFFS CORS כדי לטעון מחדש את המשאבים מאתר AssimilateCrouton כאשר הם אינם נמצאים במכשיר.

למערכת הקבצים SPIFFS נוספו 2 מוסכמות חדשות להתאמה אישית של נקודות הקצה שנוצרות ב- deviceInfo - שבהן AssimilateCrouton משתמש ליצירת כרטיסי לוח המחוונים:

  • /config/user_card_base.json הגדרת נקודת קצה כאשר משתני זמן ריצה מתחלפים תחילה:,,. בדרך כלל כאן יתווסף כרטיס מכשיר ה- assim. זה לא מתקשר בחזרה עם המכשיר.
  • /config/user_card_#.json הגדרת נקודת קצה כאשר משתני זמן ריצה מתחלפים תחילה:,,. זה בדרך כלל המקום שבו העורכים העשירים כמו כרטיס assim-weekview יתווספו לעבד 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 - הספרייה הקוראת/תיבות/כותבת קבצי config ב- SPIFFS
  • static_i2c_callbacks.ino - שיחות החזרה של I2C לנכס המתקבל ומחזור בקשות העבדים שהן מלאות static_mqtt.ino - פונקציות MQTT
  • static_server.ino - פונקציות שרת האינטרנט
  • static_utility.ino - פונקציות עוזר

הפונקציות הסטטיות של INO שימשו (במקום ספריות) מסיבות שונות, אך בעיקר כדי שפונקציות שרת האינטרנט ו- MQTT יוכלו לשחק היטב יחד.

משאבי הספיפים

הסברים מפורטים על קבצי SPIFFS ניתן למצוא כאן.

  • favicon.ico - משאב המשמש את עורך אייס
  • config

    • device.json - התצורה של המכשיר (Wifi, MQTT …)
    • slave_metas _#. json - נוצר בזמן ריצה לכל מספר כתובת של עבד (#)
    • user_card _#. json - נקודת קצה מותאמת אישית שישולבה ב- deviceInfo עבור כל מספר כתובת של עבד (#)
    • user_card_base.json - נקודת קצה מותאמת אישית שישולבה ב- deviceInfo עבור המכשיר
    • user_meta _#. json - מטא נתונים מותאמים אישית עוקפים את זה של העבדים עבור כל מספר כתובת עבדים (#)
    • user_props.json - שמות נכסים מותאמים אישית כדי לעקוף את אלה במטא נתונים של העבדים
  • cors

    • card -webcomponent.css - גיליון סגנונות לכרטיסים מותאמים אישית שונים
    • card -webcomponent.html - רכיב אינטרנט לכרטיסים מותאמים אישית שונים
  • עוֹרֵך

    • assimilate -logo-p.webp" />
    • edit.htm.gz - gzip של HTML עורך Ace
    • edit.htm.src - HTML המקורי של עורך האס
    • favicon -32x32-p.webp" />

העלאת תוכנת התוכנה

  • ניתן למצוא את מאגר הקוד כאן (תמונת מצב).
  • ניתן למצוא כאן ZIP של הספרייה (תמונת מצב).
  • הוראות "ייבוא ספריית ZIP" כאן.
  • לאחר התקנת הספרייה תוכל לפתוח את הדוגמה "mqtt_crouton_esp8266_cors_webcomponents".
  • הוראות להגדרת Arduino ל- Wemos D1 Mini כאן.
  • תלות: ArduinoJson, TimeLib, PubSubClient, NeoTimer (ראה קבצים מצורפים אם שוברים שינויים במאגרים).

העלה ל- SPIFFS

לאחר שהקוד נטען ב- Arduino IDE, פתח את device.json בתיקיית הנתונים/config:

  • שנה את הערך של wifi_ssid בעזרת ה- SSID של ה- WiFi שלך.
  • שנה את הערך של wifi_key בעזרת מפתח ה- WiFi שלך.
  • שנה את הערך של mqtt_device_name בעזרת זיהוי המכשיר המועדף עליך (אין צורך בהצטרפות).
  • שנה את הערך של mqtt_device_description בעזרת תיאור ההתקן המועדף עליך (ב- Crouton).
  • שמור device.json.
  • העלה את קבצי הנתונים ל- SPIFFS.

נקודת הכניסה העיקרית לדוגמא AssimilateBus:

/*
*
*כללי העסקים של המכשיר שלך צפויים להיות נשלטים באמצעות MQTT - לא קשים בכלי זה.
*
* מלבד ההתקנה והלולאה בקובץ זה
* החלקים הנעים החשובים הם
* on_bus_recepted ו- on_bus_complete ב- static_i2c_callbacks.ino
* ו
* mqtt_publish ו- mqtt_callback ב static_mqtt.ino
*
*/
#כלול "types.h"
#כלול "VizJson.h"
#כלול "assimilate_bus.h"
#כלול "debug.h"
#כלול "config.h"
#לִכלוֹל

#לִכלוֹל

// הגדר את MQTT_MAX_PACKET_SIZE ל- ~ 3000 (או את הצרכים שלך עבור deviceInfo json)

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
// --------------------------------- הצהרות זיכרון
// ------------------------------------------------ - מגדיר
#defineDBG_OUTPUT_FLAG2 // 0, 1, 2 MINIMUMUM, RELEASE, FULL
#define_mqtt_pub_topic "תיבת דואר יוצא" // התראות CROUTON
#define_mqtt_sub_topic "תיבת דואר נכנס"
// ------------------------------------------------ - חפצים בכיתה
ניפוי באגים _ debug (DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
Config _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 עבדים x מקסימום 5 נכסים
// ------------------------------------------------ -- בקרת זרימה
volatilebool _sent_device_info = שקר;
בייט _dto_props_index = 0;
bool _fatal_error = false;
// --------------------------------- הצהרות היקף פונקציות
// ------------------------------------------------ - static_i2c_callbacks.ino
voidon_bus_received (בת slave_address, בת prop_index, תפקיד תפקיד, שם צ'אר [16], ערך char [16]);
voidon_bus_complete ();
// ------------------------------------------------ - static_mqtt.ino
voidmqtt_callback (char* topic, byte* מטען, אורך לא חתום);
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 *point end, constchar *payload);
boolmqtt_ensure_connect ();
voidmqtt_subscribe (char *root_topic, char *deviceName, char *end endpoint);
voidi2c_set_and_get (כתובת בתים, קוד בתים, constchar *param);
// ------------------------------------------------ - static_server.ino
מחרוזת server_content_type_get (שם קובץ מחרוזת);
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, byte time_zone);
time_tget_ntp_time ();
voidsend_ntp_packet (IPAddress & address);
char *time_stamp_get ();
// ------------------------------------------------ - static_utility.ino
String 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);
//---------------------------------רָאשִׁי
הגדרת voids () {
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 (); // יכול לחרוג מהזמן הבולט עד לנקודה זו אז התחילו מחדש
}
voidloop () {
if (! 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 EDITOR
  • סמל עיניים החושף את דף הכרטיס הצג/הסתר.

דף הכרטיס הצג/הסתר רשימות:

  • כל כרטיס כפריט נפרד
  • גופן כחול מודגש בעת הצגה
  • גופן רגיל שחור כשהוא מוסתר
  • אייקון המתאר את סוג הכרטיס.

ניתן להסתיר את הכרטיס על ידי לחיצה על כפתור ההסתרה בכרטיסים, או לחיצה על פריט גופן כחול מודגש ברשימה. ניתן להציג את הכרטיסים על ידי לחיצה על פריט גופן שחור-רגיל ברשימה.

תכונה זו קשורה באופן רופף לתכונה זו. אם לאחד מנקודות הקצה ב- deviceInfo יש מאפיין מידע מוקצה, כפתור מידע יופיע לצד לחצן ההסתרה בכרטיס. כאשר תלחץ על המידע ההקשרי המוגדר בנקודת הסיום "קלוי" לחלון.

אם כרטיס המכשיר אינו מוגדר, לחצני ההסתרה לא יוצגו בכרטיסים. הסיבה לכך היא שברגע שהוסתרו אין דרך להציג אותם שוב.

עיין בהתאמה אישית של ENDPOINT כדי לפרט כיצד ניתן להוסיף את כרטיס התקן assim באמצעות קבצי SPIFFS ב- ESP8266.

AssimilateCrouton WebComponent

ברזל-אותות>
div>
הצג הסתר סמל
i> span>
טופס מכשיר
MQTT TOPICSdiv>
/outbox/{{endPointJson.device_name}}/*div>
/דואר נכנס/{{endPointJson.device_name}}/*div>
WIFI SSIDdiv>
{{endPointJson.ssid}} div>
כתובת IP כתובת IP>
{{endPointJson.ip_addr}} a> div>
div>
הצג רשימת הסתר
element>נייר-פריט>
תבנית>
paper-listbox>
div>
קרוטון-קארד>
תבנית>
dom-module>

הצג rawassim-device.html המתארח אצל ❤ על ידי GitHub

שלב 6: כרטיס WEEKVIEW

כרטיס WEEKVIEW
כרטיס WEEKVIEW
כרטיס WEEKVIEW
כרטיס WEEKVIEW
כרטיס WEEKVIEW
כרטיס WEEKVIEW

כרטיס ה- viewview (סוג כרטיס: assim-weekview) מאוחסן במכשיר (תיקיית cors). הוא מוזרק לחבילת deviceInfo שפורסמה עבור AssimilateCrouton, על ידי הוספת קובץ config/user_card _#. Json ל- SPIFFS (במקרה זה user_card_9.json).

סקירה כללית

ימי חול מוצגים כרשימות של משבצות זמן. הפירוט של משבצת הזמן נקבע עם המאפיין "interval_mins" ב- config/user_card _#. Json. זה צריך להיות שבריר של שעה או כפולות של שעה למשל 10, 15, 20, 30, 60, 120, 360. לחיצה על משבצת זמן תוודא שמצב הפעלה יתבצע עבור המכשיר המשויך בזמן זה. אם משבצת הזמן היא כעת, פקודה נשלחת (מתפרסמת) מיידית עבור המכשיר. בדרך כלל המדינה נבדקת/מתפרסמת בכל דקה. הבחירות נשמרות ב- LocalStorage, כך שהזמנים ייטענו מחדש עם רענון דפדפן.

השתמש במקרים

במצבו הנוכחי, תצוגת השבוע מתאימה למכשירים שיכולים להשתמש במתג Toggle כדי לדמיין את מצבם כלומר הם מופעלים או כבושים ולאחר שהם מוגדרים הם נשארים במצב זה. אורות, מאווררים ומחממי מים הם מועמדים טובים.

הגבלות/מערות

  • המרווח_דקות חייב להיות אחד מהערכים שהוזכרו לעיל
  • תצוגת השבוע אינה תומכת בפעולות רגעיות המתוכננות אף הן, כגון הפעלת הקשה קצרה (5 שניות) פעמיים ביום.

עתיד

  • צפוי כי פעולות רגעיות יתמכו.
  • אחסון מסונכרן בין מכשירים בהתחשב בבחירות לוח הזמנים.

שלב 7: התאמה אישית

כפי שצוין ברבים ב- FIRMWARE, ישנן 2 מוסכמות חדשות המתווספות למערכת הקבצים SPIFFS להתאמה אישית של נקודות הקצה. קבצי JSON הם שברים המתווספים למאפיין נקודות הקצה במנת deviceInfo המפורסמת לברוקר MQTT שהופכת להגדרת לוח המחוונים.

מפתחות נקודות הקצה נוצרות בקושחה:

  • CC_device (כרטיס מותאם אישית) עבור user_card_base.json
  • CC_SLAVE_ENDPOINT NAME עבור כרטיס המשתמש_# _ json (# הוא כתובת העבד)

כפי שצוין קודם, ישנם משתנים המתחלפים בערכים בזמן ריצה:

  • mqtt_device_name
  • wifi_ssid
  • local_ip

user_card_base.json

דוגמה:

user_card _#. json

דוגמה:

שלב 8: סרטונים

מוּמלָץ: