Mundarija:

IOT123 - SENSOR HUBINI ASSIMILASH: ICOS10 XUSUSIYLASHTIRISH VAZIFASI: 11 qadam
IOT123 - SENSOR HUBINI ASSIMILASH: ICOS10 XUSUSIYLASHTIRISH VAZIFASI: 11 qadam

Video: IOT123 - SENSOR HUBINI ASSIMILASH: ICOS10 XUSUSIYLASHTIRISH VAZIFASI: 11 qadam

Video: IOT123 - SENSOR HUBINI ASSIMILASH: ICOS10 XUSUSIYLASHTIRISH VAZIFASI: 11 qadam
Video: IOT123 - ASSIMILATE SENSOR HUB: ICOS10 IDC PANEL ASSEMBLY 2024, Noyabr
Anonim
IOT123 - SENSOR HUBI ASSIMILATSIYASI: ICOS10 XUSUSIYAT VERISI
IOT123 - SENSOR HUBI ASSIMILATSIYASI: ICOS10 XUSUSIYAT VERISI
IOT123 - SENSOR HUBINI ASIMSIYA QILISH: ICOS10 -ni sozlash
IOT123 - SENSOR HUBINI ASIMSIYA QILISH: ICOS10 -ni sozlash
IOT123 - SENSOR HUBI ASSIMILATSIYASI: ICOS10 XUSUSIYAT VERISI
IOT123 - SENSOR HUBI ASSIMILATSIYASI: ICOS10 XUSUSIYAT VERISI

ASSIMILATE SENSOR/ACTOR Slaves Crouton vizualizatsiyasini aniqlash uchun ishlatiladigan metadatalarni joylashtiradi. Ushbu tuzilma ESP8266 Master -ga veb -server qo'shadi, foydalanuvchi o'zgartirishi mumkin bo'lgan ba'zi konfiguratsiya fayllariga xizmat qiladi, so'ngra vizualizatsiyani qayta aniqlash uchun ushbu fayllardan foydalanadi. Shunday qilib, asboblar paneli nomlari va sozlanishi xususiyatlarning ko'pini o'zgartirish mumkin. Bu kerak edi, masalan. DHT11 harorat va namlik xususiyatlarini e'lon qiladi: agar saytda alohida DHT11 datchiklari bo'lgan bir nechta tugunlar bo'lsa, ularning hammasini harorat deyish mumkin emas (Garaj harorati, Yard harorati …). I2C Bus (16 ta belgi) tomonidan o'rnatilgan metadata uzunligini cheklash mavjud emas va boy qiymatlarni qo'llash mumkin (64 ta belgigacha).

Ixtiyoriy asosiy autentifikatsiya veb -sahifani, shuningdek boshqa manbalar uchun autentifikatsiyadan istisnolar ro'yxatini tuzish mumkin.

Qullarni kerak bo'lganda o'chirib qo'yadigan past burchakli kalit, shuningdek, mavjud bortda ham ishlab chiqilgan.

Texnik eslatma sifatida, qurilishni boshlashdan oldin, global metadata obyekti grafigi tufayli xotira hajmi 70% ni tashkil etdi. Oxirgi AssimilateBus kutubxonasida global o'zgaruvchini SPIFFS -da saqlangan kichikroq JSON fayllariga ajratadigan o'zgarishlar yuz berdi. Bu oyoq izini ~ 50%ga qaytardi, bu JSONning barcha tahlil/binosi uchun xavfsizroq. AssimilateBusSlave kutubxonasi bu o'zgarishlarda o'zgarmaydi (ASSIM_VERSION 2).

XUSUSIYATLARI VA VISION

Hozirgi vaqtda qullar (datchiklar va aktyorlar) mustaqil bo'lib, xususiyatlarni o'qish yoki buyruqlar bo'yicha harakat qilish uchun I2C konventsiyasiga asoslangan. Usta qullardan metadata va xususiyatlarni olib, MQTT brokeriga yuboradi. Bundan tashqari, u veb -serverni ishga tushiradi va JSON fayllariga xizmat ko'rsatadi, ular masterni sozlash va metra ma'lumotlarini/xususiyatlarini sozlash uchun tahrirlanishi mumkin, natijada Crouton iste'mol qiladi. Shaxsiy sensorlar/aktyorlar xo'roz xo'jayin qullar nima qilayotgani haqida oldindan bilmasdan Crouton orqali o'qiladi/buyuriladi.

IOT NETWORK ASSIMILATE maqsadlaridan biri - bu Crouton -ni sozlash, shuning uchun IOT NODE veb -serverlaridan (shu kabi tuzilish) xizmat qiladigan mash -tahrirlovchilar veb -komponentalar sifatida qo'shiladi, ular nima qilayotganini to'liq nazorat qiladi, ya'ni master dasturlanmagan, qullarning asosiy funktsiyalar to'plami bor, lekin Crouton asboblar paneli ishni bajarish uchun zarur bo'lgan barcha biznes qoidalarini o'z ichiga oladi!

Crouton vilkasi narsalarni markazlashtirilmagan boshqarish/sozlash uchun variant sifatida qaraladi. Aslida, har qanday MQTT mijozi/GUI kombinatsiyasi narsalaringizni boshqarishi mumkin, chunki har bir funktsiya (sensorlar va aktyorlar) MQTT so'nggi nuqtalari sifatida namoyon bo'ladi.

1 -qadam: Crouton

Crouton
Crouton
Crouton
Crouton

Crouton. https://crouton.mybluemix.net/ Crouton - bu IOT qurilmalarini minimal sozlash bilan vizualizatsiya qilish va boshqarish imkonini beruvchi asboblar paneli. Aslida, bu har qanday IOT apparat ixlosmandlari uchun faqat MQTT va JSON yordamida sozlashning eng oson paneli.

ASSIMILATE SLAVES (datchiklar va aktyorlar) o'rnatilgan metadata va xususiyatlarga ega, bu uskuna Crouton asboblar panelini qurishda foydalanadigan InInfo json paketini qurishda foydalanadi. ASSIMILATE NODES va Crouton o'rtasidagi vositachi - bu MQTT brokeridir, u veb -saytlarga mos keladi: chivin demo uchun ishlatiladi.

ASSIMILATE MASTER (bu tuzilish) xususiyatlarni so'raganligi sababli, javob qiymatlarini Crouton yangilanishlari uchun kerakli formatda formatlaydi.

2 -qadam: veb -server / muharrir

Veb -server / muharrir
Veb -server / muharrir
Veb -server / muharrir
Veb -server / muharrir

Master yuklash paytida (bu tuzilish) o'rnatilgan veb -server ishga tushadi. IP -manzil Serial konsoliga chiqariladi; Oxir -oqibat, bu Crouton boshqaruv panelida e'lon qilinadi.

Belgilangan URL manziliga kirganingizda, ACE EDITOR yuklanadi:

Ace - bu JavaScript -da yozilgan joylashtiriladigan kod muharriri. Bu Sublime, Vim va TextMate kabi mahalliy muharrirlarning xususiyatlari va ishlashiga mos keladi.

Ace o'rnatilgan veb -serverlar bilan mashhur va JSON fayllarini tahrirlash va saqlash uchun yaxshi interfeys beradi.

Chapdagi fayl nomini bosish, faylni ESP8266 -dagi SPIFFS -dan o'qiladi va o'ng tomonda tahrir qilish uchun yuklanadi. Faylni yuqori asboblar panelidan saqlash mumkin.

Faylni yuklash uchun:

  1. Mahalliy fayl tizimidan Fayl -ni tanlang.
  2. Matn qutisiga papka yo'lini kiriting (agar kerak bo'lsa).
  3. Yuklash -ni bosing.
  4. Sahifani yangilang.

3 -qadam: qurilmani sozlash

Qurilmani sozlash
Qurilmani sozlash

Qurilmaning konfiguratsiyasi (ESP8266) device.json fayli orqali amalga oshiriladi.

Ma'lumotlarni SPIFFS (ESP8266 eskiz ma'lumotlarini yuklash) ga yuklamasdan oldin, ba'zi yozuvlarni (wifi_ssid, wifi_key) o'zgartirish kerak bo'ladi.

Veb -serverning ildiziga o'ting (https://192.168.8.104/ kabi konsol chiqishida ko'rsatilgan).

TAKRIRLASH

ACE EDITOR -da config/device.json -ni tanlang.

Yozuvlar:

  • www_auth_username: veb -server fayllari uchun avtorizatsiya foydalanuvchi nomi (avtorizatsiya uchun bo'sh).
  • www_auth_password: veb -server fayllari uchun avtorizatsiya paroli (agar foydalanuvchi nomi aniqlansa).
  • www_auth_exclude_files: avtorizatsiya tekshiruvlaridan chiqarib tashlanadigan fayl yo'llarining nuqta-nuqta bilan ajratilgan ro'yxati (agar foydalanuvchi nomi aniqlangan bo'lsa).
  • sensor_interval: MQTT Brokeriga ma'lumotlarni e'lon qilish orasidagi millisekundlar.
  • ntp_server_name: foydalaniladigan vaqt serverining nomi.
  • time_zone: mahalliy vaqt uchun soatlab ofset.
  • wifi_ssid: mahalliy kirish nuqtasi SSID.
  • wifi_key: SSID uchun kalit.
  • mqtt_broker: MQTT brokerining manzili.
  • mqtt_username: MQTT brokeridan foydalanish uchun foydalanuvchi nomi (hech qanday hisob kerak emas).
  • mqtt_password: MQTT foydalanuvchi nomidan foydalanish uchun parol.
  • mqtt_port: MQTT broker porti.
  • mqtt_device_name: MQTT mavzulari va Crouton identifikatori uchun ishlatiladigan ism.
  • mqtt_device_description: Crouton -da ko'rsatilgan qurilmaning tavsifi.
  • viz_color: Crouton -dagi qurilma kartalarini aniqlash uchun rang (forked versiyada)

4 -qadam: mulkni sozlash

Mulkni sozlash
Mulkni sozlash
Mulkni sozlash
Mulkni sozlash
Mulkni sozlash
Mulkni sozlash

Qullarning har birining ta'riflari.h faylida aniqlangan nvc strukturasi mavjud:

// --------------------------------------- E'LON qilingan XUSUSIYATLARI

nvc rekvizitlari [2] = {{"Namlik", "", to'g'ri}, {"Harorat", "", noto'g'ri}}; // --------------------------------------- Nashr qilingan xususiyatlarni tugatish

Har bir yozuv indeksga ega, birinchisi 0 (nol).

Xususiyat nomini sozlash user_props.json fayli orqali amalga oshiriladi.

Veb -serverning ildiziga o'ting (https://192.168.8.104/ kabi konsol chiqishida ko'rsatilgan).

TAKRIRLASH

ACE EDITOR -da config/user_props.json -ni tanlang (yoki yuklang).

Tuzilishi quyidagicha:

Birinchi kalit, ta'riflar.h faylidagi qulning manzili:

#ADDRESS_SLAVE XX ni aniqlang

  • Keyingi darajadagi kalit - bu mulk indeksi.
  • Bu kalitning qiymati - ta'riflar faylida ko'rsatilgan mulk nomi o'rniga Croutonda ishlatiladigan Mulk nomi.

5 -qadam: Meta -ma'lumotlarni sozlash

Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash
Meta -ma'lumotlarni sozlash

Mumkin bo'lgan sozlashlar miqdori tufayli har bir qul o'z metadata o'zgartirish fayliga ega. Fayllar user_metas_.json formatida bo'lishi kerak.

Qul manzili ATTINY85 eskizidagi definitions.h faylida joylashgan:

#ADDRESS_SLAVE XX ni aniqlang

Metadata bir xil faylda shunday ta'riflangan:

const statik char viz1 PROGMEM = "VIZ_CARD_TYPE";

const statik char viz2 PROGMEM = "2: chart-donut"; const statik char viz3 PROGMEM = "1";

Birinchi qator - metadata elementining nomi.

Ikkinchi qator - bu qiymat. U odatda mulk indeksi qo'shimchasiga ega.

Uchinchi qator - davom bayrog'i. 1 - davom ettirish, 0 - metadata oxiri (VCC_MV).

Veb -serverning ildiziga o'ting (https://192.168.8.104/ kabi konsol chiqishida ko'rsatilgan).

TAKRIRLASH

ACE EDITOR -da config/user_metas_SLAVE_ADDRESS.json -ni tanlang (yoki yuklang). Tuzilishi quyidagicha:

  • Ism/qiymat juftlari qatori.
  • Ism - bu o'zgartirish kerak bo'lgan metadata elementining nomi.
  • Qiymat - bu o'zgarish. O'zgartirish uchun indeks qo'shimchasi tekshiriladi.

6 -qadam: Materiallar va asboblar

Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar

ICOS10 (IDC) Shell materiallar ro'yxati

  1. D1M BLOCK Pin Jig (1)
  2. D1M BLOCK tayanch va korpus (1)
  3. Wemos D1 Mini (1)
  4. Wemos D1 Mini Protoboard qalqoni (1)
  5. 40P ayol sarlavhalari (8P, 8P, 9P, 9P)
  6. Erkaklar sarlavhasi 90º (3P, 3P, 3P, 2P, 1P, 2P)
  7. 1 "Ikki tomonlama protoboard (2)
  8. 2N7000 NFET (1)
  9. 6 pinli kafanlangan IDC erkak sarlavhasi (1)
  10. Ulanish simlari (~ 10)
  11. 0,5 mm kalaylangan tel (~ 4)
  12. 4G x 15mm tugmachali o'z -o'zidan tejamkor vintlardek (2)
  13. 4G x 6 mm o'z -o'zidan tejamkor vintlardek (~ 20)
  14. Lehim va temir (1)

7 -qadam: MCUga tayyorgarlik

Image
Image
MCUga tayyorgarlik
MCUga tayyorgarlik

Ushbu qurilishda biz Wemos D1 Mini -dan foydalanamiz. Agar siz ilgari D1M WIFI BLOCK qurgan bo'lsangiz, uni modulli apparat komponenti uchun ishlatishingiz mumkin. Agar yo'q bo'lsa, minimal qism sifatida keyingi qismga o'ting.

MCU'GA TUG'ILGAN PIN -kodlarni lehimlash (PIN -JIG yordamida) Agar siz PIN -JIG -ni chop qila olmasangiz, ko'rsatmalarga amal qilib, improvizatsiya qiling: PIN -JIGning balandligi (ofset) 6,5 mm.

  1. Ushbu sahifadan PIN JIG -ni chop eting/oling.
  2. Sarlavha pinlarini taxtaning pastki qismidan (TX o'ng-chap) va lehim moslamasiga o'tkazing.
  3. Pimlarni qattiq tekis yuzaga bosing.
  4. Jadvalni panjara ustiga mahkam bosing.
  5. 4 burchakli pinni lehimlang.
  6. Agar kerak bo'lsa, taxtani/pimlarni qayta qizdiring va joylashtiring (taxta yoki pim hizalanmagan yoki cho'zilmagan).
  7. Qolgan pinlarni lehimlang.

ISHLAB CHIQARISH yuklanmoqda

Kod omborini bu erda topish mumkin (oniy tasvir).

Bu erda kutubxonaning ZIP kodini topishingiz mumkin (rasm).

Bu erda "ZIP kutubxonasini import qilish" bo'yicha ko'rsatmalar.

Kutubxona o'rnatilgandan so'ng siz "mqtt_crouton_esp8266_customization_webserver" misolini ochishingiz mumkin.

Bu erda Wemos D1 Mini uchun Arduino -ni sozlash bo'yicha ko'rsatmalar.

Bog'liqliklar: ArduinoJson, TimeLib, PubSubClient, NeoTimer (agar omborlardagi o'zgarishlar buzilsa, qo'shimchalarga qarang).

SPIFFS yuklash

Kod Arduino IDE -ga yuklanganidan so'ng, data/config papkasida device.json -ni oching:

  1. Wi -Fi SSID yordamida wifi_ssid qiymatini o'zgartiring.
  2. Wi -Fi kaliti yordamida wifi_key qiymatini o'zgartiring.
  3. Mqtt_device_name qiymatini o'zingiz tanlagan qurilma identifikatori bilan o'zgartiring (qo'shilish shart emas).
  4. Qurilma tavsifi bilan mqtt_device_description qiymatini o'zgartiring (Croutonda).
  5. Qurilmani saqlang.json.
  6. Ma'lumot fayllarini SPIFFS -ga yuklang.

8 -qadam: MCU uy -joyini tayyorlash

Image
Image
MCU uy -joy tayyorlash
MCU uy -joy tayyorlash
MCU uy -joy tayyorlash
MCU uy -joy tayyorlash

MCU uyi D1 Mini-ning sarlavhalarini, rozetka (sensorlar va aktyorlar) zanjiri bilan aloqa qiladigan qizg'in taxtalarga ulanadi.

HOUSING HEADERS Bu D1 Mini Protoboard -ga asoslangan va bu pinlarni ajratib turadi:

  1. Ulanish uchun D1M WIFI BLOCK/D1 Mini uchun pinlar.
  2. D1M WIFI BLOCK/D1 Mini -dan 2 qatorli kontaktlarning to'g'ridan -to'g'ri uzilishi. Bu faqat prototipni yaratishda qulaylik uchun mavjud. Taxminlarga ko'ra, boshqaruv kengashi ushbu sarlavhalarga kirishni to'sib qo'yadi.
  3. 4 Qiz-taxtalar tomonidan ishlatiladigan maxsus pimlarning uzilishi.

D1M kontaktlarini uy -joy boshlig'iga qo'shish uchun:

  1. SOKET JIGINI ISHLATGAN SOLDER videosini tomosha qiling.
  2. Sarlavha pimlarini taxtaning pastki qismidan o'tkazing (TX yuqori chap tomonda).
  3. Jigarni plastmassa sarlavhasi ustiga qo'ying va ikkala yuzani tekislang.
  4. Jig va yig'ishni aylantiring va boshini qattiq tekis yuzaga mahkam bosing.
  5. Jadvalni panjara ustiga mahkam bosing.
  6. Minimal lehim yordamida 4 burchakli pinni lehimlang (faqat pimlarni vaqtincha tekislang).
  7. Agar kerak bo'lsa, taxtani/pimlarni qayta qizdiring va joylashtiring (taxta yoki pim hizalanmagan yoki cho'zilmagan).
  8. Qolgan pinlarni lehimlang.
  9. Jihozni olib tashlang.
  10. Lehimlarning ustidagi pinlarni kesib oling.

Qizlar taxtasining uzilishlarini qo'shish uchun:

  1. 9P 9 ta ayol sarlavhasini kesib tashlang.
  2. Yuqoridagi rasmda ko'rsatilgandek 9P sarlavhalarini joylashtiring va pastdan lehimlang.

To'g'ridan -to'g'ri uzilishlarni qo'shish uchun:

  1. 2 ta 8P ayol sarlavhalarini kesib tashlang.
  2. Yuqorida ko'rsatilganidek, 8P sarlavhalarini joylashtiring va pastdan lehimlang.

Sarlavhalarni pastdan yuqoriga yo'naltirilgan TX pin bilan ulash uchun:

  1. RST pinidan 4 pim bo'ylab iz va lehim.
  2. A0 pinidan 4 ta pin bo'ylab iz va lehim.
  3. D1 pinidan 4 ta pin bo'ylab iz va lehim.
  4. D2 pinidan 4 ta pin bo'ylab iz va lehim.
  5. D0 pinidan 2 qatorga va 4 pim bo'ylab iz va lehim.
  6. D7 pinidan 4 ta pin bo'ylab iz va lehim.
  7. GND pinidan 4 ta pin bo'ylab iz va lehim.
  8. 5V pimdan 4 ta pin bo'ylab iz va lehim.
  9. 3V3 pinidan 4 ta pin bo'ylab 45 ° pastga qarab iz va lehim.

FIKTURNI YIG'ISH

HOUSING HEADERS MCU HOUSING -ga yopishtirilgan va bu BASE PLAYTga yopishtirilgan.

  1. Uy -joy boshlig'ining uzun tomoni teshikka ishora qilganda, D1M KONTAKTLARINI MCU HOUSING teshiklariga joylashtiring va pastga tushiring.
  2. To'g'ri hizalanishini ta'minlash uchun yopishtirish paytida MCU ni Kontaktlarga joylashtiring.
  3. HEADER ramkasini o'rnatish moslamalarining yuqori qismiga qo'ying va 4G x 16 mm o'lchamdagi 2 vint bilan mahkamlang.
  4. O'rnatilgan armaturani teshik qisqa tomonga qaragan holda joylashtiring va 4G x 6 mm vintlar bilan mahkamlang.

9-qadam: Qullarning past tomonli tugmachasini/RESET-ni o'rnatish

Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish
Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish
Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish
Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish
Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish
Qullarning past tomonli tugmachasini qurish/RESET-ni o'rnatish

Bu oxirgi ishlab chiqilgan REST qo'shimcha taxtasining yaxshilanishi. Bu qullarni GROUND bilan bog'laydigan past tomonli kalitni qo'shadi. Agar xo'jayin asl holatiga qaytarilsa, qullar ham ishga tushadi va metadata targ'ib qilishni boshlash boshlanadi.

Yig'ilish

  1. Ichkariga 9P 90 ° erkaklar sarlavhalari (1), 1P 90 ° erkaklar sarlavhalari (2), 2N7000 (3) va lehimlarini tashqaridan joylashtiring.
  2. Ichkarida, sariq telni YELLOW1dan SARI2gacha va lehimni izlang.
  3. Ichkarida, SILVER1 dan SILVER2 va lehimgacha bo'lgan yalang'och simni izlang.
  4. Ichki tomondan, SILVER3 dan SILVER4 gacha bo'lgan yalang'och simni va lehimni izlang.

10 -qadam: Asosiy komponentlarni yig'ish

Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
Asosiy komponentlarni yig'ish
  1. SHELL qurilganligiga va kontaktlarning zanglashiga olib keling (kabel va rozetkalar).
  2. 3V3 I2C DAUGHTER-BOARD-dagi 2P Erkak sarlavhasini 2P 90º 1P erkak sarlavhasi bilan almashtiring.
  3. 3V3 I2C DAUGHTER-BOARD-ni 3V3 pinli, sarlavhaning yirtilgan uchiga joylashtiring (rasmga qarang).
  4. LOW-SIDE SWITCH/RESET QIZLI KARTINI simni ichkariga joylashtiring (rasmga qarang).
  5. QIZLAR QAYTARINI RESETLASH 90º 1P erkaklar sarlavhasi orasidagi Dupont qo'rg'oshini 3V3 I2C qizi-taxtasi o'rtasida kuzatib boring.
  6. IDC soketini SHELL kabelidan 3V3 I2C qizi-taxtasidagi IDC sarlavhasiga joylashtiring.
  7. Ehtiyotkorlik bilan SHELLdagi kabellar orasiga QIZLIK-BOSHLIKLAR/HOUSINGni joylashtiring va taglik teshiklarini tekislang.
  8. BASE MASLAHATINI 4G x 6 mm vintlar bilan qobiqqa mahkamlang.
  9. O'zingiz yaratgan har qanday ASSIMILATSIY SENSORLARNI biriktiring.

11 -qadam: Keyingi qadamlar

Image
Image
Keyingi qadamlar
Keyingi qadamlar
Keyingi qadamlar
Keyingi qadamlar
  1. Brauzeringizni https://crouton.mybluemix.net/crouton/connections manziliga yo'naltiring.
  2. Broker test.mosquitto.org ekanligiga ishonch hosil qiling.
  3. Ulanish -ni bosing.
  4. /Config/device.json fayliga Qurilma nomi kirishini mqtt_device_name sifatida kiriting.
  5. Qurilma qo'shish -ni bosing.
  6. Avtomatik ulanish-ni bosing.
  7. ICOS10 (5V MicroUSB) ni yoqing.
  8. Crouton boshqaruv paneli orqali tasdiqlang.

Tavsiya: