Агуулгын хүснэгт:

Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем: 12 алхам (зурагтай)
Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем: 12 алхам (зурагтай)

Видео: Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем: 12 алхам (зурагтай)

Видео: Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем: 12 алхам (зурагтай)
Видео: СИМУЛЯТОР БОМЖА | СИМУЛЯТОР СВИДАНИЙ | СИМУЛЯТОР РОССИИ ► 1 ИГРОШЛЯПА 2024, Долдугаар сарын
Anonim
Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем
Зөөлөн интеграцитай энгийн Kicker статус ба захиалгын систем

Миний ажилладаг компанид өшиглөх ширээ байдаг. Компани нь олон давхрыг эзэлдэг бөгөөд зарим ажилчдын ширээн дээр очиход 3 минут хүртэл хугацаа шаардагддаг бөгөөд ширээг аль хэдийн эзлээд байгааг ойлгох хэрэгтэй.

Тиймээс бодит цаг хугацаанд ажилладаг энгийн статус нэвтрүүлэг, захиалгын системийг бий болгох санаа гарч ирэв.

Компани нь Slack холбооны хэрэгслийг ашигладаг бөгөөд ажилтан бүр данстай байдаг. Бидэнд зөвхөн kicker -ийн талаар ярилцах #kicker суваг бий. Сувгийг захиалга өгөх, хүснэгтийн одоогийн байдлын талаар мэдээлэх зорилгоор "нэвтрэх цэг" болгон ашиглаж болно.

Ердийнх шиг ийм системтэй хэрхэн харьцах талаар олон ойлголт байдаг. Гэхдээ ерөнхийдөө бүгдэд нь нэг үндсэн дүрэм гарч ирсэн: системтэй ажиллахдаа хэт их алхам хийхгүйгээр ашиглахад хялбар байх ёстой.

Төхөөрөмж ба үйлчилгээ нь өшиглөх хүснэгтэд наалддаггүй бөгөөд үүнийг ямар ч "нийтлэг нөөцөд" (ширээний теннисний ширээ, консол гэх мэт) ашиглах боломжтой бөгөөд үүнд ямар нэгэн статус дамжуулах, захиалга өгөх шийдэл шаардлагатай болно.

Тиймээс эхэлцгээе …

Алхам 1: Үзэл баримтлал, прототипийн нотолгоо

Үзэл баримтлал ба прототипийн нотолгоо
Үзэл баримтлал ба прототипийн нотолгоо
Үзэл баримтлал ба прототипийн нотолгоо
Үзэл баримтлал ба прототипийн нотолгоо
Үзэл баримтлал ба прототипийн нотолгоо
Үзэл баримтлал ба прототипийн нотолгоо

Эдгээр шаардлагыг дагаж өшиглөх хүснэгтийн дэргэд байрлуулах төхөөрөмжийг бүтээх нь маш хэцүү байв.

  • хүснэгтийн одоогийн байдлын талаархи зарим үзүүлэлтүүд - хэрэв та түүний хажууд зогсож байгаа бол энэ нь үнэгүй эсвэл нөөцлөгдсөн гэдгийг мэдэх ёстой бөгөөд хэн нэгэн 3 минутын дараа тоглох болно. Гэрлэн дохио нь санаанд бүрэн нийцдэг.

    • ногоон гэрэл - тоглох үнэгүй,
    • шар гэрэл - нөөцлөгдсөн,
    • улаан гэрэл - эзлэгдсэн.
  • товчлуур (ууд) Та тоглолтын өмнө болон дараа дарж бусад бүх хүснэгтийн одоогийн байдлын талаар мэдээлэл авах боломжтой. 1 унтраах товчлуурын оронд би 2 тусгаарлагдсан товчлуур ашиглахаар шийдсэн.

    • улаан товчлуур - ширээ эзлэх, тоглоом эхлүүлэх (захиалга эсвэл түр зуурын дараа).
    • ногоон товчлуур - суллах хүснэгт.
  • "Юу болж байна" гэсэн дэлгэрэнгүй мэдээллийг агуулсан зарим дэлгэц - захиалгын хугацаа, хүснэгтийн давтагдсан байдал, тоглох цаг дуусах гэх мэт.

Захиалга өгөхдөө би дараагийн 3 минутын захиалгыг л хэлж байна. Систем нь хэрэглэгч хүснэгтийг яг цагт нь захиалах боломжтой байхаар зохион бүтээгдээгүй (жишээ нь 02:00 PM). Энэ нь захиалга өгөх гэх мэт ажиллахгүй. ресторанд, гэхдээ хэдхэн минутын дараа.

LAN холболт байхгүй байгаа тул цорын ганц сонголт бол WLAN ашиглах явдал юм. Системийн тархи Slack сувгийг ашиглан командыг илгээх, хүлээн авахдаа Slack API -ийг ашиглах ёстой. Эхлээд би NodeMCU ашиглахыг оролдсон. Би Slack -аас мессеж хүлээн авах боломжтой байсан боловч HTTPS ашиглалт, Slack -ийн "тавтай морилно уу" (~ 300kB) хэмжээтэй тул NodeMCU холболтоо тасалж, эсвэл интернетээр дамжуулан ухах асуудлыг шийдэж чадахгүй байгаа хачин онцгой тохиолдол гарсан..

Тиймээс би илүү хүчирхэг зүйлийг ашиглахаар шийдсэн: Raspberry Pi 3 (WiFi -тэй Z W тэр үед хараахан гараагүй байсан). RPi -тэй болсноор би хэрэгжүүлэх хэлийг C хэлнээс Java хэл рүү шилжүүлж чадна, энэ нь надад илүү тохиромжтой юм. Өнөөдөр та NodeMCU -ээс илүү хүчирхэг, RPi -ээс бага хүчирхэг зүйлийг ашиглаж болно. Raspberry Zero байж магадгүй юм уу?

Галзуу утастай, олон тооны ноорог, прототип бүхий талхны самбар дээр анхны загварыг хийсний дараа систем ажиллах боломжтой юм шиг харагдаж байв.

Эдгээр бүх санаанууд болон PoC -ийг ажиллуулсны дараа би дээрх зүйлсийг өөр өөр байршуулах тохиргоог урд самбар дээр төлөвлөж эхэлсэн бөгөөд ингэснээр тэдгээр нь хамгийн мэдээлэл сайтай, ашиглахад тохиромжтой байх болно. Та бусад саналуудыг шалгаж болно, магадгүй зарим нь танд илүү тохиромжтой байх болно. Сүүлийнх нь миний сонгосон хүн байсан.

Алхам 2: Материал ба багаж хэрэгсэл

Миний ашигласан материалууд:

  • Хайрцаг
  • Raspberry Pi, microSD карт, микро USB тэжээлийн хангамж
  • Ногоон ба улаан аркад товчлуурууд
  • 16x2 хэмжээтэй LCD дэлгэцтэй
  • LED - Би RGB ашигладаг байсан ч та зөв өнгийг ашиглаж болно
  • Эрэгтэй, эмэгтэй, эмэгтэй эмэгтэй талхтай холбогч кабель
  • Микро USB интерфэйс
  • Зүгээр л зарим утсыг холбох мини талхны самбар
  • Богино бичил USB кабель нь RPi -ийг тэжээх хайрцаг дотор холбогчоор ажилладаг

Миний ашигласан хэрэгсэл:

  • Хурц хутга (жишээ нь хивс огтлох зориулалтын хутга)
  • Ротари хэрэгсэл
  • Халуун цавуу буу
  • Гагнуурын станц
  • Бахө, диагональ бахө/хажуу таслагч
  • Халив
  • Файл
  • Би

Танд хэрэгтэй хэрэгслүүд:

Дээр дурдсан бүх зүйл, гэхдээ "Би" -ний оронд "Та" гэсэн байх ёстой:)

Алхам 3: урд самбар - LCD дэлгэц

Урд самбар - LCD дэлгэц
Урд самбар - LCD дэлгэц
Урд самбар - LCD дэлгэц
Урд самбар - LCD дэлгэц

LCD дэлгэцийн нүх нь энгийн байсан. Миний LCD дэлгэц дээр таарсан тэгш өнцөгт. Хурц хутгаар зүсэхийг оролдсоны дараа би хайрцагны хуванцар нь нэлээд хэцүү гэдгийг ойлгосон. Тиймээс би өрөмдлөгийн багаж ашиглан цонхыг нь огтолж, ирмэгийг нь өнгөлсөн.

Алхам 4: Урд талын самбар - Статусын LED

Урд самбар - Статусын LED
Урд самбар - Статусын LED
Урд самбар - Статусын LED
Урд самбар - Статусын LED

LED цооногууд нь бас хялбар байдаг. Би дөнгөж том мод өрөмдөж байгаад ирмэгийн багажаар ирмэгийг өнгөлсөн. Том LED нь маш нягт суурилагдсан. Би LED -д ямар ч резистор гагнасангүй - угсрах явцад үлдээсэн.

Алхам 5: урд самбар - товчлуурууд

Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд
Урд самбар - товчлуурууд

Эдгээр 2 том товчлуурын хамгийн том асуудал бол тэдгээрийг зохих зайнд жигд байрлуулах явдал байв. Би өрөмдлөгийн багажаа ашиглан нүхийг хайчилж, диаметрийг алхам алхамаар нэмэгдүүлэх боломжтой тул товчлуурууд нь хоорондоо нягт таарч байв.

Алхам 6: Цахилгаан холбогч

Цахилгаан холбогч
Цахилгаан холбогч

Микро USB тэжээлийн жижиг нүх нь маш нарийн ажил байсан. Би нүхийг аль болох тохиромжтой байлгахыг хүссэн тул энд өнгөлөхөд маш их цаг зарцуулсан. Гэхдээ би эцсийн үр дүнд сэтгэл хангалуун байсан.

Дараа нь би хайрцаг дотор байрлуулсан богино USB кабелийг таслав. Нэг тал нь RPi -д залгагдсан, нөгөө талд нь бүх кабелийг USB холболтын дагуу микро USB интерфэйс рүү гагнасан байна.

Дараа нь би жижиг ПХБ-ийг шууд хайрцган дээр наасан (үүнийг угсрах алхам дээрх зурган дээрээс харж болно).

Алхам 7: Бүх зүйлийг нэгтгэх

Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх

Эхлээд би 3.3В вольтын дагуу өнгө (хүчдэл) -ийн дагуу LED -д тохирох резисторыг гагнав. Би улаан өнгийг 100Ω, шар (ногоон, улаан зангилаа) гэсэн хоёр резистор 82 ба 100, ногоон бол 100Ω -ийг ашигласан. Та LED тооцоолуур хийх онлайн резисторыг ашиглаж болно. Гэхдээ хүрэхийг хүсч буй гэрэл, өнгөний өнгөнийхөө дагуу бие даан судалгаа хийж үзээрэй.

Шар LED хөлийг гагнасан тул LED -ийг өөрөө RPi дээрх ганц зүүгээр удирдах боломжтой.

Энэхүү диаграммын дагуу:

LED зангилаа холбогдсон байна:

  • Ногоон LED - Rpi дээр GPIO1
  • Шар LED (хоёр хөл) RPi дээрх GPIO2 руу
  • Улаан LED нь RPi дээрх GPIO0 руу

Би LCD -ийг RPi зүү дээрх I2C тээглүүр ашиглан холбосон

  • LCD SDA ба GPIO8 -ийг RPi дээр
  • LCD SCL RPi дээр GPIO9 руу
  • LCD PWR нь RPi дээр 5V хүртэл
  • LCD GND -ээс RND дээр GND

LCD нь нэмэлт хамгаалалт болгон хайрцагт халуун наасан байв.

Би 3.3V ба GND -ийг жижиг талханд холбосон тул товчлуур дээр ашиглах боломжтой болсон.

Ногоон товчлуурыг 3.3V -т мини талхны хавтангаар холбож, RPi дээр GPIO5 -тэй холбосон.

Улаан товчлуурыг 3.3V -т мини талхны самбараар холбож, RPi дээр GPIO4 -тэй холбосон.

Тиймээс та товчлуурыг дарах бүрт RPi зүү дээр өндөр төлөв гарч ирдэг.

Мини брадборд маш сайн ажилладаг тул би бүх утсыг ПХБ -д гагнах ажлыг алгассан. Үүний оронд би жижиг талхны хавтанг халуун цавуугаар хучсан тул кабелиуд унахгүй.

Би мөн RPi-ийн бүрхэвчийг хайрцагт нь наасан тул дотор нь савлахгүй.

Би урд талын самбарыг дотор нь байгаа бүх зүйлээр шургуулсан.

Дараа нь гэрлэн дохио, товчлуурын хажууд энгийн шошго хэвлэж, хайчилж, наасан.

Алхам 8: Сул тохиргоо

Сул тохиргоо
Сул тохиргоо
Сул тохиргоо
Сул тохиргоо

Slack.com дээр багаа бүрдүүлэх эсвэл өөрт байгаа багийг ашиглаарай, та дор хаяж администраторын эрхтэй.

Slack дээр үйлчилгээний Slack -ийг нэгтгэх суваг үүсгээрэй (эсвэл хэрэв та аль хэдийн ашиглаж байсан суваг ашиглахыг хүсвэл суваг үүсгэхийг алгасаарай).

Танай багт шинээр орж ирж буй Webhooks интеграцийг нэмээрэй. Сувгийг сонгоод webhook URL -г хуулна уу.

Ботын интеграцийг өөрийн багт нэмэх. Өөрийн bot -ийн нэрийг сонгоод bot API жетоныг хуулж аваарай.

Таны удирдаж буй интеграцийн хуудас зураг дээрх шиг харагдах ёстой.

Та ботийг өөрийн сувгийн гишүүнээр урих ёстой. Та үүнийг суваг үүсгэх явцад аль хэдийн хийж болно.

Хэрэв та үйлчилгээг дараа нь өөрчлөхийг хүсч байвал Slack API -г шалгана уу.

Алхам 9: Програм хангамжийн хэрэгжилт

Би энэ зааврыг дагаж Raspbian -ийг RPi -ийнхээ үйлдлийн систем болгон ашигласан. Намайг уучлаарай, би үүнийг тайлбарлахыг алгасах болно, учир нь энэ нь олон газарт бичигдсэн байгаа бөгөөд үйл явц нь шууд юм. Та RPi -ийг бие даан тохируулах чадвартай, туршлагатай гэж найдаж байна. Raspberry Pi дээрээ WiFi хандалтыг тохируулахаа бүү мартаарай;)

Прототип хийх хэсэгт дурдсанчлан би Java -ийг бүхэл бүтэн системийн тархийг хэрэгжүүлэхэд ашигласан. Кодыг GitHub дээрээс авах боломжтой -

Миний ашиглаж байсан Java номын сангууд:

  • pi4j - Java -аас Raspberry Pi ашиглах
  • Springboot -ийг хэрэглээний платформ болгон ашиглах
  • allbegray/slack-api Slack интеграц гэж

Та тохиргооны файлыг src/resources/config.properties дээр засах хэрэгтэй. Slack API ашиглахын тулд та 3 тохиргоог хийх ёстой.

  • channelName - сувгийн нэр Та статусын өөрчлөлтийг оруулах, командыг хүлээн авахыг хүсч байна.
  • slackBotToken - дээр дурдсан суваг руу мессеж илгээхэд ашиглах болно. Та Slack Bot -ийг сувгийн гишүүнээр оруулах ёстойг анхаарна уу.
  • webhookUrl - URL -ийг Slack Team -ийн захиалгат интеграцаас авах боломжтой.

Төсөл нь Mavenized програм бөгөөд үүнийг бүтээхийн тулд зүгээр л бичээрэй (танд дор хаяж Java 8 ба Maven суулгасан байх ёстой):

mvn цэвэр багц

Зорилтот бүлэгт та Springbooted JAR файлыг олох боломжтой. Үйлчилгээг эхлүүлэхийн тулд:

sudo java -jar kicker-захиалга-үйлчилгээ-0.3.0.jar

Би энэ мөрийг.sh скрипт болгож, автоматаар эхлүүлэх байдлаар нэмсэн. Тиймээс цахилгаан асах бүрт үйлчилгээ автоматаар асах болно.

LCD дэлгэц дээр нэг тусгай тайлбар хэрэгтэй.

Би RPi -ээс I2C -ээр дамжуулан LCD -ийг удирдахын тулд янз бүрийн хандлага/номын сангуудыг туршиж үзсэн боловч би амжилтанд хүрээгүй. Зарим LCD дэлгэц зөв ажиллахгүй байсан бол заримд нь хог хаягдал харагдаж байв.

Гэхдээ нэг зүйл хайрцагнаас гарахад маш сайхан ажилласан. Энэ бол LCD дэлгэцийг хянахад ашиглаж болох командын шугамын хэрэгсэл юм. Тиймээс би энэ хэрэгслийг Java -аас шууд ашиглахаар шийдсэн. LCD дэлгэц дээр ямар нэгэн зүйл үзүүлэхийг хүсэх болгонд ердийн Линукс процесс (lcdi2c) (бэлтгэгдсэн параметрүүдтэй) гэж нэрлэдэг.

Та хэрэгслийг татаж аваад JAR үйлчилгээний хажууд байрлуулах хэрэгтэй

Энэ хэрэгслийг ашиглах нь хакердах, тэнэг шийдэл юм, гэхдээ би инженерчлэлийн 1 -р дүрмийг баримталдаг.

Хэрэв энэ нь тэнэг боловч энэ нь ажилладаг бол энэ нь тэнэг биш юм

Алхам 10: Хэрэглэх заавар

Хэрэглэх заавар
Хэрэглэх заавар

Та үүсгэсэн Slack суваг дээрх "статус" (эсвэл богино хугацаанд "st") командыг бичих эсвэл төхөөрөмж дээрх гэрлэн дохиог шууд шалгах замаар kicker хүснэгтийн одоогийн байдлыг шалгаж болно.

Хэрэв та зүгээр л тоглохыг хүсч байвал улаан товчлуурыг дарна уу. Мессежийг Slack суваг руу өшиглөх хүснэгт эзлэгдсэн тухай мэдээлэл илгээх болно. Тоглож дуусаад ногоон товчлуурыг дарна уу. Мессежийг Slack суваг руу илгээж, ширээний тоглоом үнэгүй тоглох боломжтой болно.

Мөн гэрлэн дохио өөрчлөгдөж, LCD дэлгэц дээр дэлгэрэнгүй мэдээллийг харуулах болно.

Тоглож дууссаныхаа дараа ширээгээ суллахаа мартсан тохиолдолд 20 минут болох хугацаа дууссан байна. Хэрэв та тоглож байгаа бөгөөд илүү их цаг хэрэгтэй бол улаан товчлуурыг дахин дарвал тоглолтыг 5 минутаар сунгана (хугацаа дуусахад 5 минутаас бага хугацаа үлдсэн тохиолдолд л хэрэглэнэ). Тоглолт дуусах хугацааг LCD дэлгэц дээр харуулах болно.

Кикер хүснэгтийг захиалахын тулд Slack суваг руу "нөөцлөх" (эсвэл зүгээр л: "res") мессеж бичнэ үү.

Шар гэрлэн дохио асах бөгөөд ширээ дэргэд байгаа бусад хүмүүст нөөцөлсөн гэдгээ мэдэгдэх бөгөөд удалгүй хэн нэгэн тоглохоор ирнэ.

Захиалгын хугацааг 3 минут болгож тохируулсан. Үүний дараа kicker table нь өөрийн төлөвийг үнэгүй тоглуулахаар солино.

Хэрэв танд хэрэгтэй бол Slack суваг дээр "цуцлах" гэж бичээд захиалгаа цуцалж болно.

Систем нь бусад жижиг шинж чанаруудтай:

  • Захиалга хийсний дараа товчлуурууд 5 секундын турш хөлддөг. Нөхцөл байдлаас урьдчилан сэргийлэхийн тулд ийм арга хэмжээ авах шаардлагатай байна, яг тэр үед хэн нэгэн нөөцлөөд, нэг секундын дараа хэн нэгэн ширээн дээр сууж байгаа хүн гэж бодоод улаан товчлуур дарна, гэхдээ хэн нэгэн хүснэгтийг ердөө нэг секундын өмнө хадгалсан гэдгийг мэдээгүй.
  • Аливаа товчлуурыг дарахад хоёулаа хагас секундын турш хөлддөг. Энэ нь галзуу товчлуур дарахаас урьдчилан сэргийлэхийн тулд Slack сувгийг тийм ч их спам хийхгүй болно.
  • Slack -ийн үнэгүй хувилбар нь бүхэл бүтэн багийн 10000 мессежийг хадгалах боломжийг олгодог. Зарим мессежийг хадгалахын тулд үйлчилгээ нь захиалга/статусын системтэй холбоотой хуучин зурвасуудыг устгаад) зөвхөн сүүлийн 6 -г нь үлдээнэ үү. Яагаад 6 гэж? Учир нь ихэнх тохиолдолд "Нөөцлөгдсөн-эзлэгдсэнгүй" ба "Эзлэгдсэнгүй" гэсэн статусын 2 хувилбар байдаг. Тиймээс систем нь дор хаяж 2 бүрэн эзэнгүй сесс хадгалах боломжтой. Бүх системийн мессежийг цэвэрлэхийн тулд "цэвэр" (эсвэл "цэвэрлэх") командыг бичнэ үү.

Алхам 11: Суллах

Суллаж байна
Суллаж байна
Суллаж байна
Суллаж байна

Өнөөдрийг хүртэл (энэхүү зааварчилгаа нийтлэх мөч хүртэл) энэ систем 2.5+ сар ажилласан бөгөөд 30 гаруй хүн ашигладаг. Kicker хүснэгтийн статусыг шинэчилдэг тул бид чөлөөт цаг эсвэл ажил эрхлэлтийг нь үргэлж мэддэг тул нааш цааш хол явахгүй. Холболт, үйлчилгээ нь маш тогтвортой тул бид үүнд найдаж болно.

Одоогоор маш сайн…

Алхам 12: FAQ

Захиалгын хугацаа яагаад 3 минут байх ёстой вэ?

Захиалга өгөх хамгийн дээд хугацаа бол 3 минут бөгөөд үүнийг кодонд дурдсанчлан ашиглаарай. Ерөнхийдөө ийм тохиолдол бараг байдаггүй, бүтэн 3 минут өнгөрч, захиалга дуусах болно. Ихэнх тохиолдолд хэн нэгэн эцэст нь ирж ширээг эзэлдэг.

Тоглох хугацаа яагаад 20 минут байхаар тохируулагдсан бэ?

Тоглогчдоос хамааран тоглолтын дундаж хугацаа ~ 10 минут байна. Хэрэв та удаан тоглох шаардлагатай бол 5 минут хүрэхгүй хугацааны дараа улаан товчлуурыг дахин дарж, хугацаа нь 5 минут болж сунгагдана. Хэн нэгэн хүснэгтийг суллахаа мартсан тохиолдолд л энэ завсарлага хийгддэг.

Захиалгаа баталгаажуулахын тулд төхөөрөмж дээр PIN код байхгүй байгаа шалтгаан; нэвтрэх болон нууц үг байхгүй байна уу?

Гол санаа нь энгийн, тэнэг байлгах явдал байв. Үгүй бол тоглоомыг захиалах, эхлүүлэх, дуусгахад хэт их хүчин чармайлт шаардагдах тохиолдолд хэн ч үүнийг ашиглахыг хүсэхгүй болно.

Төхөөрөмж яагаад ийм үйлдвэр шиг муухай харагдаж байна вэ?

Надад лазер таслагч, CNC, 3D принтер, гоё өнгийн шошго үйлдвэрлэгч гэх мэт зүйл байгаагүй тул та үүнийг сайжруулж, илүү гоё болгосонд баяртай байна.

Зарим аппликейшныг хэрэгжүүлж, хямд таблетыг ижил функцээр хананд наалдуулж яагаад болохгүй гэж?

Апп, хаа сайгүй програмууд. Хүмүүс аливаа зүйлтэй биечлэн харьцах дуртай бөгөөд зөвхөн хавтгай дэлгэц дээр дардаггүй.

Зөвлөмж болгож буй: