İçindekiler:

IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ: 8 Adım
IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ: 8 Adım

Video: IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ: 8 Adım

Video: IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ: 8 Adım
Video: Indefinite Pitch PREMIERES. Mod.1 - Into The Circle [Linderluft Records] 2024, Temmuz
Anonim
IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ
IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ
IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ
IOT123 - ASSİMİLAT SENSÖR HUB: ICOS10 CORS WEB BİLEŞENLERİ

ASSIMILATE SENSOR/ACTOR Slaves, Crouton'da tanımlayıcı görselleştirmeler için kullanılan meta verileri yerleştirir. Bu yapı öncekilerden biraz farklıdır; donanım değişikliği yoktur. Ürün yazılımı artık AssimilateCrouton'un en son yapısına entegre edilebilen özel (daha zengin) editörlerin barındırılmasını destekliyor. Bu makalede bellenimi ve MQTT panosunu açıklamaya daha fazla dikkat edilecektir.

WebComponents'ı kontrol ettikleri cihazdan sunmanın avantajlarından biri, cihazın daha gelişmiş kontrolünün cihazın bağlı olduğu ağla sınırlı olmasıdır: WiFi Erişim Noktanız. Kimlik doğrulamalı bir MQTT sunucusunu kullandığınızda, koruma benzerliği olsa da, genel ağlarda Tarayıcınızdan bir an için ayrılırsanız (AssimilateCrouton web sitesi) birisi devreye girip otomasyon cihazlarınızı kontrol edebilir. Bu CORS Web Bileşeni özelliği, yalnızca okumaların (sıcaklık, ışık seviyeleri, nem) herkese açık olarak gösterilmesini ve komut işlevlerinin (açma/kapama, zamanlama) yalnızca cihaz ağından erişilebilir olmasını sağlar.

Cihazda, SPIFFS'de Kimlik Doğrulama ve Barındırma ile tüm web sunucusu özellikleri hala desteklenmektedir, ancak Polimer Web Bileşenleri için CORS (Çapraz Kökenli Kaynak Paylaşımı) desteğine özel önem verilmiştir (Crouton, Polimer 1.4.0 kullanır).

AssimilateCrouton'da (Assimilate IOT Ağı için kullanılan Crouton çatalı) değişiklikler şunları içerir:

  • diğer şeylerin yanı sıra bir kullanıcı için bir cihaz için ayrı kartları gösteren ve gizleyen bir Cihaz kartı (assim-device) desteği
  • tüm kartlarda bir kart için yararlı bağlamsal bilgilerin bir tostunu gösteren info özelliği
  • CORS web bileşenleri için destek, bu durumda cihazdaki web sunucusunda barındırılır (ESP8266).

Adım 1: CROUTON

kruton
kruton
kruton
kruton

Crouton, IOT cihazlarınızı minimum kurulumla görselleştirmenizi ve kontrol etmenizi sağlayan bir panodur. Esasen, yalnızca MQTT ve JSON kullanan herhangi bir IOT donanımı meraklısı için kurulumu en kolay panodur.

ASSIMILATE SLAVES (sensörler ve aktörler), master'ın Crouton'un gösterge panosunu oluşturmak için kullandığı deviceInfo json paketini oluşturmak için kullandığı gömülü meta verilere ve özelliklere sahiptir. ASSIMILATE NODES ve Crouton arasındaki aracı, web yuvaları dostu bir MQTT aracısıdır: Demo için Sivrisinek kullanılır.

ASSIMILATE MASTER özellikleri talep ederken, yanıt değerlerini Crouton güncellemeleri için gerekli formatta formatlar. AssimilateCrouton çatalı, cihazınızı çalıştıran iş kurallarını merkezden dağıtmanızı sağlayan bazı özellikler ekler, yani IOT cihazının herhangi bir gömülü iş kuralına ihtiyacı yoktur, bu sadece daha akıllı (ATTINY kontrollü) bağımlı aktörlere ve sensörlere MQTT/I2C iletişimi için bir boru hattıdır..

2. Adım: KRUTONU ASSİMİLE ET

ASSİMİLAT KRUTON
ASSİMİLAT KRUTON

CROUTON'DAKİ DEĞİŞİKLİKLER

Çatallı sürümdeki değişiklikler şunları içerir:

  • bir uç noktanın tanımlanmış bir yol özelliği varsa, kartın WebComponent'i bir CORS kaynağı (bu yapıdaki ESP8266'daki web sunucusu) için bir HTMLImport yapacaktır.
  • bir CORS Web Bileşeninden (bağımlılıklarından) gelen tüm kaynaklara Crouton web sitesinden sunuluyormuş gibi başvurulur; bir istisna işleyici yükleyemedikleri zaman yolları yeniden düzenler ve web sitesinden yüklenir.
  • Geçerli bir yerel saat sağ üstte görüntülenir ve doğrulamayı planlamak için kullanışlıdır.

POLİMER BAĞIMLILIKLARI VE KORLAR

Bir Polimer bağımlılık ağacının yaprakları CORS'ta barındırılabilir. Kök bağımlılıkları bir uygulamada birkaç kez kullanılabildiğinden, Polimer Modül Yükleyici bunları 2 ayrı kaynak olarak değerlendirdiği ve birden çok kayıt hatası bir uygulamayı hızla boğduğu için 2 konumdan (web sitesi ve cihaz) referans alınamaz.

Bu nedenle, bir kart için Web Bileşeni (1.4.0'da HTML dosyası) ve ilişkili CSS dosyası, cihazda barındırılan yegane dosyalardır. Diğer bağımlılıklara, WebComponent'in kaynak web sitesindeki "html" klasöründe barındırılıyormuş gibi başvurulur; bu, ESP8266'da SPIFFS'ye yüklenmeye hazır olana kadar WebComponents'ın bu klasörden geliştirilmesini kolaylaştırır. AssimilateCrouton, doğru dosyaların nasıl alınacağını çözecektir.

DAĞITIM

orijinal Crouton'un edfungus yaratıcısı, kaynağı Pug/Less'te yazdı ve bir NPM/Grunt araç zincirine sahipti. Pug/Less'i HTML/css olarak oluşturdum ve oluşturulan dosyaları düzenledim/dağıttım. Bu, NPM/Grunt araç zincirini kırdı. Bunu düzeltmek GELECEK bölümünde ele alınmıştır.

Kontrol panelini DEV kutunuzda yerel olarak test edebilirsiniz:

  • Kök klasördeki komut satırından
  • npm başlangıç
  • lite-server https://localhost:10001 için açıldı

Statik bir web sunucusuna dağıtın:

  • node_modules dışındaki tüm klasörleri kopyala
  • index.html'yi (ve muhtemelen web.config'i) kopyalayın

GELECEK

Ana hedeflerden biri Polymer3'e yükseltmek ve Polymer CLI'den çalışmaktır. IoT geliştiricilerinin kendilerininkini geliştirmeleri için gelişmiş düzenleyiciler ve çerçeve eklemek yüksek bir önceliktir. Sonunda gelişmiş otomatik sistem tamamen AssimilateCrouton gibi bağımsız MQTT istemcilerinden çalıştırılacaktır.

AssimilateCrouton için kullanılan deviceInfo paketine bir örnek:

{
"cihaz bilgisi": {
"bitiş Noktaları": {
"CC_device": {
"cihaz_adı": "ash_mezz_A3",
"kart tipi": "assim cihazı",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
"uç noktalar": [
{
"başlık": "Işıkları Büyüt",
"kart tipi": "kruton basit geçiş",
"bitiş noktası": "anahtar"
},
{
"başlık": "Ekici Işıkları",
"kart tipi": "kruton-assim-hafta görünümü",
"bitiş noktası": "CC_switch"
}
]
},
"CC_switch": {
"card-type": "assim-weekview",
"info": "Işıkları 15 dakikalık zaman dilimlerinde aç veya kapat",
"yol": "https://192.168.8.104/cors",
"başlık": "Ekici Işıkları",
"aralık_dakika": 15,
"değerler": {
"değer": ""
}
},
"anahtar": {
"başlık": "Işıkları Büyüt",
"kart tipi": "kruton basit geçiş",
"info": "Işıkları geçici olarak açın veya kapatın",
"etiketler": {
"yanlış": "KAPALI",
"doğru": "AÇIK"
},
"simgeler": {
"yanlış": "güneş-o",
"true": "güneş-o"
},
"değerler": {
"değer": 0
}
}
},
"durum": "iyi",
"ad": "ash_mezz_A3",
"description": "Ashmore, Mezzanine, Area A2'deki Ofis",
"renk": "#4D90FE"
}
}

GitHub tarafından ❤ ile barındırılan rawdeviceInfo.json'u görüntüleyin

Adım 3: CİHAZ MONTAJI

CİHAZ MONTAJI
CİHAZ MONTAJI
CİHAZ MONTAJI
CİHAZ MONTAJI
CİHAZ MONTAJI
CİHAZ MONTAJI

Herhangi bir donanım değişikliği olmadığı için ilgili bilgilere bağlantılar aşağıdadır:

  • Kabuk Montajı
  • Malzemeler ve Araçlar
  • MCU Hazırlığı
  • MCU Muhafaza Hazırlığı
  • Köleleri Oluşturma Düşük Taraf Anahtarı/SIFIRLAMA Ek kartı
  • Ana Bileşenlerin Birleştirilmesi

4. Adım: YAZILIM

YAZILIM
YAZILIM
YAZILIM
YAZILIM
YAZILIM
YAZILIM
YAZILIM
YAZILIM

BU YAPI ANA DEĞİŞİKLİKLER

AssimilateCrouton uygulamasının cihazdan CORS kaynaklarını kullanabilmesi için yanıt başlıklarının belirli bir şekilde yapılandırılması gerekiyordu. Bu, üretici yazılımının bu sürümünde uygulanmıştır (static_server.ino => server_file_read()).

Ayrıca Polimer için ana bağımlılık grafiğinin tek bir orijinden olması gerekiyordu. Cihazda bulunamadıklarında AssimilateCrouton web sitesinden kaynakları yeniden yüklemek için SPIFFS CORS dosyalarına bir onerror işleyicisi (corsLinkOnError) eklemek için bir strateji kullanıldı.

DeviceInfo'da oluşturulan uç noktaları özelleştirmek için SPIFFS dosya sistemine eklenen 2 yeni kural vardır - AssimilateCrouton, pano kartlarını oluşturmak için kullanır:

  • /config/user_card_base.json Önce çalışma zamanı değişkenlerinin değiştirildiği uç nokta tanımı:,,. Bu genellikle assim-cihaz kartının ekleneceği yerdir. Bu, cihazla geri iletişim kurmaz.
  • /config/user_card_#.json Önce çalışma zamanı değişkenlerinin değiştirildiği uç nokta tanımı:,,. Bu genellikle, assim-weekview kartı gibi zengin editörlerin # ile ilgili I2C bağımlı birimine (aktör/sensör) bağlanacağı yerdir.

SKETCH/KÜTÜPHANELER

Bu aşamada proje AssimilateBus Arduino kütüphanesi için örnek olarak paketlendi. Bu esas olarak gerekli tüm dosyalara Arduino IDE'den erişimi kolaylaştırmak içindir. Ana kod eserleri şunlardır:

  • mqtt_crouton_esp8266_cors_webcomponents.ino - ana giriş noktası.
  • assimilate_bus.h/assimilate_bus.cpp - Bağımlı Sensör/Aktörler ile I2C iletişimini yöneten kitaplık
  • VizJson.h/VizJson.cpp - MQTT aracılığıyla yayınlanan herhangi bir JSON'u biçimlendiren/oluşturan kitaplık
  • config.h/config.cpp - SPIFFS'de yapılandırma dosyalarını okuyan/kutulayan/yazan kitaplık
  • static_i2c_callbacks.ino - alınan bir özellik için I2C geri aramaları ve bağımlı isteklerin döngüsünün tamamlanması static_mqtt.ino - MQTT işlevleri
  • static_server.ino - web sunucusu işlevleri
  • static_utility.ino - yardımcı işlevler

Statik INO işlevleri (kütüphaneler yerine) çeşitli nedenlerle, ancak esas olarak Web sunucusu ve MQTT işlevlerinin birlikte iyi çalışabilmesi için kullanıldı.

SPIFFS KAYNAKLARI

SPIFFS dosyalarının ayrıntılı açıklamalarını burada bulabilirsiniz.

  • favicon.ico - Ace Editor tarafından kullanılan kaynak
  • yapılandırma
    • device.json - cihazın yapılandırması (Wifi, MQTT…)
    • slave_metas_#.json - her bağımlı adres numarası (#) için çalışma zamanında oluşturulur
    • user_card_#.json - her bağımlı adres numarası (#) için deviceInfo'ya entegre edilecek özel uç nokta
    • user_card_base.json - cihaz için deviceInfo'ya entegre edilecek özel uç nokta
    • user_meta_#.json - özel meta veriler, her bağımlı adres numarası (#) için bağımlılarınkini geçersiz kılar
    • user_props.json - kölelerin meta verilerindekileri geçersiz kılmak için özel özellik adları
  • kor

    • card-webcomponent.css - çeşitli özel kartlar için stil sayfası
    • card-webcomponent.html - çeşitli özel kartlar için web bileşeni
  • editör

    • assimilate-logo-p.webp" />
    • edit.htm.gz - Ace Editor HTML'nin gzip'i
    • edit.htm.src - Ace Editor'ün orijinal HTML'si
    • favicon-32x32-p.webp" />

YAZILIMIN YÜKLENMESİ

  • Kod deposu burada bulunabilir (anlık görüntü).
  • Kütüphanenin bir ZIP'i burada bulunabilir (anlık görüntü).
  • "ZIP Kitaplığını İçe Aktarma" talimatları burada.
  • Kitaplık kurulduktan sonra "mqtt_crouton_esp8266_cors_webcomponents" örneğini açabilirsiniz.
  • Wemos D1 Mini için Arduino kurma talimatları burada.
  • Bağımlılıklar: ArduinoJson, TimeLib, PubSubClient, NeoTimer (depolardaki değişiklikleri bozuyorsanız eklere bakın).

SPIFFS'E YÜKLE

Kod Arduino IDE'ye yüklendikten sonra data/config klasöründe device.json'u açın:

  • WiFi SSID'niz ile wifi_ssid değerini değiştirin.
  • WiFi Anahtarınızla wifi_key değerini değiştirin.
  • mqtt_device_name değerini tercih ettiğiniz Cihaz Kimliği ile değiştirin (katılma gerekmez).
  • mqtt_device_description değerini tercih ettiğiniz Cihaz Açıklaması ile değiştirin (Cruton'da).
  • device.json'ı kaydedin.
  • Veri dosyalarını SPIFFS'ye yükleyin.

AssimilateBus örneği için ana giriş noktası:

/*
*
*CİHAZINIZ İÇİN İŞ KURALLARININ MQTT İLE KONTROL EDİLMESİ BEKLENİR - BU YAZILIM İÇİN HARD FIRINLANMAMIŞTIR
*
* Bu dosyadaki setup ve loop dışında
* önemli hareketli parçalar
* static_i2c_callbacks.ino'da on_bus_received ve on_bus_complete
* ve
* static_mqtt.ino'da mqtt_publish ve mqtt_callback
*
*/
#include"types.h"
#include"VizJson.h"
#include"asimilate_bus.h"
#include"debug.h"
#include"config.h"
#Dahil etmek

#Dahil etmek

// MQTT_MAX_PACKET_SIZE'ı ~3000 olarak ayarlayın (veya deviceInfo json ihtiyaçlarınız)

#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
//---------------------------------BELLEK BİLDİRİMLERİ
//------------------------------------------------ -- tanımlar
#defineDBG_OUTPUT_FLAG2//0, 1, 2 MİNİMUM, YAYIN, TAM
#define_mqtt_pub_topic"giden kutusu"// CROUTON SÖZLEŞMELERİ
#define_mqtt_sub_topic"gelen kutusu"
//------------------------------------------------ -- sınıf nesneleri
Hata ayıklama _debug(DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
Yapılandırma _config_data;
WiFiClient _esp_client;
PubSubClient _client(_esp_client);
WiFiUDP Udp;
ESP8266WebServer _server(80);
Neotimer _timer_property_request = Neotimer(5000);
//------------------------------------------------ -- veri yapıları / değişken
RuntimeDeviceData _runtime_device_data;
PropertyDto _dto_props[50]; // max 10 slave x max 5 özellik
//------------------------------------------------ -- kontrol akışı
volatilebool _sent_device_info = yanlış;
bayt _dto_props_index = 0;
bool _fatal_error = yanlış;
//---------------------------------FONKSİYON KAPSAM BİLDİRİMLERİ
//------------------------------------------------ -- static_i2c_callbacks.ino
voidon_bus_received(byte slave_address, byte prop_index, Rol rolü, karakter adı[16], karakter değeri[16]);
voidon_bus_complete();
//------------------------------------------------ -- static_mqtt.ino
voidmqtt_callback(char* konu, bayt* veri yükü, imzasız uzunluk);
voidmqtt_loop();
int8_tmqtt_get_topic_index(char* konu);
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 *bitiş noktası, constchar *payload);
boolmqtt_ensure_connect();
voidmqtt_subscribe(char *root_topic, char *cihazAdı, char *bitiş noktası);
voidi2c_set_and_get(bayt adresi, bayt kodu, constchar *param);
//------------------------------------------------ -- static_server.ino
String server_content_type_get(Dize dosya adı);
boolserver_path_in_auth_exclusion(Dize yolu);
boolserver_auth_read(Dize yolu);
boolserver_file_read(Dize yolu);
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();
vidsend_ntp_packet(IPAdresi &adres);
char *time_stamp_get();
//------------------------------------------------ -- static_utility.ino
String spiffs_file_list_build(Dize yolu);
voidreport_deserialize_error();
voidreport_spiffs_error();
boolcheck_fatal_error();
boolget_json_card_type(byte slave_address, byte prop_index, char *kart_tipi);
boolget_struct_card_type(byte slave_address, byte prop_index, char *kart_tipi);
boolget_json_is_series(byte slave_address, byte prop_index);
voidstr_replace(char *src, constchar *eski karakterler, char *yeni karakterler);
byte get_prop_dto_idx(byte slave_address, byte prop_index);
//---------------------------------ANA
voidsetup(){
DBG_OUTPUT_PORT.begin(115200);
SetupDeviceData device_data;
Seri.println(); Seri.println(); // konsol çöplüğü için kenar boşluğu
gecikme (5000);
if (DBG_OUTPUT_FLAG == 2)DBG_OUTPUT_PORT.setDebugOutput(true);
_debug.out_fla(F("kurulum"), true, 2);
// gerekli yapılandırmayı al
if (SPIFFS.begin()){
_debug.out_str(spiffs_file_list_build("/"), true, 2);
if (!_config_data.get_device_data(device_data, _runtime_device_data)){
rapor_deserialize_error();
dönüş;
}
}Başka{
rapor_spiffs_error();
dönüş;
}
// device.json'da ayarlanan zamanlayıcı değerini kullan
_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);
sunucu_init();
// meta veri koleksiyonunu başlat
_assimilate_bus.get_metadata();
_assimilate_bus.print_metadata_details();
mqtt_ensure_connect();
// meta veri toplamayı tamamlamak için sensör özelliğine (adlara) ihtiyaç var
_assimilate_bus.get_properties(on_bus_received, on_bus_complete);
_timer_property_request.reset(); // bu noktaya kadar fark edilebilir bir süre geçebilir, bu yüzden tekrar başlatın
}
boşluk döngüsü(){
eğer (!check_fatal_error()) dönerse;
mqtt_loop();
_server.handleClient();
if(_timer_property_request.repeat()){
_assimilate_bus.get_properties(on_bus_received, on_bus_complete);
}
}

GitHub tarafından ❤ ile barındırılan rawmqtt_crouton_esp8266_cors_webcomponents.ino'yu görüntüle

Adım 5: CİHAZ KARTI

CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI
CİHAZ KARTI

Cihaz kartı (kart tipi:assim-device) web sitesinde barındırılmaktadır ve cihazdan (CORS) sunulması gerekli değildir.

Varsayılan sayfa listeleri:

  • Cihaza okuma ve yazma için MQTT konuları
  • Cihazın bağlı olduğu Erişim Noktası
  • ACE EDITOR kullanılarak cihazda barındırılan SPIFFS dosya düzenleyicisine bir bağlantı
  • Kart sayfasını Göster/Gizle gösteren bir göz simgesi.

Kartı Göster/Gizle sayfası şunları listeler:

  • Her kart ayrı bir öğe olarak
  • Gösterildiğinde kalın mavi yazı tipi
  • Gizlendiğinde siyah normal yazı tipi
  • Kartın türünü gösteren bir simge.

Kartlar üzerindeki gizle düğmesi tıklanarak veya listedeki mavi kalın yazı tipi öğesi tıklanarak kart gizlenebilir. Kartlar, listedeki siyah-normal yazı tipindeki bir öğeye tıklayarak gösterilebilir.

Bu özellikle ilgili bilgi tostları gevşek bir şekilde ilişkilidir. deviceInfo'daki uç noktalardan herhangi birine atanmış bir bilgi özelliği varsa, karttaki gizle düğmesinin yanında bir bilgi düğmesi gösterilir. Bitiş noktasında tanımlanan bağlamsal bilgi tıklandığında, pencereye "kızartılır".

Cihaz kartı tanımlı değilse, kartların üzerinde gizleme butonları gösterilmeyecektir. Bunun nedeni, bir kez gizlendikten sonra onları tekrar göstermenin bir yolu olmamasıdır.

ESP8266'daki SPIFFS dosyaları aracılığıyla assim-cihaz kartının nasıl eklenebileceğini ayrıntılı olarak görmek için ENDPOINT ÖZELLEŞTİRME bölümüne bakın.

AsimileCrouton Web Bileşeni

demir-sinyaller>
böl>
GİZLE SİMGESİNİ GÖSTER
ben>açıklık>
CİHAZ FORMU
MQTT KONULARIdiv>
/outbox/{{endPointJson.device_name}}/*div>
/inbox/{{endPointJson.device_name}}/*div>
WIFI SSIDdiv>
{{endPointJson.ssid}}div>
IP ADRESİdiv>
{{endPointJson.ip_addr}}a>div>
böl>
GİZLEME LİSTESİNİ GÖSTER
öğe> [item.title]kağıt öğesi>
şablon>
kağıt liste kutusu>
böl>
kruton kartı>
şablon>
dom-modülü>

GitHub tarafından ❤ ile barındırılan rawassim-device.html dosyasını görüntüleyin

Adım 6: HAFTA GÖRÜNÜM KARTI

HAFTA GÖRÜNÜM KARTI
HAFTA GÖRÜNÜM KARTI
HAFTA GÖRÜNÜM KARTI
HAFTA GÖRÜNÜM KARTI
HAFTA GÖRÜNÜM KARTI
HAFTA GÖRÜNÜM KARTI

Hafta görünümü kartı (kart tipi:assim-hafta görünümü) cihazda (cors klasörü) barındırılır. SPIFFS'ye bir dosya config/user_card_#.json eklenerek AssimilateCrouton için yayınlanan deviceInfo paketine enjekte edilir (bu durumda user_card_9.json).

GENEL BAKIŞ

Hafta içi günler, zaman dilimleri listesi olarak sunulur. Zaman aralığının ayrıntı düzeyi, config/user_card_#.json içindeki "interval_mins" özelliğiyle ayarlanır. Bir saatin kesri veya bir saatin katları olmalıdır, ör. 10, 15, 20, 30, 60, 120, 360. Bir zaman aralığına tıklamak, ilgili cihaz için o zaman içinde bir açık durumu komutu verildiğinden emin olun. Zaman aralığı şimdi ise, cihaz için hemen bir komut gönderilir (yayınlanır). Normalde durum her dakika kontrol edilir/yayınlanır. Seçimler LocalStorage'a kaydedilir, bu nedenle zamanlar bir tarayıcı yenilemesiyle yeniden yüklenir.

KULLANIM VAKALARI

Mevcut durumunda, hafta görünümü, durumlarını görselleştirmek için bir Geçiş anahtarı kullanabilen cihazlar için uygundur, yani açık veya kapalıdırlar ve ayarlandıktan sonra bu durumda kalırlar. Işıklar, fanlar ve su ısıtıcıları iyi adaylardır.

SINIRLAMALAR/ÖNLEMLER

  • interval_mins yukarıda belirtilen değerlerden biri olmalıdır
  • Hafta görünümü, günde iki kez kısa süreli (5 saniye) bir musluğu açmak gibi programlanmış anlık eylemleri desteklemez.

GELECEK

  • Anlık eylemlerin desteklenmesi bekleniyor.
  • Zamanlama seçimleri için cihazlar arasında senkronize depolama düşünülüyor.

7. Adım: ENDPOINT ÖZELLEŞTİRME

YAZILIM'da kısaca belirtildiği gibi, uç noktaları özelleştirmek için SPIFFS dosya sistemine eklenen 2 yeni kural vardır. JSON dosyaları, pano tanımı haline gelen MQTT aracısına gönderilen deviceInfo paketindeki uç noktalar özelliğine eklenen parçalardır.

Uç noktaların anahtarları bellenimde oluşturulur:

  • user_card_base.json için CC_device (Özel Kart)
  • user_card_#.json için CC_SLAVE_ENDPOINT NAME (# bağımlı adrestir)

Daha önce belirtildiği gibi, çalışma zamanında değerlerin yerine geçen değişkenler vardır:

  • mqtt_device_name
  • wifi_ssid
  • local_ip

user_card_base.json

Bir örnek:

{ "device_name": "", "card-type": "assim-device", "ssid": "", "ip_addr": "", "endpoints": [{ "title": "Grow Lights", " card-type": "crouton-simple-toggle", "endpoint": "switch" }, { "title": "Planter Lights", "card-type": "crouton-assim-weekview", "endpoint": "CC_switch" }] }

user_card_#.json

Bir örnek:

{ "card-type": "assim-weekview", "path": "https:///cors", "title": "Planter Lights", "info": "Işıkları 15 dakika içinde açıp kapatın yuvalar", "interval_mins": 15, "değerler": { "değer": "" } }

8. Adım: VİDEOLAR

Önerilen: