Talaan ng mga Nilalaman:

Pinagana ang Power Outlet sa Internet: 13 Mga Hakbang
Pinagana ang Power Outlet sa Internet: 13 Mga Hakbang

Video: Pinagana ang Power Outlet sa Internet: 13 Mga Hakbang

Video: Pinagana ang Power Outlet sa Internet: 13 Mga Hakbang
Video: Why the World Economy Would COLLAPSE Without This Company! 2024, Hulyo
Anonim
Image
Image
Kailangan ng mga Pantustos
Kailangan ng mga Pantustos

Mga Tagubilin sa Pag-set up ng Outlet na Pinagana ng PowerHub Webserver

Ang sentro ng data ng pagtitiyaga ng data para sa Internet ay nagbibigay ng ilaw at outlet sa iyong bahay!

Hakbang 1: Mga Tagubilin sa Pag-setup ng Outlet na Pinagana ng PowerHub Webserver

Ang sentro ng data ng pagtitiyaga ng data para sa Internet ay nagbibigay ng ilaw at outlet sa iyong tahanan

Flashing RaspberriPi Hard Disk / Install Required Software (Paggamit ng Ubuntu Linux) I-download ang "RASPBIAN JESSIE LITE"

Lumikha ng iyong bagong hard disk para sa DashboardPI

Ipasok ang microSD sa iyong computer sa pamamagitan ng USB adapter at likhain ang imahe ng disk gamit ang dd command

Hanapin ang iyong ipinasok na microSD card sa pamamagitan ng utos na df -h, i-unmount ito at likhain ang imahe ng disk gamit ang disk copy dd command

$ df -h / dev / sdb1 7.4G 32K 7.4G 1% / media / XXX / 1234-5678

$ umount / dev / sdb1

Pag-iingat: siguraduhin na ang utos ay ganap na tumpak, maaari mong mapinsala ang iba pang mga disk sa utos na ito

kung = lokasyon ng RASPBIAN JESSIE LITE file ng imahe ng = lokasyon ng iyong microSD card

$ sudo dd bs = 4M kung = / path / to / raspbian-jessie-lite.img ng = / dev / sdb (tala: sa kasong ito, ito ay / dev / sdb, / dev / sdb1 ay isang mayroon nang partisyon ng pabrika sa microSD)

Pagse-set up ng iyong RaspberriPi

Ipasok ang iyong bagong microSD card sa raspberrypi at paganahin ito gamit ang isang monitor na konektado sa HDMI port

Mag log in

gumagamit: pi pass: raspberry

Baguhin ang password ng iyong account para sa seguridad

sudo passwd pi

Hakbang 2: Paganahin ang Mga Advanced na Pagpipilian sa RaspberriPi

sudo raspi-config

Piliin: 1 Palawakin ang System ng File

9 Mga advanced na pagpipilian

Binago ito ng A2 Hostname sa "WIFI-OUTLET"

A4 SSH Paganahin ang SSH Server

A7 I2C Paganahin ang i2c interface

Paganahin ang English / US Keyboard

sudo nano / etc / default / keyboard

Baguhin ang sumusunod na linya: XKBLAYOUT = "us"

I-reboot ang PI para sa mga pagbabago sa layout ng Keyboard / pagbabago ng laki ng file system upang magkabisa

$ sudo shutdown -r ngayon

Awtomatikong Kumonekta sa iyong WiFi

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Idagdag ang mga sumusunod na linya upang awtomatikong kumonekta ang iyong raspberrypi sa iyong WiFi sa bahay (kung ang iyong wireless network ay pinangalanang "linksys" halimbawa, sa sumusunod na halimbawa)

network = {ssid = "linksys" psk = "WIRELESS PASSWORD DITO"} I-reboot ang PI upang kumonekta sa WiFi network

$ sudo shutdown -r ngayon

Ngayon na ang iyong PI ay sa wakas ay nasa lokal na network, maaari kang mag-login nang malayuan dito sa pamamagitan ng SSH. Ngunit kailangan mo munang makuha ang IP address na kasalukuyang mayroon ito.

$ ifconfig Hanapin ang "inet addr: 192.168. XXX. XXX" sa output ng sumusunod na command para sa IP Address ng iyong PI

Pumunta sa isa pang makina at mag-login sa iyong raspberrypi sa pamamagitan ng ssh

$ ssh [email protected]. XXX. XXX

Hakbang 3: Simulang I-install ang Mga Kinakailangan na Pakete

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install vim git python-requests python-gpiozero python-smbus i2c-tool python-imaging python-smbus build-essential python-dev rpi.gpio python3 python3-pip libi2c-dev python3-spidev python-spidev

I-update ang mga setting ng lokal na timezone

$ sudo dpkg-reconfigure tzdata

piliin ang iyong timezone gamit ang interface

I-setup ang simpleng direktoryo l utos [opsyonal]

vi ~ /.bashrc

idagdag ang sumusunod na linya:

alyas l = 'ls -lh'

pinagmulan ~ /.bashrc

Ayusin ang VIM default na syntax na pagha-highlight ng [opsyonal]

sudo vi / etc / vim / vimrc

i-komento ang sumusunod na linya:

syntax sa

I-install ang i2c Python Drivers

Hakbang 4: ITIWAL ANG WEB API

Papayagan ka ng mga sumusunod na tagubilin na buuin ang gitnang hub na nagpapaliwanag sa iba't ibang mga outlet na pinagana ng wifi at mga switch ng pader na maaari mong buuin, kung aling mga aparato ang nakabukas at naka-off. Ito ay isang maliit na script ng PHP upang mailagay sa isang webhost na iyong pinili. Mayroon itong sumusunod na API upang makakuha at magtakda ng impormasyon dito. Tandaan: huwag kalimutang isama ang.htaccess file para maganap ang wastong pagruruta ng URL.

I-install ang "index.php", "mga halaga /" folder at setting.php (naka-configure sa iyong sariling mga halaga) sa isang pinaganang PHP na webserver na iyong pinili. Ang lihim na halaga ng susi sa file na "setting.php" ay dapat na tumutugma sa lihim na halagang key na itatakda mo sa "setting.py" na file. Pipigilan nito sa isang pangunahing antas ang anumang iba pang trapiko sa web mula sa mga setting ng pagtatakda / pagsulat, pag-on ng iyong mga aparato, kailangan mo ngayon ang hashed API key na ito sa header ng paghiling ng HTTP upang magawa ito.

Sinusuportahan ng API ang mga sumusunod na tampok, para sa proyektong ito gagamitin lamang namin ang mga halagang "flag" na mga halagang boolean na nagsasabi sa switch na i-on at i-off. Marahil kung nais mong samantalahin ang mga halagang "pagbabasa" na maaari mo itong makuha kaya kung ang isang temperatura sa silid ay masyadong mainit sa pamamagitan ng pag-save ng temperatura doon, maaari nitong buksan ang isang window fan, atbp.

Kunin ang Code

I-clone ang sumusunod na proyekto mula sa GitHub upang makuha ang code upang patakbuhin ang webserver at ang outlet na RaspberryPI.

github.com/khinds10/PowerHub

Mga Endpoint ng API kapag tumatakbo sa webserver

myhost / message (kunin ang kasalukuyang hanay ng mensahe)

myhost / message / set (HTTP POST isang hilaw na halaga ng string sa URL na ito upang magtakda ng isang bagong mensahe)

myhost / flag / {id} (kunin ang kasalukuyang katayuan ng boolean ng flag sa pamamagitan ng integer: {id})

myhost / flag / lahat (kunin ang lahat ng kasalukuyang katayuan ng boolean ng lahat ng mga flag bilang isang array)

myhost / flag / {id} / set (itakda ang kasalukuyang katayuan ng boolean sa 'totoo' para sa watawat ayon sa integer: {id})

myhost / flag / {id} / unset (itakda ang kasalukuyang katayuan ng boolean sa 'false' para sa flag by integer: {id})

myhost / reading / {id} (kunin ang kasalukuyang average na halaga para sa pagbabasa sa pamamagitan ng integer: {id})

myhost / pagbabasa / lahat (makuha ang kasalukuyang average na halaga para sa lahat ng mga pagbasa bilang isang array)

myhost / reading / {id} / set (HTTP POST isang hilaw na numerong halaga sa URL na ito upang magdagdag ng isang bagong halaga sa kasalukuyang kinakalkula na average) - tingnan sa ibaba kung gaano karaming mga halaga sa kabuuan ang naipon sa average na halaga Pagkumpirma Ang mga halagang 'pagbasa' ay kinakalkula bilang mga average ng isang tiyak na bilang ng mga kamakailang nagpatuloy na pagbabasa ng mga halagang bilang. Itakda ang sumusunod na pare-pareho sa kung ilan sa pinakabagong mga pagbabasa ay dapat na isama upang makabuo ng average.

$ readingsAverageLimit = 5;

Mapapatuloy ng Datastore Server ang mga halaga sa mga simpleng file na matatagpuan sa pamamagitan ng pagbibigay ng pangalan sa mga kombensiyon sa ibaba. Tandaan: Ang {id} ay papalitan ng tunay na integer na ipinakita ng URL ng papasok na kahilingan.

$ halagaFileFolder = 'mga halaga' (pangalan ng folder upang maglaman ng mga file ng pagsukat) $ messageFileName = 'message.msg' (pangalan ng file ng teksto ng mensahe) $ readingsFilesNames = 'pagbabasa {id}.avg' (na-average ang pangalan ng CSV readings file) $ flagFilesNames = 'flag {id}.flg' (pangalan ng boolean flag na flag flag file)

Siguraduhin na ang lahat ng mga file ng halaga ay nasusulat ng mga halaga ng systemchmod 777 / *

Hakbang 5: Kailangan ng Mga Kailangan

Kailangan ng mga Pantustos
Kailangan ng mga Pantustos
Kailangan ng mga Pantustos
Kailangan ng mga Pantustos
Kailangan ng mga Pantustos
Kailangan ng mga Pantustos

1 pulgada na butas (para sa isang drill)

5V 2 Channel Relay Module

Duplex Receptacle Wall Plate

Duplex Receptacle

Pi Zero W

Ibabaw ng Mount Backbox Dual Gang

Mga Puti na Push ng Puti na Iilaw

Hakbang 6: Pagbuo ng Outlet

Pagbuo ng Outlet
Pagbuo ng Outlet

Mga Break Outlet Tab

Basagin ang tab sa gilid ng outlet upang ang bawat socket ay buksan / patayin nang nakapag-iisa

Hakbang 7: Mag-install ng Mga Pindutan

Mag-install ng Mga Pindutan
Mag-install ng Mga Pindutan
Mag-install ng Mga Pindutan
Mag-install ng Mga Pindutan

Sa faceplate ng Outlet gamit ang 1 hole saw cut ang 2 butas para sa mga pindutan na mailalagay sa tabi ng mga outlet

Pagsubok sa laki ng mga bahagi

Siguraduhin na ang lahat ng mga bahagi ay magkakasya sa outlet mount mount box

Hakbang 8: Wire Relay

Relay ng Wire
Relay ng Wire
Relay ng Wire
Relay ng Wire

Wire ang Relay sa outlet, mula sa extension cord na papunta sa dingding, ikonekta ang lupa (berde) at walang kinikilingan (puti) nang direkta sa outlet Para sa mainit (itim) ikonekta ang mga ito sa relay pagkatapos mula sa relay sa bawat outlet na mainit na konektor paisa-isa

Hakbang 9: Karagdagang Mga Kable at Mga Larawan sa Assembly

Karagdagang Mga Kable at Mga Larawan ng Assembly
Karagdagang Mga Kable at Mga Larawan ng Assembly

Hakbang 10: Diagram ng Mga Kable

Diagram ng Kable
Diagram ng Kable

Gamitin ang diagram upang wastong kawad ang mga sangkap upang gumana sa RaspberryPI Python code.

Hakbang 11: Subukan ang Dry Run

Subukan ang dry Run
Subukan ang dry Run
Subukan ang dry Run
Subukan ang dry Run
Subukan ang dry Run
Subukan ang dry Run

Pagkatapos ng huling pagpupulong bago i-screwing ang hole unit nang magkasama, magsagawa ng dry run ng aparato upang matiyak na walang mga shorts, hindi magandang kable

Hakbang 12: Itakda ang Mga Startup Script

crontab -e

idagdag ang mga sumusunod na linya

@reboot python /home/pi/PowerHub/device/outlet/buttons.py @reboot python /home/pi/PowerHub/device/outlet/relay.py

Inirerekumendang: