विषयसूची:

IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेब घटक: 8 चरण
IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेब घटक: 8 चरण

वीडियो: IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेब घटक: 8 चरण

वीडियो: IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेब घटक: 8 चरण
वीडियो: 2019-19 Why Companies Need an Augmented Reality Strategy 2024, जुलाई
Anonim
IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेबकंपोनेंट्स
IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेबकंपोनेंट्स
IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेबकंपोनेंट्स
IOT123 - सेंसर हब को आत्मसात करें: ICOS10 CORS वेबकंपोनेंट्स

ASSIMILATE SENSOR/ACTOR स्लेव मेटाडेटा को एम्बेड करते हैं जिसका उपयोग Crouton में परिभाषित विज़ुअलाइज़ेशन के लिए किया जाता है। यह निर्माण पिछले वाले से थोड़ा अलग है; कोई हार्डवेयर परिवर्तन नहीं हैं। फर्मवेयर अब कस्टम (समृद्ध) संपादकों को होस्ट करने का समर्थन करता है जिन्हें AssimilateCrouton के नवीनतम निर्माण में एकीकृत किया जा सकता है। इस लेख में फर्मवेयर और MQTT डैशबोर्ड की व्याख्या करने पर अधिक ध्यान दिया जाएगा।

वे जिस डिवाइस को नियंत्रित करते हैं, उससे वेबकंपोनेंट्स की सेवा करने का एक लाभ यह है कि डिवाइस का अधिक उन्नत नियंत्रण उस नेटवर्क तक सीमित होता है जिससे डिवाइस कनेक्ट होता है: आपका वाईफाई एक्सेस प्वाइंट। हालाँकि एक बार जब आप प्रमाणीकरण के साथ MQTT सर्वर का उपयोग करते हैं, तो सार्वजनिक नेटवर्क पर सुरक्षा की समानता होती है, यदि आप अपने ब्राउज़र को क्षण भर के लिए छोड़ देते हैं (AssimilateCrouton वेबसाइट) तो कोई आपके स्वचालन उपकरणों में कूद सकता है और नियंत्रित कर सकता है। यह CORS वेबकंपोनेंट सुविधा केवल डिवाइस नेटवर्क से उपलब्ध केवल रीडिंग (अस्थायी, प्रकाश स्तर, नमी) को सार्वजनिक रूप से और कमांड फ़ंक्शन (चालू/बंद, शेड्यूलिंग) दिखाना संभव बनाती है।

डिवाइस पर, SPIFFS में प्रमाणीकरण और होस्टिंग के साथ सभी वेबसर्वर सुविधाएँ अभी भी समर्थित हैं, लेकिन पॉलिमर वेबकंपोनेंट्स (Crouton पॉलिमर 1.4.0 का उपयोग करता है) के लिए CORS (क्रॉस ओरिजिन रिसोर्स शेयरिंग) समर्थन पर विशेष ध्यान दिया गया है।

एसिमिलेटक्रॉउटन (एसिमिलेट आईओटी नेटवर्क के लिए प्रयुक्त क्राउटन का कांटा) में परिवर्तनों में शामिल हैं

  • डिवाइस कार्ड (एसिम-डिवाइस) के लिए समर्थन जो अन्य चीजों के अलावा, उपयोगकर्ता के लिए, डिवाइस के लिए अलग-अलग कार्ड दिखाता है और छुपाता है
  • सभी कार्डों पर जानकारी संपत्ति जो एक कार्ड के लिए उपयोगी प्रासंगिक जानकारी का एक टोस्ट दिखाती है
  • CORS वेब घटकों के लिए समर्थन, इस मामले में डिवाइस पर वेबसर्वर पर होस्ट किया गया (ESP8266)।

चरण 1: क्राउटन

क्राउटन
क्राउटन
क्राउटन
क्राउटन

Crouton एक डैशबोर्ड है जो आपको न्यूनतम सेटअप के साथ अपने IOT उपकरणों को देखने और नियंत्रित करने देता है। अनिवार्य रूप से, यह केवल MQTT और JSON का उपयोग करके किसी भी IOT हार्डवेयर उत्साही के लिए सेटअप करने के लिए सबसे आसान डैशबोर्ड है।

ASSIMILATE SLAVES (सेंसर और अभिनेता) में एम्बेडेड मेटाडेटा और गुण होते हैं जिनका उपयोग मास्टर डिवाइसइन्फो जोंस पैकेट बनाने के लिए करता है जिसे क्राउटन डैशबोर्ड बनाने के लिए उपयोग करता है। ASSIMILATE NODES और Crouton के बीच मध्यस्थ एक MQTT ब्रोकर है जो websockets के अनुकूल है: Mosquito का उपयोग डेमो के लिए किया जाता है।

जैसा कि ASSIMILATE MASTER गुणों का अनुरोध करता है, यह क्राउटन अपडेट के लिए आवश्यक प्रारूप में प्रतिक्रिया मानों को प्रारूपित करता है। AsimilateCrouton कांटा कुछ विशेषताएं जोड़ता है जो आपको अपने डिवाइस को चलाने वाले व्यावसायिक नियमों को विकेन्द्रीकृत करने में सक्षम बनाता है अर्थात IOT डिवाइस को किसी भी एम्बेडेड व्यावसायिक नियमों की आवश्यकता नहीं है, यह MQTT / I2C संचार के लिए स्मार्ट (ATTINY नियंत्रित) दास अभिनेताओं और सेंसर के लिए सिर्फ एक पाइपलाइन है।.

चरण 2: क्राउटन को आत्मसात करें

आत्मसात क्राउटन
आत्मसात क्राउटन

क्राउटन में परिवर्तन

फोर्कड संस्करण से परिवर्तन में शामिल हैं:

  • यदि किसी समापन बिंदु में पथ गुण परिभाषित है, तो कार्ड के लिए WebComponent एक CORS संसाधन (इस बिल्ड में ESP8266 पर वेबसर्वर) के लिए HTMLImport करेगा।
  • किसी CORS WebComponent से (की निर्भरता) अपस्ट्रीम किसी भी संसाधन को संदर्भित किया जाता है जैसे कि उन्हें Crouton वेबसाइट से परोसा जाता है; जब वे एक अपवाद हैंडलर लोड करने में विफल होते हैं तो वेबसाइट से पथ और लोड को फिर से जोड़ देता है।
  • वर्तमान स्थानीय समय शीर्ष-दाईं ओर प्रदर्शित होता है, सत्यापन शेड्यूलिंग के लिए उपयोगी है।

पॉलिमर निर्भरता और कोर्स

पॉलिमर डिपेंडेंसी ट्री के पत्तों को CORS में होस्ट किया जा सकता है। क्योंकि रूट निर्भरता का एक ऐप में कई बार उपयोग किया जा सकता है, उन्हें 2 स्थानों (वेबसाइट और डिवाइस) से संदर्भित नहीं किया जा सकता है क्योंकि पॉलिमर मॉड्यूल लोडर उन्हें 2 अलग-अलग संसाधनों के रूप में मानता है और कई पंजीकरण त्रुटियां एक एप्लिकेशन को जल्दी से विफल कर देती हैं।

इस कारण से एक कार्ड के लिए WebComponent (1.4.0 में HTML फ़ाइल) और संबंधित CSS फ़ाइल डिवाइस पर होस्ट की गई एकमात्र फ़ाइलें हैं। अन्य निर्भरताओं को संदर्भित किया जाता है जैसे कि वेबकंपोनेंट को मूल वेबसाइट पर "एचटीएमएल" फ़ोल्डर में होस्ट किया गया है, जो उस फ़ोल्डर से वेबकंपोनेंट्स को ईएसपी 8266 पर एसपीआईएफएफएस पर अपलोड करने के लिए तैयार होने तक विकसित करना आसान बनाता है। AsimilateCrouton सही फाइलों को कैसे प्राप्त करें, इस पर काम करेगा।

तैनाती

मूल क्राउटन के एडफंगस निर्माता ने पग/कम में स्रोत लिखा था और उसके पास एनपीएम/ग्रंट टूलचेन था। मैंने पग/कम को HTML/css के रूप में प्रस्तुत किया और केवल प्रदान की गई फ़ाइलों को संपादित/वितरित किया। इसने NPM/ग्रंट टूलचेन को तोड़ दिया। इसे ठीक करना FUTURE सेक्शन में शामिल है।

आप अपने DEV बॉक्स पर स्थानीय रूप से डैशबोर्ड का परीक्षण कर सकते हैं:

  • रूट फ़ोल्डर में कमांडलाइन से
  • एनपीएम प्रारंभ
  • लाइट-सर्वर https://localhost:10001. के लिए काता गया है

एक स्थिर वेबसर्वर पर तैनात करें:

  • नोड_मॉड्यूल को छोड़कर सभी फ़ोल्डरों की प्रतिलिपि बनाएँ
  • index.html कॉपी करें (और संभवतः web.config)

भविष्य

मुख्य लक्ष्यों में से एक पॉलिमर 3 में अपग्रेड करना और पॉलिमर सीएलआई से काम करना है। आईओटी डेवलपर्स के लिए खुद को विकसित करने के लिए उन्नत संपादकों और ढांचे को जोड़ना एक उच्च प्राथमिकता है। अंततः उन्नत स्वचालित प्रणाली पूरी तरह से अलग किए गए MQTT क्लाइंट जैसे AssimilateCrouton से चलाई जाएगी।

AssimilateCrouton के लिए प्रयुक्त डिवाइसइन्फो पैकेट का एक उदाहरण:

{
"डिवाइस जानकारी": {
"अंत बिंदु": {
"सीसी_डिवाइस": {
"device_name": "ash_mezz_A3",
"कार्ड-प्रकार": "असिम-डिवाइस",
"एसएसआईडी": "कोरलाइन्स_2",
"ip_addr": "192.168.8.104",
"समापन बिंदु": [
{
"शीर्षक": "रोशनी बढ़ो",
"कार्ड-प्रकार": "क्राउटन-सरल-टॉगल",
"समापन बिंदु": "स्विच"
},
{
"शीर्षक": "प्लांटर लाइट्स",
"कार्ड-प्रकार": "क्राउटन-एसिम-वीकव्यू",
"समापन बिंदु": "CC_switch"
}
]
},
"सीसी_स्विच": {
"कार्ड-प्रकार": "आसिम-सप्ताह का दृश्य",
"जानकारी": "15 मिनट के टाइम स्लॉट में लाइट को चालू या बंद करें",
"पथ": "https://192.168.8.104/cors",
"शीर्षक": "प्लांटर लाइट्स",
"अंतराल_मिनट": १५,
"मान": {
"मूल्य": ""
}
},
"स्विच": {
"शीर्षक": "रोशनी बढ़ो",
"कार्ड-प्रकार": "क्राउटन-सरल-टॉगल",
"जानकारी": "तदर्थ आधार पर लाइट चालू या बंद करें",
"लेबल": {
"झूठा": "बंद",
"सच": "चालू"
},
"आइकन": {
"झूठा": "सूर्य-ओ",
"सच": "सन-ओ"
},
"मान": {
"मान": 0
}
}
},
"स्थिति": "अच्छा",
"नाम": "ash_mezz_A3",
"विवरण": "एशमोर में कार्यालय, मेजेनाइन, क्षेत्र A2",
"रंग": "#4D90FE"
}
}

देखें rawdeviceInfo.json ❤ के साथ GitHub द्वारा होस्ट किया गया

चरण 3: डिवाइस असेंबली

डिवाइस असेंबली
डिवाइस असेंबली
डिवाइस असेंबली
डिवाइस असेंबली
डिवाइस असेंबली
डिवाइस असेंबली

चूंकि कोई हार्डवेयर परिवर्तन नहीं हैं, इसलिए प्रासंगिक जानकारी के लिंक यहां दिए गए हैं:

  • शैल विधानसभा
  • सामग्री और उपकरण
  • एमसीयू तैयारी
  • एमसीयू हाउसिंग तैयारी
  • स्लेव्स लो-साइड स्विच/रीसेट डॉटर-बोर्ड का निर्माण
  • प्रमुख घटकों को इकट्ठा करना

चरण 4: फर्मवेयर

फर्मवेयर
फर्मवेयर
फर्मवेयर
फर्मवेयर
फर्मवेयर
फर्मवेयर
फर्मवेयर
फर्मवेयर

मुख्य इस निर्माण को बदलता है

डिवाइस से CORS संसाधनों का उपयोग करने में सक्षम होने के लिए AsimilateCrouton एप्लिकेशन के लिए, प्रतिक्रिया हेडर को एक विशेष तरीके से कॉन्फ़िगर करने की आवश्यकता होती है। यह फर्मवेयर के इस रिलीज में लागू किया गया था (static_server.ino => server_file_read())।

इसके अलावा पॉलिमर के लिए मुख्य निर्भरता ग्राफ एक ही मूल से होना चाहिए। डिवाइस पर नहीं मिलने पर एसिमिलेटक्रॉउटन वेबसाइट से संसाधनों को पुनः लोड करने के लिए SPIFFS CORS फ़ाइलों में एक आतंक हैंडलर (corsLinkOnError) जोड़ने के लिए एक रणनीति का उपयोग किया गया था।

डिवाइसइन्फो में बनाए गए एंडपॉइंट्स को अनुकूलित करने के लिए SPIFFS फाइल सिस्टम में 2 नए कन्वेंशन जोड़े गए हैं - जिसका उपयोग AssimilateCrouton डैशबोर्ड कार्ड बनाने के लिए करता है:

  • /config/user_card_base.json एंडपॉइंट परिभाषा रनटाइम वेरिएबल के साथ पहले स्वैप की जा रही है:,, । यह आमतौर पर वह जगह है जहां एसिम-डिवाइस कार्ड जोड़ा जाएगा। यह डिवाइस के साथ वापस संचार नहीं करता है।
  • /config/user_card_#.json एंडपॉइंट परिभाषा रनटाइम वेरिएबल के साथ पहले स्वैप की जा रही है:,, । आम तौर पर यह वह जगह है जहां अमीर संपादकों जैसे एसिम-वीकव्यू कार्ड को I2C स्लेव (अभिनेता/सेंसर) से जोड़ा जाएगा जो # से संबंधित है।

स्केच / पुस्तकालय

इस स्तर पर परियोजना को एसिमिलेटबस अरुडिनो पुस्तकालय के लिए एक उदाहरण के रूप में पैक किया गया है। यह मुख्य रूप से Arduino IDE से सभी आवश्यक फ़ाइलों को एक्सेस करने में आसान बनाने के लिए है। मुख्य कोड कलाकृतियाँ हैं:

  • mqtt_crouton_esp8266_cors_webcomponents.ino - मुख्य प्रवेश बिंदु।
  • assimilate_bus.h/assimilate_bus.cpp - लाइब्रेरी जो स्लेव सेंसर/अभिनेताओं के साथ I2C संचार को संभालती है
  • VizJson.h/VizJson.cpp - वह पुस्तकालय जो MQTT के माध्यम से प्रकाशित किसी भी JSON को प्रारूपित / बनाता है
  • config.h/config.cpp - लाइब्रेरी जो SPIFFS पर कॉन्फिग फाइलों को पढ़ती है / लिखती है / लिखती है
  • static_i2c_callbacks.ino - प्राप्त होने वाली संपत्ति के लिए I2C कॉलबैक और दास अनुरोधों का चक्र पूरा होने के लिए static_mqtt.ino - MQTT फ़ंक्शन
  • static_server.ino - वेबसर्वर कार्य करता है
  • static_utility.ino - सहायक कार्य

विभिन्न कारणों से स्थिर INO फ़ंक्शन (पुस्तकालयों के बजाय) का उपयोग किया गया था, लेकिन मुख्य रूप से ताकि वेबसर्वर और MQTT फ़ंक्शन एक साथ अच्छी तरह से चल सकें।

स्पिफ्स संसाधन

SPIFFS फ़ाइलों की विस्तृत व्याख्या यहाँ पाई जा सकती है।

  • favicon.ico - Ace Editor द्वारा उपयोग किया जाने वाला संसाधन
  • कॉन्फ़िग

    • device.json - डिवाइस के लिए कॉन्फ़िगरेशन (वाईफ़ाई, एमक्यूटीटी…)
    • गुलाम_मेटस_#.जेसन - प्रत्येक दास पता संख्या (#) के लिए रनटाइम पर उत्पन्न होता है
    • user_card_#.json - प्रत्येक दास पता संख्या (#) के लिए डिवाइसइन्फो में एकीकृत होने के लिए कस्टम एंडपॉइंट
    • user_card_base.json - डिवाइस के लिए डिवाइसइन्फो में एकीकृत होने के लिए कस्टम एंडपॉइंट
    • user_meta_#.json - कस्टम मेटाडेटा प्रत्येक दास पता संख्या (#) के लिए दासों को ओवरराइड करता है
    • user_props.json - दासों के मेटाडेटा में से किसी एक को ओवरराइड करने के लिए कस्टम गुण नाम
  • कोर्स

    • card-webcomponent.css - विभिन्न कस्टम कार्ड के लिए स्टाइलशीट
    • card-webcomponent.html - विभिन्न कस्टम कार्ड के लिए वेबघटक
  • संपादक

    • assimilate-logo-p.webp" />
    • संपादित करें.htm.gz - ऐस संपादक HTML का gzip
    • संपादित करें.htm.src - ऐस संपादक का मूल HTML
    • favicon-32x32-p.webp" />

फर्मवेयर अपलोड करना

  • कोड भंडार यहां (स्नैपशॉट) पाया जा सकता है।
  • पुस्तकालय का एक ज़िप यहां (स्नैपशॉट) पाया जा सकता है।
  • यहां "एक ज़िप पुस्तकालय आयात करना" के लिए निर्देश।
  • एक बार पुस्तकालय स्थापित हो जाने के बाद आप "mqtt_crouton_esp8266_cors_webcomponents" उदाहरण खोल सकते हैं।
  • Wemos D1 Mini के लिए Arduino को यहाँ स्थापित करने के निर्देश।
  • निर्भरताएँ: ArduinoJson, TimeLib, PubSubClient, NeoTimer (रिपॉजिटरी में परिवर्तन तोड़ने पर संलग्नक देखें)।

SPIFFS पर अपलोड करें

एक बार कोड Arduino IDE में लोड हो जाने के बाद, data/config फ़ोल्डर में device.json खोलें:

  • अपने वाईफाई SSID के साथ wifi_ssid के मान को संशोधित करें।
  • अपने वाईफाई कुंजी के साथ wifi_key के मान को संशोधित करें।
  • अपनी पसंदीदा डिवाइस पहचान के साथ mqtt_device_name के मान को संशोधित करें (कोई शामिल होने की आवश्यकता नहीं है)।
  • अपने पसंदीदा डिवाइस विवरण (क्राउटन में) के साथ mqtt_device_description के मान को संशोधित करें।
  • डिवाइस सेव करें।जेसन।
  • डेटा फ़ाइलों को SPIFFS पर अपलोड करें।

एसिमिलेटबस उदाहरण के लिए मुख्य प्रवेश बिंदु:

/*
*
*आपके डिवाइस के लिए व्यावसायिक नियम MQTT के माध्यम से नियंत्रित किए जाने की उम्मीद है - इस फर्मवेयर में हार्ड बेक नहीं किया गया है
*
* इस फाइल में सेटअप और लूप के अलावा
*महत्वपूर्ण गतिमान भाग हैं
* on_bus_received और on_bus_complete में static_i2c_callbacks.ino
* तथा
* mqtt_publish और mqtt_callback static_mqtt.ino. में
*
*/
#शामिल करें"types.h"
#शामिल करें"विज़सन.एच"
#शामिल"आत्मसात_बस.एच"
#शामिल करें"डीबग.एच"
#शामिल करें"config.h"
#शामिल

#शामिल

// MQTT_MAX_PACKET_SIZE को ~3000 पर सेट करें (या डिवाइसइन्फो जोंस के लिए आपकी जरूरतें)

#शामिल
#शामिल
#शामिल
#शामिल
#शामिल
// ---------------------------------- स्मृति घोषणाएं
//------------------------------------------------ -- परिभाषित करता है
#defineDBG_OUTPUT_FLAG2//0, 1, 2 न्यूनतम, रिलीज, पूर्ण
#define_mqtt_pub_topic"आउटबॉक्स"//क्रॉटन कन्वेंशन
#define_mqtt_sub_topic"इनबॉक्स"
//------------------------------------------------ -- क्लास ऑब्जेक्ट्स
डीबग _डीबग (DBG_OUTPUT_FLAG);
एसिमिलेटबस _assimilate_bus;
विज़सन _viz_json;
कॉन्फिग _config_data;
वाईफाई क्लाइंट _esp_client;
पबसुब क्लाइंट _क्लाइंट (_esp_client);
वाईफाईयूडीपी यूडीपी;
ईएसपी8266वेबसर्वर _सर्वर(80);
Neotimer _timer_property_request = Neotimer(5000);
//------------------------------------------------ - डेटा स्ट्रक्चर / वेरिएबल
रनटाइमडिवाइसडेटा _runtime_device_data;
संपत्तिDto _dto_props[50]; // अधिकतम 10 दास x अधिकतम 5 गुण
//------------------------------------------------ -- बहाव को काबू करें
वाष्पशील _sent_device_info = असत्य;
बाइट _dto_props_index = 0;
बूल _fatal_error = false;
//-------------------------------------कार्य क्षेत्र घोषणाएं
//------------------------------------------------ --static_i2c_callbacks.ino
voidon_bus_received (बाइट स्लेव_एड्रेस, बाइट प्रोप_इंडेक्स, रोल रोल, चार नाम [16], चार मान [16]);
voidon_bus_complete ();
//------------------------------------------------ --static_mqtt.ino
voidmqtt_callback(char* विषय, बाइट* पेलोड, अहस्ताक्षरित लंबाई);
voidmqtt_loop ();
int8_tmqtt_get_topic_index(char* विषय);
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
स्ट्रिंग 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 (चार * ntp_server_name, बाइट टाइम_ज़ोन);
time_tget_ntp_time ();
voidsend_ntp_packet (आईपी पता और पता);
चार *time_stamp_get();
//------------------------------------------------ --static_utility.ino
स्ट्रिंग spiffs_file_list_build (स्ट्रिंग पथ);
voidreport_deserialize_error ();
voidreport_spiffs_error ();
boolcheck_fatal_error ();
boolget_json_card_type (बाइट स्लेव_एड्रेस, बाइट प्रोप_इंडेक्स, चार * कार्ड_टाइप);
boolget_struct_card_type (बाइट स्लेव_एड्रेस, बाइट प्रोप_इंडेक्स, चार * कार्ड_टाइप);
boolget_json_is_series (बाइट स्लेव_एड्रेस, बाइट प्रोप_इंडेक्स);
voidstr_replace (चार * src, constchar * oldchars, char * newchars);
बाइट get_prop_dto_idx (बाइट स्लेव_एड्रेस, बाइट प्रोप_इंडेक्स);
//---------------------------------मुख्य
व्यर्थ व्यवस्था(){
DBG_OUTPUT_PORT.begin(115200);
SetupDeviceData device_data;
सीरियल.प्रिंट्लन (); सीरियल.प्रिंट्लन (); // कंसोल बकवास के लिए मार्जिन
देरी (5000);
अगर (DBG_OUTPUT_FLAG == 2)DBG_OUTPUT_PORT.setDebugOutput(true);
_debug.out_fla (एफ ("सेटअप"), सच, 2);
// आवश्यक कॉन्फ़िगरेशन प्राप्त करें
अगर (SPIFFS.begin ()) {
_debug.out_str(spiffs_file_list_build("/"), true, 2);
अगर (!_config_data.get_device_data(device_data, _runtime_device_data)){
रिपोर्ट_deserialize_error ();
वापसी;
}
}अन्यथा{
रिपोर्ट_स्पिफ्स_एरर ();
वापसी;
}
// डिवाइस में सेट टाइमर मान का उपयोग करें।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);
सर्वर_इनिट ();
// मेटाडेटा संग्रह को बंद करें
_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: डिवाइस कार्ड

डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड
डिवाइस कार्ड

डिवाइस कार्ड (कार्ड-प्रकार: एसिम-डिवाइस) को वेबसाइट पर होस्ट किया गया है और इसे डिवाइस (सीओआरएस) से परोसना आवश्यक नहीं है।

इसकी डिफ़ॉल्ट पृष्ठ सूचियाँ:

  • डिवाइस पर पढ़ने और लिखने के लिए MQTT विषय
  • डिवाइस जिस एक्सेस प्वाइंट से जुड़ा है
  • ACE संपादक का उपयोग करके डिवाइस पर होस्ट किए गए SPIFFS फ़ाइल संपादक का लिंक
  • एक आँख का चिह्न जो कार्ड दिखाएँ/छिपाएँ पृष्ठ को प्रकट करता है।

कार्ड दिखाएँ/छिपाएँ पृष्ठ सूचियाँ:

  • प्रत्येक कार्ड एक अलग आइटम के रूप में
  • दिखाते समय बोल्ड नीला फ़ॉन्ट
  • छुपाए जाने पर काला सामान्य फ़ॉन्ट
  • कार्ड के प्रकार को दर्शाने वाला आइकन।

कार्ड पर छिपे बटन पर क्लिक करके या सूची में नीले-बोल्ड-फ़ॉन्ट आइटम पर क्लिक करके कार्ड को छिपाया जा सकता है। सूची में काले-सामान्य-फ़ॉन्ट आइटम पर क्लिक करके कार्ड दिखाए जा सकते हैं।

इस सुविधा से संबंधित जानकारी टोस्ट है। यदि डिवाइसइन्फो में किसी भी अंतिम बिंदु में एक जानकारी संपत्ति असाइन की गई है, तो कार्ड पर छुपाएं बटन के बगल में एक जानकारी बटन दिखाया जाएगा। क्लिक करने पर एंडपॉइंट में परिभाषित प्रासंगिक जानकारी विंडो पर "टोस्टेड" हो जाएगी।

यदि डिवाइस कार्ड परिभाषित नहीं है, तो कार्ड पर छुपाएं बटन नहीं दिखाए जाएंगे। ऐसा इसलिए है क्योंकि एक बार छुप जाने के बाद उन्हें फिर से दिखाने का कोई तरीका नहीं है।

ESP8266 पर SPIFFS फ़ाइलों के माध्यम से एसिम-डिवाइस कार्ड को कैसे जोड़ा जा सकता है, इस बारे में विस्तार से जानने के लिए एंडपॉइंट कस्टमाइज़ेशन देखें।

क्राउटन वेबकंपोनेंट को आत्मसात करें

लोहे के संकेत>
डिव>
दिखाएँ छिपाएँ चिह्न
मैं>काल>
डिवाइस फ़ॉर्म
एमक्यूटीटी टॉपिक्सडिव>
/आउटबॉक्स/{{endPointJson.device_name}}/*div>
/इनबॉक्स/{{endPointJson.device_name}}/*div>
वाईफ़ाई SSIDdiv>
{{endPointJson.ssid}}div>
आईपी पताdiv>
{{endPointJson.ip_addr}}a>div>
डिव>
सूची छुपाएं
तत्व> [आइटम शीर्षक]कागज-आइटम>
टेम्पलेट>
पेपर-लिस्टबॉक्स>
डिव>
क्राउटन-कार्ड>
टेम्पलेट>
डोम-मॉड्यूल>

देखें rawassim-device.html GitHub द्वारा ❤ के साथ होस्ट किया गया

चरण 6: वीक व्यू कार्ड

वीक व्यू कार्ड
वीक व्यू कार्ड
वीक व्यू कार्ड
वीक व्यू कार्ड
वीक व्यू कार्ड
वीक व्यू कार्ड

वीकव्यू कार्ड (कार्ड-टाइप: एसिम-वीकव्यू) डिवाइस (कॉर्स फोल्डर) पर होस्ट किया जाता है। इसे SPIFFS (इस मामले में user_card_9.json) में फ़ाइल config/user_card_#.json जोड़कर, AsimilateCrouton के लिए प्रकाशित डिवाइसइन्फो पैकेट में इंजेक्ट किया जाता है।

अवलोकन

कार्यदिवसों को टाइम-स्लॉट की सूची के रूप में प्रस्तुत किया जाता है। टाइम-स्लॉट की ग्रैन्युलैरिटी को config/user_card_#.json में "interval_mins" प्रॉपर्टी के साथ सेट किया गया है। इसे एक घंटे का अंश या एक घंटे का गुणक होना चाहिए उदा। १०, १५, २०, ३०, ६०, १२०, ३६०। एक टाइम-स्लॉट पर क्लिक करना सुनिश्चित करें कि उस समय में संबंधित डिवाइस के लिए एक ऑन स्टेट का आदेश दिया गया है। यदि टाइम-स्लॉट अभी है, तो डिवाइस के लिए तुरंत एक कमांड भेजा (प्रकाशित) किया जाता है। आम तौर पर हर मिनट राज्य की जाँच/प्रकाशन किया जाता है। स्थानीय स्टोरेज में चयन सहेजे जाते हैं, इसलिए ब्राउज़र रीफ्रेश के साथ समय पुनः लोड किया जाएगा।

बक्सों का इस्तेमाल करें

अपनी वर्तमान स्थिति में, सप्ताहदृश्य उन उपकरणों के लिए उपयुक्त है जो अपने राज्य की कल्पना करने के लिए टॉगल स्विच का उपयोग कर सकते हैं यानी वे या तो चालू या बंद हैं और सेट होने के बाद वे उस स्थिति में बने रहते हैं। लाइट, पंखे और वॉटर हीटर अच्छे उम्मीदवार हैं।

सीमाएं/चेतावनी

  • अंतराल_मिनट ऊपर बताए गए मानों में से एक होना चाहिए
  • सप्ताहदृश्य उन क्षणिक कार्रवाइयों का समर्थन नहीं करता है जो शेड्यूल की गई हैं, जैसे दिन में दो बार कुछ समय के लिए (5 सेकंड) टैप करना।

भविष्य

  • यह उम्मीद की जाती है कि क्षणिक कार्यों का समर्थन किया जाएगा।
  • शेड्यूल चयन के लिए सभी डिवाइसों में सिंक्रोनाइज़्ड स्टोरेज पर विचार किया जा रहा है।

चरण 7: समापन बिंदु अनुकूलन

जैसा कि FIRMWARE में संक्षेप में बताया गया है, एंडपॉइंट्स को अनुकूलित करने के लिए SPIFFS फाइल सिस्टम में 2 नए कन्वेंशन जोड़े गए हैं। JSON फाइलें वे टुकड़े हैं जो MQTT ब्रोकर को पोस्ट किए गए डिवाइसइन्फो पैकेट में एंडपॉइंट प्रॉपर्टी में जुड़ जाते हैं जो डैशबोर्ड परिभाषा बन जाता है।

फर्मवेयर में एंडपॉइंट की कुंजियाँ उत्पन्न होती हैं:

  • user_card_base.json. के लिए CC_device (कस्टम कार्ड)
  • user_card_#.json के लिए CC_SLAVE_ENDPOINT NAME (# दास का पता होने के नाते)

जैसा कि पहले उल्लेख किया गया है, ऐसे चर हैं जो रनटाइम पर मानों के लिए प्रतिस्थापित हो जाते हैं:

  • mqtt_device_name
  • वाईफाई_एसएसआईडी
  • स्थानीय_आईपी

user_card_base.json

एक उदाहरण:

{ "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": "सीसी_स्विच" }] }

user_card_#.json

एक उदाहरण:

{ "कार्ड-प्रकार": "असिम-सप्ताह का दृश्य", "पथ": "https:///cors", "शीर्षक": "प्लांटर लाइट्स", "जानकारी": "15 मिनट के समय में रोशनी चालू या बंद करें" स्लॉट", "अंतराल_मिनट": 15, "मान": { "मान": "" } }

चरण 8: वीडियो

सिफारिश की: