Мазмуну:

Рамазан нурлары - Үй автоматташтыруу IOT: 6 кадам
Рамазан нурлары - Үй автоматташтыруу IOT: 6 кадам

Video: Рамазан нурлары - Үй автоматташтыруу IOT: 6 кадам

Video: Рамазан нурлары - Үй автоматташтыруу IOT: 6 кадам
Video: 😱СКАЙБЛОКТА ҚҰПИЯ ҮЙ ТАУЫП АЛДЫМ✅ 2024, Июль
Anonim
Рамазан нурлары | Үй автоматташтыруу IOT
Рамазан нурлары | Үй автоматташтыруу IOT

Рамазан эшигин каккылаганда, дүйнө жүзүндөгү шаарлар жарык болуп, орозо айына даярданышат. Жарыктар коомдук аянттарда жана шаардын көчөлөрүндө, ошондой эле түнкүсүн жарыктандырылган үйлөрдүн сырткы дубалдарында эртең менен күн чыкканга чейин илинет.

Бул долбоордо мен Азхан убактысынын негизинде бул жасалгаларды жарыктандырууну автоматташтырып, муну акылдуу үй системама кошуп жаткан салымымды бөлүшкүм келет.

1 -кадам: Теория

Негизинен, мисалы, күндүн нурунун интенсивдүүлүгүнө негизделген жарыктандырууну автоматташтыруу оңой жана көбүрөөк колдонулат. Бирок, мен муну ыйык айдын рухуна ээ болгум келет, башкача айтканда, орозо айында адамдар тамактанууга уруксат берилгенде, чырактар күйөт. Тактап айтканда, шамдар ар бир күнү Магриб Азандан баштап Багымдат Азанга чейин эч кандай адам катышуусу жок күйүп турат.

2 -кадам: Дизайн

Төмөндө мен бул долбоордун талаптарын/мүмкүнчүлүктөрүн тизмелеп берем:

  • Система жүктөөдө автоматтык түрдө иштете алгыдай болушу керек.
  • Система чечимди (ON/OFF) мезгил -мезгили менен аткара алгыдай болушу керек.
  • Система күн сайын APIге чала алышы керек.
  • Система пландаштырылбаган өчүрүүдөн калыбына келиши керек.
  • Система маалыматты дароо алганда чечимди (ON/OFF) аткарышы керек.
  • Система автопилот режимин күйгүзүү үчүн которууну камсыздашы керек (Автоматтык режим).
  • Система жарыкты кол менен күйгүзүү/өчүрүү үчүн которууну камсыздашы керек.
  • Кол которгучту иштетүү, кол режимин ӨЧҮКкө коюу керек.
  • Автоматтык режим КҮЙҮК болгондо, чечимдин алгоритминин натыйжасы КҮЙГҮЗҮҮ/ӨЧҮРҮҮ колго чагылдырылышы керек.

3 -кадам: Техникалык маалымат: API

Техникалык маалымат: API
Техникалык маалымат: API

Теорияны колдонуу үчүн, Азандын убактысын күнүмдүк негизде билүү жана анын чырактарын/жасалгаларын күйгүзүү/өчүрүү үчүн аракет кылуу керек.

Ушул максатта, мен маалыматтарды тейлөө үчүн жайгашкан жерге негизделген API колдонууну чечтим (Азан убактысы)

muslimsalat.com/api/#location

  • Бул API жогоруда документтердин шилтемесинде сүрөттөлгөн ар кандай параметрлерди жана конфигурация параметрлерин камсыз кылат.
  • Каттоодо бекер болгон API_key'ти колдонуу сунушталат.
  • Менин дизайнымда, мен күнүмдүк убакыт графигине кызыгам.
  • Кайтарылган убакыт 12 саат форматында (AM/PM).
  • Жайгашкан жери боюнча, эгерде бул API географиялык координаттар системасы (Кеңдик жана Узундук) сыяктуу жерлер үчүн такыраак параметрлерди бере алса деп тиледим. Бул үчүн, бул API, мисалы, шаардын аталышы менен камсыз кылынышы мүмкүн жана бул көпчүлүк учурда жетиштүү. Тилекке каршы, менин конкреттүү шаарымдын жыйынтыктары бир нече сыноолордо бир жактуу болгон жана азан убактысын API жыйынтыктары менен менин шаарымдагы Азандын чыныгы убактысы салыштырганда бир нече мүнөттүк айырмачылыктар болгон. Башка жагынан алганда, мен түндүктө жакын шаарды камсыз кылып, мен аны карманып турганымда, натыйжалар эң сонун дал келди!
  • Мен колдонгон API url: https://muslimsalat.com/.json? Key =

4 -кадам: Техникалык маалымат: Аппараттык

Техникалык маалымат: Аппараттык
Техникалык маалымат: Аппараттык

Жөнөкөйлүк үчүн, мен аппараттык жабдууларды API менен синхрондоштуруу процессинен жана бул операцияларды шахтанын үй автоматташтыруу системасына өткөрүп берүү менен калтырып жатам. Бул API булагын жана эсептөө алгоритмин өзгөртүүнү кааласам, мага көбүрөөк көзөмөл берет.

Муну айткандан кийин, мен WSPI аркылуу жергиликтүү тармакка туташуу үчүн ESP8266 (NodeMCU) жана реле модулун активатор катары колдондум. NodeMCU MQTT протоколун колдонот жана релени күйгүзүү/өчүрүү боюнча буйруктарды алуу үчүн белгилүү бир теманы угат. Ушунчалык жөнөкөй!

5 -кадам: Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы

Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы
Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы
Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы
Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы
Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы
Техникалык маалымат: чекиттерди туташтыруу | Үй автоматизациясы

Менин RaspberryPiде бул долбоорго керектүү нерселердин бардыгын иштете алган, чекит коюлган экземпляр бар. Ал ошондой эле биздин билдирүүлөрдү жарыялоо үчүн орнотулган MQTT серверине ээ.

Башында, мен API маалыматтарын күндүзгү саат 9да алып, Багымдат жана Махгриб Азан убактысын чыгарып, учурдагы убакытты бул өзгөрмөлөр менен салыштырып турам деп ойлогом:

ар бир 30 сек:

эгер: Mahgrib <АЗЫР <Багымдат чын | жарыкты күйгүзүү | көрсөтүлгөн MQTT темасына ON билдирүүсүн жарыялоо башка: өчүрүү

Убакытты салыштыруу үчүн, мен API тарабынан берилген сааттарды hh: mm (AM/PM) чейин толук күн форматына айландырып жатам, анткени дата бөлүгүн тарыхта анча маанилүү эмес күнгө коюу менен (мисалы, 1/1/1970), анткени биз убакытты салыштырып жатабыз. бир гана учурдагы убакытка (дата бөлүгү да которулат).

Тилекке каршы, бул түздөн -түз учурларда гана иштейт. Пландаштырылбаган себептерден улам электр энергиясы өчүп же тутум кайра башталганда дейли. Эгерде бул иш саат 12ге чейин болсо, анда биз дагы деле коопсуз тараптабыз, бирок 12.00дөн кийин бул биздин жөнөкөй алгоритмибизди бузат.

Мисал келтирүү үчүн, келгиле, Магриб Адханды 19: 30да жана Фажрды 4: 10до. Тутум жүктөлгөндө, ал мурда айтылган маалыматтарды алуу үчүн жаңы суроо жөнөтөт. Эгерде азыр саат 1:45 болсо, биз алгоритмибиздин чындыкка кайтып келишин күтөбүз, бирок чындыгында андай болбойт, анткени 1:45 AM таңкы убакттан (4:10 AM) аз, бирок Магрибтен (19:30 PM) жогору эмес. Бул биз бардык өзгөрмөлөрдүн ортосундагы датаны бириктиргендиктен. Алгоритмдин акыркы версиясы төмөндө (азырынча):

ар бир 30 сек:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // иштетүүчү күндөрдү endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // тутумдарды камтыган күндөр CurrentTime}} // төмөндө мурунку код блогу, эгерде: Mahgrib <АЗЫР <Фажр чын | жарыкты күйгүзүү | көрсөтүлгөн MQTT темасына ON билдирүүсүн жарыялоо башка: жалган | өчүрүү

Процестин толук агымы жогорудагы сүрөттө аннотацияланган.

UI жагынан мен UI/интерфейске 2 өчүргүч коштум:

  1. Бул процессти автоматтык же кол менен иштетүү үчүн которгуч.
  2. Жарыкты кол менен күйгүзүү/өчүрүү үчүн которгуч.

6 -кадам: Жыйынтыктоо

Убакыт эч качан эстен кетпейт. Мындай жөнөкөй 1 күндүк долбоорлорду аткаруу бул ылдам жолдо дем алып, убакыттын өтүшү менен жумшак жөндөмүңүздү жандандырууга жардам берет.

Мен бул долбоордо бүткүл дүйнөдө жөнөкөй жана кайра колдонууга аракет кылдым.

Эгерде сиз бул долбоорго татыктуу деп ойлосоңуз, анда бул үйрөткүчкө добуш бериңиз.

Рамазан кут болсун!

Сунушталууда: