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

Нарны эрчим хүчээр холбогдсон захидлын хайрцаг: 12 алхам (зурагтай)
Нарны эрчим хүчээр холбогдсон захидлын хайрцаг: 12 алхам (зурагтай)

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

Видео: Нарны эрчим хүчээр холбогдсон захидлын хайрцаг: 12 алхам (зурагтай)
Видео: 50 необычных, но невероятных автомобилей с 2002 по 2022 год 2024, Долдугаар сарын
Anonim
Нарны эрчим хүчээр холбогдсон захидлын хайрцаг
Нарны эрчим хүчээр холбогдсон захидлын хайрцаг
Нарны эрчим хүчээр холбогдсон захидлын хайрцаг
Нарны эрчим хүчээр холбогдсон захидлын хайрцаг

Хоёрдахь Ible -ийнхээ хувьд би танд холбогдсон захидлын хайрцгийнхаа талаар хийсэн бүтээлүүдээ тайлбарлах болно.

Энэхүү зааварчилгааны (+ бусад олон зүйлийг) уншаад миний шуудангийн хайрцаг манай байшингийн ойролцоо байдаггүй тул би Нээлттэй Ногоон Энергийн бүтээлүүдээс урамшуулж, захидлын хайрцгаа Domoticz сервертэйгээ холбохыг хүсчээ.

Зорилго

  • Захидал ирэх үед Telegram -аас зөвлөгөө авах;
  • Илгээмж ирэхэд Telegram -аас зөвлөгөө аваарай;
  • Захидал / илгээмжийг авсан эсэхийг шалгаарай.

Миний гол хязгаарлалт

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

Би өөр шийдлийг олох хэрэгтэй байсан: нарны эрчим хүч бол сайн шийдэл байсан!

Монголбанк

  • Raspberry Pi (MQTT болон Domoticz хэсгүүдийг байршуулах - энд дүрслэгдээгүй)
  • Telegram Bot данс
  • Lolin D1 mini (эсвэл Wemos …)
  • Plug-In шураг терминал блок холбогч
  • TP4056 лити зайг цэнэглэх самбар
  • 6V 2W фотоволтайк нарны хавтан
  • Li-Ion 18650 батерей
  • Ли-ион батерей эзэмшигч
  • ПХБ -ийн DIY гагнуурын зэсийн прототип хэвлэсэн хэлхээний самбар
  • Аналог Servo SG90
  • 3 зэгсэн унтраалга (нэг нь захидал, нэг нь боодол, нөгөө нь төлбөр хийх зориулалттай)
  • Соронзон
  • Зарим утаснууд
  • Модон хайрцаг: Ямар ч 3D принтер аваагүй тул би цахилгаан хэрэгслийн эд анги хүлээн авах зориулалттай модон байшинтай болсон.
  • Сэлбэг Ethernet кабель
  • RJ45 Ethernet холбогч таслах самбар

  • J-B Weld
  • Зарим бөмбөг холхивч
  • Шураг, самар, угаагч

Алхам 1: Дэлхийн схем

Глобал схем
Глобал схем
Глобал схем
Глобал схем

Үзэсгэлэнт зургууд нь урт ярианаас үргэлж дээр байдаг;-)

Гэхдээ MQTT, Domoticz, Telegram -ийн талаархи цөөн хэдэн тайлбарыг үргэлж хүлээж авах боломжтой!

MQTT (Message Queuing Telemetry Transport) нь IoT (зүйлсийн интернет) дэлхийн төхөөрөмжүүд болон бусад системүүдийн хооронд өгөгдөл илгээхэд ашигладаг мессежийн протокол юм.

Илүү дэлгэрэнгүй мэдээлэл өгөхгүйгээр түүний үйл ажиллагаа нь үйлчлүүлэгчид сервертэй холбогдох зарчимд суурилдаг. MQTT -д үйлчлүүлэгчдийг захиалагч эсвэл хэвлэн нийтлэгч гэж нэрлэдэг бөгөөд серверийг брокер гэж нэрлэдэг.

Энэхүү зааварчилгааны номонд би зөвхөн нэг л нийтлэгч Лолиныг өөрийн шуудангийн хайрцагт холбодог: захидал эсвэл илгээмжийг шуудангийн хайрцагт суулгасан зэгсэн контактуудаар илрүүлэх үед (1 -р алхам), энэ нь MQTT мессежийг WIFI -ээр дамжуулан брокер руу илгээдэг (Алхам 2)).

Брокерын хэсгийг Raspberry Pi дээр суурилуулсан Mosquitto хийдэг (3 -р алхам).

Domoticz -ийн тухай:

Эх хуудсан дээр тайлбарласны дагуу Domoticz бол "гэрийн автоматжуулалтын систем" бөгөөд янз бүрийн төхөөрөмжийг хянах, янз бүрийн протоколоос оролт хүлээн авах боломжийг олгодог: MQTT нь дэмжигддэг протоколын нэг юм.

Түүнд мэдээлэл ирмэгц (Алхам 4) та үйл явдлыг тодорхойлж болно: Захидлын хайрцгийн хувьд би Telegram мэдэгдэл илгээхээр шийдсэн (5 -р алхам).

Эцэст нь Telegram клиент миний утсан дээр тохируулагдсан байна (мөн миний эхнэр ч бас! - Алхам 6): эцсийн зорилгодоо хүрсэн …

Алхам 2: Шематик / утас

Сематик / утас
Сематик / утас
Сематик / утас
Сематик / утас
Сематик / утас
Сематик / утас
Сематик / утас
Сематик / утас

Аналогын талаар уншсан нэг үг:

Нэгдүгээрт, Lolin mini D1 (хуучин Wemos -ийн адил) A0 зүү (R1 -ийн хувьд 220KΩ, R2 -ийн хувьд 100KΩ - өгөгдлийн хүснэгтийн баруун талд байгаа холбоосыг харгалзан үзнэ үү) 3.2 вольт хүчдэл хуваагч суурилуулсан болохыг зарим судалгааны дараа би анзаарсан. хамгийн их аналог оролтын хүчдэл.

Батерейгаас гарах гаралтын хамгийн их хүчдэл нь 4, 2v (цэнэглэх самбараар хязгаарлагддаг) бөгөөд онолын хувьд оролтын хамгийн их хүчдэлийн хүрээг нэмэгдүүлэхийн тулд зөвхөн гадаад эсэргүүцэгч (R1 цувралаар) нэмэх шаардлагатай. Дараа нь хэрэв та R1 -тэй 100K -ийг цувралаар нэмбэл дараах үр дүнд хүрэх болно.

Vin * R1/(R1+R2) = Vout

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

Миний хэлхээнд би түүний утгыг тохируулах боломжтой байхыг сонгосон тул би хэлхээндээ тохируулгатай резистор ашиглахыг илүүд үзсэн: магадгүй энэ нь танд ашиггүй байх болно, гэхдээ миний нөхцөл байдалд би түүний утгыг ойролцоогоор 10КО гэж тохируулсан. Domoticz дахь уялдаа холбоотой үнэ цэнэ …

A0 зүү нь 10 битийн нарийвчлалтай болохыг анхаарна уу: энэ нь таны ноорог дээр таны аналог уншлага 0 -ээс 1024 хүртэлх утгыг буцаана гэсэн үг юм.

Би Domoticz -д хувийн утгыг илгээхийг хүсч байгаа тул аналог унших үр дүнг 10, 24 -т хуваах ёстой.

Алхам 3: Эрчим хүчний менежмент

Эрчим хүчний менежмент
Эрчим хүчний менежмент
Эрчим хүчний менежмент
Эрчим хүчний менежмент

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

  • Li-Ion 18650 батерей 4000 мАч;
  • 6V / 2W чадалтай нарны хавтан;
  • TP4056 лити батерейны цэнэглэх самбар.

Хамгийн тохиромжтой нарны хавтанг сонгохын тулд би энэ жишээг багтаасан хэд хэдэн жишээг авч үзэв: энэ жишээнд 5.5V / 0.66W хүч чадалтай нарны зай ашигладаг бөгөөд энэ нь хангалттай байж магадгүй юм. Миний хувьд, ESP8266 нь өдрийн турш асаалттай байх ёстой бөгөөд байшингаа нарны гэрэлд байлгахын тулд servo мотор ажиллуулах чадвартай байх ёстой тул би илүү хүчирхэг нарны хавтангийн загварыг (6V / 2W) сонгосон. харанхуй өвөл, үүлэрхэг өдрүүдийг урьдчилан харах;-)

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

  • Шуудан зөөгч зөвхөн өглөөний 7 цагаас оройн 8 цагийн хооронд өнгөрснийг мэдээд ESP шөнийн цагаар DeepSleep -т байрладаг;
  • Энэ хүчин зүйл нь бямба гаригийн үдээс Даваа гарагийн өглөөний хооронд өнгөрдөггүй: ESP нь энэ хугацаанд DeepSleep горимд ордог.
  • Өглөөний 7 -оос 20 цаг хүртэл, мөн эрчим хүчний хэрэглээг багасгахын тулд би ESP -ийн сүлжээний интерфэйсийг идэвхгүй болгож байна: сүлжээг зөвхөн илгээмж эсвэл захидал ирэхэд л дахин эхлүүлнэ. Нэн даруй анхааруулах шаардлагагүй бөгөөд сүлжээний интерфэйсийг дахин эхлүүлэхэд шаардлагатай хэдэн секунд хор хөнөөл учруулахгүй!

Lolin -д ашигладаг өөр өөр горим дахь хэрэглээний талаархи зарим үнэ цэнэ - мэдээллийн хүснэгтийг үзнэ үү, p18:

  • Ердийн горимд (RF ажиллаж байх үед) эрчим хүчний хэрэглээ 170 мА хүртэл нэмэгдэх боломжтой! Миний шуудангийн хайрцаг гэрээсээ 50 метрийн зайд байдаг тул (мөн WIFI дохионы хязгаарт …) холболтыг хадгалахад ашигладаг хүч хамгийн дээд хэмжээндээ хүрсэн гэж бодож байна …
  • Модем унтах үед эрчим хүчний хэрэглээ 15 мА хүртэл буурдаг. Гэхдээ мэдээллийн хүснэгтээс харахад ESP нь "өгөгдөл дамжуулахгүйгээр Wi-Fi холболтыг хадгалж байгаа" тул модемийг бүрэн зогсоож чадаагүй юм.
  • Гүн нойронд цахилгаан 20uA хүртэл буурдаг.

Wi -Fi шаардлагагүй идэвхгүй хэвээр байгаа гэдэгт итгэлтэй байхын тулд би дараах тушаалуудыг ашиглан үүнийг идэвхгүй болгохыг илүүд үзсэн. Олон тооны хоцролт () дуудлагад анхаарлаа хандуулаарай … Тэдэнгүйгээр ESP сүйрч байна:

WiFi.disconnect ();

саатал (1000); WiFi горим (WIFI_OFF); саатал (1000); WiFi.forceSleepBegin (); саатал (1);

Ерөнхийдөө хэдэн өдрийн турш ажилласны дараа ажиллах, ялангуяа зөв ачаалах мэт санагдаж байна.

  • Энэ нь байшинг нар руу чиглүүлэхийн тулд сервомоторыг цаг тутамд ажиллуулах боломжийг надад олгодог;
  • Би сүлжээний интерфейсийг цаг тутамд дахин идэвхжүүлж, зайны цэнэгийн түвшинг Domoticz руу илгээх боломжтой болно.

Алхам 4: Соронзон болон зэгсэн контактуудыг суулгах

Соронзон болон зэгсэн контактуудыг суулгах
Соронзон болон зэгсэн контактуудыг суулгах
Соронзон болон зэгсэн контактуудыг суулгах
Соронзон болон зэгсэн контактуудыг суулгах
Соронзон болон зэгсэн контактуудыг суулгах
Соронзон болон зэгсэн контактуудыг суулгах

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

Зэгсэн контактийг нүхэнд нь засахын тулд би бага зэрэг J-B гагнуур ашигласан.

Илгээмж, гаралтын хувьд жаахан соронзон хальс, жаахан төмрийн хөрөө, зорилгодоо хүрнэ!

Миний шуудангийн хайрцгийн давуу тал бол металл бөгөөд соронзны байрлалыг хөнгөвчлөх бөгөөд ингэснээр зэгс контактуудтай зөв харьцдаг.

Алхам 5: Миний бяцхан байшинтай холбогдоорой

Миний бяцхан байшинтай холбогдоорой
Миний бяцхан байшинтай холбогдоорой
Миний бяцхан байшинтай холбогдоорой
Миний бяцхан байшинтай холбогдоорой

Шуудангийн хайрцагнаас байшин руу зэгсэн контакт руу явдаг кабелийг хялбархан холбож, салгахын тулд би Ethernet холбогч ашиглахаар шийдсэн.

Та энэ загварыг ашиглаж болно, эсвэл миний адил шүүгээнд өлгөгдсөн хуучин Arduino Ethernet бамбайг ашиглаж болно: Тэр зовсонгүй, хөрөөний өмнө зоригтой байсан, түүний үхэл хурдан байсан ^^

Энэхүү Arduino Ethernet бамбайны тухай ганцхан үг: 8 тусдаа драйвертай болно гэж бүү бодоорой … Кабелийг бамбай дотор 2 -оор хослуулсан … Энэ нь намайг хэтэрхий удаан галзууруулсан юм !!!

Алхам 6: Гэрт…

Байшин дотор …
Байшин дотор …
Байшин дотор …
Байшин дотор …

Зай эзэмшигч, servo, RJ45 эмэгтэй холбогчийг засах хангалттай газар.

Алхам 7: Үүнийг эргүүлэх боломжтой болгоорой …

Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …
Үүнийг эргүүлэх боломжтой болгоорой …

Зорилго нь нарны гэрэлд байлгах явдал юм …

Эргэдэг байхын тулд би урт боолтыг тэнхлэг болгон ашиглаж, хэдэн самар, хоёр бөмбөг холхивчтой байсан …

Өнөөг хүртэл би SG90 servo (эргэлт: 1.8 кг/см 4.8v) ашигладаг байсан.

Байшинг (хэдхэн грамм) эргүүлэхэд хангалттай. Нөгөөтэйгүүр, түүний хуванцар араа нь миний бүс нутагт байнга тохиолддог салхинд хүчтэй тэсвэрлэдэг гэдэгт би итгэлгүй байна.

Би өөр нэгийг захиалсан (MG995 эргэлт: 9.4кг/см 4.8в), тийм ч үнэтэй биш, харин металл араагаар.

Үүнийг хүлээн авсны дараа хийх дараагийн зүйл бол би түүний ирсэн тухай надад мэдэгдэхийн тулд холбогдсон захидлын хайрцагт найдаж байна!

Алхам 8: Зарим туршилтууд

Image
Image

Хэд хэдэн тэмдэглэл:

Энэхүү ноорог нь servo -ийн байрлалыг хянах боломжийг олгохын тулд зөвхөн өдрийн цагаар өөрчлөгдөхийг дуурайдаг.

  • SG90 -ийн хувьд: нэмэлт хэрэгцээ шаардлагагүй тул зайны хянагчаас гарч буй OUT хүчдэлтэй ажиллах боломжтой.
  • Гэхдээ MG 995 -ийн хувьд:

    • Эргэлтийн нийт өнцөг нь ижил биш (өргөн): Би үүнийг багасгахын тулд нэмэлт функц ашиглах шаардлагатай болсон (Servo_Delta ()).
    • Servo -ийг хангалттай хүчдэлээр хангахын тулд DC/DC алхам хийх шаардлагатай байна … үргэлжлүүлэх…

/*

- SG90 -тэй ТЕСТ: нэмэлт шаардлага байхгүй, энэ нь батерейны хяналтаас гарах хүчдэлтэй ажиллах боломжтой - MG 995 -ийн хувьд: - Servo_Delta () функцийг ашиглана уу … - Сервод хангалттай хүчдэл өгөхөд DC/DC алхам шаардлагатай. үргэлжлэл болно: */ #include bool Logs = үнэн; Servo myservo; #PIN_SERVO D2 // servo байрлалыг тодорхойлох: 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 pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Logs) 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 && i = Arr_Servo_Pos [i-7]; index-) {if (Logs) Serial.println (индекс); if (Logs) Serial.print ("Тохируулсан утга:"); if (Logs) Serial.println (Servo_Delta (index)); саатал (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: Ноорог

Явж байна … Гэхдээ тогтвортой байгаа бололтой

Би код дээр ажиллаж байгаа: энэ нь эцсийн хувилбар биш тул таны сэтгэгдэл / зөвлөгөөг хүлээн авна уу;-)

Зарим тайлбар:

  • Тэд кодын олон саатал () байдаг: энэ нь Лолиныг их хэмжээгээр сүйрүүлэхээс урьдчилан сэргийлэх, ялангуяа сүлжээг эхлүүлэхийг зогсоох үед …
  • Би нарны азимут авах хялбар, найдвартай аргыг олж чадаагүй: ийм учраас би ажигласан зүйлийнхээ дагуу servo -ийн утгыг тогтоов … Надад үүнийг авах сайн (энгийн) арга байгаа, би сонирхож байна! Энд суралцах зам, хэрэв би онлайн API -ийг илүүд үздэг байсан ч огноо, цаг, газарзүйн байрлалын дагуу надад азимут өгдөг.
  • Нойрны техникийн талаар: Лолин нь 32 битийн Tensilica процессор учраас 32 битийн тэмдэггүй бүхэл тоонуудын хамгийн их утга нь 4294967295 байна … дараа нь гүн унтах завсарлагаанд ойролцоогоор 71 минут өгдөг. Тиймээс л би 60 минутын турш олон удаа унтдаг.

Засварлах - 2018-10-08:

Серво нь маш их хөдөлгөөнтэй хөдөлгөөнтэй болохыг олж мэдсэн, ялангуяа хавсралт (), салгах () болон Лолин гүн нойрноос () сэрэх болгонд.

Илүү их мэдээллийн хуудсыг судалж байхдаа би хоёр зүйлийг ойлгосон.

  • Lolin мэдээллийн хуудсан дээр D4 гаралт аль хэдийн BUILTIN_LED -тэй холбогдсон байна.
  • ESP8266ex мэдээллийн хуудсан дээр D4 гаралтыг UART 1/U 1 TXD (Universal асинхрон хүлээн авагч дамжуулагч) болгон ашигладаг болохыг олж мэдэв. Энэхүү UART1 нь бүртгэлийг хэвлэхэд ашиглагддаг болохыг мөн зааж өгсөн болно.

Эдгээр мэдээллийг уншаад D4 гаралт нь ялангуяа servo моторыг удирдах нь тийм ч сайн санаа биш гэдгийг ойлгосон!

Тиймээс одоо servomotor -ийг хянахад ашигладаг гаралт нь D2 бөгөөд доорх кодыг зохих ёсоор шинэчилсэн болно.

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

Огноо үүсгэсэн огноо: 08/Огноо mise en prod: 08/Хувилбар: 0.9.4 Хувилбар IDE Arduino: 1.8.6 Байршуулах хурд: 921600 Type de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physiqueployée: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Pin Function ESP-8266 Pin Utilization local ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Аналог оролт, хамгийн их 3.3V оролт A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (асгах, гүн унтуулах) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k татах GPIO0 D4 IO, 10k татах, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed rel Dive I6, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST RST Connecté à D0-ийг дахин тохируулах. унт)); // wifi const char* ssid = "LOL"; const char* password = "LOL"; IP хаяг IP (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress гарц (192, 168, 000, 000); IPAddress дэд сүлжээ (255, 255, 000, 000); WiFiClient үйлчлүүлэгч; // Servo #include #deine PIN_SERVO D2 Servo myservo; // servo байрлал: 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 #includ char const* 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 мөр; // Tension float vcc; // NTP #цагийг оруулна уу tnow; 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 = String (ctime (& tnow)). Дэд мөр (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Дэд мөр (14, 16).toInt (); // Хэрэв шөнийн турш гүн нойрсоорой (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Цуваа. println ("минут")); унтах (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Дэд мөр (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Дэд мөр (14, 16).toInt (); //Serial.println(String (цаг (&tnow)))); //Serial.println ("Heure:" + String (ctime (& tnow)). Дэд мөр (11, 13)); //Serial.println (String (ctime (& tnow)). Дэд мөр (11, 13).toInt ()); // Servo удирдлага if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Logs) 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 (Logs) 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 (Logs) Serial.print ("Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)"); унтах (Int_Sleep_Duration - Int_Minutes); } // Ням гараг бол гүн нойрсоорой (String (ctime (& tnow)). Substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); хэрэв (Logs) 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 ("Courrier хамааралтай!"); сүлжээ (үнэн); саатал (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, "Courrier"); саатал (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; }} хүчингүй SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Logs) Serial.println ("\ tTension хамааралтай:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); саатал (5000); } хоосон нойр (Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void сүлжээ (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); // InTP NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); байхад (цаг (nullptr)) <= 100000) {Serial.print ("."); Delay (100);} Serial.println (".");} Өөр {Serial.println ("Сүлжээний зогсолт."); WiFi.disconnect (); саатал (1000); WiFi.mode (WIFI_OFF); саатал (1000); WiFi.forceSleepBegin (); саатал (1);}} хүчингүй дахин холбогдох () {while (! ClientMQTT.connected ()) {Serial.print (" / tMQTT холболтыг оролдож байна … "); // Хэрэв (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 ("\ tMQTT руу мэдээлэл илгээх …"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Батерей / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" үнэлгээ / ": \" " + 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
Domoticz

Domoticz -д:

Ерөнхий хэрэглээнд:

  • Хоёр "дамми (юу ч хийдэггүй, виртуал унтраалганд ашиглаарай)" үүсгэнэ үү:

    1. Захидлын эхнийх нь …
    2. Илгээмжийн хоёр дахь нь …
  • Тэд тус бүрийн хувьд мэдэгдлийг хувийн болгох;
  • Мэдээжийн хэрэг та Tegegram жетоноо тохируулах хэрэгтэй.

Сонголтоор:

Та батерейны цэнэгийн түвшинг хянахын тулд "Хэрэглээний мэдрэгч" нэмж болно.

Зөвлөмж: эндээс та маш олон үнэгүй захиалгат дүрсүүдийг олох боломжтой …

Алхам 12: Дүгнэлт

Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт

Энэхүү заавар нь танд тусална гэж найдаж байна.

  • холбогдсон захидлын хайрцгийг өөрөө хийх эсэх;
  • эсвэл төслүүдийнхээ талаар хэдэн санаа өгөх гэсэн юм!

Хэрэв танд сайжруулах санаа байгаа бол би сонсож байна!

Жич: миний англи хэлийг уучлаарай, Google орчуулга надад маш их тусалдаг, гэхдээ төгс биш байх;-)

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