Kategorije: Instrukcije

Raspberry Pi u kućnom ekosistemu: karakteristike i primjeri (1. dio)

Prije nekog vremena sam kupljeno jednopločni mini računar Raspberry Pi 4 (aka "malina» među amaterima), ne shvatajući posebno kako i za šta se može koristiti kod kuće. Umjesto toga, to je bila još jedna tehnološka igračka, i to za apsolutno prihvatljiv novac, tako da ste mogli priuštiti eksperimentiranje. Gledajući unaprijed, mogu reći da trenutno imam takve usluge kao što je blokator oglasa na cijeloj mreži koji radi na mom RPi4 AdGuard Home, rezervni sistem skladištenja Apple Vremeplovhomebridge za dodavanje necertificiranih uređaja u ekosistem Apple HomeKit, program za preuzimanje torrenta transmisija, medijski server PLEX i retro igraću konzolu RetroPie. Planiram da eksperimentišem sa menadžerom lozinki koji sam hostuje Bitwarden, open source analog čuvene 1Password. Nije premalo za tako malog veličine kutije cigareta, zar ne?

U ovom ciklusu sa dva članaka, pokušat ću što detaljnije ispričati kako sam sve ovo instalirao i konfigurirao.

Prvi članak će biti korisnije za uzgajivače maka, jer se dotiče specifičnog za ekosistem Apple bodova, iako će dio koji se bavi AdGuardom biti od interesa za korisnike bilo kojeg desktop ili mobilnog operativnog sistema.

U drugom članku razmotrite univerzalne usluge koje mogu biti korisne svima bez izuzetka. I ti i ja ćemo napredovati kao normalni ljudi - od jednostavnog do složenog.

Raspberry Pi priprema

Treba napomenuti da su rane revizije Raspberry Pi-ja bile prilično slabe u pogledu hardvera, pa je svaki programer softvera ovaj računar doživljavao kao mašinu za jedan zadatak. Zbog toga će svaki servis koji se može pokrenuti na RPi-u po defaultu biti ponuđen kao gotova slika operativnog sistema. Skinuo sam ga, snimio na SD karticu, ubacio u RPi i upalio gotov kompjuter sa instaliranim servisom. Ali naš zadatak je da pokrenemo nekoliko servisa istovremeno, pošto trenutna revizija to dozvoljava. Stoga ćemo ih instalirati kao aplikacije.

Pretpostavimo da ste već povezali Raspberry Pi sa "čistim" Raspbian sistemom na lokalnu mrežu. Ako ste početnik i ne znate odakle da počnete, onda počnite  službena uputstva (slijedite vezu - prekrasan korak po korak čarobnjak s puno interaktivnih ilustracija), a zatim prijeđite na sljedeću fazu.

Korak 1

Prije svega, morate omogućiti pristup putem SSH na vaš Raspberry Pi. Da biste to učinili, potrebno je izvršiti nekoliko jednostavnih koraka:

  • Otvorite prozor Raspberry Pi Configuration u meniju Preferencesces" operativni sistem
  • Kliknite na "Interfaces»
  • Odaberite Omogući pored SSH
  • Kliknite na dugme "OK" kako bi promjene stupile na snagu

Ako imate Raspbian Lite instaliran bez grafičkog sučelja, u Terminalu na samom Raspberry Pi, izvršite sljedeće naredbe:

sudo systemctl omogući ssh sudo systemctl start ssh

Pristup omogućen.

Imam macOS računar, tako da mogu odmah preći na sljedeće korake, baš kao i vlasnici Linux računara. Korisnici Windowsa 10 također su prije nekog vremena dobili ugrađeni OpenSSH klijent kao dio svog operativnog sistema, ali će možda biti potrebne neke manipulacije da bi ga aktivirali.

Otvorite Windows komandnu liniju ili PowerShell shell (što god želite) i upišite sljedeću naredbu:

Get-WindowsCapability-Online | ? Ime -kao 'OpenSSH*'

Ako je SSH klijent instaliran, odgovor na naredbu će biti otprilike ovako:

Ako nam OpenSSH.Client kaže u polju State da je NotPresent, tada je najbrži način da ga aktivirate unosom sljedeće naredbe:

Add-WindowsCapability -Online -Naziv OpenSSH.Client*

Ovim je završena prva faza pripreme, uključujući korisnike Windowsa. S obzirom na prirodu Raspberry Pi-ja i činjenicu da je Raspbian OS zapravo još jedna verzija Linuxa, morat ćemo dosta poraditi na komandnoj liniji. Možda će nekome izgledati neobično, ali vjerujte, u tome nema ništa teško i nepopravljivo, pa budite hrabriji. Sve će uspjeti.

Korak 2

Sada morate biti sigurni da vaš Raspberry Pi uvijek dobije istu internu IP adresu na lokalnoj mreži. Najlakši način da to učinite je u postavkama rutera.

Koristim trokomponentni MESH sistem  ASUS ZenWiFi Mini sa standardnim web interfejsom bilo kojeg rutera ove kompanije. Da biste povezali MAC i IP adrese, potrebno je da odaberete uređaj sa liste povezanih uređaja, a u iskačućem prozoru jednostavno navedete željenu IP adresu. U mom slučaju sam izabrao 192.168.50.10 samo radi lakšeg pamćenja.

U ruterima drugih proizvođača, stavka izbornika može se zvati drugačije, ali njena suština će ostati ista - izdavanje statičkih lokalnih IP-ova povezanim uređajima.

Korak 3

Pokrećemo Terminal (komandna linija, PowerShell, itd.) na vašem računaru iz standardnog skupa macOS-a, Linux-a ili Windows-a.

Ubijamo tim

ssh pi@

(gde umesto <ip address of your server> ubacujemo IP "maline" iz prethodnog koraka) i vidimo otprilike sljedeću sliku:

Ovdje morate ubiti lozinku vašeg Raspberry Pi, koju ste naveli tokom početnog podešavanja.

Važno! Lozinka se neće prikazati na ekranu dok je unesete. A ni "zvijezde" neće biti prikazane. Morate ukucati lozinku doslovno "naslijepo" i pritisnuti Enter.

Ako je lozinka ispravno unesena, rezultat će biti otprilike ovako:

Zdravo, nalazite se u svom Raspberry Pi. Dobrodošli! Možete nastaviti s postavkama pojedinačnih usluga. I počećemo s najjednostavnijim.

Instalacija i konfiguracija AdGuard Home na Raspberry Pi

AdGuard Home, prema svjedočenju programera - "moćan mrežni alat protiv oglašavanja i praćenja. Sa sve većom ulogom Interneta stvari, postaje sve važnije upravljati cijelom vašom mrežom. Jednom postavljen, AdGuard Home će pokriti SVE vaše kućne uređaje bez potrebe za softverom na strani klijenta.”

Jednostavno rečeno, to je filter oglasa koji ne radi kao zasebne aplikacije ili dodaci za preglednik na svakom od vaših uređaja, već je univerzalno rješenje koje filterima pokriva cijeli vaš kućni LAN.

Vratimo se na prozor terminala (složimo se da Windows PowerShell i druge ljuske za unos komandi, u tekstu ću jednostavno zvati Terminal, u redu?), Izvršavamo sljedeće naredbe koje će preuzeti i raspakirati AdGuard Home arhivu:

cd $HOME wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_armv6.tar.gz tar xvf AdGuardHome_linux_armv6.tar.gz

Ostaje samo da instalirate servis i pokrenete ga:

cd AdGuardHome sudo ./AdGuardHome -s install

Rezultat će izgledati otprilike ovako:

AdGuard Home je već instaliran! Bilo je jednostavno, zar ne?

Sada morate posjetiti web sučelje novoinstalirane usluge. Pokrenite pretraživač (Safari, Chrome, Firefox ili šta god imate - nije važno) i u adresnoj traci ubijte https://<ip address of your server>:3000. U mom slučaju to je, koliko se sjećamo, https://192.168.50.10: 3000.

Vidjet ćete korak po korak čarobnjaka za početno podešavanje. Ako vam više odgovara interfejs na drugom jeziku, možete odmah preći na željeni. Na listi su, između ostalih, ukrajinski, poljski i ruski.

U trećem koraku od vas će se tražiti da kreirate AdGuard Home korisnika i da smislite lozinku. Na četvrtom, biće objašnjeno da Raspberry Pi IP adresa (ista 192.168.50.10 u mom slučaju) mora biti registrovana kao DNS u odgovarajućem delu podešavanja rutera. Uradi ovo:

U ruterima drugih proizvođača, željena tačka podešavanja će se nalaziti približno na istoj putanji.

Zatim idemo na postavke samog AdGuard Home-a, koji je još uvijek nevino čist.

Ako imate Smart TV Samsung, LG ili slično, idite na meni "Filteri - Dodaj crnu listu" i tamo "Odaberi sa liste". Aktivirajte odgovarajuću listu blokiranih.

Sada morate ručno dodati filtere oglasa na ruskom/ukrajinskom jeziku. Ponovo kliknite na "Dodaj crnu listu", zatim "Dodaj svoju listu" i redom unesite sljedeće vrijednosti u odgovarajuća polja:

XNUMX URL
AdGuard Base filter https://filters.adtidy.org/extension/chromium/filters/2.txt
AdGuard ruski filter https://filters.adtidy.org/extension/chromium/filters/1.txt
AdGuard filter za zaštitu od praćenja https://filters.adtidy.org/extension/chromium/filters/3.txt

Za početak, ovi filteri su sasvim dovoljni.

Poređenja radi, obično koristim exler.ru, sajt pun klasičnih banera. Na lijevoj strani - prije, na desnoj - nakon primjene filtera.

Ažuriranje AdGuard Home vrši se u ručnom načinu rada, ali počinje doslovno jednim gumbom i traje nekoliko sekundi, bez potrebe za intervencijom.

To je sve, generalno. Od sada, svi vaši kućni uređaji su gotovo bez oglasa. Neprijatan izuzetak je klijentski program YouTube na konzolama Apple TV, ali ovdje stupaju na snagu ograničenja tvOS arhitekture, pa je AdGuard u ovom slučaju nemoćan.

Instalacija i konfiguracija Time Machine na Raspberry Pi

Prema Wikipediji, Time Machine je razvijen sistem rezervnih kopija Apple i ugrađen je u Mac OS X Leopard i novije verzije macOS-a, kao i program istog imena koji vam omogućava da vidite sadržaj rezervnih kopija i vratite kako pojedinačne datoteke tako i operativni sistem u cjelini.

Jednostavno rečeno, to je sistem rezervnih kopija po satu ugrađen u macOS koji zahtijeva kompatibilan server datoteka. Raspberry Pi možete pretvoriti u upravo takav server ako na njega povežete eksterni USB HDD.

Za ispravan rad Time Machine prikladan je samo Raspberry Pi 4 ili noviji, sa USB 3.0 portovima (u ranijim modelima su portovi sporiji) i odgovarajućim HDD-om zapremine 1-3 terabajta (sa eksternim napajanjem, ako je disk od 3,5 inča).

Važno! Postoje dva mrežna protokola koji omogućavaju macOS-u da pohranjuje podatke Time Machine na lokalnoj mreži. Zastarjeli Netatalk, ili modernija Samba. U principu, bilo koji od njih možete koristiti za zadatke Time Machine. Internet je pun uputstava za organizaciju procesa preko Netatalka, i sva ta uputstva su različitog stepena hirovitosti, ali moj zadatak je da dam najjednostavniju, garantovanu radnu opciju. A vaš zadatak je odabrati onaj koji vam odgovara. Dakle, u članku ćemo razmotriti oboje.

HDD priprema

Priključujemo HDD na USB 3.0 port našeg Raspberry Pi, pristupamo mu u terminalu preko SSH-a i pokrećemo komandu lsblk, koji će prikazati listu povezanih diskova u konzoli. Pazimo na veličinu diska kako bismo bili sigurni s kojim ćemo raditi, njegov naziv i tačku montiranja, u mom slučaju je jednostavno sda, vaš će i dalje imati tačku montiranja, najvjerovatnije /dev/sda‌. Trebamo je.

Unesite naredbu sudo fdisk /dev/sda (ili sa bilo kojom drugom tačkom montiranja relevantnom u vašem slučaju), a zatim kliknite na tastaturu m, da vidite potpunu listu naredbi. Možete ga čak i kopirati u zasebnu tekstualnu datoteku (ili koristiti savjet u nastavku).

GPT M unesite zaštitni/hibridni MBR Generic d obrišite particiju F lista slobodnog neparticioniranog prostora l lista poznatih tipova particija n dodajte novu particiju p ispišite tablicu particija t promijenite tip particije v provjerite particijsku tablicu i ispišete informacije o particiji Razno m odštampati ovaj meni x dodatna funkcionalnost (samo stručnjaci) Skripta Učitavam raspored diska iz sfdisk skript datoteke O dump raspored diska u sfdisk skript datoteku Sačuvaj i izađi w upiši tabelu na disk i izađi q izađi bez čuvanja promjena Kreiraj novu oznaku g kreiraj novu prazna tabela GPT particija G kreirajte novu praznu SGI (IRIX) particionu tabelu o kreirajte novu praznu DOS particionu tabelu s kreirajte novu praznu tabelu Sun particija

Naš zadatak je da uradimo delete a partition onoliko puta koliko je potrebno da potpuno očistite disk od particija, a zatim kreirate novu koristeći add a new partition. Ne zaboravite da zapišete promjene, tj write table to disk and exit. Jeste li uspjeli? Savršeno.

Sada kreiramo sistem datoteka na disku. Uobičajeni ext4 je sasvim dovoljan, unatoč različitosti mišljenja na mreži da disk mora biti formatiran u nekom od datotečnih sistema Apple. U stvarnosti, ovo samo komplikuje proces pripreme bez ikakve koristi.

Unesite naredbu sudo mkfs.ext4 /dev/sda1. Gotovo.

Sada moramo saznati UUID naše nove particije.
Uđimo ls -lha /dev/disk/by-uuid i vidimo nešto ovako:

Kopirajte UUID sa našeg sda1 u zasebnu tekstualnu datoteku ako ne koristite napredni međuspremnik sa istorijom.

Sada treba da kreiramo fasciklu u koju ćemo montirati naš disk i dati mu odgovarajuća prava pristupa.

sudo mkdir /mnt/tm && sudo chmod -R 777 /mnt/tm && sudo chown pi:pi /mnt/tm

Montirajte disk. Da biste to učinili, uredite konfiguracijsku datoteku pomoću naredbe

sudo nano / etc / fstab

nano u ovom slučaju, naziv uređivača instaliranog u sistemu, koji radije koristim.

Unesite promjene u otvorenu datoteku dodavanjem sljedećeg reda u nju

UUID=b32c00d8-0aa8-4ec4-b01f-18cbade45e7c /mnt/tm ext4 nofail,defaults 0 2

ali sa vašim UUID-om iz prethodnog koraka. Trebalo bi izgledati ovako:

Sačuvajte promjene klikom Ctrl + O і ući, a zatim izađite iz uređivača klikom Ctrl + X.

Ponovo pokrenite Raspberry Pi naredbom sudo reboot i nakon ponovnog pokretanja ponovo se prijavite putem SSH-a.

Ubij tim df -h i uvjerite se da je pogon montiran na sistem na mjestu /mnt/tm.

Odlično, disk je spreman za rad.


Instalacija i konfiguracija NETATALK-a (opcija 1)

Instaliramo:

sudo apt-get install netatalk -y

Sve konfigurišemo u istom editoru nano:

sudo nano /etc/netatalk/afp.conf

I pravimo sadržaj konfiguracijske datoteke upravo ovako:

‌; ; Netatalk 3.x konfiguracijski fajl; [Global] ; Globalna podešavanja servera oponašaju model = TimeCapsule6,106 [Time Machine] putanja = /mnt/tm vremenska mašina = da validni korisnici = pi ; [Kuće] ; baziran regex = /xxxx ; [My AFP Volume] ; put = /path/to/volume ; [My Time Machine Volume] ; put = /putanja/do/sigurnosne kopije; vremenska mašina = da`

Ne zaboravite sačuvati rezultat uz pomoć Ctrl + O → Enter → Ctrl+X

Fajl je sada uređen nsswitch.conf, dodajući na kraju reda hosts: dodatne vrijednosti mdns4 mdns.

sudo nano /etc/nsswitch.conf

Rezultat bi trebao izgledati ovako:

# /etc/nsswitch.conf # # Primjer konfiguracije GNU Name Service Switch funkcionalnosti. # Ako imate instalirane pakete `glibc-doc-reference' i `info', pokušajte: # `info libc "Prebacivanje usluge imena"' za informacije o ovoj datoteci. passwd: grupa fajlova: fajlovi senka: fajlovi gshadow: fajlovi hostovi: fajlovi mdns4_minimal [NOTFOUND=povratak] dns mdns4 mdns mreže: fajlovi protokoli: db fajlovi services: db fajlovi eteri: db fajlovi rpc: db fajlovi netgroup: nis

Ponovo pohranjujemo promjene Ctrl + O → Enter → Ctrl+X

Zatim ostaje samo pokrenuti usluge:

sudo service avahi-daemon start sudo service netatalk start

I provjerite njihov učinak u timovima:

sudo service netatalk status

to

sudo service avahi-daemon status

Rezultat bi trebao izgledati ovako:

Ostaje samo da odete na macOS postavke, odaberete odjeljak Time Machine i vidite naš Raspberry Pi u dostupnim diskovima.

Navodimo kao login pi, kao lozinka - ona koja se koristi za SSH pristup.

Gotovo, standardna opcija preko Netatalka je konfigurisana. Sada, kad god je vaš Mac na istoj lokalnoj Wi-Fi mreži kao Raspberry Pi, sigurnosne kopije će se automatski napraviti na vašem disku.

Sada razmotrite alternativu u obliku Samba protokola, koji se smatra pouzdanijim.

Instalacija i konfiguracija SAMBA (opcija 2)

Sambu instaliramo:

‌sudo apt-get install samba

Postavljamo korisničku lozinku (za istog pi korisnika) i uređujemo konfiguraciju. Prva lozinka:

‌sudo smbpasswd -a pi (možete koristiti isto kao i za SSH).

I onda je konfiguracija Sambe sve u istom editoru nano:

‌sudo nano /etc/samba/smb.conf

Blokiraj sadržaj [global] bi na kraju trebalo izgledati ovako:

[globalna] sigurnost = šifriranje korisnika lozinke = tačna mapa za gosta = loš korisnički račun gosta = niko

Na samom kraju konfiguracijske datoteke dodajte novi blok:

[TimeCapsule] comment = Putanja vremenske kapsule = /mnt/tm za pregledavanje = da za pisanje = da kreiranje maske = 0600 maska ​​direktorija = 0700 reflektor = ne vfs objekti = catia fruit streams_xattr fruit:aapl = da voće:vremenska mašina = da

I pohranjujemo rezultat: Ctrl + O, ući, Ctrl + X.

Ponovo pokrenite uslugu:

‌sudo systemctl restart smb.service

urađeno Ostaje, kao iu slučaju Netatalka, pronaći disk na listi predstavljenoj u panelu postavki Time Machinea.

Instalacija i konfiguracija Homebridge-a na Raspberry Pi

Pa, uspješno smo stigli do najmasovnijeg bloka članka.

homebridge je server baziran na NodeJS-u koji koristi Homekit API za necertificiranu integraciju uređaja i početnu podršku za Apple HomeKit

Teškoća konfigurisanja Homebridge-a je u tome što njegovi dodaci podržavaju širok spektar protokola i uređaja, čineći ih vidljivim i upravljivim sa Apple HomeKit. U skladu s tim, svaki dodatak je konfiguriran na svoj način, često potpuno drugačiji od svog kolege za drugi uređaj.

Počnimo. Kao i obično, Raspberry Pi-u pristupamo preko SSH-a i izvodimo nekoliko koraka.

Instaliranje Node.js

Imate mogućnost da kopirate i zalijepite cijeli blok koda u Terminal. U apsolutnoj većini slučajeva to je dovoljno. Ali ako se dogodilo da u nekoj fazi instalacija nije uspjela, unesite preostale naredbe iz bloka jednu po jednu.

# postavljanje repo curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - # instaliraj Node.js sudo apt install -y nodejs gcc g++ napravi python net-tools # test čvor radi node -v # nadogradnja npm (verzija 6.13.4 ima problema sa git zavisnosti) sudo npm install -g npm

Instalacija Homebridge i Homebridge Config UI X

Za početak, postavimo osnovu sljedećom naredbom...

‌sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x

...i pokrenite ga kao sistemsku uslugu.

‌sudo hb-service install --user homebridge

Konfigurisanje Homebridge-a preko web sučelja

Idite na adresu u pretraživaču na vašem računaru http://<ip address of your server>:8581 gde umesto <ip address of your server> i dalje isti IP sa samog početka članka, u mom slučaju

Zadane vrijednosti korisnika i lozinke su iste: admin

Preporučujem da odmah odete na stavku menija "Korisnici" i tamo promijenite zadane vrijednosti na sigurnije.

Jesi li to uradio? Odlično, sljedeće ćemo konfigurirati dodatke.

Posjedovanje raznovrsne opreme kod kuće diktira koje dodatke trebamo instalirati. Sasvim je moguće da će u vašem slučaju skup dodataka biti malo drugačiji, ali na primjeru moje konfiguracije možete dobiti ideju na koje nijanse možete naići u procesu njihovog postavljanja.

Moj set dodataka u vrijeme pisanja:

  • Homebridge UI (uključeno u osnovnu konfiguraciju i nema vlastite postavke)
  • nijansa (za kontrolu osvetljenja Philips nijansa)
  • Apple TV daljinski (za kontrolu set-top box uređaja Apple TV)
  • Mqttthing (za menadžment Guyverova lampa з firmware iz Whilsera)
  • Samsung Tizen (za kontrolu Smart TV-a Samsung sa Tizen OS)
  • Vrijeme Plus (za automatizaciju pametne kuće u zavisnosti od vremenskih uslova)
  • Yeelight Wi-Fi (za kontrolu lampe Xiaomi Yeelight)

Idemo jedan po jedan.

Postavke dodatka za Hue

Da biste instalirali bilo koji dodatak u Homebridge, dovoljno je otići na odgovarajuću karticu web sučelja, u traku za pretraživanje uneti naziv željene pegle i odabrati dodatak sa liste dostupnih. Preporučujem da obratite pažnju na oznaku "🛡Verified", verziju i datum ažuriranja dodatka (ako ga autor nije ažurirao par godina, velika je šansa da neće raditi) i obavezno otvorite vezu do početne stranice dodatka, koja je obično detaljno opisana u procesu instalacije.

Kliknite na dugme "Instaliraj" na potrebnom dodatku i sačekajte minut ili dva dok se dodatak ne instalira.

Dodatak Homebridge Hue prilično jednostavan za postavljanje. Vi samo trebate postaviti zadano ime koje će biti prikazano u Homebridge logovama i odabrati kojim tipom kompatibilnih uređaja će upravljati dodatak. U mom slučaju, to je samo osvetljenje Philips Hue, pa čak i prva verzija čvorišta, je okrugla.

Nakon što unesete podatke i obavezno sačuvate rezultat, potrebno je samo pritisnuti centralno dugme na čvorištu Philips Hue i pričekajte 15 sekundi dok dodatak ne prepozna čvorište. Gotovo!

Ostaje samo da podignete iPhone, usmerite njegovu kameru na QR kod koji se nalazi na kartici "Status" web interfejsa Homebridge i dodate ga kao most u svoj HomeKit.

Ako je HomeKit kao takav već unapred konfigurisan (odabran Apple TV ili iPad kao glavno čvorište, dodatne sobe itd.), zatim će korak po korak čarobnjak odmah ponuditi da distribuira sve pronađene Hue rasvjetne uređaje u odgovarajuće prostorije i svakom uređaju dati ime. U svojoj dnevnoj sobi, na primjer, imam lampe "Ceiling 1", "Ceiling 2" i "Ceiling 3", ali sam ih pomoću samog HomeKit-a na iPhone-u (stavka "Kombiniraj sa drugim uređajima") kombinovao u logična grupa "Gornje svjetlo", meni je zgodnije. Istovremeno, u istoj dnevnoj sobi imam „podnu lampu“ i „noćnu lampu“ - odvojene uređaje, ali Siri savršeno razumije širok spektar komandi bez ikakve dodatne obuke:

  • "Upali svjetlo u dnevnoj sobi (sve lampe u dnevnoj sobi svijetle)"
  • "Upali podnu lampu"
  • "Jačina noćnog svjetla je dvadeset posto"
  • "Upali noćno svjetlo"
  • "Ugasi gornje svjetlo"
  • "Plava boja na podnoj lampi"
  • "Ugasi svjetla u dnevnoj sobi (ugasi sva svjetla u dnevnoj sobi)"
  • "Ugasite sva svjetla (gasite rasvjetu u cijelom stanu)"

I tako dalje. Ako ste ga ispravno konfigurisali Apple-porodične, relevantne i apsolutno logične komande automatski postaju dostupne svim članovima koji su ušli u vašu porodicu Apple ID.

Postavke dodatka Apple TV daljinski

Koristim ovaj dodatak za jednu jedinu svrhu: da napravim dodatni prekidač za konzolu Apple TV. Činjenica je da u Apple HomeKit ima mogućnost programiranja, na primjer, uključivanja reprodukcije albuma ili liste za reprodukciju prema unaprijed određenim uvjetima, kao što je "Kad dođem kući". I sve bi bilo u redu, ali ako set-top box u ovom trenutku spava, prisustvo takvog scenarija ga ne može probuditi. Ali dodatni virtuelni prekidač je moguć. Išli smo:

Korak 1. Instaliramo uslugu za hvatanje akreditiva Apple TV

sudo npm install -g node-appletv-x

Korak 2. Tražimo set-top boxove dostupne na lokalnoj mreži Apple TV

sudo appletv par

Korak 3. Kreiramo par sa željenim prefiksom. Izlaz konzole će izgledati otprilike ovako:

% appleTV uparivanje ✔ Povezivanje sa dnevnom sobom ✔ Pokretanje uparivanja ? Unesite 4-cifreni pin koji se trenutno prikazuje u dnevnoj sobi

Na stepenicama ‌? Enter the 4-digit pin that's currently being displayed on... na ekranu odabranog set-top box uređaja Apple TV, pojavit će se standardni četverocifreni kod za uparivanje s daljinskim upravljačem (u našem primjeru, to će biti 1234), koji se mora ubiti upravo tamo u konzoli.

% appleTV uparivanje ✔ Povezivanje sa dnevnom sobom ✔ Pokretanje uparivanja ? Unesite 4-cifreni pin koji se trenutno prikazuje na dnevnoj sobi 1234 ✔ Dovršavanje akreditiva za uparivanje: 77346115-ED48-46A8-A288-

Umjesto toga <snip> bit će nekoliko redova mješavine slova i brojeva, potrebno ih je kopirati u posebnu tekstualnu datoteku u cijelosti, počevši od prvog broja u retku Credentials:. Malo kasnije ove iste akreditacije veoma će nam trebati.

Korak 4. Dodajte sljedeći blok u konfiguracijski odjeljak Homebridge web sučelja na kartici "Konfiguracija". "platforms": [

{ "platforma": "AppleTvPlatform", "name": "Apple TV platforma", "devices": [ { "name": "Gostinaâ", "credentials": "77346115-ED48-46A8-A288- ", "isOnOffSwitchEnabled": istina, "onOffSwitchName": "Apple TV" } ] },

...i u nizu "credentials": samo ubacite puni sadržaj tekstualne datoteke iz prethodnog koraka.

Biramo bilo koji naziv za prefiks, "Guest house" je ovdje samo na primjer.

Korak 5. Instaliramo sam dodatak.

Na kartici "Moduli" web interfejsa Homebridge ukucajte u traku za pretragu  Apple TV Remote i pritisnite dugme "Instaliraj". Nakon instaliranja dodatka, od vas će biti zatraženo da ponovo pokrenete Homebridge, što se radi pritiskom na odgovarajuće dugme.

To je to, pojavio se novi prekidač na iPhone-u u HomeKit-u, koji se sada može dodati u sve scenarije gdje trebate automatski uključiti set-top box.

Glasovne komande poput „Siri, uključi Apple TV" ili "Siri, isključi Apple TV" su također automatski podržani. Štaviše, ako konfigurišete nekoliko set-top box uređaja u različitim prostorijama, Siri će također automatski početi razumjeti zahtjev da ga isključi Apple TV u određenoj prostoriji ili sve odjednom.

Zapravo, ovaj dodatak se ubrzano razvija, već zna kako prepoznati Bundle ID za aplikacije koje rade na konzoli i intervenirati u njihov rad, na primjer, pauziranje filma na Netflixu. Ali s tim ćete se sami nositi, ako postoji želja.

Konfiguriranje dodatka Mqttthing

Koristim ovaj dodatak uz gore spomenutu Guyver lampu - domaću lampu sa Arduino pločom i 16x16 matricom adresabilnih LED dioda. Sama lampa mora biti napunjena firmverom iz Whilsera. Neka sila bude s vama!

Korak 1. Instaliranje MQTT brokera

Izvršavamo nekoliko naredbi. Ne rade u serijama, tako da ih unosimo u konzolu jedan po jedan.

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sourceces.list.d/
sudo wget 
sudo apt update
sudo apt install mosquitto mosquitto-clients
sudo /etc/init.d/mosquitto stop
sudo nano /etc/mosquitto/mosquitto.conf

Posljednja komanda pokreće već poznati editor nano, u kojem sadržaj otvorene datoteke zamjenjujemo sljedećim:

# Postavite svoju lokalnu konfiguraciju u /etc/mosquitto/conf.d/ # # Potpuni opis konfiguracionog fajla je na # /usr/share/doc/mosquitto/examples/mosquitto.conf.example # pid_file /var/run/ mosquitto.pid allow_anonymous istinit slušatelj 1883 persistence true persistence_location /var/lib/mosquitto/ log_dest tema log_type error log_type upozorenje log_type obavijest o tipu podataka veza_messages istinito log_timestamp true include_dir /etc/mosquitto/confd.

Kao obično, Ctrl + O, ući, Ctrl + X, a zatim ponovo pokrenite brokera pomoću naredbe

‌sudo /etc/init.d/mosquitto start

MQTT broker je instaliran.

Korak 2. Instaliranje dodatka Mqttthing

Obično idemo na karticu "Moduli" u web interfejsu Homebridge, tražimo Mqttthing i kliknite na "Instaliraj".

Korak 3. Mqttthing konfiguracija dodatka

Svaka Guyver lampa ima svoj ESP ID čip. Na primjer, ESP-3bd20b. Ako ste sami napravili i upalili lampu, onda ste savršeno informisani o tome, ako ne, onda stavite lampu u način uparivanja, a kada se povežete na vašu Wi-Fi mrežu, odgovarajući dijaloški okvir na iPhoneu će prikazati traženi ID . Zapisati.

  1. Isključite napajanje lampe;
  2. Isključite ruter;
  3. Uključite napajanje lampe;
  4. Na iPhone uređaju idite na "Postavke → WiFi"
  5. Odaberite nezaštićenu mrežu sa SSID-om kao što je "ESP12345678" i kliknite "Konfiguriraj WiFi" u dijaloškom okviru
  6. Čip ID će biti potreban na samom dnu prozora za konfiguraciju

Ako je lampa već ranije konfigurisana, možete je jednostavno isključiti, uključiti ruter i ponovo uključiti lampu - stare postavke će se pokupiti. Ako je ovo prvo povezivanje lampe, uključite ruter i odaberite svoju mrežu u listi postavki, a zatim unesite sve potrebne podatke, kao što su lozinka kućnog Wi-Fi-ja i IP adresa Raspberry Pi-a.

Otvorite karticu "Konfiguracija" web sučelja Homebridge i u odjeljku "accessories": [ unesite tako ogroman dio koda, zamjenjujući prethodni ID sa ESP-3bd20b na svoju ruku:

{ "accessory": "mqttthing", "type": "lightbulb", "name": "Nightlight", "url": "http://127.0.0.1:1883", "mqttPubOptions": { "retain": false } , "topics": { "getOn": "homeassistant/light/ESP-3bd20b/status", "setOn": "homeassistant/light/ESP-3bd20b/switch", "getBrightness": "homeassistant/light/ESP-3bd20b /brightness/status", "setBrightness": "homeassistant/light/ESP-3bd20b/svjetlina/set", "getRGB": "homeassistant/light/ESP-3bd20b/rgb/status", "setRGB": "homeassistant/light /ESP-3bd20b/rgb/set" }, "onValue": "ON", "offValue": "OFF" }, { "accessory": "mqttthing", "type": "televizija", "name": "Efekti noćnog svjetla", "url": "http://127.0.0.1:1883", "topics": { "setActive" : " homeassistant/light/ESP-3bd20b/switch", "getActive": "homeassistant/light/ESP-3bd20b/status", "setActiveInput": "homeassistant/light/ESP-3bd20b/effect/set", "getActiveInput" : " homeassistant/light/ESP-3bd20b/effect/status" }, "inputs": [ { "name": "Confetti", "value": "Confetti" }, { "name": "Fire", "value ": "Vatra" }, { "name": "Rainbow Vert.", "value": "Rainbow Vert." }, { "name": "Rainbow Horrors.", "value": "Rainbow Horrors." } , { "name": "Promjena boje", "value": "Promjena boje" }, { "name": "3D ludilo", "vrijednost": "3D ludilo" }, { "name": "3D oblaci" , " value": "3D Clouds" }, { "name": "3D Bench", "value": "3D Bench" }, { "name": "3D Plasma", "value": "3D Plasma" } , { "name": "Rainbow 3D", "value": "Rainbow 3D" }, { "name": "Peacock 3D", "value": "Paun 3D" }, { "name": "Zebra 3D" , " value": "Zebra 3D" }, { "name": "Forest 3D", "value": "Forest 3D" }, { "name": "Ocean 3D", "value": "Ocean 3D" } , { "name": "Snowfall", "value": "Snowfall" }, { "name": "Matrix", "value": "Matrix" }, { "name": "Fireflies", "value": "Fireflies " }, { "name": "Aquarium", "value": "Aquarium" }, { "name": "Starfall", "value": "Starfall" }, { "name": "Paintball", "value ": "Paintball" }, { "name": "Spirala", "value": "Spirala" }, { "name": "Topla svjetlost", "value": "Topla svjetlost" }, { "name ": "Klatno", "value": "Klatno" }, { "name": "Blink", "value": "Blink" }, { "name": "Policijska sirena", "value": "Policijska sirena " } , { "name": "Drift", "value": "Drift" }, { "name": "Flock", "value": "Flock" } ], "onValue": "ON", "offValue ": "ISKLJUČENO" }

urađeno IN Apple U HomeKit-u su se pojavila dva nova uređaja, lampa "Night Light" i "Night Light Effects". Oni su međusobno povezani i njihova svrha je sasvim jasna. Ako želite, možete ih preimenovati u konfiguraciji.

Nažalost, autor firmvera je napisao parametre na ruskom, pa ćete sa takvom konfiguracijom morati kontaktirati Siri i na ruskom. Ali ako sa Siri razgovarate na engleskom, možete popraviti svaku kodnu točku na sljedeći način:

{ "name": "Fire", "value": "Ogon" },

Tada će rezultat na iOS-u izgledati ovako:

Postavke dodatka Samsung Tizen

Korak 1. Provjera kompatibilnosti televizora

U kontrolnoj tabli rutera dajte televizoru statički lokalni IP, kao što smo to učinili za Raspberry Pi na samom početku. Na primjer, u mom slučaju to je 192.168.50.100.

Idite na adresu u pretraživaču na vašem računaru  http://TV_IP:8001/api/v2, što u mom slučaju znači http://192.168.50.100:8001/api/v2/

Ako vidite stranicu sa gomilom servisnih informacija koja izgleda otprilike ovako...

{"device":{"FrameTVSupport":"false","GamePadSupport":"true","ImeSyncedSupport":"true","OS":"Tizen","TokenAuthSupport":"true","VoiceSupport":"false","countryCode":"UA","description":"Samsung DTV RCR","developerIP":"0.0.0.0","developerMode":"0","duid": ......

...onda to znači da postoje šanse za uspjeh. Ali morate shvatiti da nisu svi modeli televizora Samsung kompatibilan sa dodatkom. Na primjer, oni koji zahtijevaju identifikaciju PIN-a neće raditi.

Kopirajte vrijednost polja sa stranice usluge"wifiMac": i pripremite daljinski upravljač od TV-a, neka vam bude pri ruci.

Korak 2. Instaliranje dodatka

Ništa novo, tražimo dodatak na zahtjev Samsung Tizen, odaberite željeno (autorstvo @tavicu) i instalirajte.

Nakon pokretanja, idite na postavke i tamo unesite sljedeće vrijednosti:

Naziv "TV" je sasvim dovoljan, jer Siri savršeno razumije zahtjev za uključivanje televizora u dnevnoj sobi, u kojoj jedva da imate 2 televizora. Ona takođe odlično razume komandu „upali TV u spavaćoj sobi“, a da još jednom ne povuče televizor u dnevnoj sobi.

Korak 3. Povezivanje na TV

Ovdje je sve jednostavno: uzmite daljinski upravljač televizora i pričekajte da se na ekranu pojavi kontekstni meni s upozorenjem o pokušaju nekog uređaja da preuzme kontrolu nad televizorom. Televizor, naravno, mora biti uključen. Kada se u gornjem desnom uglu ekrana pojavi odgovarajući zahtev, pomoću daljinskog upravljača za TV izaberite dugme Allow. Gotovo.

Korak 4. Dodajte TV u Apple HomeKit

Da, za razliku od prethodnih slučajeva, TV se neće magično pojaviti na listi uređaja u vašem domu. Stoga uzimamo iPhone u svoje ruke i korak po korak:

  1. Pokrenite aplikaciju Home i na glavnoj stranici pritisnite + u gornjem desnom uglu;
  2. Odaberite "Dodaj dodatnu opremu";
  3. Na dnu ekrana kliknite na "Bez koda ili skeniranja";
  4. Na sljedećem ekranu odaberite svoj TV;
  5. Kada se od vas zatraži da unesete kod za podešavanje HomeKit, kliknite na "Koristi kameru";
  6. Usmjerite kameru na QR kod na kartici Homebridge Status.

Korak 5. Postavke dodatka

Duboko ukopavši dokumentaciju na dodatak, možete natjerati Siri da pokreće određene programe na TV-u sa liste instaliranih, pauzira ih i tako dalje. Sada ćemo, kao vježbu, promijeniti funkcionalnost jednog jedinog gumba na virtuelnom daljinskom upravljaču Apple Daljinski, ugrađen u "zavjesu" iOS Control Center-a.

Ovo je dugme ℹ︎ (informacije), koje podrazumevano prikazuje informacije o trenutnom režimu slike u gornjem delu TV ekrana. Istovremeno, dosegnite daljinski upravljač Apple Ne postoji način da dodate Remote na listu programa instaliranih na TV-u. I sada ćemo to popraviti.

Idite na postavke dodatka, odjeljak "Mapiranje ključeva", potražite polje "INFORMACIJE" i promijenite njegovu vrijednost u KEY_HOME. Ponovo pokrenite Homebridge i voila - dugme ℹ︎ na virtuelnom daljinskom otvara glavni meni aplikacije! Virtuelni daljinski je imao smisla.

Postavljanje dodatka Weather Plus

Korak 1. Kreirajte OpenWeather nalog

Idemo na stranicu https://home.openweathermap.org i registrirajte račun, dobra stvar je što je besplatan.

Korak 2. Generisanje API ključeva

Idite na željenu karticu OpenWeather ličnog naloga i, nakon što ste naveli naziv ključa, kliknite na dugme "Generiraj".

Korak 3. Instalacija i konfiguracija dodatka Weather Plus

Tražimo i instaliramo željeni dodatak uobičajenom metodom, a zatim nastavljamo s njegovim postavkama. Rezultat bi trebao izgledati otprilike ovako:

U prognozi me lično zanimaju samo vrijednosti za sljedeći sat, pa su ostale jednostavno onemogućene:

A kako nepotrebni virtualni vremenski senzori ne bi smetali nepotrebnim aktivacijama, onemogućujemo ih u odgovarajućem odjeljku Sakrij vrijednosti. Poželjno je onemogućiti:

  • Zračni pritisak
  • Cloud Cover
  • Tačka rose
  • Temperatura Apparent
  • Smjer vjetra
  • UV indeks
  • Brzina vjetra
  • Brzina vjetra Maks

I kliknite na "Sačuvaj" na samom dnu prozora postavki.

Kao rezultat toga, u interfejsu Apple HomeKit će prikazati vrijednosti temperature i vlažnosti u narednih sat vremena, kao i dva virtuelna senzora "Snijeg" i "Kiša", koji se mogu koristiti u različitim scenarijima. Na primjer, programirao sam HomeKit automatizaciju, u kojoj, kada se pojavi kiša ili snijeg u prognozi za blisku budućnost, Guyver lampa pokazuje odgovarajuću lokvicu ili efekat padajućih pahuljica na minut. Istovremeno, efekat će se aktivirati samo između 8:00 i 23:00 i samo ako je neko kod kuće. U drugim slučajevima, malo je vjerovatno da će biti potrebna upozorenja da uzmete kišobran ili nosite vodootpornu odjeću.

Postavljanje Yeelight WiFi dodatka

Na zahtjev Yeelight Homebridge nudi mnogo dodataka za instalaciju, uključujući i jedan provjereni. Ali više volim drugu, u kojoj se prelazi između stanja odvijaju što je moguće lakše, a ne u stilu „noć je pala na logor“. Osim toga, podržava adaptivno osvetljenje od Apple, ali ovdje je standardna aplikacija Xiaomi nikada ovo nisam naučio u godini otkako se ova funkcija pojavila u HomeKit-u.

Važno! Ostavite upaljenu samo jednu sijalicu Xiaomi, da u početku ne bude zabune. Radićemo sa njom.

Nakon instaliranja dodatka, ponovo pokrenite Homebridge i potražite nešto poput ovoga u dnevniku: ‌[Yeelight] Received advertisement from ab1234. Ovo je uslovno ab1234 i tu je tvoja sijalica. Možda će vrijednost biti color-ab1234, onda ćeš raditi s njim.

Idite na postavke dodatka i tamo zalijepite sljedeći dio koda:

{ "platforma": "yeelight", "name": "Yeelight", "transitions": { "power": 400, "brightness": 400, "color": 1500, "temperature": 1500 }, "multicast" : { "interface": "0.0.0.0" }, "defaultValue": { "color-ab1234": { "name": "Podna lampa", "crna lista": [ "set_hsv" ] } } }

Gdje umjesto color-ab1234 treba biti vrijednost iz vašeg dnevnika, a umjesto toga ‌"name": "Торшер" bilo koji naziv koji odražava mjesto gdje je lampa ušrafljena: noćna lampa, svjetiljka, strop, itd.

Sačuvajte zalijepljeni kod klikom na dugme Sačuvaj i ponovo pokrenite Homebridge. Gotovo, sijalica se pojavila u HomeKit-u pod imenom koje ste odabrali. Ostale Yeelight sijalice se dodaju jednu po jednu pritiskom na dugme "+ DODAJ PLATFORMU" tamo u postavkama dodatka na potpuno isti način.

Ažuriranje Homebridge i Node.JS na Raspberry Pi

Ažuriranje (i vraćanje verzije) samog Homebridgea je prilično jednostavno: potrebno je da kliknete na broj trenutne verzije u web interfejsu i izaberete željenu verziju sa liste u dijaloškom okviru.

Ali sa ažuriranjem Node.JS-a i NPM-a, koji će prije ili kasnije biti potreban prilikom instaliranja ažuriranja nekog plugina, to nije tako lako. Preciznije, komande nisu baš one opisane u standardnim uputstvima.

Node.JS se ažurira naredbom:

sudo hb-service update-node

I NPM čak dva uzastopna:

sudo npm cache clean -f
sudo npm install -g npm

Nažalost, ni sam Homebridge, ni njegovi dodaci, ni "šine" po kojima se vozi ne mogu se automatski ažurirati. A svaki dan ulaziti u kontrolnu tablu i provjeravati ima li nečeg novog prije ili kasnije postaje dosadno. Dakle, da bi automatizirali proces, osmislili su poseban widget za iOS 14 koji prati status svih Homebridge čvorova i može vizualno i PUSH porukama signalizirati prisutnost ažuriranja ili bilo kakvih problema.

Instaliranje widgeta Homebridge Status

Kao što vidite, widget pokazuje mnogo korisnih i ne baš korisnih informacija o vašem Homebridgeu, ali najvredniji dio toga su informacije o stanju samog Homebridgea, njegovih dodataka i Node.JS.

Da bismo dobili sam widget, prvo nam je potrebna njegova nadređena aplikacija. Instalirajte ga na svoj iPhone iz App Store-a.

Razvojni tim: Simon B. Stovring
Cijena: besplatno+

A sada počinje prilično dug, ali uzbudljiv proces instaliranja widgeta. Instalirat ćemo ga uz pomoć druge skripte pod nazivom ScriptDude unutar programa Scriptable. ScriptDude je dobar jer prati promjene u kodu mase skripti koje se nalaze u galeriji na adresi scriptables.net. Možda ćete tamo pronaći još nešto korisno za vas, ali sada imamo jedan zadatak i riješit ćemo ga.

Korak 1. Instalirajte Scriptable.app iz App Store-a.

Korak 2. Otvorite stranicu u iPhone pretraživaču scriptdu.de i kliknite na dugme Instaliraj ScriptDude.

Korak 3. Na stranici koja se otvori kliknite na dugme Copy Installer i, nakon što ste primili poruku o kodu skripte u našem međuspremniku, kliknite na dugme Open Scriptable.

Korak 4. Umetnite sadržaj međuspremnika u prazno polje sa naslovom Untitled Script i pritisnite dugme Play ▶️.

Korak 5. Na ekranu koji se otvori kliknite na vezu Pregledajte scriptables.net a na sljedećoj stranici dodirnite oznaku (tehnologija). Ura, Homebridge Status skripta je prva na listi! Slobodno kliknite na dugme Download with ScriptDude.

Korak 6. Pritisnemo Install i, nakon što smo pristali na dva upozorenja, vidimo željenu skriptu na listi instaliranih. Glavni ekran Scriptables sada izgleda kao četvrti snimak ekrana ispod, a mi kliknemo na tri tačke u pločici Homebridge Status i idemo na opcije za uređivanje.

Korak 7. Prije svega mijenjamo vrijednost overwritePersistedConfig з lažan na istinski

overwritePersistedConfig = istina

da sačuvate postavke skripte na iCloud.

Korak 8. Spuštajući se malo niže, uređujemo tri polja: IP adresu i Homebridge port (zapamtite, ovo je već spomenuto http://<ip address of your server>:8581 gde umesto <ip address of your server> i dalje isti IP sa samog početka članka, u mom slučaju ) i slažete se s upozorenjem o traženju uređaja u lokalnoj mreži. Ura, scenario radi!

Ostaje samo da dodate widget na ekran iOS 14 na isti način kao i svaki drugi. Nakon dodavanja, potrebno je otići na postavke widgeta (dug dodir na njega) i odrediti niz parametara: odabrati željenu skriptu, navesti šta da radite prilikom interakcije s njom i unesite sljedeću vrijednost u polje Parametar

USE_CONFIG:purple.json

Nakon toga, ne zaboravite se vratiti na kod skripte i vratiti vrijednost

overwritePersistedConfig = lažno

To je sve. Vidžet radi, a kada dođe do ažuriranja za Node.JS, Homebridge ili njegove dodatke, dobićete PUSH obaveštenja sa relevantnim sadržajem.

Visnovok

Mogućnosti Apple HomeKit mi je mnogo puta porastao. Smislio sam gomilu skripti i automatizacija koje olakšavaju život meni i mojim najmilijima.

Na primjer, u mračno doba dana, prvog člana porodice koji se vrati kući dočekat će upaljena svjetla spolja, u hodniku, dnevnoj sobi i kupatilu - i sada nema potrebe trčati do prekidača sa neopranim rukama.

Kada i posljednji član porodice izađe iz kuće, HomeKit će pažljivo isključiti televizore, svjetla i općenito sve što se može isključiti. A ako je kod kuće barem jedna osoba, sa početkom sumraka će se upaliti vanjska rasvjeta i neke lampe iznutra.

Opet, Siri može kontrolirati sve povezane uređaje s potpuno logičnim komandama, od riječi do riječi istim onima koje biste pitali nekoga u kući kada trebate nešto uključiti ili isključiti u određenoj prostoriji. Samo više niko ne treba da trči u ovu sobu.

Jutarnja i večernja muzika iz Apple, na koji su pričvršćeni svjetlosni efekti Guyver lampe. Moguće je i druga rasvjeta raditi uz laganu muziku, ali nisam oduševljen efektom.

Općenito, scenariji primjene zavise samo od vaše mašte i neće opterećivati ​​novčanik, jer proizvodi s oznakom "Radi sa Apple HomeKit više nije jedini dostupan izbor.

U sljedećem članku ciklusa vi i ja ćemo se malo zabaviti: podučavat ćemo naše Raspberry Pi preuzmite torrente, pretvorimo ga u moćni medijski centar i retro igraću konzolu.

Stay tuned!

Udio
Yuri Stanislavsky

SwiftUI programer. Ja sakupljam vinil. Ponekad novinar. Vlasnik Nota Record Store-a.

Ostavite odgovor

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena*