Šta je novo?

[TUTORIAL] raspberry + hard isključivanje/uključivanje udaljenih računara

zAZA

Cenjen
Učlanjen(a)
01.10.2012
Poruke
71
Poena
160
kako uz pomoć raspberry pi-a da uključujete i isključujete udaljene mašine u slučaju da zakucaju, ne možete doći do njih teamviewerom i treba vam "fizičko" uključivanje/isključivanje

u ovom "edukativnom tutorialu" od raspberry pi-a pravimo server gde ćemo preko web interfejsa simulirati "fizičko" gašenje/paljenje/reset svojih mašina​


šta radimo? - server koji je uvek živ, na vaš zahtev, kratkospoji PWR pinove na matičnoj ploči rig-a pa se mašina uključi, odnosno kratkospoji pinove na 6 sekundi pa simulira pritisak power dugmeta nakon kog se mašina isključi
odlična stvar ako su vam mašine udaljene i zakucaju vam
ja ovo koristim na lokaciji sa vipovim 4g ruterom za udaljene mašine i radi mi posao

za koga je ovaj tutorial? - pa definitivno ne za one "jel može neko da mi pošalje bat fajl?" odnosno "jel može neko bios da mi odradi?" :guitar:
edukativni je jer sam se ponegde trudio da objasnim kako nešto radi, te se nadam da ćete nešto i naučiti iz svega ovoga


disclaimer:
noob sam za elektroniku, lemljenje i slično, čitao sam po netu i sklopio nešto što meni radi posao - ovaj tutorijal je samo za POWER ON/OFF (odnosno reset ako na matičnoj povežete na RESET pinove)
na ovaj način, od zavisnosti koliko gpio pinova ima vaš model raspberry-a, može se povezati 8 uređaja - na drugačije načine i preko relaya možete napraviti šta god želite, upravljati celim rudnikom iliti sa bezbroj računara ali je za moje potrebe ovo bilo dovoljno

nisam odgovoran ako spržite raspberry ili nešto drugo, ako pratite sve kako treba neće biti problema, kucajući tutorial sam sebi napravio još jedan ovakav sistem i radi sve kako treba

napominjem da ovo može mnogo bolje, te ako neko ima volje i želje da objasni na bolji način, (npr sa relejima) je vrlo dobrodošao!
---------------------------

pa, da počnemo:

korak 0.
nabavite raspberry pi... :D i delove iz koraka 3.
možete običan, ili zero w (sa wirelessom), šta god želite.. na slici, desni je redovan sa 4 usb porta, wifi, bt, ethernetom, hdmi, itd, a levi je zero w verzija
zero w sa adapterima (bez punjača i SD kartice) košta 11 funti na https://shop.pimoroni.com/ + daŽbine zemlje nam drage, a zahteva usb 5v 2A pa ako imate višak punjača za telefon od 2A, radiće posao

20170526_231056.jpg

korak 1. instalirajte OS na sd karticu
- preuzmite NOOBS https://www.raspberrypi.org/downloads/noobs/ zatim pripremite karticu preko programa SDinstaller https://www.sdcard.org/downloads/formatter_4/eula_windows/
, i raspakujte image na sd karticu
- ili preuzmite img file raspbian-a https://www.raspberrypi.org/downloads/raspbian/, raspakujte i kroz program etcher https://etcher.io/ prebacite img fajl na sd karticu

pokrenite raspberry i instalirajte raspbian with pixel - full desktop verziju.. tako možete na miru raditi kao da je poseban računar, mada vam za kasnije predlažem da sve što možete radite preko SSH-a, dakle bez grafičkog interfejsa, ali it's up to you
nakon instalacije spojite se na mrežu i toplo predlažem sledeći korak da sve možete raditi sa svoje glavne mašine, pogotovo ako budete nešto morali raditi na raspberryiju remote

20170526_235317.jpg

korak 2. opciono - uključite SSH ili vnc server (za gui)
meni odgovara cli pa sam za više za ssh

pokrenite terminal (ctrl alt t)
sudo raspi-config
interfacing options, ssh i/ili vnc, enable

u terminal upišite ifconfig da biste videli IP adresu raspberryja (wlan0, ili pogledajte na ruteru)
sada možete preko vaše glavne mašine i programa putty (za ssh), ili nekog vnc klijenta pristupiti raspberriju

username: pi
password: raspberry
naravno, kao svaki pametni korisnik, promenićete šifru tako što ćete upisati passwd


korak 3. napravite kablove pomoću sa kojima ćemo povezati raspberry i rigove
za kablove će vam trebati:
- optokapler (ja sam koristio gfh-620-a)
- otpornik od 250mA
- jumper kablovi (možete iskoristiti neke iz starih kućišta, ili kupiti pakovanje)
- u zavisnosti od razdaljine rigova i raspberrija, kabel kojim ćete produžiti kabel koji pravite - ja sam za ove potrebe koristio žice iz UTP kabla (napomena, kabl je tvrd i malo nervira kod lemljenja, krivljenja i slično pa bih sledeći put koristio mekši)
- raster board ako želite da lemite na njega, ako ne možete i direktno na komponente, ali nemojte biti seljaci :)
- termo bužir da izolujete lemove ili izolir trala
- gluegun, ukoliko želite da ojačate vezu

optokapler je oko 50din, otpornik čitavih 3 din, jumper kablovi 20 komada su oko 150din

http://imgur.com/a/oOF9s

zanemarite boje kablova na slici to sam sastavio da vidite konekciju između komponenti

20170527_001248.jpg 20170526_235059.jpg

ne mogu da nađem šemu koju sam koristio pa ću opisati rečima

+, jedna strana jumperkabla koja ide na raspberry se vezuje na otpornik, otpornik ide na 1. pin (tamo gde je čip urezan) optokaplera, i druga strana jumperkabla ide na 2. pin optokaplera, a odatle će ići na matičnu
-, jedna strana jumperkabla ide na 3. pin optokaplera, a druga strana jumperkabla ide na 4. pin optokaplera koji se posle kači na matičnu

naravno, zavisi i da li su vam optokapleri jednosmerni dvosmerni, ali, nadam se da kontate šta je ideja

ovi kablovi će ići sa jedne strane na na raspberry (jedan na gpio, drugi na ground pin), a druga strana ide na matičnu ploču na PWR pinove


korak 4. podesite apache server i instalirajte sistem za upravljanje rigovima
možete zbog učenja (što toplo preporučujem ako imate vremena i ako vas zanima), da istražujete i napišete par linija pyhton koda koji upravlja GPIO pinovima i posle php skriptu za web interfejs

ili da iskoristite gotov projekat na githubu RASPI-POWERCTL
https://github.com/malcolm-brooks/raspi-powerctl koji ćemo iskoristiti za ove potrebe
pratite uputstva odavde i instalirajte apache web server i ovaj git projekat na svoj web server

OBAVEZNO uradite korak koji je u tutorijalu tek "opcioni" a to je rešavanje SSL sertifikata inače ćete dobijati grešku Job for apache2.service failed a log fajlovi vam neće biti najbolji prijatelji

pratite tutorial za SSL, ali suština je da pokrenete
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
unesete podatke koje se traže
i u fajlu /etc/apache2/sites-available/default-ssl.conf promenite da bude
Kod:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

config fajl 001-powersrv već ima ove putanje do fajlova tako da je to ok

nakon ovoga, kad restartujete apache server, ako ste sve uradili kako treba, moći ćete da pristupite web serveru na raspberryiju tako što ćete kucati ip adresu raspberrija u vaš browser sa nekog drugog računara

20170527_020156_001.jpg

ako preskočite nešto od koraka u tutorijalima računajte da neće ići glatko


savet, ako radite direktno na raspberriju tj preko gui-a i ne mirišete se sa linux okruženjem prijaće vam verovatno gedit za edit fajlova
instalirate ga tako što iz terminala porkenete "sudo apt-get install gedit"
pokrećite gedit kao superuser, dakle "sudo gedit" odnosno "sudo gedit /putanja/fajl" kako biste mogli vršiti izmene po sistemskim fajlovima, da ne bude posle "access denied" "!#$%


korak 5. povezivanje/podešavanje upravljanjem pinova
pored prethodnog, potencijalno komplikovanog, ovo je ujedno i najbitniji deo

potrebno je da povežemo kablove sa raspberrijem i matičnim pločama i da podesimo naš web interfejs da kad kliknemo na komandu power on/off, da kratkospoji odgovarajuće kablove

ovo definitivno zavisi i od modela raspberrija koji koristite, odnosno od rasporeda GPIO pinova
ideja je da skripti koja upravlja, kažemo koji kabel je povezan sa kojim pinom
da bi naš sistem ovo radio, potrebno je + kabel (taj gde je otpornik), da ide na GPIO PIN, na šemama zeleni pin, i - kabel ide na ground, na šemama crni pin


NAJBITNIJE:
GPIO je pin sa kojim ćete povezali + kabel koji ste napravili
broj pina preuzimate sa šeme za vaš raspberry
broj gpio pin pišemo u config fajl

dakle, ako ste povezali + kabel na pin broj 7, u gpio pišete vrednost 7
za sledeću mašinu pišete drugi broj pina, u zavisnosti gde ste ga povezali

za raspberry model 3, b+, pinout možete videti ovde - odnosno pronađite pinout za vaš model raspberry

dakle, generišemo fajl /var/www/html/includes/config.json
sudo nano /var/www/html/includes/config.json

u koji upisujemo
Kod:
  "site":
    {
      "title": "raspberry reset kompjuktor mega giga verzija 2.0v",
      "footer": "ovde ide neki footer"
    },
  "devices":
  [
    {
      "name": "rig1",
      "owner": "zaza",
      "host": "192.168.1.161",
      "gpio": 7
    },
    {
      "name": "rig2",
      "owner": "zaza",
      "host": "192.168.1.161",
      "gpio": 16
    }
  ]
}
snimamo sa ctrl+x, yes, ali to smo već do sad naučili, zar ne :banana:


config fajl je urađen za potrebe screenshota, a u host unosite ip ili hostname vaših rigova

dodatne računare dodajete tako što....a mislim da je pretty self-explanatory iz primera...obratite pažnju kad dodajete računar da nakon } ide zarez, a kod zadnjeg računara zarez nema - json basics (ako ste ikada kod pokretanja minera naleteli na json decode error, možda vam bude jasnije zašto se dešavalo)
ako ste negde pogrešili u json fajlu (neki zarez [{}]), nećete videti računare

evo kako to treba da izgleda sada kad smo ubacili rigove u config fajl

http://imgur.com/a/KI8Bb

čisto da znate kako ovo radi:

power on/sleep dugme - šalje signal od jedne sekunde na pinove na matičnoj ploči te simulira paljenje/sleep
power off dugme - šalje signal od 6 sekundi (ili koliko podesite u fajlu index.php, deo gpio&time=6) te simulira stisak dugmeta za hard gašenje računara
current status očitava tako što u pozadini pinguje računar (da li preko hostnamea ili ip adrese) i tako proverava da li je živa. iz ovog razloga predlažem fiksne IP adrese u lokalnoj mreži
ovo znači, kad uključite mašinu remote, dokle god mašina nije ušla u operativni sistem odnosno nije joj dodeljena odgovarajuća IP adresa, izgledaće da je offline!!


korak 6. testirajte na nekoj običnoj mašini
dovoljno je da povežete bilo koju ploču i napajanje (bez ičega), samo da vidite da li, kada kliknete na power on da li će zavrteti ventilatore

http://imgur.com/a/r7tJu

korak 7. podesite ruter da preko spoljne ip adrese možete pristupiti raspberryiju
kako svako ima različit router, snađite se - web serveri su po defaultu na portu 80 za http, za https 443, te otvorite te portove i forwardujte ih na lokalnu ip adresu/hostname raspberryja
ako zapnete ili ne uspete, možete koristiti besplatan servis r3mote.it koji je nešto slično kao dyndns provajder - instalirate ga na raspberry, on uvek r3mote.it serveru javi vašu eksternu ip adresu, a i iz naloga na r3mote.it, dobijete neku generisanu few23o5242.r3mote.it adersu koja vodi direktno do vašeg raspberrija, prilično korisno


korak 8. opciono - kako zaštititi pristup korističkim imenom i šifrom?
e to vam ostavljam za domaći zadatak :)
tip: ili napravite login formu bez mysql servera, ili jednostavnije, podesite .htaccess


eto to je to, nadam se da ste uspeli, a nadam se da su vam mašine toliko stabilne da vam ovo nikada ni ne zatreba :)


PS: ako neko želi da nadoknadi pivo popijeno dok je tutorial pisan - d524d9589688de6cac72b152768a4f5eedb6193d ETH, ako ne, uživajte i nadam se da će nekome koristiti :)
 
Odlican tutorial, ovo moze da se uradi i sa arduinom i prostim esp wifi modulom, napravicu za leto ja tutorial :)
 
Ako je rpi iza CG NAT ne možeš prići njegovom apache serveru. Možda je bolje rešenje da se koristi nodejs i app koja povremeno otvara neki URL i kad dobije odgovor odradi reset. Taj URL može biti deo sajta... Može i socket.io za realtime komunikaciju.

Sent from my Nexus 6P using Tapatalk
 
A još bolje ESP8266 i MQTT. Ako treba zaštićen server, Amazon daje za dž.
 
^Ima li neko da napravi ovo i da se kupi gotovo resenje? Isplati li se vise od ovih, onaj sa 3 uticnice je oko 100e?
 
Meni je kolega napravio probni primerak za dva riga, a sada ga prepravlja da radi na 16 releja, trebalo bi biti gotovo za nedelju dana...
 
Kao i sve ostalo kod nas, taj projekat je 'zapao iza kauča', verovatno zato što nije bio neophodan... Kad bude, javim.
 
Imate Sonoff uredjaj 10e kosta. Za daljinsko paljenje i gasenje racunara
 
Imam suprugu kod kuće, koja je prošla obuku za resetovanje...
 
Imate Sonoff uredjaj 10e kosta. Za daljinsko paljenje i gasenje racunara

Koji uredjaj je u pitanju i gde ga nabaviti???

^Ima li neko da napravi ovo i da se kupi gotovo resenje? Isplati li se vise od ovih, onaj sa 3 uticnice je oko 100e?

Iplati se ali pitanje je moze li se kontrolisati svaka uticnica posebno na tom cudu . . .

Imam suprugu kod kuće, koja je prošla obuku za resetovanje...

Hahaha kakva koincidencija,imam i ja. :D
 
Najbolje rade smart home broadlink uredjaji da ne kazem savrseno imate ih na aliju i na kp
 
Nazad
Vrh Dno