Turinys:

„Raspberry Pi“išmanieji namai: 5 žingsniai (su nuotraukomis)
„Raspberry Pi“išmanieji namai: 5 žingsniai (su nuotraukomis)

Video: „Raspberry Pi“išmanieji namai: 5 žingsniai (su nuotraukomis)

Video: „Raspberry Pi“išmanieji namai: 5 žingsniai (su nuotraukomis)
Video: Išmanūs namai skenuojantys jūsų nuotaiką, šaldytuvai užsakantys maistą ir tai tik pradžia 2024, Lapkritis
Anonim
„Raspberry Pi“išmanieji namai
„Raspberry Pi“išmanieji namai

Jau yra keletas produktų, dėl kurių jūsų butas tampa protingesnis, tačiau dauguma jų yra patentuoti sprendimai. Bet kodėl jums reikia interneto ryšio, kad galėtumėte perjungti šviesą su savo išmaniuoju telefonu? Tai buvo viena iš priežasčių man sukurti savo „Smart Home“sprendimą.

Aš užprogramavau serverio programą, kuri veikia „Raspberry Pi“. Tai „Java“pagrįstas atvirojo kodo projektas, leidžiantis sukonfigūruoti butą ir prijungti kelis klientus bei „valdomus įrenginius“. Parodau sprendimą, kuris tvarko rc maitinimo jungiklius, leidžia muziką ir vaizdo įrašus „Raspberry Pi“, rodo išmaniojo veidrodžio būseną ir gali būti valdomas naudojant „Android“programą ir dvi akmenukų programas. Šaltinis priglobtas „github“https://github.com/dabastynator/SmartHome

1 žingsnis: reikalingi dalykai

Daiktai, kurių jums reikia
Daiktai, kurių jums reikia

Norėdami nustatyti išmaniuosius namus, jums reikia šių „ingredientų“

  • „Raspberry Pi“bent 2 B modelis
  • 433 MHz siųstuvas, kažkas panašaus į tai
  • 3 trumpieji kabeliai, jungiantys „Raspberry Pi“ir siuntėją
  • Kai kurie radijo valdymo lizdai 433 MHz dažniu
  • „Android“išmanusis telefonas, skirtas kliento programai paleisti

Be to, „Smart Home“galite išplėsti naudodami daugiau pasirenkamų klientų ir tokių įrenginių

  • „Pebble“išmanusis laikrodis
  • „Smart Mirror“, žiūrėkite šį projektą
  • 433 MHz valdoma LED juostelė, žiūrėkite tai

2 žingsnis: paruoškite „Raspberry Pi“433 MHz dažniu

Paruoškite „Raspberry Pi“433 MHz dažniu
Paruoškite „Raspberry Pi“433 MHz dažniu
Paruoškite „Raspberry Pi“433 MHz dažniu
Paruoškite „Raspberry Pi“433 MHz dažniu

Atlikdami šiuos veiksmus, jums reikia prieigos prie komandinės eilutės „Raspberry Pi“. Norėdami gauti prieigą, perskaitykite šią instrukciją

Prijunkite 433 MHz siųstuvą prie „Raspberry Pi“, kaip parodyta aukščiau esančiame paveikslėlyje

  • GND (siuntėjas) 6 GND (raspi)
  • VCC (siuntėjas) 2 +5V (raspi)
  • DUOMENYS (siuntėjas) 11 GPIO 17 (raspi)

Taip pat prijunkite 17 cm anteną prie ANT (siuntėjo) kaiščio. Tai žymiai padidina signalą.

Kadangi mums reikia kai kurių bibliotekų iš kitų „git“saugyklų, turime įdiegti „git“

sudo apt-get install git-core -y

Norėdami nustatyti „Raspberry Pi“433 MHz ryšiui, mums reikia „Pi“laidų bibliotekos, kad būtų galima geriau valdyti GPIO.

git klonas git: //git.drogon.net/wiringPi

cd wiringPi./build

Tada mums reikia bibliotekos, kuri paprastai naudoja rc maitinimo protokolus.

git klonas git: //github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi padaryti cp send/usr/bin/

Vykdomasis failas „siųsti“leidžia siųsti kodus, kad būtų galima perjungti daugumą galimų maitinimo šaltinių.

„Smart Home“sąrankoje taip pat turiu rc LED juostą, aprašytą šioje instrukcijoje: https://www.instructables.com/id/RC-controlled-LED… Norėdami nustatyti šios LED juostos spalvas, jums reikia kito siuntimo vykdomojo failo, kuris leidžia jums siųsti bet kokią sveikojo skaičiaus reikšmę (kuri koduoja spalvą).

Todėl surinkite „sendInt.cpp“į „rcswitch-pi“repą ir perkelkite jį į/usr/bin/sendInt.

sudo g ++ sendInt.cpp -o/usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch -pi -lwiringPi

Dabar turėtumėte turėti galimybę siųsti rc komandas dviem vykdomaisiais failais/usr/bin/send ir/usr/bin/sendInt

3 veiksmas: nustatykite „Smart Home“serverį

Pirmiausia turite įdiegti kelis paketus. „Smart Home“programa sukurta „Java“ir puikiai veikia su „openjdk-11“. Nesu tikras dėl kitos „Java“vykdymo aplinkos. „Mplayer“yra minimalistinis komandinės eilutės muzikos grotuvas. „Omxplayer“vaizdo įrašams koduoti naudoja „Raspberry Pi“grafiką, todėl tai turėtų būti naudojama vaizdo įrašams. Norint sukurti „Java“programą, reikalinga programa „ant“.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Nustatykite jar failo ir žurnalų katalogus.

sudo mkdir /opt /neo

sudo chown pi: pi/opt/neo mkdir/home/pi/Logs

Konfigūruokite pradžios scenarijų, kad programa būtų paleista automatiškai paleidžiant. Todėl nukopijuokite pridėtą išmaniųjų namų scenarijų į katalogą /etc/init.d/ Aš taip pat sukūriau scenarijų/usr/bin/, kuris perkelia komandas prie pridėto scenarijaus, todėl tiesiog įvedu išmaniuosius namus į konsolę, kad galėčiau vykdyti komandas.

sudo cp smart-home /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#!/bin/bash'>/usr/bin/smart -home" sudo sh -c "echo '/etc/init. d/smart-home / $ 1 '>>/usr/bin/smart-home "sudo chmod +x/usr/bin/smart-home sudo update-rc.d išmaniųjų namų numatytieji nustatymai

Dabar atėjo laikas patikrinti saugyklą ir sukurti programą. Jei nenorite jo kompiliuoti patys, galite tiesiog atsisiųsti pridėtą smarthome.jar ir perkelti jį į/opt/neo/

git klonas [email protected]: dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/*/opt/neo/

Pabandykite paleisti išmaniuosius namus ir patikrinkite žurnalo failą. Norėdami gauti prieigą prie GPIO, programą turi paleisti sudo.

„sudo smart-home“paleidimas

katės rąstai/smarthome.log

Turėtumėte pamatyti klaidos pranešimą „Konfigūracijos failas neegzistuoja“, nurodantis kitą žingsnį. Saugykloje yra „readme“, paaiškinanti konfigūracijos failą. Tai galite pamatyti gražiai pateiktą „github“:

Nukopijuokite šį xml į /home/pi/controlcenter.xml, tada nustatykite savo medijos serverio vietą ir pakeiskite turinį pagal poreikį. Baigę konfigūraciją ir iš naujo paleidę išmaniuosius namus („sudo smart-home restart“), „smarthome.log“turėtumėte pamatyti šį turinį

24.05-08: 26 NUOTOLINĖ INFORMACIJA, kurią pateikė de.neo.smarthome.cronjob. CronJob@15aeb7ab: Suplanuokite cron darbą

24.05-08: 26 NUOTOLINĖ INFORMACIJA [trigger.light]: Palaukite, kol bus įvykdyta 79391760 ms 24.05-08: 26 RMI INFORMACIJA pagal Pridėti žiniatinklio tvarkyklę (5061/ledstrip) /veiksmas) 24.05-08: 26 RMI INFORMACIJA pagal Pridėti žiniatinklio valdytoją (5061/mediaserver) 24.05-08: 26 RMI INFORMACIJA pagal Pridėti žiniatinklio valdytoją (5061/jungiklis) 24.05-08: 26 RMI INFORMACIJA pagal Pridėti žiniatinklio valdytoją (5061/controlcenter) 24.05-08: 26 RMI INFORMACIJA pagal „Start“žiniatinklio serverį su 5 tvarkytoju (localhost: 5061) 24.05-08: 26 „REMOTE INFORMACIJA“iš „Controlcenter“: pridėkite 1. valdymo bloką: „MyUnit“(xyz)…

Dabar veikia žiniatinklio serveris:-)

4 veiksmas: nustatykite klientus

Sąrankos klientai
Sąrankos klientai
Sąrankos klientai
Sąrankos klientai
Sąrankos klientai
Sąrankos klientai

Išmaniųjų telefonų „Android“klientas

Išmaniųjų namų programos „git“saugykloje taip pat yra „Android“kliento šaltinis, todėl galite jį sudaryti patys. Bet aš pridėjau šio veiksmo APK, tai palengvina. Kai pirmą kartą paleidžiate programą, ji prašo serverio, kaip ir pirmame paveikslėlyje aukščiau. Įveskite serverio URL ir saugos raktą.

Tai turėtų būti. Dabar turite prieigą prie serverio ir galite valdyti savo butą, leisti muziką ir žiūrėti vaizdo įrašus nuotoliniu būdu naudodami „Raspberry Pi“. Atminkite, kad prie pagrindinio ekrano galite pridėti valdiklių, todėl jungikliai ir muzikos valdymas tampa labiau prieinami.

„Smartwatch Pebble“klientas

Dviejų akmenukų klientų šaltinis yra „github“. Viena programa rodo dabartinį grojamą muzikos failą: https://github.com/dabastynator/PebbleRemoteMusic… Tai taip pat leidžia pristabdyti/leisti ir padidinti/sumažinti garsumą.

Antroji programa suaktyvina tris veiksmus: https://github.com/dabastynator/PebbleControl Trigerio pavadinimai yra: mobile.come_home mobile.leaving ir mobile.go_to_bed. Jei savo konfigūracijoje xml nustatysite šio aktyviklio įvykių taisykles, jas suaktyvinsite laikrodis.

Visa tai yra atvirojo kodo, bet jums nereikia jo kompiliuoti, aš taip pat pridėjau akmenukų programas. Atsisiųskite PBW naudodami savo išmanųjį telefoną, telefonas turėtų juos įdiegti laikrodyje. „Akmenėlių“programoms reikia konfigūracijos, kad jos galėtų kalbėtis su serveriu. Pridėjau ekrano kopiją, kaip atrodo mano nustatymai.

Išmanusis laikrodis „Garmin“klientas

Taip pat yra „Garmin Smartwatches“klientas. Programą galima rasti „Garmin connect“programų parduotuvėje ir ją galima įdiegti čia:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

„Smart Mirror“klientas

Aš jau sukūriau instrukciją, paaiškinančią, kaip sukurti išmanųjį veidrodį, žr. Https://www.instructables.com/id/Smart-Mirror-by-R …. Šaltinio kodas taip pat talpinamas „github“: https:// github.com/dabastynator/SmartMirror. Išmaniojo veidrodžio programinė įranga nuskaito konfigūraciją iš failo smart_config.js, kuris nėra „git“saugyklos dalis. Konfigūracijos failo turinys turėtų atrodyti taip:

var mOpenWeatherKey = 'jūsų atvertas oras-raktas';

var mSecurity = 'jūsų saugumo ženklas';

Taip pat turite pakoreguoti pirmas dvi failo eilutes smart_mirror.js, kad nurodytumėte „Smart Home“serverio IP adresą ir vietą, kad gautumėte tinkamą orą.

Daugiau klientų

Serverio programa yra paprastas žiniatinklio serveris. Tai leidžia paprastiems žiniatinklio skambučiams suaktyvinti bet kurio norimo kliento veiksmus. Demonstraciniame vaizdo įraše rodau „Android“programų uždavinį kartu su „AutoVoice“. Tai leidžia man suaktyvinti įvykius naudojant paprastas balso komandas. Pavyzdžiui, „gerai,„ Google “, laikas miegoti“gali suaktyvinti „mobile.go_to_bed“. Bet taip pat galite skambinti žiniatinkliu, pavyzdžiui, iš IFTTT. Kaip apie geltoną mirksintį LED juostelę pranešimams el. Paštu?

Galite paprašyti serverio atlikti galimus interneto skambučius, pvz., Šias nuorodas (pakeiskite IP, prievadą ir prieigos raktą savo konfigūracija)

localhost: 5061/controlcenter/api? token = secu…

localhost: 5061/action/api? token = security-to…

localhost: 5061/mediaserver/api? token = securi…

localhost: 5061/switch/api? token = security-to…

localhost: 5061/ledstrip/api? token = security-…

5 žingsnis: Išvada

Vis dar yra keletas funkcijų, kurias reikia įdiegti: Kadangi serveris teikia tik paprastą interneto api klientą, jis atlieka daug apklausų. Norėdami sumažinti apklausą, noriu MQTT integracijos, kad būtų geriau pranešama. Be to, „WiFi“maitinimo šaltiniai turėtų veikti patikimiau nei rc maitinimo šaltiniai, nes „rc“yra tik vienos krypties ryšys.

Tai labai smagu kuriant šį projektą. Ir gana šaunu valdyti butą keliais įrenginiais, net jei nutrūksta interneto ryšys.

Rekomenduojamas: