সুচিপত্র:

IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস: 8 টি ধাপ
IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস: 8 টি ধাপ

ভিডিও: IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস: 8 টি ধাপ

ভিডিও: IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস: 8 টি ধাপ
ভিডিও: IOT123 - BYKO LIVE RIDE 2024, জুলাই
Anonim
IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস
IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস
IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস
IOT123 - একত্রিত সেন্সর হাব: ICOS10 CORS ওয়েব কম্পোনেন্টস

অ্যাসেমিলেট সেন্সর/অ্যাক্টর ক্রীতদাস এমবেড মেটাডেটা যা ক্রাউটনে সংজ্ঞায়িত ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। এই বিল্ডটি আগেরগুলোর থেকে কিছুটা আলাদা; হার্ডওয়্যারের কোন পরিবর্তন নেই। ফার্মওয়্যার এখন হোস্টিং কাস্টম (সমৃদ্ধ) সম্পাদকগুলিকে সমর্থন করে যা অ্যাসিমিলেটক্রাউটনের সর্বশেষ বিল্ডে সংহত করা যেতে পারে। এই নিবন্ধে ফার্মওয়্যার এবং MQTT ড্যাশবোর্ড ব্যাখ্যা করার জন্য আরো মনোযোগ দেওয়া হবে।

WebComponents কে যে ডিভাইসটি তারা নিয়ন্ত্রণ করে সেগুলির একটি সুবিধা হল যে ডিভাইসের আরও উন্নত নিয়ন্ত্রণ সেই নেটওয়ার্কের মধ্যে সীমাবদ্ধ যা ডিভাইসটি সংযুক্ত: আপনার ওয়াইফাই অ্যাক্সেস পয়েন্ট। যদিও আপনি একবার প্রমাণীকরণের সাথে একটি MQTT সার্ভার ব্যবহার করেন, সেখানে সুরক্ষার সাদৃশ্য রয়েছে, যদি আপনি আপনার ব্রাউজারটি ক্ষণিকের জন্য (AssimilateCrouton ওয়েবসাইট) ছেড়ে চলে যান তাহলে কেউ আপনার অটোমেশন ডিভাইসগুলিতে jumpুকে এবং নিয়ন্ত্রণ করতে পারে। এই CORS WebComponent বৈশিষ্ট্যটি কেবলমাত্র পাবলিকভাবে দেখানো রিডিং (টেম্প, লাইট লেভেল, আর্দ্রতা) এবং কমান্ড ফাংশন (অন/অফ, সিডিউলিং) শুধুমাত্র ডিভাইস নেটওয়ার্ক থেকে পাওয়া সম্ভব করে তোলে।

ডিভাইসে, এসপিআইএফএফএস -এ প্রমাণীকরণ এবং হোস্টিং সহ সমস্ত ওয়েব সার্ভার বৈশিষ্ট্যগুলি এখনও সমর্থিত, তবে পলিমার ওয়েব কম্পোনেন্টগুলির জন্য সিওআরএস (ক্রস অরিজিন রিসোর্স শেয়ারিং) সমর্থনের জন্য বিশেষ মনোযোগ দেওয়া হয়েছে (ক্রাউটন পলিমার 1.4.0 ব্যবহার করে)।

AssimilateCrouton- এ

  • একটি ডিভাইস কার্ডের জন্য সমর্থন
  • সমস্ত কার্ডে তথ্য সম্পত্তি যা একটি কার্ডের জন্য দরকারী প্রাসঙ্গিক তথ্যের একটি টোস্ট দেখায়
  • CORS ওয়েব কম্পোনেন্টের জন্য সমর্থন, এই ক্ষেত্রে ডিভাইসের ওয়েব সার্ভারে হোস্ট করা হয়েছে (ESP8266)।

ধাপ 1: ক্রাউটন

ক্রাউটন
ক্রাউটন
ক্রাউটন
ক্রাউটন

Croutonis একটি ড্যাশবোর্ড যা আপনাকে ন্যূনতম সেটআপ দিয়ে আপনার IOT ডিভাইসগুলিকে কল্পনা এবং নিয়ন্ত্রণ করতে দেয়। মূলত, এটি শুধুমাত্র MQTT এবং JSON ব্যবহার করে যেকোন IOT হার্ডওয়্যার উত্সাহীদের জন্য সেটআপ করা সবচেয়ে সহজ ড্যাশবোর্ড।

ASSIMILATE SLAVES (সেন্সর এবং অভিনেতা) এমবেডেড মেটাডেটা এবং প্রোপার্টি যা মাস্টার ব্যবহার করে ডিভাইস ইনফো json প্যাকেট যা ক্রাউটন ড্যাশবোর্ড তৈরিতে ব্যবহার করে। ASMIMILATE NODES এবং Crouton এর মধ্যে মধ্যস্থতাকারী হল একটি MQTT ব্রোকার যা ওয়েবসকেট বন্ধুত্বপূর্ণ: ডেমোর জন্য মশা ব্যবহার করা হয়।

ASSIMILATE MASTER প্রপার্টিজ রিকোয়েস্ট করার জন্য, এটি Crouton আপডেটের জন্য প্রয়োজনীয় ফরম্যাটে রেসপন্স ভ্যালু ফরম্যাট করে। AssimilateCrouton কাঁটা কিছু বৈশিষ্ট্য যোগ করে যা আপনাকে আপনার ডিভাইস চালানোর ব্যবসায়িক নিয়মকে বিকেন্দ্রীকরণ করতে সক্ষম করে অর্থাৎ IOT ডিভাইসের কোন এম্বেডেড ব্যবসায়িক নিয়মের প্রয়োজন হয় না, এটি MQTT/I2C যোগাযোগের জন্য একটি পাইপলাইন স্মার্ট (ATTINY নিয়ন্ত্রিত) দাস অভিনেতা এবং সেন্সর ।

ধাপ 2: একত্রিত ক্রাউটন

সমষ্টিগত ক্রাউটন
সমষ্টিগত ক্রাউটন

ক্রাউটনে পরিবর্তন

ফর্কযুক্ত সংস্করণ থেকে পরিবর্তনগুলির মধ্যে রয়েছে:

  • যদি একটি এন্ডপয়েন্টের একটি পাথ প্রপার্টি সংজ্ঞায়িত থাকে, কার্ডের জন্য ওয়েব কম্পোনেন্ট একটি CORS রিসোর্সের জন্য HTMLImport করবে (এই বিল্ডে ESP8266 এর ওয়েব সার্ভার)।
  • CORS WebComponent- এর (নির্ভরতা) থেকে উজানের যে কোন সম্পদকে রেফারেন্স করা হয় যেন সেগুলি Crouton ওয়েবসাইট থেকে পরিবেশন করা হয়; যখন তারা একটি ব্যতিক্রম হ্যান্ডলার লোড করতে ব্যর্থ হয় তখন ওয়েবসাইটগুলি থেকে পাথ এবং লোডগুলি পুনরায় লোড করে।
  • একটি বর্তমান স্থানীয় সময় উপরের ডানদিকে প্রদর্শিত হয়, যাচাইকরণের সময় নির্ধারণের জন্য দরকারী।

পলিমার নির্ভরতা এবং কর

একটি পলিমার নির্ভরতা গাছের পাতা CORS এ হোস্ট করা যেতে পারে। যেহেতু একটি অ্যাপে মূল নির্ভরতাগুলি বেশ কয়েকবার ব্যবহার করা যেতে পারে, সেগুলিকে 2 টি স্থান (ওয়েবসাইট এবং ডিভাইস) থেকে উল্লেখ করা যায় না কারণ পলিমার মডিউল লোডার তাদের 2 টি পৃথক সম্পদ হিসাবে বিবেচনা করে এবং একাধিক নিবন্ধন ত্রুটি দ্রুত একটি অ্যাপ্লিকেশনকে ফ্লাউন্ড করে।

এই কারণে একটি কার্ডের জন্য WebComponent (1.4.0 এ HTML ফাইল) এবং সংশ্লিষ্ট CSS ফাইল ডিভাইসে হোস্ট করা একমাত্র ফাইল। অন্যান্য নির্ভরতাগুলিকে রেফারেন্স করা হয় যেন ওয়েবকম্পোনেন্টটি মূল ওয়েবসাইটের "এইচটিএমএল" ফোল্ডারে হোস্ট করা হয়, যা ESP8266 এ SPIFFS- এ আপলোড করার জন্য প্রস্তুত না হওয়া পর্যন্ত সেই ফোল্ডার থেকে ওয়েব কম্পোনেন্টগুলি ডেভেলপ করা সহজ করে তোলে। AssimilateCrouton কাজ করবে কিভাবে সঠিক ফাইল পাওয়া যায়।

নিয়োগ

মূল ক্রাউটনের এডফুঙ্গাস স্রষ্টা পুগ/লেস -এ সোর্স লিখেছিলেন এবং একটি এনপিএম/গ্রান্ট টুলচেইন ছিল। আমি এইচটিএমএল/সিএসএস হিসাবে পগ/কম রেন্ডার করেছি এবং রেন্ডার করা ফাইলগুলি সম্পাদনা/বিতরণ করেছি। এটি এনপিএম/গ্রান্ট টুলচেইন ভেঙে দিয়েছে। এটি ঠিক করা ভবিষ্যত বিভাগে অন্তর্ভুক্ত।

আপনি আপনার DEV বক্সে স্থানীয়ভাবে ড্যাশবোর্ড পরীক্ষা করতে পারেন:

  • রুট ফোল্ডারে কমান্ড লাইন থেকে
  • npm শুরু
  • লাইট-সার্ভারটি https:// localhost: 10001 এর জন্য তৈরি করা হয়েছে

একটি স্ট্যাটিক ওয়েব সার্ভারে স্থাপন করুন:

  • node_modules ছাড়া সব ফোল্ডার কপি করুন
  • index.html কপি করুন (এবং সম্ভবত web.config)

ভবিষ্যত

প্রধান লক্ষ্যগুলির মধ্যে একটি হল পলিমার 3 এ আপগ্রেড করা এবং পলিমার সিএলআই থেকে কাজ করা। IOT ডেভেলপারদের নিজস্ব উন্নয়ন করার জন্য উন্নত সম্পাদক এবং কাঠামো যোগ করা একটি উচ্চ অগ্রাধিকার। অবশেষে উন্নত স্বয়ংক্রিয় সিস্টেম সম্পূর্ণরূপে বিচ্ছিন্ন MQTT ক্লায়েন্টদের কাছ থেকে AssimilateCrouton- এর মত চালানো হবে।

AssimilateCrouton- এর জন্য ব্যবহৃত ডিভাইস ইনফো প্যাকেটের একটি উদাহরণ:

{
"ডিভাইস সম্পর্কিত তথ্য": {
"শেষ পয়েন্ট": {
"CC_device": {
"device_name": "ash_mezz_A3",
"কার্ড-টাইপ": "অ্যাসিম-ডিভাইস",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
"শেষ পয়েন্ট": [
{
"title": "লাইট বাড়ান",
"কার্ড-টাইপ": "ক্রাউটন-সিম্পল-টগল",
"endpoint": "সুইচ"
},
{
"title": "প্লান্টার লাইটস",
"card-type": "crouton-assim-weekview",
"এন্ডপয়েন্ট": "CC_switch"
}
]
},
"CC_switch": {
"কার্ড-টাইপ": "এসিম-উইকভিউ",
"info": "15 মিনিটের সময় স্লটে লাইট চালু বা বন্ধ করুন",
"পথ": "https://192.168.8.104/cors",
"title": "প্লান্টার লাইটস",
"ব্যবধান_ মিনিট": 15,
"মান": {
"মান": ""
}
},
"সুইচ": {
"title": "লাইট বাড়ান",
"কার্ড-টাইপ": "ক্রাউটন-সিম্পল-টগল",
"info": "এড হক ভিত্তিতে লাইট চালু বা বন্ধ করুন",
"লেবেল": {
"মিথ্যা": "বন্ধ",
"সত্য": "চালু"
},
"আইকন": {
"মিথ্যা": "সূর্য-ও",
"সত্য": "সূর্য-ও"
},
"মান": {
"মান": 0
}
}
},
"অবস্থা": "ভাল",
"নাম": "ash_mezz_A3",
"বর্ণনা": "অ্যাশমোর, মেজানিন, এরিয়া এ 2 এ অফিস",
"রঙ": "#4D90FE"
}
}

GitHub দ্বারা dev দিয়ে হোস্ট করা rawdeviceInfo.json দেখুন

ধাপ 3: ডিভাইস সমাবেশ

ডিভাইস সমাবেশ
ডিভাইস সমাবেশ
ডিভাইস সমাবেশ
ডিভাইস সমাবেশ
ডিভাইস সমাবেশ
ডিভাইস সমাবেশ

যেহেতু কোন হার্ডওয়্যার পরিবর্তন নেই, এখানে প্রাসঙ্গিক তথ্যের লিঙ্ক রয়েছে:

  • শেল সমাবেশ
  • উপকরণ এবং সরঞ্জাম
  • MCU প্রস্তুতি
  • MCU হাউজিং প্রস্তুতি
  • ক্রীতদাস লো-সাইড সুইচ/রিসেট ডটার-বোর্ড তৈরি করা
  • প্রধান উপাদানগুলি একত্রিত করা

ধাপ 4: ফার্মওয়্যার

ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার
ফার্মওয়্যার

এই নির্মাণের প্রধান পরিবর্তন

AssimilateCrouton অ্যাপ্লিকেশনটি ডিভাইস থেকে CORS সম্পদ ব্যবহার করতে সক্ষম হওয়ার জন্য, প্রতিক্রিয়া শিরোলেখগুলি একটি বিশেষ উপায়ে কনফিগার করা প্রয়োজন। এটি ফার্মওয়্যারের এই রিলিজে প্রয়োগ করা হয়েছিল (static_server.ino => server_file_read ())।

এছাড়াও পলিমারের জন্য প্রধান নির্ভরতা গ্রাফ একক উৎপত্তি হতে হবে। এসপিআইএফএফএস কর্স ফাইলগুলিতে একটি অনিয়ন্ত্রিত হ্যান্ডলার (corsLinkOnError) যোগ করার জন্য একটি কৌশল ব্যবহার করা হয়েছিল যখন তারা ডিভাইসে না পাওয়া গেলে অ্যাসিমিলেটক্রাউটন ওয়েবসাইট থেকে সম্পদ পুনরায় লোড করতে পারে।

SPIFFS ফাইল সিস্টেমে 2 টি নতুন কনভেনশন যোগ করা হয়েছে যা ডিভাইসইনফোতে তৈরি করা শেষ পয়েন্টগুলি কাস্টমাইজ করার জন্য - যা অ্যাসিমিলেটক্রাউটন ড্যাশবোর্ড কার্ড তৈরি করতে ব্যবহার করে:

  • /config/user_card_base.json এন্ডপয়েন্ট সংজ্ঞা রানটাইম ভেরিয়েবলের সাথে প্রথমে অদলবদল হচ্ছে:,,। এটি সাধারণত যেখানে আসিম-ডিভাইস কার্ড যোগ করা হবে। এটি ডিভাইসের সাথে আর যোগাযোগ করে না।
  • /config/user_card_#.json এন্ডপয়েন্ট সংজ্ঞা রানটাইম ভেরিয়েবলের সাথে প্রথমে অদলবদল হচ্ছে:,,। এটি সাধারণত যেখানে অ্যাসিম-উইকভিউ কার্ডের মতো সমৃদ্ধ সম্পাদকদের I2C স্লেভ (অভিনেতা/সেন্সর) এর সাথে যুক্ত করা হবে যা #এর সাথে সম্পর্কিত।

স্কেচ/লাইব্রেরি

এই পর্যায়ে প্রকল্পটি AssimilateBus Arduino লাইব্রেরির জন্য একটি উদাহরণ হিসেবে প্যাকেজ করা হয়েছে। এটি মূলত Arduino IDE থেকে সমস্ত প্রয়োজনীয় ফাইলগুলি সহজেই অ্যাক্সেস করা। প্রধান কোড প্রত্নসমূহ হল:

  • mqtt_crouton_esp8266_cors_webcompferences.ino - প্রধান এন্ট্রি পয়েন্ট।
  • assimilate_bus.h/assimilate_bus.cpp - লাইব্রেরি যা স্লেভ সেন্সর/অভিনেতাদের সাথে I2C যোগাযোগ পরিচালনা করে
  • VizJson.h/VizJson.cpp - লাইব্রেরি যা MQTT এর মাধ্যমে প্রকাশিত যেকোন JSON ফরম্যাট/তৈরি করে
  • config.h/config.cpp - লাইব্রেরি যা SPIFFS- এ কনফিগ ফাইল পড়ে/বক্স করে/লিখে
  • static_i2c_callbacks।
  • static_server.ino - ওয়েব সার্ভার ফাংশন
  • static_utility.ino - সহায়ক ফাংশন

স্ট্যাটিক আইএনও ফাংশনগুলি বিভিন্ন কারণে (লাইব্রেরির পরিবর্তে) ব্যবহার করা হয়েছিল, তবে মূলত যাতে ওয়েব সার্ভার এবং এমকিউটিটি ফাংশনগুলি একসাথে ভালভাবে চলতে পারে।

দ্য স্পিফস রিসোর্স

SPIFFS ফাইলের বিস্তারিত ব্যাখ্যা এখানে পাওয়া যাবে।

  • favicon.ico - Ace Editor দ্বারা ব্যবহৃত সম্পদ
  • কনফিগ

    • device.json - ডিভাইসের কনফিগারেশন (ওয়াইফাই, এমকিউটিটি …)
    • স্লেভ_মেটাস _#। json - প্রতিটি ক্রীতদাসের ঠিকানা নম্বর (#) এর জন্য রানটাইম এ উৎপন্ন
    • user_card _#। json - কাস্টম এন্ডপয়েন্ট ডিভাইসে ইন্টিগ্রেট করা হবে প্রতিটি স্লেভ অ্যাড্রেস নম্বরের জন্য (#)
    • user_card_base.json - কাস্টম এন্ডপয়েন্টটি ডিভাইসের জন্য ডিভাইস ইনফোতে সংহত করা হবে
    • user_meta _#। json - কাস্টম মেটাডেটা প্রতিটি ক্রীতদাসের ঠিকানা নম্বর (#) এর জন্য ক্রীতদাসদের ওভাররাইড করে
    • user_props.json - দাসদের মেটাডেটাতে ওভাররাইড করার জন্য কাস্টম সম্পত্তির নাম
  • কর্স

    • card -webcomponent.css - বিভিন্ন কাস্টম কার্ডের স্টাইলশীট
    • card -webcomponent.html - বিভিন্ন কাস্টম কার্ডের জন্য ওয়েব কম্পোনেন্ট
  • সম্পাদক

    • assimilate -logo-p.webp" />
    • edit.htm.gz - Ace Editor HTML এর gzip
    • edit.htm.src - Ace Editor এর মূল HTML
    • favicon -32x32-p.webp" />

ফার্মওয়্যার আপলোড করা হচ্ছে

  • কোড রিপোজিটরি পাওয়া যাবে এখানে (স্ন্যাপশট)।
  • লাইব্রেরির একটি জিপ এখানে পাওয়া যাবে (স্ন্যাপশট)।
  • এখানে "একটি জিপ লাইব্রেরি আমদানি করার" নির্দেশাবলী।
  • লাইব্রেরি ইনস্টল হয়ে গেলে আপনি "mqtt_crouton_esp8266_cors_webcomponents" উদাহরণটি খুলতে পারেন।
  • এখানে Wemos D1 মিনি জন্য Arduino স্থাপন করার নির্দেশাবলী।
  • নির্ভরতা: ArduinoJson, TimeLib, PubSubClient, NeoTimer (রিপোজিটরিতে পরিবর্তন ভাঙলে সংযুক্তি দেখুন)।

স্পিফগুলিতে আপলোড করুন

একবার কোডটি Arduino IDE তে লোড হয়ে গেলে, data.json ডাটা/কনফিগ ফোল্ডারে খুলুন:

  • আপনার ওয়াইফাই SSID দিয়ে wifi_ssid এর মান পরিবর্তন করুন।
  • আপনার ওয়াইফাই কী দিয়ে wifi_key এর মান পরিবর্তন করুন।
  • আপনার পছন্দের ডিভাইস আইডেন্টিফিকেশনের সাথে mqtt_device_name এর মান পরিবর্তন করুন (কোন যোগদানের প্রয়োজন নেই)।
  • আপনার পছন্দের ডিভাইসের বিবরণ (ক্রাউটনে) সহ mqtt_device_description এর মান পরিবর্তন করুন।
  • Device.json সেভ করুন।
  • SPIFFS- এ ডেটা ফাইল আপলোড করুন।

AssimilateBus উদাহরণের জন্য প্রধান এন্ট্রি পয়েন্ট:

/*
*
*আপনার ডিভাইসের জন্য বিধিগুলি এমকিউটিটি -র মাধ্যমে নিয়ন্ত্রিত হওয়ার প্রত্যাশিত - এই ফার্মওয়্যারের মধ্যে কষ্ট করা উচিত নয়
*
* এই ফাইলে সেটআপ এবং লুপ ছাড়া অন্য
* গুরুত্বপূর্ণ চলন্ত অংশ হল
* on_bus_received এবং 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 "outbox" // CROUTON CONVENTIONS
#সংজ্ঞা_ mqtt_sub_topic "ইনবক্স"
// ------------------------------------------------ - শ্রেণীর বস্তু
ডিবাগ _ ডিবাগ (DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
কনফিগ _config_data;
WiFiClient _esp_client;
PubSubClient _client (_esp_client);
WiFiUDP Udp;
ESP8266 ওয়েব সার্ভার _ সার্ভার (80);
Neotimer _timer_property_request = নিওটিমার (5000);
// ------------------------------------------------ - ডেটা স্ট্রাক্ট / ভেরিয়েবল
রানটাইমডিভিস ডেটা _runtime_device_data;
PropertyDto _dto_props [50]; // সর্বোচ্চ 10 ক্রীতদাস x সর্বোচ্চ 5 বৈশিষ্ট্য
// ------------------------------------------------ -- নিয়ন্ত্রণ প্রবাহ
volatilebool _sent_device_info = মিথ্যা;
বাইট _dto_props_index = 0;
bool _fatal_error = মিথ্যা;
// --------------------------------- ফাংশন স্কোপ ঘোষণা
// ------------------------------------------------ - static_i2c_callbacks.ino
voidon_bus_received (byte slave_address, byte prop_index, ভূমিকা role, char name [16], char value [16]);
voidon_bus_complete ();
// ------------------------------------------------ - স্থির_ 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 (বাইট ঠিকানা, বাইট কোড, কনস্টচার *প্যারাম);
// ------------------------------------------------ - 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 এবং ঠিকানা);
char *time_stamp_get ();
// ------------------------------------------------ - static_utility.ino
স্ট্রিং spiffs_file_list_build (স্ট্রিং পাথ);
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 (বাইট স্লেভ_ড্রেস, বাইট prop_index);
voidstr_replace (char *src, constchar *oldchars, char *newchars);
বাইট get_prop_dto_idx (বাইট স্লেভ_ড্রেস, বাইট prop_index);
// --------------------------------- প্রধান
অকার্যকর সেটআপ(){
DBG_OUTPUT_PORT. শুরু (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 () {
যদি (! check_fatal_error ()) ফিরে আসে;
mqtt_loop ();
_server.handleClient ();
যদি (_timer_property_request.repeat ()) {
_assimilate_bus.get_properties (on_bus_received, on_bus_complete);
}
}

GitHub দ্বারা raw দিয়ে হোস্ট করা rawmqtt_crouton_esp8266_cors_webcompferences.ino দেখুন

ধাপ 5: ডিভাইস কার্ড

ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড
ডিভাইস কার্ড

ডিভাইস কার্ড (কার্ড-টাইপ: অ্যাসিম-ডিভাইস) ওয়েবসাইটে হোস্ট করা হয় এবং ডিভাইস (CORS) থেকে এটি পরিবেশন করার প্রয়োজন হয় না।

এর ডিফল্ট পৃষ্ঠা তালিকা:

  • ডিভাইসে পড়া এবং লেখার জন্য MQTT বিষয়
  • ডিভাইসটি অ্যাক্সেস পয়েন্টের সাথে সংযুক্ত
  • এসিআইএফটিএস ফাইল সম্পাদকের একটি লিঙ্ক এসি এডিটর ব্যবহার করে ডিভাইসে হোস্ট করা হয়েছে
  • একটি আইকন যা শো/লুকান কার্ড পৃষ্ঠা প্রকাশ করে।

কার্ড দেখান/লুকান পৃষ্ঠার তালিকা:

  • প্রতিটি কার্ড আলাদা আইটেম হিসেবে
  • দেখানোর সময় গাold় নীল হরফ
  • লুকানো অবস্থায় কালো সাধারণ ফন্ট
  • কার্ডের ধরন বর্ণনা করে একটি আইকন।

কার্ডগুলিতে লুকানো বোতামটি ক্লিক করে, অথবা তালিকার একটি নীল-বোল্ড-ফন্ট আইটেমে ক্লিক করে কার্ডটি লুকানো যেতে পারে। তালিকার একটি কালো-স্বাভাবিক-ফন্ট আইটেমে ক্লিক করে কার্ডগুলি দেখানো যেতে পারে।

এই বৈশিষ্ট্যটির সাথে আলগাভাবে সম্পর্কিত হল তথ্য টোস্ট। DeviceInfo- এর কোনো এন্ডপয়েন্ট যদি কোনো ইনফো প্রপার্টি বরাদ্দ থাকে, তাহলে কার্ডের হাইড বাটনের পাশে একটি তথ্য বাটন দেখানো হবে। এন্ডপয়েন্টে সংজ্ঞায়িত প্রাসঙ্গিক তথ্য ক্লিক করলে উইন্ডোতে "টোস্ট" করা হবে।

যদি ডিভাইস কার্ডটি সংজ্ঞায়িত না করা হয়, তাহলে লুকানো বোতামগুলি কার্ডগুলিতে দেখানো হবে না। এর কারণ হল একবার লুকিয়ে থাকলে সেগুলো আবার দেখানোর উপায় নেই।

ESP8266 এ SPIFFS ফাইলের মাধ্যমে কিভাবে অ্যাসিম-ডিভাইস কার্ড যোগ করা যায় তা বিস্তারিত জানার জন্য ENDPOINT কাস্টমাইজেশন দেখুন।

AssimilateCrouton ওয়েব কম্পোনেন্ট

লোহা-সংকেত>
div>
লুকানো আইকন দেখান
i> স্প্যান>
ডিভাইস ফর্ম
MQTT TOPICSdiv>
/আউটবক্স/{{endPointJson.device_name}}/*div>
/ইনবক্স/{{endPointJson.device_name}}/*div>
ওয়াইফাই SSIDdiv>
{{endPointJson.ssid}} div>
আইপি ADDRESSdiv>
{{endPointJson.ip_addr}} a> div>
div>
লুকানো তালিকা দেখান
উপাদান>কাগজ-আইটেম>
টেমপ্লেট>
কাগজ-তালিকা বাক্স>
div>
ক্রাউটন-কার্ড>
টেমপ্লেট>
ডম-মডিউল>

GitHub দ্বারা ass দিয়ে হোস্ট করা rawassim-device.html দেখুন

ধাপ 6: উইকভিউ কার্ড

উইকভিউ কার্ড
উইকভিউ কার্ড
উইকভিউ কার্ড
উইকভিউ কার্ড
উইকভিউ কার্ড
উইকভিউ কার্ড

উইকভিউ কার্ড (কার্ড-টাইপ: অ্যাসিম-উইকভিউ) ডিভাইসে হোস্ট করা হয় (কর্স ফোল্ডার)। এটি AsimilateCrouton- এর জন্য প্রকাশিত deviceInfo প্যাকেটে একটি ফাইল config/user_card _#।

পর্যালোচনা

সপ্তাহের দিনগুলি সময়-স্লটের তালিকা হিসাবে উপস্থাপন করা হয়। টাইম-স্লটের গ্রানুলারিটি কনফিগ/ইউজার_কার্ড _#। Json- এ "interval_mins" প্রপার্টি দিয়ে সেট করা আছে। এটি একটি ঘন্টার ভগ্নাংশ বা এক ঘন্টার গুণক হতে হবে যেমন 10, 15, 20, 30, 60, 120, 360. টাইম-স্লটে ক্লিক করা নিশ্চিত করুন যে সেই সময়ে সংশ্লিষ্ট ডিভাইসের জন্য একটি অন স্টেট কমান্ড করা আছে। যদি টাইম-স্লট এখন হয়, ডিভাইসের জন্য অবিলম্বে একটি কমান্ড পাঠানো হয় (প্রকাশিত)। সাধারণত প্রতি মিনিটে রাজ্য চেক/প্রকাশ করা হয়। নির্বাচনগুলি লোকালস্টোরেজে সংরক্ষণ করা হয়, তাই সময়গুলি একটি ব্রাউজার রিফ্রেশের সাথে পুনরায় লোড করা হবে।

ব্যবহারের ক্ষেত্রে

তার বর্তমান অবস্থায়, সপ্তাহের দৃশ্যটি এমন ডিভাইসগুলির জন্য উপযুক্ত যা তাদের অবস্থা কল্পনা করতে একটি টগল সুইচ ব্যবহার করতে পারে অর্থাৎ সেগুলি চালু বা বন্ধ এবং সেট হওয়ার পরে তারা সেই অবস্থায় থাকে। লাইট, ফ্যান এবং ওয়াটার হিটার ভালো প্রার্থী।

সীমাবদ্ধতা/সতর্কতা

  • Interval_mins অবশ্যই উপরে উল্লিখিত মানগুলির মধ্যে একটি হতে হবে
  • সপ্তাহের ভিউ ক্ষণস্থায়ী ক্রিয়াকলাপগুলিকে সমর্থন করে না যা নির্ধারিত হয়, যেমন সংক্ষেপে (5 সেকেন্ড) দিনে দুবার টোকা দেওয়া।

ভবিষ্যত

  • এটা আশা করা যায় যে ক্ষণস্থায়ী ক্রিয়াগুলি সমর্থিত হবে।
  • সময়সূচী নির্বাচনের জন্য ডিভাইস জুড়ে সিঙ্ক্রোনাইজড স্টোরেজ বিবেচনা করা হচ্ছে।

ধাপ 7: এন্ডপয়েন্ট কাস্টমাইজেশন

FIRMWARE এ সংক্ষিপ্তভাবে উল্লেখ করা হয়েছে, এন্ডপয়েন্টগুলি কাস্টমাইজ করার জন্য SPIFFS ফাইল সিস্টেমে 2 টি নতুন কনভেনশন যোগ করা হয়েছে। JSON ফাইলগুলি এমন টুকরা যা MQTT ব্রোকারে পোস্ট করা ডিভাইসের ইনফো প্যাকেটের শেষ পয়েন্ট সম্পত্তিতে যুক্ত হয় যা ড্যাশবোর্ডের সংজ্ঞা হয়ে যায়।

এন্ডপয়েন্টগুলির কীগুলি ফার্মওয়্যারে উত্পন্ন হয়:

  • User_card_base.json এর জন্য CC_device (কাস্টম কার্ড)
  • ব্যবহারকারী_কার্ড _# এর জন্য CC_SLAVE_ENDPOINT নাম। json (# দাসের ঠিকানা হচ্ছে)

যেমনটি আগে উল্লেখ করা হয়েছে, এমন ভেরিয়েবল রয়েছে যা রানটাইমের সময় মানগুলির জন্য প্রতিস্থাপিত হয়:

  • mqtt_device_name
  • wifi_ssid
  • local_ip

user_card_base.json

একটি উদাহরণ:

user_card _#। json

একটি উদাহরণ:

ধাপ 8: ভিডিও

প্রস্তাবিত: