Talaan ng mga Nilalaman:

Nakakonektang Letterbox Solar Powered: 12 Hakbang (na may Mga Larawan)
Nakakonektang Letterbox Solar Powered: 12 Hakbang (na may Mga Larawan)

Video: Nakakonektang Letterbox Solar Powered: 12 Hakbang (na may Mga Larawan)

Video: Nakakonektang Letterbox Solar Powered: 12 Hakbang (na may Mga Larawan)
Video: Кампи Флегрей: супервулкан Италии Pt4: моделирование извержения в настоящее время 2024, Hulyo
Anonim
Nakakonektang Letterbox Solar Powered
Nakakonektang Letterbox Solar Powered
Nakakonektang Letterbox Solar Powered
Nakakonektang Letterbox Solar Powered

Para sa aking pangalawang Ible, ilalarawan ko sa iyo ang aking mga gawa tungkol sa aking konektadong letterbox.

Matapos basahin ang Instructable na ito (+ marami pang iba), at dahil ang aking letterbox ay hindi malapit sa aking bahay, nais kong inspirasyon ako sa mga gawa ng Open Green Energy upang ikonekta ang aking letterbox sa aking Domoticz server.

Mga Layunin

  • Pinayuhan ng Telegram pagdating ng mga liham;
  • Pinayuhan ng Telegram kapag darating ang isang parsela;
  • Suriin kung ang mga titik / parsela ay nakuha.

Ang aking pangunahing pagpigil

Ang mailbox ay medyo malayo sa bahay, at imposibleng hilahin ang isang de-kuryenteng cable hanggang dito upang mapagana ang anumang bagay.

Kailangan kong maghanap ng isa pang solusyon: ang solar power ay isang mahusay na solusyon!

Ang BOM

  • Raspberry Pi (upang mag-host ng mga bahagi ng MQTT at Domoticz - hindi naidisenyo dito)
  • Isang account sa Telegram Bot
  • Lolin D1 mini (o Wemos…)
  • Plug-In Screw Terminal Block Connector
  • TP4056 Lithium Battery Charging Board
  • 6V 2W Photovoltaic Solar Panel
  • Li-Ion 18650 na baterya
  • May hawak ng baterya ng Li-Ion
  • PCB DIY Soldering Copper Prototype Printed Circuit Board
  • Analog Servo SG90
  • 3 Mga Reed Switch (isa para sa mga titik, isa para sa parsela at isa para sa pag-checkout)
  • Mga magnet
  • Ang ilang mga wires
  • Kahoy na kahoy: Tulad ng hindi nakakakuha ng anumang 3D printer, napagtanto ko ang aking sariling maliit na bahay na may kahoy upang matanggap ang mga bahagi ng electronics…
  • Spare Ethernet cable
  • RJ45 Ethernet Connector Breakout Board

  • J-B Weld
  • Ang ilang mga ball bearings
  • Mga tornilyo, mani, washer

Hakbang 1: Global Scheme

Global Scheme
Global Scheme
Global Scheme
Global Scheme

Ang mga magagandang guhit ay laging mas mahusay kaysa sa mahahabang pagsasalita;-)

Ngunit ang ilang mga explantations tungkol sa MQTT, Domoticz at Telegram ay palaging maligayang pagdating!

Ang MQTT (Message Queuing Telemetry Transport), ay isang messaging protocol, ginamit upang magpadala ng mga datas sa pagitan ng mga aparato at iba pang mga system sa mundo ng IoT (Internet ng mga bagay).

Nang hindi napupunta sa masyadong maraming mga detalye, ang pagpapatakbo nito ay batay sa prinsipyo ng mga kliyente na kumokonekta sa isang server. Sa MQTT, ang mga kliyente ay tinatawag na Subscriber o Publisher, at ang server ay tinawag na Broker.

Sa Instructable na ito, gumagamit lamang ako ng isang publisher, ang Lolin na naka-wire sa aking letterbox: kapag ang mga titik o parsel ay nakita sa pamamagitan ng mga contact na tambo na naka-install sa letterbox (Hakbang 1 sa shematic), nagpapadala ito ng mensahe ng MQTT sa WIFI sa Broker (Hakbang 2).

Ang bahagi ng Broker ay ginagawa ng Mosquitto, na naka-install sa Raspberry Pi (Hakbang 3).

Tungkol kay Domoticz:

Tulad ng inilarawan sa pahina ng pinagmulan, ang Domoticz ay isang "home automation system", na nagbibigay-daan sa iyo upang makontrol ang iba't ibang mga aparato at makatanggap ng input mula sa iba't ibang mga proteksyon: Ang MQTT ay isa sa mga sinusuportahang protokol …

Kaagad na maabot sa kanya ang impormasyon (Hakbang 4), maaari mong tukuyin ang mga kaganapan: Sa kaso ng letterbox, pinili kong magpadala ng isang notification sa Telegram (Hakbang 5).

Sa wakas, ang Telegram client ay naka-configure sa aking telepono (at ang asawa ko rin! - Hakbang 6): naabot ang layunin sa pagtatapos…

Hakbang 2: Sematiko / Kable

Sematiko / Kable
Sematiko / Kable
Sematiko / Kable
Sematiko / Kable
Sematiko / Kable
Sematiko / Kable
Sematiko / Kable
Sematiko / Kable

Isang salita tungkol sa analog na nabasa:

Una sa lahat, napansin ko pagkatapos ng ilang mga pagsasaliksik na ang Lolin mini D1 (bilang matandang Wemos), ay nagtayo sa divider ng boltahe para sa pin A0 (isinasaalang-alang ang 220KΩ para sa R1 at 100KΩ para sa R2 - tingnan ang kanan ng naka-link na datasheet), na pinapayagan ang 3.2 Volts bilang maximum na boltahe ng pag-input ng analog.

Isinasaalang-alang ang max output boltahe mula sa baterya ay 4, 2v (limitado ng singilin board), at theorically, kailangan mo lamang magdagdag ng isang panlabas na resitor (sa serye na may R1) upang madagdagan ang saklaw ng max input voltage. Pagkatapos, kung magdagdag ka ng 100K sa serye kasama ang R1, magkakaroon ka ng resulta na ito:

Vin * R1 / (R1 + R2) = Vout

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

Sa aking circuit, pinili kong maisaayos ang halaga nito, iyon ang dahilan kung bakit ginusto kong gumamit ng isang naaayos na risistor sa aking circuit: marahil ay walang silbi para sa iyo, ngunit sa aking sitwasyon, itinakda ko ang halaga nito sa halos 10KΩ upang magkaroon isang magkakaugnay na halaga sa Domoticz…

Tandaan na ang A0 pin ay may 10 bit na resolusyon: nangangahulugan ito na sa iyong sketch, ang iyong pagbasa ng analog ay magbabalik ng isang halaga sa pagitan ng 0 hanggang 1024.

Tulad ng nais kong magpadala ng halagang porsyento sa Domoticz, kailangan kong hatiin ang nabasang analog na resulta ng 10, 24.

Hakbang 3: Pamamahala ng Kuryente

Pamamahala ng Kuryente
Pamamahala ng Kuryente
Pamamahala ng Kuryente
Pamamahala ng Kuryente

Siyempre, nais kong maging autonomous ang letterbox. Upang maabot ang aking layunin, ginagamit ko ang mga elementong ito:

  • isang Li-Ion 18650 na baterya ng 4000mAh;
  • isang solar panel na maaaring maghatid ng 6V / 2W;
  • isang board ng singilin na TP4056 Lithium Battery.

Upang mapili ang pinakaangkop na solar panel, tiningnan ko ang ilang mga halimbawa, kasama ang isang ito: sa halimbawang ito, isang 5.5V / 0.66W solar panel ang ginamit, at marahil ay sapat para sa hangarin. Sa aking kaso, at dahil ang ESP8266 ay dapat manatiling ON sa araw at dapat na magpatakbo ng isang servo motor upang mapanatili ang mukha ng bahay sa araw, pumili ako ng isang mas malakas na modelo ng solar panel (6V / 2W) - Pinapayagan din ako nito upang asahan ang madilim na panahon ng taglamig at maulap na araw;-)

Gayundin, at upang mabawasan ang paggasta ng enerhiya sa maximum, pinili ko ang mga sumusunod na sitwasyon:

  • alam na ang kartero ay nakaraan lamang sa pagitan ng 7 ng umaga at 8 ng gabi, ang ESP ay inilalagay sa DeepS Sleep sa natitirang gabi;
  • Ang kadahilanan ay hindi pumasa sa pagitan ng Sabado ng tanghali at Lunes ng umaga: ang ESP ay inilalagay din sa mode ng DeepSleep sa panahong ito.
  • Para sa panahon sa pagitan ng 7 am at 8 pm, at upang mabawasan ang pagkonsumo ng kuryente, hindi ko lang pinagagana ang interface ng network ng ESP: ang network ay na-restart lamang sa pagdating ng isang parsela o isang liham, sapat na oras lamang upang maipadala ang impormasyon sa Domoticz. Hindi ko kailangang bigyan ng babala kaagad at ang ilang karagdagang mga segundo na kinakailangan upang muling simulan ang interface ng network ay hindi nakakapinsala!

Ang ilang halaga tungkol sa pagkonsumo sa mga magkakaibang mode na ginagamit ko para sa Lolin - tingnan ang datasheet, p18:

  • Sa normal na mode (na may RF na gumagana), ang pagkonsumo ng kuryente ay maaaring tumaas sa 170mA! Tulad ng aking kahon ng sulat ay tungkol sa 50 metro mula sa aking bahay (at sa limitasyon ng signal ng WIFI …) Sa palagay ko ang lakas na ginamit upang mapanatili ang koneksyon ay nasa kanyang pinakamataas …
  • Sa Modem-sleep, ang power konsumo ay bumaba sa 15mA. Ngunit tulad ng nakikita mo sa datasheet, hindi nito ganap na itinigil ang modem, dahil ang ESP ay "pinapanatili ang isang koneksyon sa Wi-Fi na walang paghahatid ng data".
  • Sa Deep-sleep, ang kapangyarihan ay bumaba sa 20uA.

Upang matiyak na ang wifi ay hindi mananatiling aktibo nang hindi kinakailangan, ginusto ko itong huwag paganahin sa mga sumusunod na utos. Tandaan ang maraming pagkaantala () na tawag … Nang wala ang mga ito, ang pagbagsak ng ESP:

WiFi.disconnect ();

pagkaantala (1000); WiFi.mode (WIFI_OFF); pagkaantala (1000); WiFi.forceS SleepBegin (); antala (1);

Sa pangkalahatan, pagkatapos ng maraming araw na pagpapatakbo, mukhang gagana ito at lalo na upang mai-load nang tama:

  • pinapayagan akong patakbuhin ang servomotor bawat oras upang iposisyon ang bahay patungo sa araw;
  • Maaari ko ring payagan ang aking sarili na muling buhayin ang interface ng network bawat oras din upang maipadala kay Domoticz ang antas ng singil ng baterya.

Hakbang 4: Pag-install ng Mga Magneto at Mga Reed Contact

Pag-install ng Mga Magneto at Mga contact ng Reed
Pag-install ng Mga Magneto at Mga contact ng Reed
Pag-install ng Mga Magneto at Mga contact ng Reed
Pag-install ng Mga Magneto at Mga contact ng Reed
Pag-install ng Mga Magneto at Mga contact ng Reed
Pag-install ng Mga Magneto at Mga contact ng Reed

Tulad ng dati, ginamit ko ang aking Proxxon upang hugis ang lugar ng Reed sa isang piraso ng kahoy.

Upang ayusin ang contact ng tambo sa butas nito, gumamit ako ng kaunting J-B welding.

Para sa parsela at output, isang maliit na piraso ng tape, isang maliit na hacksaw, at naabot ang layunin!

Ang bentahe ng aking letterbox ay ito ay metal, na nagpapadali sa pagpoposisyon ng mga magnet upang ito ay nakikipag-ugnay nang maayos sa mga contact ng reed.

Hakbang 5: Kumonekta sa Aking Little House

Kumonekta sa Aking Little House
Kumonekta sa Aking Little House
Kumonekta sa Aking Little House
Kumonekta sa Aking Little House

Upang madaling kumonekta at idiskonekta ang cable na papunta sa mga contact na tambo mula sa letterbox patungo sa bahay, pinili kong gumamit ng isang konektor sa Ethernet.

Maaari mong gamitin ang modelong ito o, tulad ng sa akin, gumamit ng isang lumang kalasag ng Arduino Ethernet na nakabitin sa aking mga drawer: Hindi siya nagdusa, matapang siya sa harap ng lagari, mabilis ang kanyang kamatayan ^^

Isang salita lamang tungkol sa Arduino Ethernet na kalasag na ito: huwag asahan na magkaroon ng 8 magkakahiwalay na mga driver … Ang mga cable ay ipinares ng 2 sa loob ng kalasag … Nababaliw ito sa akin ng masyadong mahaba !!!

Hakbang 6: Sa Bahay…

Sa bahay …
Sa bahay …
Sa bahay …
Sa bahay …

Sapat na lugar lamang upang ayusin ang may-ari ng baterya, itatakda ang servo, at ang konektor ng femal ng RJ45.

Hakbang 7: Hayaan itong Maikutan …

Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …
Hayaang Maikot Ito …

Ang layunin ay panatilihin itong nakaharap sa araw …

Upang hayaan ang kakayahang maging turnable, gumamit ako ng isang mahabang tornilyo bilang isang ehe, na may ilang mga mani at dalawang ball bearings …

Hanggang ngayon, gumamit ako ng SG90 servo (metalikang kuwintas: 1.8kg / cm sa 4.8v).

Upang buksan ang bahay (at ang ilang gramo) ay sapat na. Sa kabilang banda, hindi ako sigurado na ang mga plastik na gears nito ay lumalaban sa mahabang panahon ng madalas na pag-agos ng hangin na mayroon sa aking rehiyon.

Nag-order ako ng isa pa (MG995 metalikang kuwintas: 9.4kg / cm sa 4.8v), hindi rin masyadong mahal, ngunit may mga metal na gears.

Ito ang susunod na gagawin kapag natanggap ko ito: umaasa ako sa aking nakakonektang letterbox upang ipaalam sa akin ang kanyang pagdating!

Hakbang 8: Ilang Pagsubok

Image
Image

Ilang tala:

Ang sketch na ito ay upang tularan lamang ang mga pagbabago ng oras sa araw upang payagan akong makontrol ang posisyon ng servo.

  • Sa SG90: walang dagdag na mga pangangailangan, maaari itong gumana sa OUT boltahe na nagmumula sa baterya controller.
  • Ngunit, sa MG 995:

    • Ang kabuuang anggulo ng pag-ikot ay hindi pareho (mas malawak): Kailangan kong gumamit ng isang labis na pagpapaandar upang mabawasan ito (Servo_Delta ()).
    • Kailangan mo ng DC / DC Step up upang makapagbigay ng sapat na boltahe sa servo … na ipagpapatuloy …

/*

- PAGSUSULIT sa SG90: walang dagdag na mga pangangailangan, maaari itong gumana sa OUT boltahe pagpunta mula sa baterya controler - PARA SA MG 995: - gamitin Servo_Delta () function … - Kailangan mo ng isang DC / DC Hakbang up upang magbigay ng sapat na boltahe sa servo… upang ipagpatuloy: * / # isama ang bool Logs = totoo; Servo MyServo; #define PIN_SERVO D2 // posisyon ng servo para sa: 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 matanda; int pos; int i; void setup () {Serial.begin (115200); } void loop () {para sa (i = 7; i <= 22; i ++) {old = i; kung (i == 7) {kung (Mag-log) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); para sa (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 (index); kung (Mag-log) Serial.print ("Naayos na halaga:"); kung (Mag-log) Serial.println (Servo_Delta (index)); pagkaantala (200); //myservo.write(Servo_Delta(index)); myservo.write (index); } pagkaantala (15); myservo.write (Arr_Servo_Pos [i-7]); // isulat muli ang huling halaga upang maiwasan ang mga kilusang paggalaw kapag datach myservo.detach (); }}} pagkaantala (2000); }} int Servo_Delta (int halaga) {int Temp_val; Temp_val = (halaga * 0.80) +9; ibalik ang Temp_val; }

Hakbang 9: Ang Little House

Ang Maliit na Bahay
Ang Maliit na Bahay
Ang Maliit na Bahay
Ang Maliit na Bahay
Ang Maliit na Bahay
Ang Maliit na Bahay

Tulad ng sinabi ko dati, wala akong nakuhang anumang 3D printer. Kaya't nagpasya akong gumamit ng matandang crate ng gulay…

Marahil hindi ito magtatagal ng mahabang panahon, ngunit sa panahong iyon, magkakaroon ako ng oras upang isaalang-alang ang isa pang solusyon (o isang kaibigan na nagmamay-ari ng isang 3D printer): upang maprotektahan ang kahoy, nagdagdag ako ng maraming barnis sa kung saan man…

Maaari mong makita ang "magagandang mga kurtina" … Iyon ang nangyayari kapag hiniling mo sa iyong asawa na gawin ang trabaho ^^

Hakbang 10: Ang Sketch

Isinasagawa … Ngunit tila matatag

Gumagawa pa rin ako sa code: dahil hindi ito isang tumutukoy na bersyon, malugod na tinatanggap ang iyong mga komento / payo;-)

Ang ilang mga pangungusap:

  • Marami silang pagkaantala () sa code: ito ay upang maiwasan ang maraming pag-crash ng Lolin, lalo na habang hinihinto ang isang panimulang network …
  • Hindi ako nakakita ng isang madali at maaasahang paraan upang makuha ang sun azimuth: kaya't naayos ko ang halaga ng servo sa pagpapaandar ng naobserbahan ko … Mayroon akong isang mahusay (at simpleng) paraan upang makuha ito, interesado ako! Siguro isang track upang mag-aral dito, kahit na mas gusto ko ang isang online API ay nagbibigay sa akin ng azimuth nang direkta alinsunod sa petsa, oras, at posisyon na pangheograpiya …
  • Tungkol sa tekniko sa pagtulog: dahil ang Lolin ay isang 32-bit na Tensilica Processor, ang maximum na halaga para sa isang 32-bit na hindi naka-sign na integer ay 4294967295 … pagkatapos, nagbibigay ito ng halos 71 minuto para sa malalim na agwat ng pagtulog. Iyon ang dahilan kung bakit natutulog ako ng maraming beses sa loob ng 60 minuto …

EDIT - 2018-10-08:

Natuklasan ko ang servo ay mayroong maraming mga masikip na paggalaw, lalo na bago ang pagkakabit (), detach () at sa bawat oras na gisingin ang Lolin mula sa deepS Sleep ().

Habang nag-aaral ng kaunti pang mga datasheet, napagtanto ko ang dalawang bagay:

  • Sa datasheet ng Lolin, ang output ng D4 ay konektado na sa BUILTIN_LED…
  • Sa data sheet ng ESP8266ex, natutunan namin na ang output ng D4 ay ginagamit bilang UART 1 / U 1 TXD (Universal Asynchronous Receiver Transmitter). Tinukoy din na ang UART1 na ito ay ginagamit para sa pag-print ng log.

Sa pamamagitan ng pagbabasa ng mga impormasyong ito, napagtanto ko na ang output ng D4 ay hindi isang magandang ideya, lalo na upang pamahalaan ang isang servo motor!

Kaya, ngayon ang output na ginamit upang makontrol ang servomotor ay D2, ang code sa ibaba ay na-update nang naaayon.

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

Petsa ng création: 08 / Petsa ng mise en prod: 08 / Bersyon: 0.9.4 Bersyon IDE Arduino: 1.8.6 Bilis ng pag-upload: 921600 Type de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 at mini" Carte physique employer: 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 Paggamit ng lokasyon ng Pin ------- ---- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analog input, max 3.3V input A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (ibuhos ang deep.s Sleep) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed relève D6 IO, 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 Reset RST Connecté à D0 (ibuhos ang malalim.makatulog) **************************************** / # isama ang bool Logs = totoo; // wifi const char * ssid = "LOL"; const char * password = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress gateway (192, 168, 000, 000); IPAddress subnet (255, 255, 000, 000); Client ng WiFiClient; // Servo #include #define PIN_SERVO D2 Servo MyServer; // posisyon ng servo para sa: 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}; // Reeds #define PIN_SWITCH_OUT D5 byte Old_Switch_State_OUT; byte Switch_State_OUT; # tukuyin ang PIN_SWITCH_IN_PARCEL D6 byte Old_Switch_State_IN_PARCEL; byte Switch_State_IN_PARCEL; # tukuyin ang PIN_SWITCH_IN_LETTER D7 byte Old_Switch_State_IN_LETTER; byte Switch_State_IN_LETTER; unsigned mahabang switchPressTime; const unsigned matagal DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT # isama ang const char * MQTT_Server_IP = "Iyong MQTT address"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (kliyente); char MQTT_Message_Buff [70]; String MQTT_Pub_String; // Tension float vcc; // NTP # isama ang oras_t ngayon; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); network (totoo); 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 (); network (false); // NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); // Deeps Sleep for the night if (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_S Sleep_Duration - Int_Minutes); Serial. println ("minuto)"); pagtulog (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Substring (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Servo management if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; kung (Int_Heures == 7) {if (Logs) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); para sa (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 (index); pagkaantala (200); myservo.write (index); } pagkaantala (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // isulat muli ang huling halaga upang maiwasan ang mga galaw na paggalaw kapag tumanggal ang MyServo.detach (); } network (totoo); SendBatteryLevel (); network (false); }}} // Matulog kung Sabado pagkatapos ng 13 oras kung ((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_S Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minuto)"); pagtulog (Int_Sleep_Duration - Int_Minutes); } // Nakakatulog kung sunday kung (String (ctime (& tnow)). Substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_S Sleep_Duration - Int_Minutes); kung (Logs Serial.println ("minuto)"); pagtulog (Int_Sleep_Duration - Int_Minutes); } // Reeds managment Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); kung (Switch_State_OUT! = Old_Switch_State_OUT) {kung (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); kung (Switch_State_OUT == MATAAS) {Serial.println ("courrier relevé!"); network (totoo); pagkaantala (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); pagkaantala (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); pagkaantala (5000); network (false); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); kung (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); kung (Switch_State_IN_LETTER == TAAS) {Serial.println ("pagdating ng tagadala!"); network (totoo); pagkaantala (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); pagkaantala (5000); network (false); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); kung (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); kung (Switch_State_IN_PARCEL == MATAAS) {Serial.println ("colis arrvé!"); network (totoo); pagkaantala (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); pagkaantala (5000); network (false); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} walang bisa ang SendBatteryLevel () {pagkaantala (5000); vcc = analogRead (PIN_ANALOG) /10.24; kung (Mag-log) Serial.println ("\ tTension kaugnay:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); pagkaantala (5000); } walang bisa na pagtulog (int Min_Duration) {ESP.deepS Sleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Network start"); WiFi.forceS SleepWake (); antala (1); // init WIFI WiFi.config (ip, dns, gateway, subnet); WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } pagkaantala (5000); Serial.println ("."); Serial.print ("\ tConnected - IP Address:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0 / 3 ", 0); habang (oras (nullptr) <= 100000) {Serial.print ("."); Antala (100);} Serial.println (".");} Iba pa {Serial.println ("Network stop."); WiFi.disconnect (); antala (1000); WiFi.mode (WIFI_OFF); antala (1000); WiFi.forceS SleepBegin (); antala (1);}} walang bisa na muling kumonekta () {habang (! ClientMQTT.connected ()) {Serial.print (" / tAttempting MQTT connection… "); // Subukang kumonekta kung (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" konektado ");} iba pa {Serial.print (" bigo, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("subukang muli sa 5 segundo"); // Maghintay ng 5 segundo bago subukang muli ang pagkaantala (5000);}}} walang bisa ang MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) muling magkonekta (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ t Magpadala ng impormasyon sa MQTT …"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Battery / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" "+ S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length () + 1); ClientMQTT.publish ("domoticz / in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Hakbang 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Sa Domoticz:

Para sa pangkalahatang paggamit:

  • Lumikha ng dalawang "Dummy (Walang ginagawa, gamitin para sa mga virtual switch)":

    1. Ang una para sa mga titik …
    2. Ang pangalawa para sa parsela…
  • Para sa bawat isa sa kanila, isapersonal ang mga notification;
  • Siyempre, kailangan mong i-set up ang iyong token ng Tegegram.

Opsyonal:

Maaari kang magdagdag ng "Utility sensor" upang pangasiwaan ang antas ng singil ng iyong baterya.

Mga Tip: dito maaari kang makahanap ng maraming mga libreng pasadyang mga icon …

Hakbang 12: Konklusyon

Konklusyon
Konklusyon
Konklusyon
Konklusyon

Inaasahan kong makakatulong ang Instructable na ito:

  • kung gagawa ng iyong sariling konektadong letterlbox;
  • o upang mabigyan ka lang ng ilang mga ideya para sa iyong mga proyekto!

Kung mayroon kang mga ideya para sa mga pagpapabuti, nakikinig ako!

PS: Paumanhin para sa aking ingles, ang pagsasalin ng Google ay tumutulong sa akin ng malaki ngunit marahil ay hindi perpekto;-)

Inirerekumendang: