![WebApp Controlled Gate Operator Add-on (IoT): 20 Steps (Сүрөттөр менен) WebApp Controlled Gate Operator Add-on (IoT): 20 Steps (Сүрөттөр менен)](https://i.howwhatproduce.com/images/001/image-462-80-j.webp)
Мазмуну:
- 1 -кадам: Бөлүктөрдү чогултуу
- 2 -кадам: Берилиштер
- 3 -кадам: Корпусту чоңойт
- 4-кадам: Wire DC-DC Converter
- 5 -кадам: Түзмөктөргө электр зымдары
- 6 -кадам: Зым реле модулунун кириштери
- 7 -кадам: IMP Power Jumper
- 8 -кадам: Зым дарбазасынын статусун киргизүү
- 9 -кадам: Чапты басып чыгаруу же сатып алуу
- 10 -кадам: Делеңизди кооздоңуз
- 11 -кадам: Сымдарды тешүү
- 12 -кадам: Hookup зымдарын даярдоо жана орнотуу
- 13 -кадам: Маршрут Hookup Wires
- 14 -кадам: компоненттерди орнотуу
- 15 -кадам: Hookup Wires мөөрүн жабыңыз
- 16 -кадам: Ишти жабыңыз
- 17 -кадам: Дарбаза операторуна орнотуңуз
- 18 -кадам: Aux Relay режимин коюңуз
- 19 -кадам: IMP агенти жана түзмөк коду
- 20 -кадам: Web кызматы PHP коду
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:53
![WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT) WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT)](https://i.howwhatproduce.com/images/001/image-462-81-j.webp)
![WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT) WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT)](https://i.howwhatproduce.com/images/001/image-462-82-j.webp)
![WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT) WebApp көзөмөлдөгөн дарбаза оператору кошумча (IoT)](https://i.howwhatproduce.com/images/001/image-462-83-j.webp)
Менин кардарым бар, анын дарбазасы бар, көп адамдар келип кетиши керек болчу. Алар сырттан баскычтопту колдонууну каалашкан жок жана чектүү санда keyfob өткөргүчтөрү бар болчу. Кошумча Keyfobs үчүн жеткиликтүү булакты табуу кыйын болду. Бул Liftmaster дарбазасынын операторун IoT ыңгайлаштырылган аппаратура, веб API жана веб -колдонмо интерфейси менен жаңыртуу үчүн сонун мүмкүнчүлүк болмок деп ойлодум. Бул массалык жеткиликтүүлүк маселесин гана чечпестен, кошумча функцияларды да ачты!
Жогорудагы акыркы сүрөттө мен бир жылга жакын убакыттан бери иштей турган сыноо бөлүмү. Мен жаңыртуу убактысы келди деп ойлодум!
Бул жерде көрсөтүлгөн бардык коддору, аппараттык маалыматтары жана долбоорлору менен толук иштеген чечим.
Долбоорлордун бардык файлдары GitHubда да жайгаштырылган: github.com/ThingEngineer/IoT-Gate-Operator-Addon
CodeIgniter WebApp интерфейсинин мисалы бул жерде жайгаштырылган: projects.ajillion.com/gate Бул мисал түз дарбазага туташкан эмес, бирок дарбазада иштеп жаткан так интерфейс жана код (кээ бир коопсуздук функциялары).
--
Андан да чоң интеграция үчүн IFTTT китепканасын Electric Imp үчүн колдонсоңуз болот.
1 -кадам: Бөлүктөрдү чогултуу
![Бөлүктөрдү чогултуу Бөлүктөрдү чогултуу](https://i.howwhatproduce.com/images/001/image-462-84-j.webp)
- Сизге жок дегенде 4 GPIO менен Электрдик IMP керек болот, мен IMP001ди апрель сынык тактасы менен колдонуп жатам.
- Булак чыңалуусун 5В чейин түшүрүү үчүн жөндөгүч. Мен DC-DC Бак Converter Step Down модулун колдонуп жатам. eBootтун MP1584EN версиясы Amazonдон.
- IMPs чыгаруу менен иштей турган кош (же андан көп) реле модулу же окшош коммутациялык түзмөк. Мен Amazon'дон JBtek 4 Channel DC 5V Relay Module колдонуп жатам.
- 4 зымдуу терминал. Мен муну колдонуп жатам 5Pcs 2 Rows 12P Wire Connector Screw Terminal Barrier Block 300V 20A Amazon.
2 -кадам: Берилиштер
![Жабдуулар Жабдуулар](https://i.howwhatproduce.com/images/001/image-462-85-j.webp)
Ошондой эле сизге керек болот:
- 3D принтерге же кичинекей долбоор кутусуна кирүү
- Капкактын капкагы үчүн 4мм х 6мм жөнүндө 4 кичине бурамалар
- Кошуу зымы
- Сым кескичтер
- Сым тазалагычтар
- Кичинекей отверткалар
- Кандооч
- Ысык желим же силикон
- Zip галстуктары
3 -кадам: Корпусту чоңойт
![Корпусту чоңойтуу Корпусту чоңойтуу](https://i.howwhatproduce.com/images/001/image-462-86-j.webp)
Кандай өлчөмдөгү корпус керектигин аныктоо үчүн бөлүктөрүңүздү жайгаштырыңыз. Сүрөттөгү макет менен мага туурасы 140 мм, тереңдиги 70 мм жана бийиктиги 30 мм болгон корпус керек.
4-кадам: Wire DC-DC Converter
![Wire DC-DC Converter Wire DC-DC Converter](https://i.howwhatproduce.com/images/001/image-462-87-j.webp)
DC-DC конвертер коллегиясынын ичине жана сыртына электр туташуусу үчүн 3 жуп кызыл жана кара кошуу зымын кескиле.
- Киргизүү: 100мм
- IMPге чыгуу: 90мм
- Реле модулуна чыгаруу: 130мм
Көрсөтүлгөндөй аларды тактаңызга кошуп коюңуз.
5 -кадам: Түзмөктөргө электр зымдары
![Түзмөктөргө электр зымдары Түзмөктөргө электр зымдары](https://i.howwhatproduce.com/images/001/image-462-88-j.webp)
- DC-DC конвертеринин киришин бурамалуу терминалдык блоктогу эки чекитке туташтырыңыз.
- Кыска 5В чыгуу зымдарын IMPге туташтырыңыз.
- Узунураак 5В чыгуучу зымдарды реле модулуна кошуңуз.
6 -кадам: Зым реле модулунун кириштери
![Зым реле модулунун кириштери Зым реле модулунун кириштери](https://i.howwhatproduce.com/images/001/image-462-89-j.webp)
- Реле модулунун кирүү туташуулары үчүн 4 х 90мм зымдарды кесип. Мен коддоодо кийинчерээк оңой маалымдоо үчүн 4 башка түстү колдондум.
- Зымдарды реле модулуна 1-4, андан кийин биринчи 4 IMP GPIO тактарына (Pin1, 2, 5, & 7) киргизиңиз.
7 -кадам: IMP Power Jumper
![IMP Power Jumper IMP Power Jumper](https://i.howwhatproduce.com/images/001/image-462-90-j.webp)
Сиз IMPти программалоодо жана сынап жатканда USB кубатын колдонушуңуз керек болот. Бүткөндөн кийин, кубат секиргичин BAT тарапка жылдырууну унутпаңыз.
8 -кадам: Зым дарбазасынын статусун киргизүү
![Зым дарбазасынын статусун киргизүү Зым дарбазасынын статусун киргизүү](https://i.howwhatproduce.com/images/001/image-462-91-j.webp)
- Каныккан абал үчүн 2 х 80 мм зымдарды кесиңиз.
- Калган 2 бурамалуу терминалга зымдарды туташтырыңыз.
- Тиешелүү түрдө IMP GPIO тактарынын (Pin8 & 9) кийинки зымдары.
9 -кадам: Чапты басып чыгаруу же сатып алуу
![Капты басып чыгаруу же сатып алуу Капты басып чыгаруу же сатып алуу](https://i.howwhatproduce.com/images/001/image-462-92-j.webp)
Бул үчүн менин. STL же. F3D файлымды GitHub же Thingiverse жүктөп алсаңыз болот
Эгерде сизде 3D принтерге кирүү мүмкүнчүлүгү жок болсо, анда чакан генералдык проект иштейт.
10 -кадам: Делеңизди кооздоңуз
![Сиздин ишиңизди кооздоңуз Сиздин ишиңизди кооздоңуз](https://i.howwhatproduce.com/images/001/image-462-93-j.webp)
Анткени!
Мен тексттин үстүнө чөгүп кеткен текстти коюп, аны кара курч менен боёгом. Эгерде сиз өзүңүздү укмуштуудай сезсеңиз, аны жылмакай кылуу үчүн акрил боёгу, тырмак лак же башка нерсени колдонсоңуз болот.
11 -кадам: Сымдарды тешүү
![Сым үчүн бургулоо тешиги Сым үчүн бургулоо тешиги](https://i.howwhatproduce.com/images/001/image-462-94-j.webp)
Бардык зымдар чогула турган ортосуна жакын жерде 10-15 мм кичинекей тешик бургула.
Мен Unibitти пластмассадан таза, жылмакай тешик үчүн колдондум.
12 -кадам: Hookup зымдарын даярдоо жана орнотуу
![Hookup зымдарын даярдоо жана орнотуу Hookup зымдарын даярдоо жана орнотуу](https://i.howwhatproduce.com/images/001/image-462-95-j.webp)
![Hookup зымдарын даярдоо жана орнотуу Hookup зымдарын даярдоо жана орнотуу](https://i.howwhatproduce.com/images/001/image-462-96-j.webp)
Биздин аппаратты дарбазанын операторлор тактасына илип коюу үчүн 9 x 5-600мм зымдарды кескиле.
- 24V кубаттуулугу үчүн 2
- 3 дарбаза статусу үчүн (2 киргизүү жана жалпы жер)
- 2 ачык дарбаза сигналы үчүн
- 2 дарбазанын жабылышы үчүн
Жогоруда саналган топтордун ар бирин бургулап колдонуңуз. Бул бардык нерсени жеңилдетет жана жакшыраак көрүнөт.
Зымдардын ар бирин көрсөтүлгөн терминалдарга туташтырып, туташтырыңыз.
13 -кадам: Маршрут Hookup Wires
![Маршрут туташуу зымдары Маршрут туташуу зымдары](https://i.howwhatproduce.com/images/001/image-462-97-j.webp)
Кошулган зымдарды тешиктен көрсөтүлгөндөй өткөрүңүз.
14 -кадам: компоненттерди орнотуу
![Тоо компоненттери Тоо компоненттери](https://i.howwhatproduce.com/images/001/image-462-98-j.webp)
Компоненттерди кичинекей мончок ысык желим же силикон менен жайгаштырыңыз жана орнотуңуз. Бир бөлүгүн алып салуу керек болсо, өтө көп колдонбоңуз, аларды коргоо үчүн жетиштүү өлчөмдө колдонуңуз.
Мен башында ишти такталарды кармоо үчүн клиптер/өтмөктөр менен басып чыгаргым келген, бирок мен муну орнотушум керек болчу жана убактым жок болчу. Делеге клиптерди кошуу жагымдуу болмок.
15 -кадам: Hookup Wires мөөрүн жабыңыз
![Seal Hookup Wires Seal Hookup Wires](https://i.howwhatproduce.com/images/001/image-462-99-j.webp)
Байланыш зымдарын ысык желим же силикон менен жабыңыз.
16 -кадам: Ишти жабыңыз
![Ишти жабуу Ишти жабуу](https://i.howwhatproduce.com/images/001/image-462-100-j.webp)
Мен бул 3D басылган иштин тизмесинде кичинекей ~ 4мм бурамаларды колдондум. Эгерде сиз кир же ным жөнүндө тынчсызданып жатсаңыз, жабуунун алдында кремнийдин тегерегине силикон же ысык клей салыңыз.
17 -кадам: Дарбаза операторуна орнотуңуз
![Gate операторуна орнотуу Gate операторуна орнотуу](https://i.howwhatproduce.com/images/001/image-462-101-j.webp)
![Gate операторуна орнотуу Gate операторуна орнотуу](https://i.howwhatproduce.com/images/001/image-462-102-j.webp)
Негизги тактада:
- Ачык дарбаза терминалына 1 релелик чыгууга туташкан эки зымды илиниз. (сүрөттөрдө кызыл/күрөң)
- 2 релелик чыгууга туташкан эки зымды Жабуу дарбазасына туташтырыңыз. (сүрөттөрдө сары/көк)
- DC-DC конвертеринин киришине туташтырылган эки зымды 24V аксессуардык электр винт терминалдарына илип коюңуз (сүрөттөрдө кызыл/кара)
Кеңейтүү тактасында
- Релектин жалпы бурама терминалдарын кичинекей зым менен бирге секирип коюңуз
- Жалпы жерди релелик жалпы бурамалуу терминалдардын бирине туташтырыңыз (сүрөттөрдө жашыл)
- 2 дарбазанын статусун киргизүүнү (IMP Pin8 & 9) релелик кадимки ачык (NO) бурамалуу терминалдарга туташтырыңыз (сүрөттөрдө боз/сары)
Зымдарды маршруттаңыз, тыкан көрүнүшү үчүн аларды байлап коюңуз жана ишиңизди орнотууга же коюуга жер табыңыз.
GitHub репозиторийинде жайгаштырылган кошумча, толук чечим сүрөттөр бар.
18 -кадам: Aux Relay режимин коюңуз
![Aux Relay режимин коюу Aux Relay режимин коюу](https://i.howwhatproduce.com/images/001/image-462-103-j.webp)
Көмөкчү релелик өчүргүчтөрдү сүрөттө көрсөтүлгөндөй орнотуңуз.
Бул IMPге дарбазанын жабылганын, ачылышын, ачылышын же жабылышын аныктоо үчүн керектүү сигналдарды берет.
19 -кадам: IMP агенти жана түзмөк коду
![IMP агент жана түзмөк коду IMP агент жана түзмөк коду](https://i.howwhatproduce.com/images/001/image-462-104-j.webp)
Electric Imp Agent коду:
- Electric Imp IDEде жаңы модель түзүү:
- Сервериңизди көрсөтүү үчүн URL дарегин алмаштырыңыз
// HTTP иштетүү функциясы
httpHandler функциясы (req, resp) {аракет кылыңыз {local d = http.jsondecode (req.body); //server.log(d.c); if (dc == "btn") {//server.log(d.val); device.send ("btn", d.val); resp.send (200, "Макул"); }} catch (ex) {// Эгерде ката болсо, аны кайра server.log ("ката:" + ex) жөнөтүңүз; resp.send (500, "Ички Server Error:" + ex); }} // HTTP иштетүүчүсүн каттаңыз http.onrequest (httpHandler); // GateStateChange иштетүүчү функциясынын функциясы gateStateChangeHandler (маалыматтар) {// веб -сервиске URL url = "https://projects.ajillion.com/save_gate_state"; // Content-Type аталышын json local headers = {"Content-Type": "application/json"} коюңуз; // Алынган маалыматтарды коддоо жана жергиликтүү органды жазуу = http.jsonencode (маалыматтар); server.log (body); // http:post (url, headers, body).sendsync () веб сервисине маалыматтарды жөнөтүү; } // gateStateChange иштетүүчү device.on ("gateStateChange", gateStateChangeHandler) каттоо;
Electric Imp Agent коду:
- Моделиңизге Imp түзмөгүн дайындаңыз
- Аппараттык төөнөгүчтөр жалганганын текшериңиз
// Debouce китепканасы
#require "Button.class.nut: 1.2.0" // gateOpen GPIO pin (активдүү төмөн) gateOpen <- hardware.pin2; // Али дарбазасыClose control GPIO pin (активдүү төмөн) gateClose <- hardware.pin7; // 'gateOpen'ди санариптик 1 (жогорку) gateOpen.configure (DIGITAL_OUT, 1) баштапкы мааниси бар санарип чыгаруу деп конфигурациялаңыз; // 'gateClose' ди санариптик 1 (жогорку) gateClose.configure баштапкы мааниси бар санариптик чыгууга конфигурациялоо (DIGITAL_OUT, 1); // GPIO пин үчүн лакап ат, дарбазанын жылып баратканын көрсөтөт (N. O.) gateMovingState <- Button (hardware.pin8, DIGITAL_IN_PULLUP); // GPIO пин үчүн лакап ат, дарбаза толугу менен ачык экенин көрсөтөт (N. O.) gateOpenState <- Button (hardware.pin9, DIGITAL_IN_PULLUP); // Глобалдык өзгөрмө дарбазанын абалын кармоо үчүн (Open = 1 / Closed = 0) local lastGateOpenState = 0; // Latch Timer объектиси жергиликтүү latchTimer = null agent.on ("btn", функция (берилиштер) {switch (data.cmd) {case "open": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer)); latchTimer = imp.wakeup (1, releaseOpen); server.log ("Open command алынды"); break case "latch30m": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (1800, releaseOpen); server.log ("Latch30m командасы алынды"); break case "latch8h": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (28800, releaseOpen); server.log ("Latch8h командасы алынды"); бузуу иши "жабуу": эгерде (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); gateClose.write (0); latchTimer = imp.wakeup (1, releaseClose); server.log ("Азыр жабуу командасы алынды"); демейки бузуу: server.log ("Түймө командасы таанылган жок");}}); function releaseOpen () {if (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); //server.log("Timeer release gateOpen switch contact "); } function releaseClose () {if (latchTimer) imp.cancelwakeup (latchTimer); gateClose.write (1); //server.log("Timeer release gateClose switch contact "); } gateMovingState.onPress (function () {// Реле иштетилди, дарбаза жылууда //server.log("Gate ачылууда "); жергиликтүү маалыматтар = {" gatestate ": 1," timer ": hardware.millis ()}; agent.send ("gateStateChange", маалыматтар);}). onRelease (function () {// Реле бошотулду, дарбаза эс алууда //server.log("Gate жабык "); жергиликтүү маалыматтар = {"gatestate": 0, "timer": hardware.millis ()}; agent.send ("gateStateChange", маалыматтар);}); gateOpenState.onPress (function () {// Реле иштетилди, дарбаза толугу менен ачылды //server.log("Gate is open "); локалдык маалыматтар = {" gatestate ": 2," timer ": hardware.millis ()}; agent.send ("gateStateChange", маалыматтар);}). onRelease (function () {// Реле бошотулду, дарбаза толук ачылган жок //server.log("Gate жабылып жатат "); жергиликтүү маалыматтар = {"gatestate": 3, "timer": hardware.millis ()}; agent.send ("gateStateChange", маалыматтар);});
20 -кадам: Web кызматы PHP коду
![PHP кодунун веб кызматы PHP кодунун веб кызматы](https://i.howwhatproduce.com/images/001/image-462-105-j.webp)
Мен бул кодду CodeIgniter алкагы үчүн жаздым, анткени мен аны эски долбоорго коштум. Контроллер жана көрүү коду сиз тандаган алкакка оңой ыңгайлаштырылышы мүмкүн.
Жөнөкөй нерселерди сактоо үчүн мен JSON маалыматтарын маалыматтарды сактоо үчүн жалпак файлга сактап койдум. Эгерде сизге журнал керек болсо же ага байланыштуу татаалыраак функциялар болсо, маалымат базасын колдонуңуз.
Мен жазган жана бул долбоордо колдонгон ajax китепканасы GitHub репозиторийинен жүктөп алса болот: ThingEngineer/Codeigniter-jQuery-Ajax
PHP Controller коду:
- app/controllers/projects.php
- Маалымат жолуна PHP скриптиңиз жеткиликтүү болушун камсыздаңыз, жайгашкан жери жана окуу/жазуу артыкчылыктары.
load-> helper (array ('file', 'date'));
$ data = json_decode (read_file ('../ app/logs/gatestate.data'), TRUE); switch ($ data ['gatestate']) {case 0: $ view_data ['gatestate'] = 'Жабык'; тыныгуу; 1 -жагдай: $ view_data ['gatestate'] = 'Ачылууда…'; тыныгуу; 2 -жагдай: $ view_data ['gatestate'] = 'Ачык'; тыныгуу; 3 -жагдай: $ view_data ['gatestate'] = 'Жабуу…'; тыныгуу; } $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ view_data ['last_opened'] = убакыт аралыгы ($ last_opened ['last_opened'], time ()). 'мурун'; // Load View $ t ['data'] = $ view_data; $ this-> load-> view ('gate_view', $ t); } function save_gate_state () {$ this-> load-> helper ('file'); $ data = file_get_contents ('php: // input'); write_file ('../ app/logs/projects/gatestate.data', $ data); $ data = json_decode ($ data, TRUE); if ($ data ['gatestate'] == 1) {$ last_opened = array ('last_opened' => time ()); write_file ('../ app/logs/projects/gateopened.data', json_encode ($ last_opened)); }} function get_gate_state () {$ this-> load-> helper (array ('file', 'date')); $ this-> load-> library ('ajax'); $ data = json_decode (read_file ('../ app/logs/projects/gatestate.data'), TRUE); $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ data ['last_opened'] = убакыт аралыгы ($ last_opened ['last_opened'], убакыт ()). 'мурун'; $ this-> ajax-> output_ajax ($ data, 'json', FALSE); // json маалыматтарын жөнөтүү, ajax өтүнүчүн аткарбоо}}/ * Файл долбоорлорунун аягы.php *// * Жайгашкан жери:./application/controllers/projects.php */
PHP көрүү коду:
Мен Bootstrapти алдыңкы учу үчүн колдондум, анткени ал тез, оңой жана жооп берет. Аны бул жерден жүктөп алсаңыз болот: https://getbootstrap.com (jQuery камтылган)
- app/controllers/gate_view.php
- АГЕНТ-КОДуңузду Electric Imp агентиңиздин коду менен алмаштырыңыз
IoT Gate Opperator Addon IoT Gate Opperator Addon
- Үй
- Admin
Ачуу дарбазасынын ачкычы 30 мүнөткө ачылат 8 саатка ачылат Азыр жабуу Дарбазанын абалы: Акыркы жолу $ (документ).ready (function () {resetStatus ();}) функциясы sendJSON (JSONout) {var url = 'https:// agent.electricimp.com/YOUR-AGENT-CODE '; $.post (url, JSONout); } $ ("#open_gate"). чыкылдатыңыз (function () {var JSONout = '{"c": "btn", "val": {"cmd": "open"}}'; sendJSON (JSONout); $ ("#статус"). текст ("Ачылууда…");}); $ ("#latch30m_gate"). чыкылдатыңыз (function () {var JSONout = '{"c": "btn", "val": {"cmd": "latch30m"}}}; sendJSON (JSONout); $ ("#статус"). текст ("Ачылууда…");}); $ ("#latch8h_gate"). чыкылдатыңыз (function () {var JSONout = '{"c": "btn", "val": {"cmd": "latch8h"}}}; sendJSON (JSONout); $ ("#статус"). текст ("Ачылууда…");}); $ ("#close_gate"). чыкылдатыңыз (function () {var JSONout = '{"c": "btn", "val": {"cmd": "close"}}}; sendJSON (JSONout); $ ("#статус"). текст ("Жабуу…");}); function resetStatus () {// Target url var target = 'https://projects.ajillion.com/get_gate_state'; // Var data = {agent: 'app'} суроо; // Ajax посттун сурамын жөнөтүү $.ajax ({url: target, dataType: 'json', type: 'POST', data: data, success: function (data, textStatus, XMLHttpRequest) {switch (data.gatestate) {case 0: $ ("#статус"). Текст ('Жабык'); тыныгуу; 1 -абал: $ ("#абал"). Текст ('Ачылууда…'); тыныгуу; 2 -абал: $ ("#статус").text ('Ачык'); тыныгуу; 3 -абал: $ ("#абал"). текст ('Жабуу…'); тыныгуу; демейки: $ ("#абал"). текст ('Ката');} $ ("#last_opened"). текст (data.last_opened);}, ката: функция (XMLHttpRequest, textStatus, errorThrown) {// Error message $ ("#status"). text ('Server Error');}}); setTimeout (resetStatus, 3000); }
Сунушталууда:
WebApp Puzzle LED чырагы ESP32 менен: 5 кадам (сүрөттөр менен)
![WebApp Puzzle LED чырагы ESP32 менен: 5 кадам (сүрөттөр менен) WebApp Puzzle LED чырагы ESP32 менен: 5 кадам (сүрөттөр менен)](https://i.howwhatproduce.com/images/001/image-2451-24-j.webp)
ESP32 менен WebApp Puzzle LED лампасы: Мен көп жылдар бою LED тилкелери менен ойноп жүрдүм, жана жакында эле досумдун жерине көчүп кеттим, ал жерде дубалды тилкеге орнотуу сыяктуу чоң өзгөрүүлөрдү жасай албадым, ошондуктан мен бул лампаны чогулттум. бир зым электр үчүн чыгат жана орнотулушу мүмкүн
Smokin ' - Remote Controlled Smoke Machine on Cheap: 5 Steps (Сүрөттөр менен)
![Smokin ' - Remote Controlled Smoke Machine on Cheap: 5 Steps (Сүрөттөр менен) Smokin ' - Remote Controlled Smoke Machine on Cheap: 5 Steps (Сүрөттөр менен)](https://i.howwhatproduce.com/images/001/image-2611-18-j.webp)
Smokin ' - Remote Controlled Smoke Machine on Cheap Сиздин жүрөгүңүз каалайт
Alexa Controlled Dog Feeder: 6 Steps (Сүрөттөр менен)
![Alexa Controlled Dog Feeder: 6 Steps (Сүрөттөр менен) Alexa Controlled Dog Feeder: 6 Steps (Сүрөттөр менен)](https://i.howwhatproduce.com/images/003/image-7313-j.webp)
Alexa Controlled Dog Feeder: Бул биздин ит Бэйли. Ал чек ара Колли менен австралиялык уй итинин бир бөлүгү, ошондуктан кээде ал өзүнүн пайдасынан акылдуураак, айрыкча убакытты айтуу жана кечки тамакты качан жеш керек экенин билүү. Адатта, биз аны саат 18:00 чамасында тамактандырууга аракет кылабыз
Play Station Remote Controlled Wireless 3D Printed Car: 7 Steps (Сүрөттөр менен)
![Play Station Remote Controlled Wireless 3D Printed Car: 7 Steps (Сүрөттөр менен) Play Station Remote Controlled Wireless 3D Printed Car: 7 Steps (Сүрөттөр менен)](https://i.howwhatproduce.com/images/004/image-11134-4-j.webp)
Play Station Алыстан башкарылуучу Зымсыз 3D Басылган Унаасы: Ким оюндарды жакшы көрбөйт? Play Station жана Xbox виртуалдык дүйнөсүндө жарышуу жана мушташуу !! Ошентип, бул жашоону чыныгы жашоого алып келүү үчүн, мен бул Нускамалыкты түздүм, анда мен сизге каалаган Play Station Алыстан башкаруу пультун кантип колдонсо болорун көрсөтөм
Gate Mate: 10 кадам (Сүрөттөр менен)
![Gate Mate: 10 кадам (Сүрөттөр менен) Gate Mate: 10 кадам (Сүрөттөр менен)](https://i.howwhatproduce.com/images/001/image-749-90-j.webp)
Gate Mate: Gate Mate сиздин дарбазаңызды же гаражыңызды үн буйруктарын колдонуп же автоматтык түрдө геофенциялоо менен же бир баскычты басуу менен иштете алат. Gate Mate эки негизги компоненттен турат, Колдонмо жана аппараттык. Аппаратура эки ESP8266 микро контроллери жана