Raspberry Pi 3 Garage Door Opener: 15 Hakbang (na may Mga Larawan)
Raspberry Pi 3 Garage Door Opener: 15 Hakbang (na may Mga Larawan)
Anonim
Raspberry Pi 3 Garage Door Opener
Raspberry Pi 3 Garage Door Opener

Nilikha ko ito ng itinuturo noong 2014. Maraming nagbago mula noon. Noong 2021, na-update ko ang Smart Garage Door Opener dito.

Gumamit ng isang Raspberry Pi at isang smartphone upang buksan, isara at subaybayan ang isang pintuan ng garahe. Ang pagbubukas at pagsasara ng pinto ay nasiguro sa pamamagitan ng paggamit ng mga sertipiko na naka-sign ng sarili na naka-install sa mga mobile phone ng pamilya. Kung ang pintuan ng garahe ay bukas kung hindi ito dapat, pagkatapos ay magpadala ng isang text message (SMS) sa isang cell phone.

Ang pintuan ng garahe ay patuloy na ginagamit mula noong huling bahagi ng 2014. Sa paglipas ng mga taon, sinubukan kong panatilihing na-update ang mga pagbabago. Mayroong isang apendiks na naglalarawan sa mga pagbabago sa itinuro.

Ang mga layunin ng proyektong ito ay upang:

  • Gawin ang aking unang itinuturo - Hindi ko plano na i-post ito, ngunit nakatanggap ako ng maraming mga kahilingan
  • Magbukas ng isang pintuan ng garahe na may isang karaniwang remote
  • Magbukas ng isang pintuan ng garahe na may nakabukas na dingding na nagbukas ng doorbell
  • Magbukas ng pintuan ng garahe gamit ang isang SmartPhone
  • Subaybayan ang katayuan ng pintuan ng garahe nang malayuan sa pamamagitan ng isang cell phone o laptop (bukas ba ito o sarado?)
  • Magpadala ng isang text message sa aking cell phone kung bukas ang pinto kung kailan dapat itong sarado
  • Panatilihing ligtas ang pintuan ng garahe (hal., Sa pagkawala ng kuryente, hindi dapat buksan ang pinto)
  • Huwag payagan ang sinumang iba pa sa net na buksan ang pinto (dalawang daan na naka-sign na SSL certificate)
  • Gumamit ng WiFi sa halip na isang wired na koneksyon
  • Gumamit ng isang Raspberry Pi 3

Ang batayan para sa pagpapatupad ng Garage Door Opener na ito ay nagmula sa Instructable: Raspberry Pi Garage Door Opener ng quartarian. Orihinal, gumamit ako ng isang modelo ng B + Raspberry Pi, pagkatapos ay lumipat sa isang modelo ng Raspberry Pi 2 na B, at ngayon ay gumagamit na ito ng isang Raspberry Pi 3.

Gumamit ako ng isang MacBook upang makipag-usap sa Raspberry Pi, ngunit ang anumang computer ay maaaring magamit.

Walang nakakahimok na dahilan upang maitayo ang aparatong ito, ngunit masaya ito. Mas epektibo ang pagbili ng isa. Ang isang katulad na aparato ay maaaring mabili ng halos $ 130 USD.

  • Angat ng master 828LM
  • Chamberlain MyQ $ 129
  • GoGo Gate $ 179
  • Craftman $ 100

Mga Tala:

  • Ang teksto na nakapaloob sa mga spades, tulad nito ♣ palitan-ito ♣ ay dapat mapalitan ng isang aktwal na halaga
  • Ang Arduino na may salungguhit na asul na teksto ay isang link. Sa kasong ito, ito ay isang link sa isang bersyon ng arduino ng isang nagbukas ng pintuan ng garahe.
  • Sinubukan kong kredito ang bawat ginamit na mapagkukunan. Humihingi ako ng paumanhin para sa anumang mga pagkukulang. Karamihan sa dokumentong ito ay batay sa gawain ng ibang tao.
  • Ipinapahiwatig ng $ isang utos na naisakatuparan sa isang window ng terminal sa MacBook at kadalasang isinasagawa sa Raspberry Pi

Hakbang 1: Ipunin ang Mga Bahagi

Bumili o magtipon ng mga bahagi at tool (presyo sa USD).

  • Raspberry Pi 3 Model B Newark Element14 $ 35
  • 5.2V 2.5A USB Power Adapter mula sa Amazon $ 9.99
  • Micro USB sa USB cable 6ft mula sa Amazon na $ 7.99
  • Kaso mula sa Amazon na $ 6.99
  • SanDisk Ultra 16 GB microSDHC Class 10 na may Adapter (SDSQUAN-016G-G4A) mula sa Amazon $ 8.99
  • SunFounder 2 Channel 5V Relay Shield Module para sa Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6.79
  • 3x Mga Wire ng Jumper ng Babae-Babae. Bumili sa Fry ng $ 4.95.
  • Dynamic na DNS $ 40 bawat taon para sa 30 mga pangalan (dyn.com)
  • 1-Gang 18 cu. sa. Old Work Heavy Wall Switch at Outlet Box, $ 3.12
  • Ultra Pro Single Brush White Wall Plate, $ 7.88
  • SECO-LARM SM 226L, Garage Door Sensor, malawak na nag-iiba ang presyo, $ 9.99 sa Amazon na may libreng pagpapadala
  • 50ft ng Solid thermostat wire, Home Depot o Lowe's, ~ $ 20

Ang Aking Kabuuan: ~ $ 172.00

Mayroon akong mga sumusunod na bahagi, tool at serbisyo:

  • CAT5 Ethernet cable
  • Maliit na gauge wire, 6 ft ang haba
  • Phillips head screwdriver
  • Mga karayom sa ilong
  • Mga pamutol ng kahon
  • Jewelers flathead screw driver, kinakailangan upang paluwagin ang mga turnilyo sa relay
  • MacBook (maaaring magamit ang isang PC)
  • AT&T GigaPower (maaaring magamit ang anumang tagapagbigay ng serbisyo sa internet)

Hakbang 2: I-setup ang Raspberry Pi Nang Walang Monitor o Keyboard

I-setup ang Raspberry Pi Nang Walang Monitor o Keyboard
I-setup ang Raspberry Pi Nang Walang Monitor o Keyboard

Ang lahat ng mga proyekto ng Raspberry Pi ay nangangailangan ng ilang uri ng pag-setup. Gusto kong gumamit ng parehong hanay ng mga tagubilin at, kung kinakailangan, magkaroon ng isang lugar upang mai-update ang mga tagubiling iyon.

I-setup ang Raspberry Pi gamit ang sumusunod na maituturo:

I-setup ang Raspberry Pi nang walang Monitor o Keyboard

Ang itinuturo sa itaas ay may kasamang mga opsyonal na hakbang sa apendiks. Siguraduhing gawin ang hakbang:

Magdagdag ng mga client-side certs sa mga web server

Patayin ang Raspberry Pi

$ sudo shutdown -h 0

Kapag na-shutdown, alisin

  • ethernet cable
  • Serial serial USB

Hindi na ito kakailanganin. Gumamit ng wifi, ssh at isang window ng terminal sa Mac Book upang magpatakbo ng mga utos sa Raspberry Pi.

I-unplug muli ang lakas at i-plug ang lakas, at dapat i-reboot ang raspberry pi.

Hakbang 3: I-install ang Mga Kable Pi, Apache at PHP

I-install ang Mga Kable Pi

Magbukas ng isang window ng terminal sa Mac Book. Mag-login sa Raspberry Pi, pagkatapos ay mag-download, mag-compile, at mag-install ng Wiring Pi. Pinapayagan ng software na ito ang kontrol ng mga GPIO pin. Narito ang isang sunud-sunod na gabay:

wiringpi.com/download-and-install/

Narito ang isang condensadong bersyon ng mga tagubilin:

$ ssh pi @ ♣ raspberry-pi-ip ♣

password: ♣ password ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./ build

Patakbuhin ang utos ng gpio upang suriin ang pag-install:

$ gpio -v

bersyon ng gpio: 2.29 Copyright (c) 2012-2015 Gordon Henderson Ito ay libreng software na Ganap na WARRANTY. Para sa mga detalye ng uri: gpio -warranty Mga Detalye ng Raspberry Pi: Uri: Model 2, Pagbabago: 1.1, Memory: 1024MB, Maker: Sony [OV] Pinapagana ang puno ng aparato. Sinusuportahan ng Raspberry Pi na ito ang pag-access sa antas ng gumagamit ng GPIO. -> Tingnan ang pahina ng tao para sa karagdagang detalye $ gpio readall + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + ------ + --------- + ----- + ----- + | BCM | wPi | Pangalan | Mode | V | Pisikal | V | Mode | Pangalan | wPi | BCM | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | SA | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | SA | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | OUT | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | SA | 0 | 11 || 12 | 0 | SA | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | SA | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | SA | 0 | 15 || 16 | 1 | SA | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | SA | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | SA | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | SA | 0 | 21 || 22 | 0 | SA | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | SA | 0 | 23 || 24 | 1 | SA | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | SA | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | SA | 1 | 27 || 28 | 1 | SA | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | SA | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | SA | 1 | 31 || 32 | 0 | SA | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | SA | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | SA | 0 | 35 || 36 | 0 | SA | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | SA | 0 | 37 || 38 | 0 | SA | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | SA | GPIO.29 | 29 | 21 | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | BCM | wPi | Pangalan | Mode | V | Pisikal | V | Mode | Pangalan | wPi | BCM | + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + --- --- + --------- + ----- + ----- +

Ang mga utos sa itaas ay dapat magbigay sa iyo ng ilang kumpiyansa na ang wiringPi ay gumagana OK.

I-install ang Apache at PHP

Patakbuhin ang mga sumusunod na utos:

$ cd..

$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5

Upang ma-verify na gumagana ang web server, buksan ang isang browser, at sa kahon ng URL ipasok ang:

♣ raspberry-pi-ip ♣

Ang default na website ng Apache ay tumutugon sa "Gumagana ito!"

Hakbang 4: Website

Magbukas ng isang window ng terminal sa Mac Book. Mag-login sa Raspberry Pi, pagkatapos alisin ang default index.html file, baguhin ang mga pahintulot sa direktoryo ng website, at i-edit ang isang file na tinatawag na index.php.

$ ssh pi @ ♣ raspberry-pi-ip ♣

password: ♣ password ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root / var / www $ sudo nano /var/www/index.php

At ipasok ang sumusunod na code:

Tagabukas ng garahe

Pag-aautomat sa Bahay

<? php if ($ switch == 1) {echo"

";} iba pa {echo"

"; } ?>

Tagabukas ng Pinto ng garahe Manwal ng Magbukas ng Pinto ng garahe sarado 1 buksan ang 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} iba pa {echo"

var13 ->

CTRL-o at ENTER upang isulat ang file, at CTRL-x upang lumabas sa editor.

Baguhin ang mga pahintulot sa file

$ sudo chmod 664 /var/www/index.php

Hakbang 5: Imahe sa Website

Imahe sa Website
Imahe sa Website
Imahe sa Website
Imahe sa Website

Kunin ang isang mataas na resolusyon ng pintuan ng remote na garahe mula sa web. Baguhin ang imahe ayon sa nais mong paggamit ng Mac paintbrush. Sa imahe sa itaas, ginamit ang isang mataas na resolusyon ng Genie Garage Opener, idinagdag ang isang logo ng raspberry pi at tinanggal ang led.

Ang isang imahe ay ang background (remote-background.jpg), at ang isa pa ay ang aktibong imahe (remote-press.jpg).

Ang plano ay ang sa pindot ng itulak, sa halip na kumurap ng humantong, ang raspberry ay kumurap. Pinasimple ko ang website.

Kopyahin ang mga imahe sa raspberry pi:

$ scp *-j.webp

password: ♣ password ♣

Ang web site ay may isang solong pindutan ng push. Upang ma-verify, buksan ang isang browser at ipasok ang ♣ raspberry-pi-ip ♣. Sa halip na default na website ng Apache, na nagsasabing "Gumagana ito!", Dapat lumitaw ang pindutan. Pindutin ito.

Hakbang 6: Malayuan Kontrolin ang Webserver

Upang gawing madali ang pag-access sa Garage Door Opener mula sa isang malayuang lokasyon, gumagamit ako ng isang dynamic na DNS name. Dahil ayoko ng naaalala ang mga IP address.

Sa tampok na ito, inilalagay ko ang ♣ Dynamic-hostname ♣.getmyip.com sa patlang ng URL ng isang browser. Tandaan: Ang IP sa mga router ng bahay ay maaaring magbago nang walang abiso, ngunit bihirang mangyari ito. Pinili kong gamitin ang DynDNS. Kakailanganin mong malaman ang pampublikong IP address ng iyong router.

U-Verse Router IP: ♣ uverse-public-ip ♣

Maaari mong tingnan ang mga detalye ng iyong hostname at DynDNS Pro account. Narito ang ilang mga tip upang makapagsimula:

  • Lumikha ng iyong Dynamic na DNS hostname (1 ng 30):

    • ♣ Dynamic-hostname ♣
    • Updater Key: ♣ dynamic-ip-updater-key ♣
  • Mag-install ng isang update client upang matiyak na ang iyong hostname ay laging nakaturo sa tamang IP address.

    • Mag-download at mag-install sa MacBook
    • Ang mga AT&T na U-talata na mga IP ay bihirang magbago, kaya't ang taga-update sa itaas ay maaaring patakbuhin tuwing magbabago ito
    • Sundin ang mga direksyon:

      • Magdagdag ng account
      • Ipasok ang username at password: ♣ Dynamic-ip-username ♣ ♣ Dynamic-ip-password ♣
      • Piliin ang hostname
      • I-click ang I-configure ang Mga Napiling Host
      • Dapat maging aktibo ang host
    • I-configure ang iyong network upang payagan ang pag-access sa iyong aparato mula sa Internet. Maaari mong gamitin ang aming Dyn Wizard para sa ilang mga pangkalahatang tagubilin sa kung paano ito gawin, gumamit ng mga mapagkukunan tulad ng PortForward.com, o makipag-ugnay sa tagagawa ng aparato para sa tulong.

      • AT&T U-talata
      • Pagpasa ng Port para sa 2-Wire 3801HGV - ito ang AT&T U-Verse router na mayroon ako. Tingnan ang Mga Update sa isang Appendix para sa kung paano magpatuloy sa AT&T U-talata 5268ac router.
      • Buksan ang browser at pumunta sa ♣ raspberry-pi-ip ♣
      • Password: ♣ password ♣
      • Mga setting
      • Firewall

        • Piliin ang ♣ raspberry-pi-hostname ♣
        • Mga server

          • Port ng Web Server 80
          • HTTPS Server - port 443
        • Idagdag pa
      • Magtipid

Kapag tapos na ito, gagana ang webserver mula sa internet. Upang ma-verify, ipasok ang ♣ Dynamic-hostname ♣ at dapat mong makita ang pindutan ng nagbukas ng pinto ng garahe.

Hakbang 7: I-wire ang Circuit sa Raspberry Pi

Wire ang Circuit sa Raspberry Pi
Wire ang Circuit sa Raspberry Pi

Para sa ibinigay na code (hakbang 4 at 6), ginamit ko ang GPIO pin 7. Nagkataon na ang GPIO 7 ay kapareho ng mga wiringPi pin 7. Sa PHP code, ang mga numero ng mga kable na Pi pin ay ginagamit at HINDI mga numero ng GPIO pin. Maaari mong gamitin ang alinman sa gusto mo, ngunit tiyaking baguhin ang code.

Sinubukan kong gumamit ng baluktot na kawad, ngunit ang relay ay hindi nakahawak nang mabuti sa baluktot na kawad. Mas mahusay ang solid wire.

Sa aking unang pagtatangka, gumawa ako ng tatlong magkakaugnay na mga kable (babae-sa-lalaki).

  • Gumamit ng tatlong babae hanggang babae na jumper cables
  • Gupitin ang tatlong piraso ng solidong kawad sa halos 1in.

    Guhitin ang 1 / 4in sa magkabilang dulo ng solidong kawad

  • Ipasok ang isang solidong kawad sa isang babaeng jumper cable.

Narito ang isang mas mahusay na paraan upang lumikha ng mga nag-uugnay na mga kable (babae-sa-lalaki):

  • Gumamit lamang ng solidong kawad
  • Gupitin ang tatlong 4in na piraso ng solidong kawad
  • Guhitin ang 1 / 4in sa magkabilang dulo ng solidong kawad
  • Gumamit ng mga babaeng pin na nag-uugnay

    • I-slide ang isang babaeng nag-uugnay na pin sa isang dulo ng solidong kawad at crimp

      Ang babaeng pin ay hindi dapat maluwag, maghinang kung kinakailangan

    • I-slide ang pagkaginhawa ng pilit sa babaeng nag-uugnay na pin o cover pin na may tape ng elektrisista

I-wire ang relay sa pi tulad ng ipinakita sa diagram:

  • Ikonekta ang babaeng dulo ng cable sa Raspberry Pi pin.
  • Ipasok ang solidong kawad sa Relay.

Hakbang 8: Lumikha ng isang Serbisyo sa Pagsisimula

Karamihan sa mga relay kasama ang binili, nagpapatakbo ng tulad nito:

  • Kapag ang signal ay NASA circuit ay mananatiling off.
  • Kapag ang signal ay naka-OFF pagkatapos ang circuit ay nakabukas.

Kung ang Raspberry Pi ay nawalan ng lakas, ang relay ay may isang mekanismo sa kaligtasan na pinapanatili ang circuit OFF.

Maaaring maganap ang isang problema kapag ang Rapberry Pi at relay ay nakakuha ng kuryente na naibalik, ngunit bago matapos ang pag-boot ng Raspberry Pi upang i-ON ang signal na kailangang panatilihin ang circuit. Maaari kang magising sa umaga na bukas ang iyong garahe at potensyal ng ilang mga bagong kaibigan!

Gayunpaman, ang relay ay hindi talaga nagsisimula hanggang ang GPIO pin mode ay itinakda sa pamamagitan ng utos na ito: gpio mode 7 out. Bukod dito, kung ang GPIO ay naka-pin sa ON (gpio isulat ang 7 1) bago mo itakda ang mode na GPIO, ang relay ay mananatili sa sandaling na-initialize na.

Upang mapatakbo ang pagsasimulang ito sa boot at huwag magising sa mga bagong kaibigan, gamitin ang sumusunod na script ng pagsisimula.

$ ssh pi @ ♣ raspberry-pi-ip ♣

$ sudo nano /etc/init.d/garagerelay

Pagkatapos i-paste ang script na ito:

#! / basahan / bash

# /etc/init.d/garagerelay # Magpatupad ng mga partikular na pag-andar kapag tinanong ng system case na "$ 1" sa pagsisimula) echo "Start Relay" # I-on ang 7 na nagpapanatili ng relay / usr / local / bin / gpio isulat ang 7 1 #Start Gpio / usr / local / bin / gpio mode 7 out;; itigil) echo "Pagtigil sa gpio";; *) echo "Usage: /etc/init.d/garagerelay {start | stop}" exit 1;; exit esac 0

Upang mai-save: CTRL-o, ENTER

Upang lumabas sa nano, CTRL-x

Gawing maipapatupad ang file:

$ sudo chmod + x /etc/init.d/garagerelay

Ngayon sabihin sa iyong pi na patakbuhin ang script na ito sa boot:

$ sudo update-rc.d -f garagerelay start 4

(Tandaan: Maaari mong ligtas na balewalain ang babalang "nawawalang mga LSB tag.")

Tiyaking tumatakbo ang script ng startup

$ sudo reboot

Magbukas ng isang browser at mag-click sa opener. Dapat mag-click ang relay.

Hakbang 9: Ikabit ang Raspberry Pi sa Garage

Ikabit ang Raspberry Pi sa Garage
Ikabit ang Raspberry Pi sa Garage

Kapag inililipat ang Raspberry Pi, tiyaking tumakbo:

$ shutdown -h 0

Maaaring gusto mong patayin ang kuryente sa garahe. Kaya, hindi ka kinukuryente ng nagbukas ng doorbell:). Ang totoong dahilan ay sa bawat oras na maikliit mo ang mga wire, ang pintuan ay paakyat at baba.

Alisin ang mga tornilyo sa dingding mula sa nagbukas ng uri ng doorbell, na nakakabit sa doorbell sa dingding.

Maglagay ng butas mula sa garahe sa likod ng nagbukas ng doorbell hanggang sa loob ng bahay. Sa Texas, ang Raspberry Pi ay hindi dapat nasa garahe, ang pagkakaiba-iba ng temperatura sa garahe ay nasa tabi ng mga pagtutukoy ng pagpapatakbo ng Raspberry Pi.

Patakbuhin ang mga relay wire sa butas (gumamit ng isang hanger ng amerikana).

Paluwagin ang parehong mga turnilyo sa likuran ng nagbukas ng doorbell.

Huhubad ang magkabilang dulo ng mga wire ng relay: 1) mga 1/8 "pulgada ng panig ng relay, at halos ½" pulgada sa gilid ng doorbell. Bend ang gilid ng doorbell ng kawad sa isang kalahating loop na sapat na malaki upang magkasya sa paligid ng backside screw.

Ikonekta ang isang relay wire sa bawat tornilyo sa likuran ng doorbell, at higpitan ang tornilyo. Ang mga koneksyon ay tulad ng ipinapakita sa imahe. Dahil ihiwalay ng relay ang circuit, ang direksyon ay hindi mahalaga kung aling relay ang nakakabit sa aling turnilyo.

Hakbang 10: Ikabit ang Raspberry Pi sa SECO-LARM

Ikabit ang Raspberry Pi sa SECO-LARM
Ikabit ang Raspberry Pi sa SECO-LARM
Ikabit ang Raspberry Pi sa SECO-LARM
Ikabit ang Raspberry Pi sa SECO-LARM

Bago ko natapos ang code, nagbakasyon kami ng aking pamilya at binuksan ko ang aking browser. Ang huling pagtingin ng aking browser ay ang nagbukas ng pintuan ng garahe - ang pahina ay na-refresh at ang pintuan ng garahe ay binuksan. Makalipas ang ilang araw ay tumawag ang isang kapit-bahay at tinanong kung dapat buksan ang pintuan ng garahe? Sa kabutihang palad, naisasara ko ito mula sa 500 milya ang layo.

Pinilit ako ng snafu na baguhin ang code upang hindi ito mangyari, at magdagdag ng isang sensor at ang estado ng pintuan ng garahe sa website.

Ito ay isang link sa orihinal na itinuturo para sa pagdaragdag ng isang sensor. Gayunpaman, naibigay ang lahat ng bagay na nakumpleto, ang pag-install ng sensor ay maaaring gawing simple at sa halip na gumamit ng sawa ay magdagdag ng isang pares ng mga linya ng code sa index.php.


Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:518 Stack trace: #0 W:\www\langs\.php-gen-lang\v3-core\macros.php(127): eval() #1 W:\www\langs\.php-gen-lang\v3-core\index-global.php(231): Macros->macros_parse('<!DOCTYPE html>...') #2 W:\www\langs\howwhatproduce.com\tl.howwhatproduce.com\index.php(9): require_once('W:\\www\\langs\\.p...') #3 {main} thrown in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code on line 518