Mục lục:

IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10: 8 bước
IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10: 8 bước

Video: IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10: 8 bước

Video: IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10: 8 bước
Video: IOT123 - ASSIMILATE SENSOR HUB: ICOS10 IDC PANEL ASSEMBLY 2024, Tháng bảy
Anonim
IOT123 - HUB CẢM BIẾN HỖ TRỢ: TRANG WEB CORS ICOS10
IOT123 - HUB CẢM BIẾN HỖ TRỢ: TRANG WEB CORS ICOS10
IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10
IOT123 - HUB CẢM BIẾN HỖN HỢP: TRANG WEB CORS ICOS10

ASSIMILATE SENSOR / ACTOR Slaves nhúng siêu dữ liệu được sử dụng để xác định hình ảnh trực quan trong Crouton. Bản dựng này hơi khác so với những bản trước; không có thay đổi phần cứng. Phần mềm hiện hỗ trợ các trình chỉnh sửa tùy chỉnh lưu trữ (phong phú hơn) có thể được tích hợp vào bản dựng mới nhất của AssimilateCrouton. Chúng tôi sẽ chú ý nhiều hơn đến việc giải thích phần sụn và bảng điều khiển MQTT trong bài viết này.

Một trong những lợi thế của việc phân phát WebComponents từ thiết bị mà họ điều khiển, đó là quyền kiểm soát nâng cao hơn của thiết bị bị giới hạn ở mạng mà thiết bị được kết nối: Điểm truy cập WiFi của bạn. Mặc dù một khi bạn sử dụng máy chủ MQTT có xác thực thì khả năng bảo vệ giống nhau, nhưng trên các mạng công cộng nếu bạn rời khỏi Trình duyệt trong giây lát (trang web AssimilateCrouton) thì ai đó có thể nhảy vào và kiểm soát các thiết bị tự động hóa của bạn. Tính năng CORS WebComponent này giúp chỉ có thể hiển thị công khai các chỉ số (nhiệt độ, mức độ ánh sáng, độ ẩm) và các chức năng lệnh (bật / tắt, lập lịch) chỉ có sẵn từ mạng thiết bị.

Trên thiết bị, tất cả các tính năng của máy chủ web với Xác thực và Lưu trữ trong SPIFFS vẫn được hỗ trợ, nhưng tập trung đặc biệt vào hỗ trợ CORS (Chia sẻ tài nguyên chéo) cho Polymer WebComponents (Crouton sử dụng Polymer 1.4.0).

Trong AssimilateCrouton (nhánh của Crouton được sử dụng cho Assimilate IOT Network), những thay đổi bao gồm

  • hỗ trợ cho thẻ Thiết bị (đồng hóa thiết bị) mà trong số những thứ khác hiển thị và ẩn, đối với người dùng, các thẻ riêng lẻ cho thiết bị
  • thuộc tính thông tin trên tất cả các thẻ hiển thị nhiều thông tin hữu ích về ngữ cảnh cho thẻ
  • hỗ trợ cho các thành phần web CORS, trong trường hợp này được lưu trữ trên máy chủ web trên thiết bị (ESP8266).

Bước 1: CROUTON

CROUTON
CROUTON
CROUTON
CROUTON

Croutonis một bảng điều khiển cho phép bạn hình dung và điều khiển các thiết bị IOT của mình với thiết lập tối thiểu. Về cơ bản, đây là bảng điều khiển dễ thiết lập nhất cho bất kỳ người đam mê phần cứng IOT nào chỉ sử dụng MQTT và JSON.

ASSIMILATE SLAVES (cảm biến và tác nhân) đã nhúng siêu dữ liệu và thuộc tính mà cái chính sử dụng để xây dựng gói json deviceInfo mà Crouton sử dụng để xây dựng bảng điều khiển. Trung gian giữa ASSIMILATE NODES và Crouton là nhà môi giới MQTT thân thiện với websockets: Mosquito được sử dụng cho bản demo.

Khi ASSIMILATE MASTER yêu cầu thuộc tính, nó định dạng các giá trị phản hồi theo định dạng bắt buộc cho các bản cập nhật Crouton. AssimilateCrouton fork bổ sung một số tính năng cho phép bạn phân quyền các quy tắc kinh doanh chạy thiết bị của bạn, tức là thiết bị IOT không cần bất kỳ quy tắc kinh doanh nhúng nào, nó chỉ là một đường ống cho giao tiếp MQTT / I2C với các tác nhân và cảm biến phụ thông minh hơn (được kiểm soát bởi ATTINY).

Bước 2: HỖ TRỢ CROUTON

ASSIMILATE CROUTON
ASSIMILATE CROUTON

THAY ĐỔI ĐỐI VỚI CROUTON

Những thay đổi so với phiên bản đã chia tách bao gồm:

  • nếu một điểm cuối có thuộc tính đường dẫn được xác định, WebComponent cho thẻ sẽ thực hiện một HTMLImport cho tài nguyên CORS (máy chủ web trên ESP8266 trong bản dựng này).
  • mọi tài nguyên ngược dòng từ (phụ thuộc của) CORS WebComponent đều được tham chiếu như thể chúng được cung cấp từ trang web Crouton; khi họ không tải được một trình xử lý ngoại lệ sẽ điều chỉnh lại các đường dẫn và tải nếu từ trang web.
  • giờ địa phương hiện tại được hiển thị ở trên cùng bên phải, hữu ích cho việc lập lịch xác minh.

CÁC PHỤ LỤC VÀ CORS CỦA POLYMER

Các lá của cây phụ thuộc Polymer có thể được lưu trữ trong CORS. Vì các phần phụ thuộc gốc có thể được sử dụng nhiều lần trong một ứng dụng, nên chúng không thể được tham chiếu từ 2 vị trí (trang web và thiết bị) vì Trình tải mô-đun Polymer coi chúng như 2 tài nguyên riêng biệt và nhiều lỗi đăng ký nhanh chóng tạo ra một ứng dụng.

Vì lý do này, WebComponent cho thẻ (tệp HTML trong 1.4.0) và tệp CSS được liên kết là những tệp duy nhất được lưu trữ trên thiết bị. Các phần phụ thuộc khác được tham chiếu như thể WebComponent được lưu trữ trong thư mục "html" trên trang web gốc, điều này giúp dễ dàng phát triển các WebComponents từ thư mục đó cho đến khi sẵn sàng tải lên SPIFFS trên ESP8266. AssimilateCrouton sẽ tìm cách lấy các tệp chính xác.

KHAI THÁC

Người sáng tạo edfungus của Crouton gốc đã viết nguồn bằng Pug / Less và có chuỗi công cụ NPM / Grunt. Tôi đã kết xuất Pug / Less dưới dạng HTML / css và chỉ chỉnh sửa / phân phối các tệp được kết xuất. Điều này đã phá vỡ chuỗi công cụ NPM / Grunt. Việc khắc phục điều này được đề cập trong phần TƯƠNG LAI.

Bạn có thể kiểm tra cục bộ trang tổng quan trên hộp DEV của mình:

  • Từ dòng lệnh trong thư mục gốc
  • npm bắt đầu
  • máy chủ lite được tạo ra cho https:// localhost: 10001

Triển khai đến một máy chủ web tĩnh:

  • sao chép tất cả các thư mục ngoại trừ node_modules
  • sao chép index.html (và có thể cả web.config)

TƯƠNG LAI

Một trong những mục tiêu chính là nâng cấp lên Polymer3 và hoạt động từ Polymer CLI. Việc thêm các trình soạn thảo và khuôn khổ nâng cao để các nhà phát triển IOT tự phát triển là ưu tiên hàng đầu. Cuối cùng, hệ thống tự động nâng cao sẽ được chạy hoàn toàn từ các ứng dụng MQTT riêng biệt như AssimilateCrouton.

Ví dụ về gói deviceInfo được sử dụng cho AssimilateCrouton:

{
"Thông tin thiết bị": {
"endPoints": {
"CC_device": {
"device_name": "ash_mezz_A3",
"card-type": "assim-device",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
"điểm cuối": [
{
"title": "Grow Lights",
"card-type": "crouton-simple-toggle",
"endpoint": "switch"
},
{
"title": "Đèn trồng cây",
"card-type": "crouton-assim-weekview",
"endpoint": "CC_switch"
}
]
},
"CC_switch": {
"card-type": "assim-weekview",
"thông tin": "Bật hoặc tắt đèn trong các khoảng thời gian 15 phút",
"path": "https://192.168.8.104/cors",
"title": "Đèn trồng cây",
"khoảng_phút": 15,
"giá trị": {
"giá trị": ""
}
},
"chuyển": {
"title": "Grow Lights",
"card-type": "crouton-simple-toggle",
"thông tin": "Bật hoặc tắt đèn trên cơ sở đặc biệt",
"nhãn": {
"false": "TẮT",
"true": "BẬT"
},
"biểu tượng": {
"false": "sun-o",
"true": "sun-o"
},
"giá trị": {
"giá trị": 0
}
}
},
"status": "good",
"name": "ash_mezz_A3",
"description": "Văn phòng tại Ashmore, Mezzanine, Area A2",
"màu": "# 4D90FE"
}
}

xem rawdeviceInfo.json được lưu trữ với ❤ bởi GitHub

Bước 3: LẮP RÁP THIẾT BỊ

LẮP RÁP THIẾT BỊ
LẮP RÁP THIẾT BỊ
LẮP RÁP THIẾT BỊ
LẮP RÁP THIẾT BỊ
LẮP RÁP THIẾT BỊ
LẮP RÁP THIẾT BỊ

Vì không có thay đổi phần cứng, đây là các liên kết đến thông tin liên quan:

  • Shell Assembly
  • Vật liệu và Công cụ
  • Chuẩn bị MCU
  • MCU Chuẩn bị Nhà ở
  • Xây dựng các nô lệ Công tắc bên thấp / ĐẶT LẠI Con gái-board
  • Lắp ráp các thành phần chính

Bước 4: PHẦN MỀM

PHẦN MỀM
PHẦN MỀM
PHẦN MỀM
PHẦN MỀM
PHẦN MỀM
PHẦN MỀM
PHẦN MỀM
PHẦN MỀM

CHÍNH THAY ĐỔI TÒA NHÀ NÀY

Để ứng dụng AssimilateCrouton có thể sử dụng tài nguyên CORS từ thiết bị, tiêu đề phản hồi cần được định cấu hình theo một cách cụ thể. Điều này đã được triển khai trong bản phát hành phần sụn này (static_server.ino => server_file_read ()).

Ngoài ra, đồ thị phụ thuộc chính cho Polymer cần phải từ một nguồn gốc duy nhất. Một chiến lược đã được sử dụng để thêm một trình xử lý lỗi (corsLinkOnError) vào tệp SPIFFS CORS để tải lại các tài nguyên từ trang web AssimilateCrouton khi chúng không được tìm thấy trên thiết bị.

Có 2 quy ước mới được thêm vào hệ thống tệp SPIFFS để tùy chỉnh các điểm cuối được tạo trong deviceInfo - AssimilateCrouton sử dụng để tạo thẻ bảng điều khiển:

  • /config/user_card_base.json Định nghĩa điểm cuối với các biến thời gian chạy được hoán đổi trước:,,. Đây thường là nơi thẻ thiết bị đồng hóa sẽ được thêm vào. Điều này không liên lạc lại với thiết bị.
  • /config/user_card_#.json Định nghĩa điểm cuối với các biến thời gian chạy được hoán đổi trước:,,. Đây thường là nơi các trình chỉnh sửa phong phú như thẻ assim-weekview sẽ được thêm vào nối với I2C slave (tác nhân / cảm biến) liên quan đến #.

THE SKETCH / THƯ VIỆN

Ở giai đoạn này, dự án đã được đóng gói làm ví dụ cho thư viện AssimilateBus Arduino. Điều này chủ yếu là để làm cho tất cả các tệp cần thiết dễ dàng truy cập từ Arduino IDE. Các đồ tạo tác mã chính là:

  • mqtt_crouton_esp8266_cors_webcomponents.ino - điểm vào chính.
  • assimilate_bus.h / assimilate_bus.cpp - thư viện xử lý giao tiếp I2C với Slave Sensor / Actors
  • VizJson.h / VizJson.cpp - thư viện định dạng / xây dựng bất kỳ JSON nào được xuất bản qua MQTT
  • config.h / config.cpp - thư viện đọc / box / ghi các tệp cấu hình trên SPIFFS
  • static_i2c_callbacks.ino - lệnh gọi lại I2C cho một thuộc tính đang được nhận và chu kỳ yêu cầu nô lệ hoàn thành static_mqtt.ino - các hàm MQTT
  • static_server.ino - các chức năng của máy chủ web
  • static_utility.ino - hàm trợ giúp

Các hàm INO tĩnh được sử dụng (thay vì thư viện) vì nhiều lý do, nhưng chủ yếu là để các hàm Webserver và MQTT có thể hoạt động tốt cùng nhau.

NGUỒN NHÂN LỰC

Giải thích chi tiết về các tệp SPIFFS có thể được tìm thấy tại đây.

  • favicon.ico - tài nguyên được Ace Editor sử dụng
  • cấu hình

    • device.json - cấu hình cho thiết bị (Wifi, MQTT…)
    • slave_metas _ #. json - được tạo trong thời gian chạy cho mỗi số địa chỉ nô lệ (#)
    • user_card _ #. json - điểm cuối tùy chỉnh được tích hợp vào deviceInfo cho mỗi số địa chỉ phụ (#)
    • user_card_base.json - điểm cuối tùy chỉnh được tích hợp vào deviceInfo cho thiết bị
    • user_meta _ #. json - siêu dữ liệu tùy chỉnh ghi đè siêu dữ liệu của các nô lệ cho mỗi số địa chỉ nô lệ (#)
    • user_props.json - tên thuộc tính tùy chỉnh để ghi đè các tên thuộc tính trong siêu dữ liệu của nô lệ
  • cors

    • card-webcomponent.css - biểu định kiểu cho các thẻ tùy chỉnh khác nhau
    • card-webcomponent.html - webcomponent cho các thẻ tùy chỉnh khác nhau
  • biên tập viên

    • assimilate-logo-p.webp" />
    • edit.htm.gz - gzip của Ace Editor HTML
    • edit.htm.src - HTML gốc của Ace Editor
    • favicon-32x32-p.webp" />

TẢI LÊN PHẦN MỀM

  • Kho mã có thể được tìm thấy ở đây (ảnh chụp nhanh).
  • Bạn có thể tìm thấy tệp ZIP của thư viện tại đây (ảnh chụp nhanh).
  • Hướng dẫn "Nhập thư viện ZIP" tại đây.
  • Sau khi thư viện được cài đặt, bạn có thể mở ví dụ "mqtt_crouton_esp8266_cors_webcomponents".
  • Hướng dẫn thiết lập Arduino cho Wemos D1 Mini tại đây.
  • Phụ thuộc: ArduinoJson, TimeLib, PubSubClient, NeoTimer (xem tệp đính kèm nếu vi phạm các thay đổi trong kho).

TẢI LÊN SPIFFS

Khi mã đã được tải vào Arduino IDE, hãy mở device.json trong thư mục data / config:

  • Sửa đổi giá trị của wifi_ssid bằng SSID WiFi của bạn.
  • Sửa đổi giá trị của wifi_key bằng Khóa WiFi của bạn.
  • Sửa đổi giá trị của mqtt_device_name bằng Nhận dạng thiết bị ưa thích của bạn (không cần tham gia).
  • Sửa đổi giá trị của mqtt_device_description bằng Mô tả thiết bị ưa thích của bạn (trong Crouton).
  • Lưu thiết bị.json.
  • Tải các tệp dữ liệu lên SPIFFS.

Điểm nhập chính cho ví dụ AssimilateBus:

/*
*
* CÁC QUY TẮC KINH DOANH ĐỐI VỚI THIẾT BỊ CỦA BẠN ĐƯỢC DỰ KIẾN ĐƯỢC KIỂM SOÁT QUA MQTT - KHÔNG ĐƯỢC BẮT ĐẦU VÀO PHẦN CỨNG NÀY
*
* Khác với thiết lập và vòng lặp trong tệp này
* các bộ phận chuyển động quan trọng là
* on_bus_receive và on_bus_complete trong static_i2c_callbacks.ino
* và
* mqtt_publish và mqtt_callback trong static_mqtt.ino
*
*/
#include "styles.h"
#include "VizJson.h"
#include "assimilate_bus.h"
#include "debug.h"
#include "config.h"
#bao gồm

#bao gồm

// đặt MQTT_MAX_PACKET_SIZE thành ~ 3000 (hoặc nhu cầu của bạn đối với json deviceInfo)

#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
// --------------------------------- KHAI BÁO BỘ NHỚ
// ------------------------------------------------ - định nghĩa
# defineDBG_OUTPUT_FLAG2 // 0, 1, 2 TỐI THIỂU, RELEASE, FULL
#define_mqtt_pub_topic "hộp thư đi" // CROUTON CONVENTIONS
#define_mqtt_sub_topic "hộp thư đến"
// ------------------------------------------------ - đối tượng lớp
Gỡ lỗi _debug (DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
Cấu hình _config_data;
WiFiClient _esp_client;
PubSubClient _client (_esp_client);
WiFiUDP Udp;
ESP8266WebServer _server (80);
Neotimer _timer_property_request = Neotimer (5000);
// ------------------------------------------------ - cấu trúc / biến dữ liệu
RuntimeDeviceData _runtime_device_data;
PropertyDto _dto_props [50]; // tối đa 10 nô lệ x tối đa 5 thuộc tính
// ------------------------------------------------ -- kiểm soát dòng chảy
Flybool _sent_device_info = false;
byte _dto_props_index = 0;
bool _fatal_error = false;
// --------------------------------- KHAI BÁO PHẠM VI CHỨC NĂNG
// ------------------------------------------------ - static_i2c_callbacks.ino
voidon_bus_receive (byte slave_address, byte prop_index, Role role, char name [16], char value [16]);
voidon_bus_complete ();
// ------------------------------------------------ - static_mqtt.ino
voidmqtt_callback (char * topic, byte * payload, unsignedint 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 (địa chỉ byte, mã byte, constchar * param);
// ------------------------------------------------ - static_server.ino
Chuỗi server_content_type_get (Tên tệp chuỗi);
boolserver_path_in_auth_exclusion (Đường dẫn chuỗi);
boolserver_auth_read (Đường dẫn chuỗi);
boolserver_file_read (Đường dẫn chuỗi);
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 (Đường dẫn chuỗi);
voidreport_deserialize_error ();
voidreport_spiffs_error ();
boolcheck_fatal_error ();
boolget_json_card_type (byte slave_address, byte prop_index, char * card_type);
boolget_struct_card_type (byte slave_address, byte prop_index, char * card_type);
boolget_json_is_series (byte slave_address, byte prop_index);
voidstr_replace (char * src, constchar * oldchars, char * newchars);
byte get_prop_dto_idx (byte slave_address, byte prop_index);
//---------------------------------CHỦ CHỐT
voidsetup () {
DBG_OUTPUT_PORT.begin (115200);
SetupDeviceData device_data;
Serial.println (); Serial.println (); // margin cho bảng điều khiển rác
chậm trễ (5000);
if (DBG_OUTPUT_FLAG == 2) DBG_OUTPUT_PORT.setDebugOutput (true);
_debug.out_fla (F ("thiết lập"), true, 2);
// lấy cấu hình bắt buộc
if (SPIFFS.begin ()) {
_debug.out_str (spiffs_file_list_build ("/"), true, 2);
if (! _config_data.get_device_data (device_data, _runtime_device_data)) {
report_deserialize_error ();
trở lại;
}
}khác{
report_spiffs_error ();
trở lại;
}
// sử dụng giá trị bộ hẹn giờ trong 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 ();
// khởi động bộ sưu tập siêu dữ liệu
_assimilate_bus.get_metadata ();
_assimilate_bus.print_metadata_details ();
mqtt_ensure_connect ();
// cần thuộc tính cảm biến (tên) để hoàn thành thu thập siêu dữ liệu
_assimilate_bus.get_properties (on_bus_renition, on_bus_complete);
_timer_property_request.reset (); // có thể rút ngắn thời gian đáng chú ý cho đến thời điểm này để bắt đầu lại
}
voidloop () {
if (! check_fatal_error ()) return;
mqtt_loop ();
_server.handleClient ();
if (_timer_property_request.repeat ()) {
_assimilate_bus.get_properties (on_bus_renition, on_bus_complete);
}
}

xem rawmqtt_crouton_esp8266_cors_webcomponents.ino được lưu trữ với ❤ bởi GitHub

Bước 5: THẺ THIẾT BỊ

THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ
THẺ THIẾT BỊ

Thẻ thiết bị (loại thẻ: assim-device) được lưu trữ trên trang web và không cần thiết phải cung cấp thẻ từ thiết bị (CORS).

Trang mặc định của nó liệt kê:

  • Các chủ đề MQTT để đọc và ghi vào thiết bị
  • Điểm truy cập mà thiết bị được kết nối với
  • Một liên kết đến trình chỉnh sửa tệp SPIFFS được lưu trữ trên thiết bị bằng ACE EDITOR
  • Biểu tượng con mắt hiển thị trang Hiển thị / Ẩn thẻ.

Danh sách trang Hiển thị / Ẩn thẻ:

  • Mỗi thẻ như một mục riêng biệt
  • Phông chữ đậm màu xanh lam khi hiển thị
  • Phông chữ bình thường màu đen khi bị ẩn
  • Biểu tượng mô tả loại thẻ.

Có thể ẩn thẻ bằng cách nhấp vào nút ẩn trên thẻ hoặc nhấp vào mục phông chữ đậm xanh trong danh sách. Các thẻ có thể được hiển thị bằng cách nhấp vào một mục phông chữ thường đen trong danh sách.

Liên quan nhiều đến tính năng này là thông tin nâng ly. Nếu bất kỳ điểm cuối nào trong deviceInfo được gán thuộc tính thông tin, một nút thông tin sẽ được hiển thị bên cạnh nút ẩn trên thẻ. Khi được nhấp vào, thông tin theo ngữ cảnh được xác định trong điểm cuối sẽ được "nướng" vào cửa sổ.

Nếu thẻ thiết bị không được xác định, các nút ẩn sẽ không được hiển thị trên thẻ. Điều này là do một khi đã ẩn sẽ không có cách nào để hiển thị chúng, một lần nữa.

Xem ENDPOINT TÙY CHỈNH để biết chi tiết cách có thể thêm thẻ thiết bị đồng hóa qua tệp SPIFFS trên ESP8266.

AssimilateCrouton WebComponent

tín hiệu sắt>
div>
HIỂN THỊ BIỂU TƯỢNG
i> span>
MẪU THIẾT BỊ
MQTT TOPICSdiv>
/ outbox / {{endPointJson.device_name}} / * div>
/ inbox / {{endPointJson.device_name}} / * div>
WIFI SSIDdiv>
{{endPointJson.ssid}} div>
IP ADDRESSdiv>
{{endPointJson.ip_addr}} a> div>
div>
HIỂN THỊ DANH SÁCH ẨN
phần tử>paper-item>
mẫu>
hộp danh sách giấy>
div>
thẻ crouton>
mẫu>
dom-mô-đun>

xem rawassim-device.html được lưu trữ bằng ❤ bởi GitHub

Bước 6: THẺ WEEKVIEW

THẺ WEEKVIEW
THẺ WEEKVIEW
THẺ WEEKVIEW
THẺ WEEKVIEW
THẺ WEEKVIEW
THẺ WEEKVIEW

Thẻ tuần xem (loại thẻ: assim-weekview) được lưu trữ trên thiết bị (thư mục cors). Nó được đưa vào gói deviceInfo được xuất bản cho AssimilateCrouton, bằng cách thêm tệp cấu hình / user_card _ #. Json vào SPIFFS (trong trường hợp này là user_card_9.json).

TỔNG QUAT

Các ngày trong tuần được trình bày dưới dạng danh sách các khoảng thời gian. Mức độ chi tiết của khoảng thời gian được đặt bằng thuộc tính "khoảng_phút" trong config / user_card _ #. Json. Nó cần phải là một phần nhỏ của một giờ hoặc bội số của một giờ, ví dụ: 10, 15, 20, 30, 60, 120, 360. Nhấp vào khoảng thời gian đảm bảo trạng thái bật được chỉ huy cho thiết bị liên quan trong thời gian đó. Nếu thời gian là bây giờ, một lệnh sẽ được gửi (xuất bản) ngay lập tức cho thiết bị. Thông thường trạng thái được kiểm tra / xuất bản mỗi phút. Các lựa chọn được lưu trong LocalStorage, vì vậy thời gian sẽ được tải lại khi làm mới trình duyệt.

TRƯỜNG HỢP SỬ DỤNG

Ở trạng thái hiện tại, chế độ xem tuần phù hợp với các thiết bị có thể sử dụng công tắc Bật tắt để trực quan hóa trạng thái của chúng, tức là chúng đang bật hoặc tắt và sau khi được thiết lập, chúng vẫn ở trạng thái đó. Đèn, quạt và máy nước nóng là những ứng cử viên sáng giá.

GIỚI HẠN / CAVEATS

  • Khoảng_phút phải là một trong các giá trị được đề cập ở trên
  • Chế độ xem trong tuần không hỗ trợ các hành động nhất thời cũng được lên lịch, chẳng hạn như nhấn nhanh (5 giây) hai lần một ngày.

TƯƠNG LAI

  • Người ta mong đợi rằng các hành động nhất thời sẽ được hỗ trợ.
  • Bộ nhớ được đồng bộ hóa trên các thiết bị, cho các lựa chọn lịch biểu đang được xem xét.

Bước 7: KẾT THÚC TÙY CHỈNH

Như đã đề cập đến breifly trong FIRMWARE, có 2 quy ước mới được thêm vào hệ thống tệp SPIFFS để tùy chỉnh các điểm cuối. Các tệp JSON là các phân đoạn được thêm vào thuộc tính điểm cuối trong gói deviceInfo được đăng lên nhà môi giới MQTT trở thành định nghĩa bảng điều khiển.

Khóa của các điểm cuối được tạo trong phần sụn:

  • CC_device (Thẻ tùy chỉnh) cho user_card_base.json
  • CC_SLAVE_ENDPOINT NAME cho user_card _ #. Json (# là địa chỉ phụ)

Như đã đề cập trước đây, có các biến được thay thế cho các giá trị trong thời gian chạy:

  • mqtt_device_name
  • wifi_ssid
  • local_ip

user_card_base.json

Một ví dụ:

user_card _ #. json

Một ví dụ:

Bước 8: VIDEO

Đề xuất: