Мазмұны:

Күннен қуат алатын пошта жәшігі: 12 қадам (суреттермен)
Күннен қуат алатын пошта жәшігі: 12 қадам (суреттермен)

Бейне: Күннен қуат алатын пошта жәшігі: 12 қадам (суреттермен)

Бейне: Күннен қуат алатын пошта жәшігі: 12 қадам (суреттермен)
Бейне: Құпия бөлме табылды! - Франциядағы 12 ғасырдағы толықтай тасталған ҚАМАЛ 2024, Шілде
Anonim
Күннен қуат алатын пошта жәшігі қосылған
Күннен қуат алатын пошта жәшігі қосылған
Күннен қуат алатын пошта жәшігі қосылған
Күннен қуат алатын пошта жәшігі қосылған

Екінші Ибле үшін мен сізге байланыстырылған пошта жәшігім туралы өз жұмыстарымды сипаттаймын.

Нұсқаулықты оқығаннан кейін (+ тағы басқалары) және менің пошта жәшігім үйімнің жанында болмағандықтан, мен пошталық жәшікті Domoticz серверіме қосу үшін Open Green Energy -дің шығармаларымен жігерлендіргім келді.

Мақсаттар

  • Хаттар келген кезде Telegram -да хабарласыңыз;
  • Сәлемдеме келгенде Telegram -да хабарласыңыз;
  • Хаттар / сәлемдемелер алынғанын тексеріңіз.

Менің басты шектеуім

Пошта жәшігі үйден біршама алыс, сондықтан оған электр сымын тартып, ешнәрсеге қуат беру мүмкін болмады.

Маған басқа шешім табу керек болды: күн энергиясы жақсы шешім болды!

БОМ

  • Raspberry Pi (MQTT және Domoticz бөліктерін орналастыру үшін - мұнда жазылмаған)
  • Telegram Bot есептік жазбасы
  • Lolin D1 mini (немесе Wemos …)
  • Қосылатын бұрандалы терминал блогының қосқышы
  • TP4056 литий батареясын зарядтау тақтасы
  • 6В 2В фотоэлектрлік күн панелі
  • Li-Ion батареясы 18650
  • Li-Ion батарея ұстағыш
  • ПХД DIY дәнекерлеу мысының прототипі басылған схемасы
  • Аналогтық Servo SG90
  • 3 қамысты қосқыштар (біреуі хаттарға, біреуі сәлемдемеге және біреуі төлемге арналған)
  • Магниттер
  • Кейбір сымдар
  • Ағаш жәшік: 3D принтері болмағандықтан, мен электронды бөлшектерді қабылдайтын ағаштан жасалған жеке үйімді түсіндім …
  • Қосымша Ethernet кабелі
  • RJ45 Ethernet қосқышының үзіліс тақтасы

  • J-B Weld
  • Кейбір шарикті мойынтіректер
  • Бұрандалар, жаңғақтар, шайбалар

1 -қадам: жаһандық схема

Жаһандық схема
Жаһандық схема
Жаһандық схема
Жаһандық схема

Әдемі сызбалар әрқашан ұзақ сөйлеуге қарағанда жақсы;-)

Бірақ MQTT, Domoticz және Telegram туралы бірнеше түсіндірулер әрқашан құпталады!

MQTT (Message Queuing Telemetry Transport) - бұл IoT әлеміндегі құрылғылар мен басқа жүйелер арасында деректерді жіберу үшін қолданылатын хабар алмасу хаттамасы.

Толығырақ айтпай -ақ, оның жұмысы клиенттердің серверге қосылу принципіне негізделген. MQTT -де клиенттер жазылушы немесе баспагер, ал сервер брокер деп аталады.

Бұл нұсқаулықта мен тек бір баспагерді қолданамын, бұл менің пошта жәшігіме сыммен байланыстырылған Lolin: пошта жәшігіне орнатылған қамыс контактілері арқылы хаттар немесе сәлемдемелер анықталған кезде (1 -қадам).).

Брокер бөлігін Raspberry Pi -ге орнатылған Mosquitto жасайды (3 -қадам).

Domoticz туралы:

Бастапқы бетте сипатталғандай, Domoticz - бұл әр түрлі құрылғыларды басқаруға және әр түрлі хаттамалардан кіріс алуға мүмкіндік беретін «үй автоматтандыру жүйесі»: MQTT - қолдау көрсетілетін хаттамалардың бірі …

Ақпарат оған жеткенде (4 -қадам) сіз оқиғаларды анықтай аласыз: пошта жәшігі жағдайында мен Telegram хабарламасын жіберуді таңдадым (5 -қадам).

Ақырында, телефонда Telegram клиенті конфигурацияланған (және менің әйелім де! - 6 -қадам): түпкі мақсатқа жетті …

2 -қадам: сематикалық / сымдық

Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық
Сематикалық / сымдық

Аналог туралы бір сөз оқылады:

Ең алдымен, мен кейбір зерттеулерден кейін байқадым, Lolin mini D1 (ескі Вемос сияқты), A0 түйреуіші үшін кернеу бөлгішін орнатқан (R1 үшін 220KΩ және R2 үшін 100КО - сілтеме жасалған мәліметтер кестесінің оң жағын қараңыз), 3,2 Вольт мүмкіндік береді. максималды аналогтық кіріс кернеуі ретінде.

Батареядан шығатын максималды кернеу 4, 2в (зарядтау тақтасымен шектелген) және теориялық тұрғыдан алғанда, максималды кіріс кернеу диапазонын ұлғайту үшін тек сыртқы резисторды (R1 сериясымен) қосу қажет. Содан кейін, егер сіз R1 -мен қатар 100K қоссаңыз, сізде келесі нәтиже болады:

Vin * R1/(R1+R2) = Vout

4, 2 * 320K/(320K+100K) = 3, 2

Менің тізбегімде мен оның мәнін реттей алуды шештім, сондықтан мен өз тізбегімде реттелетін резисторды қолдануды жөн көрдім: мүмкін бұл сізге пайдасыз болар, бірақ менің жағдайымда мен оның мәнін шамамен 10 кОм етіп қойдым. Домотицте келісілген мән …

A0 түйреуішінің 10 биттік ажыратымдылығы бар екенін ескеріңіз: бұл сіздің эскизде сіздің аналогтық көрсеткішіңіз 0 -ден 1024 -ке дейінгі мәнді береді.

Мен Domoticz -ке пайыздық мәнді жібергім келетіндіктен, аналогты оқу нәтижесін 10, 24 -ке бөлуім керек.

3 -қадам: Қуатты басқару

Қуатты басқару
Қуатты басқару
Қуатты басқару
Қуатты басқару

Әрине, мен пошта жәшігінің автономды болғанын қалаймын. Мақсатыма жету үшін мен келесі элементтерді қолданамын:

  • Li-Ion 18650 батареясы 4000 мАч;
  • 6В / 2 Вт қуат беретін күн панелі;
  • TP4056 литий батареясын зарядтау тақтасы.

Ең қолайлы күн панелін таңдау үшін мен бірнеше мысалды қарастырдым, соның ішінде: осы мысалда 5,5 В / 0,66 Вт күн панелі пайдаланылады және бұл үшін жеткілікті болуы мүмкін. Менің жағдайда, және ESP8266 күндізгі уақытта қосулы тұруы керек және үйді күн сәулесінен қорғау үшін серво қозғалтқышты іске қосуы керек болғандықтан, мен қуатты күн батареясының моделін таңдадым (6V / 2W) - Бұл маған да мүмкіндік береді қараңғы қыс мезгілдері мен бұлтты күндерді күту;-)

Сондай -ақ, энергия шығынын барынша азайту үшін мен келесі сценарийлерді таңдадым:

  • пошташы таңғы 7 -ден кешкі 8 -ге дейін өткенін біле отырып, ESP түннің қалған уақытында DeepSleep -те орналастырылады;
  • Факт сенбі күні түстен дүйсенбі таңертеңге дейін өтпейді: ESP бұл уақытта DeepSleep режиміне де қойылады.
  • Таңертеңгі 7 -ден кешкі 20 -ға дейін және энергия тұтынуды азайту үшін мен ESP желілік интерфейсін өшіремін: желі тек сәлемдеме немесе хат келген кезде ғана қосылады, бұл ақпаратты жіберуге жеткілікті уақыт. Маған бірден ескерту қажет емес және желі интерфейсін қайта қосуға қажет бірнеше секунд зиянды емес!

Мен Lolin үшін пайдаланатын әр түрлі режимдердегі тұтынудың кейбір мәні - деректер кестесін қараңыз, p18:

  • Қалыпты режимде (РФ жұмыс істеп тұрған кезде) қуат тұтыну 170 мА дейін ұлғая алады! Менің пошта жәшігім үйден шамамен 50 метр қашықтықта орналасқандықтан (және WIFI сигналының шегінде …), меніңше, қосылымды сақтауға жұмсалатын қуат максимум …
  • Модем-ұйқы режимінде қуат тұтыну 15 мА дейін төмендейді. Деректер кестесінде көріп тұрғаныңыздай, бұл модемді толығымен тоқтата алмады, өйткені ESP «деректерді жіберусіз Wi-Fi байланысын қолдайды».
  • Ұйқы режимінде қуат 20аА дейін төмендейді.

Wi -Fi қажетсіз белсенді емес екеніне сенімді болу үшін мен оны келесі командалармен өшіруді жөн көрдім. Көптеген кешіктіру () қоңырауына назар аударыңыз … Оларсыз ESP бұзылады:

WiFi.disconnect ();

кешіктіру (1000); WiFi.mode (WIFI_OFF); кешіктіру (1000); WiFi.forceSleepBegin (); кешіктіру (1);

Тұтастай алғанда, бірнеше күн жұмыс істегеннен кейін, ол жұмыс істейді және әсіресе дұрыс жүктеледі:

  • бұл маған күн сайын үйді орналастыру үшін сервомоторды іске қосуға мүмкіндік береді;
  • Мен сондай -ақ Domoticz -ге батарея зарядының деңгейін жіберу үшін желі интерфейсін әр сағат сайын қайта қосуға рұқсат бере аламын.

4 -қадам: Магниттер мен қамыс контактілерін орнату

Магниттер мен қамыс контактілерін орнату
Магниттер мен қамыс контактілерін орнату
Магниттер мен қамыс контактілерін орнату
Магниттер мен қамыс контактілерін орнату
Магниттер мен қамыс контактілерін орнату
Магниттер мен қамыс контактілерін орнату

Әдеттегідей, мен Proxxon көмегімен ағаштан жасалған Қамыстың орнын жасадым.

Қамыс контактісін тесікке бекіту үшін мен аздап J-B дәнекерледім.

Сәлемдеме мен шығыс үшін кішкене таспа, кішкене темір кесу және мақсатқа қол жеткізілді!

Менің пошта жәшігімнің артықшылығы - бұл металл, ол магниттердің орналасуын жеңілдетеді, сондықтан ол қамыс контактілерімен дұрыс әрекеттеседі.

5 -қадам: Менің кішкентай үйіме қосылыңыз

Менің кішкентай үйіме қосылыңыз
Менің кішкентай үйіме қосылыңыз
Менің кішкентай үйіме қосылыңыз
Менің кішкентай үйіме қосылыңыз

Пошта жәшігінен үйге қамыс контактілеріне өтетін кабельді оңай қосу және ажырату үшін мен Ethernet коннекторын қолдануды таңдадым.

Сіз бұл модельді қолдана аласыз немесе мен сияқты жәшіктерімде ілулі ескі Arduino қалқанын қолдана аласыз: ол ауыртпады, араның алдында батыл болды, оның өлімі тез болды ^^

Бұл Arduino Ethernet қалқаны туралы бір -екі ауыз сөз: 8 бөлек драйвер болады деп күтпеңіз … Кабельдер қалқанның ішінде 2 -ден жұптастырылған … Бұл мені тым ұзақ уақыт бойы жынды етті !!!

6 -қадам: Үйде…

Үйде …
Үйде …
Үйде …
Үйде …

Батарея ұстағышын, серво мен RJ45 фемальды қосқышты орнатуға жеткілікті орын.

7 -қадам: айналмалы үстелге рұқсат етіңіз …

Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …
Айналмалы табақ болсын …

Мақсат - оны күн сәулесінен қорғау …

Айналмалы болу үшін мен білік ретінде ұзын бұранданы қолдандым, оның ішінде жаңғақтар мен екі шарикті мойынтіректер болды …

Осы уақытқа дейін мен SG90 сервоін қолдандым (крутящий: 1,8кг/см 4,8в).

Үйді айналдыру үшін (және оның бірнеше грамы) жеткілікті. Екінші жағынан, мен оның пластикалық тісті берілістері менің аймағымда жиі соғатын желге ұзақ уақыт төзетініне сенімді емеспін.

Мен басқасына тапсырыс бердім (MG995 крутящий: 9,4кг/см 4.8в), өте қымбат емес, бірақ металл тісті берілістермен.

Мен оны алғаннан кейін келесі әрекетті жасаймын: мен оның келгенін хабарлау үшін байланыстырылған пошта жәшігіне сүйенемін!

8 -қадам: Кейбір тесттер

Image
Image

Бірнеше ескертулер:

Бұл эскиз күндізгі уақытта сағаттың өзгеруіне еліктеу үшін маған серво күйін басқаруға мүмкіндік береді.

  • SG90 көмегімен: қосымша қажеттілік жоқ, ол батарея контроллерінен шығатын OUT кернеуімен жұмыс жасай алады.
  • Бірақ MG 995 көмегімен:

    • Айналудың жалпы бұрышы бірдей емес (кеңірек): оны азайту үшін қосымша функцияны қолдануға тура келді (Servo_Delta ()).
    • Сервоға кернеудің жеткілікті болуын қамтамасыз ету үшін тұрақты ток кернеуі қажет … жалғастыру үшін…

/*

- SG90 көмегімен тест: қосымша қажеттіліктер жоқ, ол аккумуляторды реттегіштен шығатын кернеумен жұмыс істей алады - MG 995 үшін: - Servo_Delta () функциясын қолданыңыз … - Сервоға жеткілікті кернеуді беру үшін тұрақты ток/тұрақты ток қажет. жалғасы бар: */ #include bool Logs = true; Сервистік қызмет; #PIN_SERVO D2 анықтаңыз // серво позициясы: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h // int Arr_Servo_Pos = {177, 173, 163, 148, 133, 118, 100, 80, 61, 41, 28, 15, 2, 2, 2}; int Arr_Servo_Pos = {180, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 0, 0, 0}; int old; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Журналдар) Serial.println («Positionne le servo pour 7 Heure»); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && = Arr_Servo_Pos [i-7]; index-) {if (Журналдар) Serial.println (индекс); if (Журналдар) Serial.print («Түзетілген мән:»); if (Журналдар) Serial.println (Servo_Delta (индекс)); кешіктіру (200); //myservo.write(Servo_Delta(index)); myservo.write (индекс); } кешіктіру (15); myservo.write (Arr_Servo_Pos [i-7]); // datach myservo.detach () кезінде қозғалысты болдырмау үшін соңғы мәнді қайта жазыңыз; }}} кешігу (2000); }} int Servo_Delta (int мәні) {int Temp_val; Temp_val = (мәні*0,80) +9; Temp_val қайтару; }

9 -қадам: Кішкентай үй

Кішкентай үй
Кішкентай үй
Кішкентай үй
Кішкентай үй
Кішкентай үй
Кішкентай үй

Бұрын айтқанымдай, менде 3D принтер жоқ. Сондықтан мен ескі көкөніс қорабын қолдануды шештім …

Мүмкін бұл ауа райы ұзаққа созылмайтын шығар, бірақ ол кезде мен басқа шешімді (немесе 3D принтері бар досымды) қарастыруға уақыт табар едім: ағашты қорғау үшін мен барлық жерде көптеген лактар қостым …

Сіз «әдемі перделерді» көре аласыз … Әйеліңізден тапсырманы орындауды сұрағанда осылай болады ^^

10 -қадам: Эскиз

Орындалуда… Бірақ тұрақты болып көрінеді

Мен әлі де кодпен жұмыс жасаймын: бұл түпкілікті нұсқа болмағандықтан, сіздің түсініктемелеріңіз / кеңестеріңіз қабылданады;-)

Кейбір ескертулер:

  • Олар кодты кешіктіреді (): бұл Лолиннің көптеген апаттарын болдырмау үшін, әсіресе желіні тоқтату кезінде …
  • Мен күн азимутын алудың оңай және сенімді әдісін таппадым: сол себепті мен серво мәнін өзімнің бақылауым бойынша бекіттім … Сізде оны алудың жақсы (және қарапайым) әдісі бар, мені қызықтырады! Мүмкін мұнда оқуға арналған трек, егер мен интернеттегі API -ді қаласам да, күнге, сағатқа және географиялық жағдайға сәйкес азимут береді …
  • Ұйқы техникасы туралы: Lolin 32 биттік Tensilica процессоры болғандықтан, 32 биттік белгісіз бүтін сан үшін оның максималды мәні-4294967295… содан кейін терең ұйқы аралығы үшін шамамен 71 минут береді. Сондықтан мен шамамен 60 минут ұйықтаймын.

Өңдеу - 10.08.2018:

Мен сервода көптеген серпінді қозғалыстар бар екенін білдім, әсіресе тіркеме (), ажырату () алдында және Лолин терең ұйқыдан оянған сайын ().

Қосымша мәліметтер кестесін зерттеу барысында мен екі нәрсені түсіндім:

  • Lolin деректер кестесінде D4 шығысы BUILTIN_LED -мен байланысқан…
  • ESP8266ex мәліметтер кестесінде біз D4 шығысы UART 1/U 1 TXD (әмбебап асинхронды қабылдағыш таратқыш) ретінде қолданылатынын білеміз. Бұл UART1 журналды басып шығару үшін пайдаланылатыны да көрсетілген.

Бұл ақпаратты оқу арқылы мен D4 шығысы жақсы емес екенін түсіндім, әсіресе сервоприводты басқару үшін!

Сонымен, енді сервомоторды басқару үшін шығыс D2, төмендегі код сәйкесінше жаңартылды.

//****************************************

Күні: 08/Күні: 08/Нұсқасы: 0.9.4 IDE Arduino: 1.8.6 Жүктеу жылдамдығы: 921600 «LOLIN (WEMOS) D1 R2 & mini» Carte физикалық жұмысшылары: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) түйреуіш функциясы ESP-8266 түйреуішті қолдану тілі ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Аналогты кіріс, максимум 3.3В кіріс A0 кернеуі D0 IO GPIO16 Connecté à RST (терең ұйқыға құйыңыз) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k тартылатын GPIO0 D4 IO, 10к тартқыш, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed reveve D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k төмен, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST RST Connecté à D0 қалпына келтіру.ұйықтау) **************************************/ #incolle bool Logs = true; // wifi const char* ssid = «LOL»; const char* password = «LOL»; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress шлюзі (192, 168, 000, 000); IPAddress ішкі желісі (255, 255, 000, 000); WiFiClient клиенті; // Servo #include #deinine PIN_SERVO D2 Servo myservo; // серво позициясы: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // қамыс #PIN_SWITCH_OUT D5 байтын анықтаңыз Old_Switch_State_OUT; байт Switch_State_OUT; #PIN_SWITCH_IN_PARCEL D6 байтын Ескі_Свитч_Мемлекеті_IN_PARCEL анықтаңыз; байт Switch_State_IN_PARCEL; #PIN_SWITCH_IN_LETTER анықтаңыз D7 байт Old_Switch_State_IN_LETTER; байт Switch_State_IN_LETTER; белгісіз ұзақ қосқыш PressTime; const белгісіз ұзақ DEBOUCE_TIME = 200; // Аналогты #PIN_ANALOG A0 анықтаңыз // MQTT #include const char* MQTT_Server_IP = «Сіздің MQTT адресіңіз»; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (клиент); char MQTT_Message_Buff [70]; MQTT_Pub_String жолы; // кернеу қалқыма vcc; // NTP #уақытты білмейді; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); желі (ақиқат); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); желі (жалған); // NTP жиыны tnow = уақыт (nullptr); Int_Heures = Жол (ctime (& tnow)). Ішкі жол (11, 13).toInt (); Int_Minutes = Жол (ctime (& tnow)). Ішкі жол (14, 16).toInt (); // Түнгі ұйықтау егер (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print («Sleep pour la nuit (»); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println («минуттар»)); ұйқы (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = Жол (ctime (& tnow)). Ішкі жол (11, 13).toInt (); Int_Minutes = Жол (ctime (& tnow)). Ішкі жол (14, 16).toInt (); //Serial.println(String (уақыт (&tnow)))); //Serial.println («Heure:» + Жол (ctime (& tnow)). Ішкі жол (11, 13)); //Serial.println (Жол (ctime (& tnow)). Ішкі жол (11, 13).toInt ()); // Серво басқару егер (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Журналдар) Serial.println («Positionne le servo pour 7 Heure»); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index-) {if (Журналдар) Serial.println (индекс); кешіктіру (200); myservo.write (индекс); } кешіктіру (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // myservo.detach () ажыратылған кезде бұрмаланған қозғалыстарды болдырмау үшін соңғы мәнді қайтадан жазыңыз; } желі (ақиқат); SendBatteryLevel (); желі (жалған); }}} // Егер сенбі 13 -тен кейін ұйықтайтын болсаңыз ((String (ctime (& tnow)). Substring (0, 3) == «Sat») && (Int_Heures> = 13)) {if (Журналдар) Serial.print («Sleep pour le samedi aprés midi (»); if (Журналдар) Serial.print (Int_Sleep_Duration - Int_Minutes); егер (Журналдар) Serial.println («минуттар»)); ұйқы (Int_Sleep_Duration - Int_Minutes); } // Ұйықтау егер жексенбі болса (String (ctime (& tnow)). Ішкі жол (0, 3) == «Күн») {if (Журналдар) Serial.print («Sleep pour le dimanche (»); if (Журналдар) Serial.print (Int_Sleep_Duration - Int_Minutes); егер (Журналдар) Serial.println («минуттар» «)); ұйқы (Int_Sleep_Duration - Int_Minutes); } // Қамысты басқару Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_OUT == HIGH) {Serial.println («курьерлік байланысты!»); желі (ақиқат); кешіктіру (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, «0»); кешіктіру (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, «0»); кешіктіру (5000); желі (жалған); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); if (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_LETTER == HIGH) {Serial.println («Courrier arrivé!»); желі (ақиқат); кешіктіру (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, «Курьер»); кешіктіру (5000); желі (жалған); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_PARCEL == HIGH) {Serial.println («colis arrivé!»); желі (ақиқат); кешіктіру (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, «Colis»); кешіктіру (5000); желі (жалған); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Журналдар) Serial.println («\ tTension relatée:» + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, Жол (vcc, 0)); кешіктіру (5000); } бос ұйқы (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print («Желіні іске қосу»); WiFi.forceSleepWake (); кешіктіру (1); // init WIFI WiFi.config (ip, dns, шлюз, ішкі желі); WiFi.begin (ssid, құпия сөз); while (WiFi.status ()! = WL_CONNECTED) {кешіктіру (500); Serial.print («.»); } кешіктіру (5000); Serial.println («.»); Serial.print («\ tConnected - IP мекенжайы:»); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Int NTP Serial.print («\ tTime Synch.«); configTime (0, 0,» fr.pool.ntp.org «); setenv (» TZ «,» CET-1CEST, M3.5.0, M10.5.0/3 «, 0); while (уақыт (nullptr)) <= 100000) {Serial.print («.»); Кешіктіру (100);} Serial.println («.»);} Басқа {Serial.println («Желіні тоқтату»); WiFi.disconnect (); кешіктіру (1000); WiFi.mode (WIFI_OFF); кешіктіру (1000); WiFi.forceSleepBegin (); кешіктіру (1);}} жарамсыз қайта қосылу () {while (! ClientMQTT.connected ()) {Serial.print (« / t MQTT қосылымын қолдануда… «); // Қосылу әрекеті, егер (ClientMQTT.connect (» ESP8266ClientBAL «)) {Serial.println (» қосылған «);} басқа {Serial.print (» сәтсіз, rc = «); сериялық.print (ClientMQTT.state ()); Serial.println («5 секундтан кейін қайталап көріңіз»); // Кідірісті қайталау алдында 5 секунд күтіңіз (5000);}}} жарамсыз MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println («\ tМҚТТ -ға ақпарат жіберу …»); MQTT_Pub_String = «{» idx / «:» + Жол (Int_IDX) + «, \» Батарея / «:» + Жол (vcc, 0) + «, \» n \u003d «:» + N_Мәні + «, \» мәні / «: \» « + S_Value +» / «}»; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish («domoticz/in», MQTT_Message_Buff); ClientMQTT.disconnect (); }

11 -қадам: Домотиц

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Домотицте:

Жалпы қолдану үшін:

  • Екі «Манекен (ештеңе жасамайды, виртуалды қосқыштар үшін)» жасаңыз:

    1. Хаттар үшін бірінші…
    2. Посылка үшін екінші…
  • Олардың әрқайсысы үшін хабарландыруларды жекелендіріңіз;
  • Әрине, сізге Tegegram токенін орнату қажет.

Қосымша:

Аккумулятордың зарядталу деңгейін бақылау үшін «қызметтік сенсорды» қосуға болады.

Кеңестер: мұнда сіз көптеген тегін реттелетін белгішелерді таба аласыз …

12 -қадам: Қорытынды

Қорытынды
Қорытынды
Қорытынды
Қорытынды

Бұл нұсқаулық сізге көмектеседі деп үміттенемін:

  • байланыстырылған пошта жәшігін өзіңіз жасау керек пе;
  • немесе сіздің жобаларыңыз үшін бірнеше идеялар беру үшін!

Егер сізде жақсартуға арналған идеялар болса, мен тыңдаймын!

PS: ағылшын тіліне кешірім сұраймын, Google аудармасы маған көп көмектеседі, бірақ мінсіз емес шығар;-)

Ұсынылған: