Ensiaskeleet home assistantin kanssa

Käytän kotiautomaatiossa tällä hetkellä Ikean trådfri sarjaa, Ikea home smart ohjelmaa ja Google assistanttia. Periaatteessa täysin toimivaa ja yksinkertaista, mutta samalla jossain määrin rajoittunutta.

Pikaisen googletuksen perusteella näyttää siltä, että voin jättää nykyisen systeemin silleen ja listätä siihen Home Assistantin avulla ominaisuuksia ja joskus tulevaisuudessa jättää kaikki automaatio Home Assistantin tehtäväksi tai jos Homma ei tunnu hyvältä poistan koko Home Assistantin ja jatkaa vanhalla tyylillä ilman isompia ongelmia. Vaikkakin näyttää myös siltä, että vanhan systeemin jyrääminen kokonaan pois mahdollistaa enemmän ominaisuuksia Home Assistantiin.

Mikä siis on Home Assistant?

Home Assistant on periaatteessa tietokoneohjelma, jolla ohjatataan kodin laitteita valoista lämmitykseen ja turvakameroista kosteusantureihin. Se on open sourcea joten kuka tahansa voi auttaa sen kehityksessä ja myös tarkistaa koodin olevan turvallista. Se ei (välttämättä) tarvitse internet yhteyttä toimiakseen, mutta aika moni sen integraatioista (joita on kirjoitus hetkellä lähemmäs 2000 kappaletta) eli yhteyksistä toisiin ohjelmiin ja laitteisiin saattaa vaatia sen.

Home Assistantin voi asentaa vaikkapa rasberry pi koneeseen tai vastavaavaan. Muita vaihtoehtoja on esimerkiksi Docker tai vaikkapa asentaminen NASsiin. Itse asennan sen tässä vaiheessa virtuaalikoneeseen (VirtualBox) ja toivon, että sen saa tarvittaessa helposti sieltä siirrettyä vaikkapa sinne rasberryyn, koska en halua pitää pöytäkonetta jatkuvasti päällä.

Asennus

Asennukseen löytyy hyvät ohjeet Home Assistantin kotisivuilta get started osiosta. En niitä sen tarkemmin tässä käy lävitse, mutta lyhyesti. Ensiksi asensin virtualboxin.

sudo apt install virtualbox

Sen jälkeen ladataan sopiva vdi tiedosto ja kopioidaan se sopivaan paikkaan.
Virtualboxissa pitää muutama asetus laittaa kohdalleen ja sen jälkeen sen voi käynnistää.

Virtualboxiin laitettavat asetukset.

Virtuaalikoneen käynnistys

Jostain syystä minulla Home Assistant ei käynnisty ensimmäisellä kerralla asennuksen jälkeen vaan joutuu niin sanotusti laittamaan lekaa resetille virtuaalikoneessa ja sen jälkeen pelittää vallan mainiosti.

Aikansa raksuteltuaan Home Assistant käynnistyy virtuaalikoneeseen ja sen jälkeen sitä voi ohjata ja komentaa menemällä osoitteeseen

http://homeassistant.local:8123

Tämä saattaa hetken aikaa kestää ennen kuin osoite toimii ja jos se ei toimi ollenkaan kannattaa kaivaa DHCP serveriltä Home Assistantille sattunut IP numero ja käyttää sitä.

Onboarding

Ensimmäiseksi tehdään tili ja merkitään kartalle missä koti on. Seuraavassa ikkunassa kysellään mitä anonymisoitua dataa haluaa lähettää Home Assistantin tekijöille.

Seuraavassa ikkunassa klikkaillaan ne laitteet ja palvelut mitä on jo valmiiksi käytössä. Minun kohdalla automaattisesti tunnistui Google cast ja kaapelimodeemi. Ikean palvelut piti etsiä listasta. Käytännössä Ikean laitteiden asennus meni kirjoittamalla gatewayn IP osoite oikeaan kohti ja gatewayn pohjasta löytyvä turvakoodi oikealle riville ja klikata lähetä. Seuraavassa ikkunasta löytyy laitteet mitä on Gatewayssa käytössä. Samalla voi klikkailla laitteet oikeisiin alueisiin. Alue voi olla esimerkiksi huoneita ja ne mahdollistavat esimerkiksi valojen hallinan kerralla koko alueelle.

Valmiita integraatioita on melkoinen kasa ja niitä tulee koko ajan lisää. Listaa kannattaa selailla, koska kaikkia käytössä olevia mahdollisuuksia ei tunnisteta automaattisesti ja tällä viikolla listasta puuttuva laite tai palvelu saattaa ensi viikolla olla siellä.

Lovelace

Kun integraatiot on tehty ja klikataan valmista nappia, avautuu silmien eteen lovelaceksi nimetty ohjausnäkymä. Oletus näkymässä näkyy kaikki mitä on tässä vaiheessa asennettu ja siihen myös ilmestyvät automaattisesti kaikki uudet asiat mitä asennetaan.

Automations, Scenes, Scripts & Helpers

En ole itse käyttänyt enkä oikestaan viellä edes tutustunut kunnolla miten mitäkin tehdään ja mitä mikäkin on. Automations kuitenkin on se perusjuttu millä tehdään automaatioita. Scenet ovat ikään kuin tallennuksia mihin tilaan eri laitteet laitetaan. Esimerkiksi voisi olla vaikka iltavalaistus, jolloin yhdellä scenellä saadaan samat valot päälle tarvittaessa helposti. Scriptit ovat kokelma toimintoja, jotka voidaan ajaa aina samanlaisena. Periaatteessa tuon aiemman esimerkin voi tehdä myös sriptinä. Helpersit ovat ”apulaisia”, jotka mahdollistavat monimutkaisemmat automaatiot helpommin.

Näihin kaikkiin minun tarvitsee tutustua tarkemmin ajan kanssa. Sen tiedän jo nyt, että edessä on melkoinen urakka 🙂 Tavallaan Home Assistant on helppokäyttöinen, mutta onglemaksi muodostuu se, että mahdollisuuksia on ”liikaa”. Saman asian voi tehdä monella tapaa.

Ensimmäinen automaatio

Home Assistant käyttää YAML nimistä ohjelmointi kieltä, mutta sitä ei ole pakko opetella vaan perusasiat ja monta muuta asiaa voi tehdä graafisesti. Päätin tehdä ensimmäiseksi automaatioksi valojen syttymisen automaattisesti auringon laskiessa.

Kuvassa näkyy YAML koodi. Lyhyesti sanottuna homma toimii niin, että (trigger) liipaisimena toimii auringon lasku tai tarkemmin sanottuna liipaisu tapahtuu 45 minuuttia ennen auringon laskua. (Condition) ehtona toimii se, että olen kotona. 10 Sekunttia on määritelty ajaksi sen takia, etten saanut ehtoa toimimaan ilman sitä. (Action) Toiminta on sitten luonnollisesti se, että valot laitetaan päälle. Homma on ajastettu niin, että valot kirkastuvat hiljalleen puolen tunnin aikana ja ne päätyvät 80% kirkkauteen.

Sen verran täytyy tunnustaa, että vaikka automaatio sinällään onkin ensimmäinen minkä tein niin kuvasssa oleva versio ei ole ensimmäinen eikä kyllä myöskään varmastikaan viimeinen versio automaatiosta.

Tästä tämä pikku hiljaa lähtee!

Anacron

Tämä on jatkoa rsnapshotin asennukseen, mutta toimii yksinäänkin.

Anacron on siis tekee siis samaa kuin cron, mutta varmistaa sen, että ajastetut asiat tehdään vaikka tietokone olisi ollut sammutettuna ajastuksen hetkellä.

Jos anacron ei ole valmiiksi asennettuna, sen voi tehdä seuraavalla käskyllä.

sudo apt install anacron

Anacronin asentus tiedosto löytyy /etc/anacrontab. Tiedostossa on asetettu milloin päivittäiset, viikottaiset ja kuukausittaiset tekemiset olisi tarkoitus ajaa. Heti asennuksen jälkeen minun koneella se näytti kuvan kaltaiselta.

Anacron oletusasetukset

Tiedoston alussa määritellään ajoympäristöön liittyviä kohtia ja kolme alinta riviä määrittelevät mitä ajetaan. Kommentti rivit alkavat #-merkillä.

# These replace cron's entries
#Jakso          viive   nimi            käsky
1               5       cron.daily      run-parts --report /etc/cron.daily
7               10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

Jakso kertoo kuinka usein käsky ajetaan, Sen voi kirjoittaa numeroina monenko päivän välein käsky ajetaan tai @daily, @weekly tai @monthly. (Minulla tosin @weekly ei jostain syystä toiminut.)

Viive kertoo kuinka kauan tietokoneen käynnistyksestä odotetaan ennen kuin käsky ajetaan. Viiveeseen lisätään satunnainen minuutti määrä, jonka maksimi asetetetaan random_delay määreellä (oletus 0).

Nimi kertoo millä nimellä käsky näkyy raporteilla.

Viimeisenä on käsky mikä suoritetaan. Se voi olla käskynä suoraan tässä, linkki hakemistoon missä on suoritettavat scriptit tai linkki scriptiin. Scriptit ovat SH muodossa, eivät BASH. Jos käytät hakemistoa/scriptiä muista antaa tiedostolle ajo-oikeus!

Seuraava tärkeä paikka anacronille on /var/spool/anacron hakemisto. Sieltä löytyvät aikaleimat milloin käskyt ovat viimeksi ajettu. Leimat löytyvät saman nimisistä tiedostoista kuin käskyille annetut nimet etc/anacrontab tiedostossa. Halutessaan leiman voi tarkistaa vaikkapa cat käskyllä.

sudo cat /var/spool/anacron/cron.daily 

Anacron ajaa itsensä automaattisesti, mutta sen voi käynnistää manuaalisestikin vaikkapa näin.

sudo anacron -df

Konfiguraatio tiedoston vot tarkistaa käskyllä:

 sudo anacron -T

Jos kaikki on kunnossa käsky ei tulosta mitään, jos ei, se kertoo mitä anacron ei ymmärrä tiedostossa.

Tässä vaiheessa poistin crontabista varmuuskopio asiat ja varmistin, että anacron todella ajaa varmuuskopiot poistamalla /var/spool/anacron hakemistosta aikaleima tiedostot ja käynnistämällä koneen uudestaan ja toimiihan se! Lopullinen anacrontab tiedosto (tässä vaiheessa) minulla näyttää tällälaiselta.

En siis poistanut tuolta mitään vaan vain lisäsin omani tiedoston perään.

Kuten kaikissa minun kirjoituksissa, en ole guru! Nämä ovat enemmän tai vähemmän minun oman muistin tueksi millä olen näitä saanut toimimaan. Kerro toki, jos näistä on sinulle ollut hyötyä, mutta käytä näitä omalla vastuulla!

Gurujen kirjoittamaa löytyy vaikkapa näistä man sivuilta: anacron ja anacrontab

Rsnapshot asentaminen

Minulla on käytössä pelkkään rsynciin perustuva varmuuskopiointi. Cron ajaa x kertaa vuorokaudessa scriptin ja minun ei tarvitse huolentia asiasta. Paitsi, että tarvitsee. Ajatus oli alun perin, että homma tehdään niin yksinkertaisesti kuin vain mahdollista, scripti ajaa verkkokovalevylle varmuuskopiot ja rsync huoletii siitä, että samoja asioita ei tarvitse siirtää verkon yli joka kerta. Homma toimi ihan hyvin paitsi, että huomasin tuossa varmuuskopion sisältävän noin 700gigaa täysin turhaa, jota ei oikeastaan olisi tarvinnut säästää.

Päätin siis vaihtaa omat ”scriptit” oikeampaan varmuuskopio ratkaisuun. Valinta osui tällä kertaa rsnapshot nimiseen tuotteeseen . Se on kirjoitettu perlillä ja tukeutuu vahvasti rsynciin ja tiedostojen hard linkkeihin. Mukana on rsyncin hyvät puolet eli se siirtää vain muuttuneet tiedot ja hard link avulla saadaan monta eri snapshottia ilman, että tallennus tilaa tarvitaan kovinkaan paljoa enempää kuin yksi varmuuskopio tarvitsee, käytännössä tilaa tarvitaan suunnilleen yhden koko varmuuskopion ja muuttuneiden tietojen verran.

Jos haluat tehokkaan, monipuolisen ja suhteellisen helpon varmuuskopiointi ratkaisun, rsnapshot on sinulle. Paitsi, jos et ole valmis käyttämään asetustiedostoja ja cronia.

Asennus

Asensin rsyncin aluksi virtuaalikoneelle, että pääsen sitä rauhassa testailemaan ilman riskiä tietojen häviämisestä. Testipenkkinä toimii Ubuntu 20.10 ( sama kuin minuila on käytössä, mutta puhtaalla asennkusella.)

Asennus tapahtuu helposti yhdellä käskyllä ja sen jälkeen pääsee arvuuttelemaan asetuksia ja asetus tiedostoja. Ne eivät ole mallia osoita hiirellä ja klikkaa vaan ihan pitää itse tiedostoon kirjoittaa mitä haluaa rsnapshotin tekevän. Onneksi meille kuitenkin annetaan esimerkki tiedosto, koska muuten homma menisi aika vaikeaksi 😀

sudo apt install rsnapshot

Asetustiedosto ja asetukset

Rsnapshotin asetustiedosto löytyy (ubuntun tapauksessa) /etc/rsnapshot.conf . Huomiotava asia on, että asetustiedosto käyttää välilyönnin sijaan tabulaattoria. Asetuksista löytyy iso kasa vaihtoehtoja ja mahdollisuuksia, joista en tiedä läheskään kaikkia saatikka, että olisin tarvinnut kaikkia.

Käsittelen vain niitä asetuksia mitä jouduin muuttamaan, että sain homman pelittämään. Asiat käsitellään siinä järjestyksessä kuin ne tulevat esimerkki asetustiedostossa vastaan

Snapshot_root

Ensimmäiseksi pitää päättää minne varmuuskopioiden juurihakemisto osoittaa. Tämä tieto on kohdassa snapshot_root

snapshot_root /var/cache/rsnapshot

Oletusarvo on ”/var/cache/rsnapshot”. Itse laitoin tässä vaiheessa tämän osoittamaan kohtaan ”/media/jra/Varmauuskopio/”, koska ulkoinen kovalevy mounttautuu tuohon kohti. Myöhemmin laitan tämän osoittamaan verkkokovalevyyn.

No_create_root

Seuraava kohta mitä minun piti muuttaa oli poistaa #(uncommet) kohdasta ”no_create_root 1”, mutta vasta sen jälkeen, kun olin ajanut varmuuskopion ensimmäisen kerran. Oletusarvo tässä on ”0”. No_create_root asettaminen ykköseksi aiheuttaa sen, että rsnapshot ei tee varmuuskopion juurta uudestaan, jos sitä ei löydy. Varsin kätevä ominaisuus, jos käytössä on ulkoinen tallennus media, joka ei ole jatkuvasti kiinni tietokoneessa.

Retain

Seuraavaksi rsnapshotille kerrotaan ”retain” sanalla miten varmuuskopioita halutaan tehdä ja säilyttää. Oletuksena löytyy seuraavat.

retain  alpha   6
retain  beta    7
retain  gamma   4
#retain delta   3

Alpha, beta, gamma ja delta ovat vain nimiä millä kerrotaan komentorivillä minkä ajan varmuuskopiota ollaan tekemässä ja numero perässä tarkoittaa sitä kuinka monta kopiota säilytetään. Minä laitoin tämän kohdan näin.

retain  daily   7
retain  weekly  5
retain  monthly  12
retain  yearly  2

Päivittäisiä kopioita siis säilytetään 7 kappaletta, viikottaisia 5, kuukausittaisia 12 ja vuosittaisia 2. Tämä on minusta vähän hassusti toteutettu, mutta näillä mennään. Retain oli aiemmissa versioissa ”interval”.

Verbose, loglevel & logfile

Testausvaiheessa laitoin ajonaikaisia viestejä lisää näkyviin muuttamalla ”verbose 5”. Luultavasti muutan tämän arvoon ”1” tai ”2”, kun asennus on valmis. Tähän liittyen voi myös laittaa ”loglevel” kohdan haluamaansa arvoon. Jos haluaa käyttää logitiedostoa täytyy ”logfile” kohta poistaa kommenteista poistamalla rivin alusta # ja vaihtaa tarvittaessa sopiva hakemistopolku. Oletus ”/var/log/rsnapshot.log” kelpasi minulle vallan mainiosti.

Include, exclude, include_file & exclude_file

Include, exclude, include_file ja exclude_file kohdilla voidaan määritellä mitä otetaan varmuuskopioon mukaan. Nämä kohdat annetaan suoraan rsyncille. En itse tässä vaiheessa laittanut tähän mitään, mutta aion siihen laittaa esimerkiksi tmp hakemistot joista on ihan turha tehdä kopioita. Tässä kohti ei määritellä hakemistoja jotka varmuuskopioidaan vaan esimerkiksi, jos halutaan varmuuskopioida vain zip-tiedostot.

Backup, bacup_script & backup_exec

Seuraavaksi (vihdoinkin!) kerrotaan mitä hakemistoja ollaan varmuuskopiomassa. Oletusarvot näyttävät seuraavalta.

#LOCALHOST
 backup  /home/          localhost/
 backup  /etc/           localhost/
 backup  /usr/local/     localhost/
 #backup /var/log/rsnapshot              localhost/
 #backup /etc/passwd     localhost/
 #backup /home/foo/My Documents/         localhost/
 #backup /foo/bar/       localhost/      one_fs=1,rsync_short_args=-urltvpog
 #backup_script  /usr/local/bin/backup_pgsql.sh  localhost/postgres/
 #You must set linux_lvm_* parameters below before using lvm snapshots
 #backup lvm://vg0/xen-home/     lvm-vg0/xen-home/

#EXAMPLE.COM
 #backup_exec    /bin/date "+ backup of example.com started at %c"
 #backup root@example.com:/home/ example.com/    +rsync_long_args=--bwlimit=16,exclude=core
 #backup root@example.com:/etc/  example.com/    exclude=mtab,exclude=core
 #backup_exec    ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"
 #backup root@example.com:/var/db/dump/  example.com/
 #backup_exec    /bin/date "+ backup of example.com ended at %c"

 #CVS.SOURCEFORGE.NET
 #backup_script  /usr/local/bin/backup_rsnapshot_cvsroot.sh      rsnapshot.cvs.sourceforge.net/

Kuten huomataan yhdessä tiedostossa voidaan määritellä useamman tietokoneen varmuuskopiot, rsnapshotin antamassa esimerkissä kolme eri konetta. Rsnapshot osaa myös käynnistää tarvittaessa ohjelmia ”backup_exec” määreellä. Se voi myös käyttää scriptejä ”backup_script” määreellä. Varsinainen varmuuskopio määritellään ”backup” määreellä. Ensiksi kerrotaan mikä hakemisto (ja tarvittaessa mistä tietokoneesta) ollaan kopioimassa ja sen jälkeen kerrotaan järjestelmän nimi millä se halutaan tunnistaa varmuuskopioista. Minä asettelin, ainakin tässä vaiheessa, nämä näin.

backup  /home/          sonyvaio/
backup  /etc/           sonyvaio/
backup  /usr/local/     sonyvaio/

Rsnapshotin toiminta

Mitenkäs se sitten toimii? Helposti, komennat kerran päivässä ”rsnapshot daily”, kerran kuukaudessa ”rsnapshot monthly” ja kerran vuodessa ”rsnapshot yearly”. Kätevää eikö? 🙂

Järkevämpi vaihtoehto on automatisoida homma cronin avulla. Seuraavilla saa rsnapshotin toimimaan joka päivä kello 15, viikoittain joka maanantai kello 14.00, kuukausittain kuukauden ensimmäisenä päivänä kello 13.00 ja vuosittain aprillipäivänä kello 12.00.

0 15 * * * /usr/bin/rsnapshot daily
0 14 * * 1 /usr/bin/rsnapshot weekly
0 13 1 * * /usr/bin/rsnapshot monthly
0 12 1 4 * /usr/bin/rsnapshot yearly

Kannattaa huomata, että pitemmän ajan varmuuskopiot ajetaan aiemmin kuin lyhyemmän välin varmuuskopiot. Tällä varmistetaan se ettei synny kilpailutilannetta eri varmuuskopioden ajojen välillä. Luultavasti väliksi riittäisi huomattavan lyhyempikin aika. Jos toinen instanssi rsnapshottia yrittää käynnistyä, kun edellinen on viellä käynnissä se ei käynnisty, koska se huomaa lockfilestä, että edellinen on viellä käynnissä. Ajojen tekeminen näin myös nopeuttaa rsnapshotin toimintaa.

Rsnapshot siis käyttää rsynciä ja hard linkkejä. Varmuuskopiot löytyvät omista hakemistoistaan /snapshot_root/alpha.0/.., /snapshot_root/alpha.1/….. …. /snapshot_root/beta.0/…. …. /snapshot_root/gamma.3/…
Jokaisesta hakemistosta löytyy jokaisesta varmuuskopiodusta koneesta oma hakemisto, josta varmuuskopioidut tiedostot löytyvät samanlaisena ja samanlaisesta tiedostorakenteesta kuin ne olivat.

Alpha.0 (tai mikä nyt onkaan lyhimmän välin tunnuksena) on periaatteessa ainut johon luetaan muutoksia varmuuskopiotavasta kohteesta. Kaikki muut hakemistot ovat hard linkeillä tehtyjä kopioita. Kun lyhimmän välin varmuuskopio ajetaan uudestaan se tekee hakemiston alpha.1 ja seuraavalla kertaa alpha.2 ja näin tapahtuu kunnes asetuksissa määritelty määrä kopioita on saavutettu. Kun korkein taso on saavutettu, vanhin hakemisto poistetaan varmuuskopion ajon yhtydessä.

Jos seuraavan tason varmuuskopio eli vaikka beta ajetaan ennen kuin kuin korkein edellisen tason kopio on tehty, se ei tee mitään. Jos taas korkein löytyy, tässä tapauksessa siis alpha.5, se siirretään beta.0 hakemistoksi. Seuraavalla ajokerralla beta.0 siirretään beta.1 hakemistoksi ja jos alpha.5 hekemisto löytyy se siiretään beta.0 hakemistoksi, jos sitä taas ei löydy jää beta.0 hakemisto tekemättä.

Testaus

Asetustiedoston voi testata komennolla ”rsnapshot configtest”. Tämä kertoo onko tiedoston syntaksi oikein eli esimerkiksi onko jonnekin päätynyt tabulaatin sijasta välillyönti. Asetukset kannattaa myös tarkistaa tekemällä ns kuiva-ajo eli katsomalla mitä rsnapshot tekee. ilman että se oikeasti tekee mitään. Tämä onnistuu valitsimella ”-t” esim ”rsnapshot -t alpha”

Ajatuksia

En käynyt tässä lävitse miten varmuuskopion saa verkkokovalevylle, mutta se onnistuu näilläkin ohjeilla, kun mounttaa verkkokovalevyn johonkin sopivaan paikkaan. Nfs on suositeltava tapa, koska muilla tavoilla tiedostojen oikeudet ja omistajat vaativat kikkailua, että ne toimivat.

Tämä on vain pintaraapaisu rsnapshotista, mutta minä sain homman toimimaan näillä.

Jos tietokone on jatkuvasti päällä, cron ajaa kyllä varmuuskopiot, mutta jos kone sattuu olemaan sammuksissa, se ei varmuuskopiota tee. Tämän takia kannattaa käyttää anacronia.

Arduino toimi vain root tunnuksella

Minulla oli ongelma. Linux ajatteluun ei sovi normaali ohjelmien käyttäminen ROOT tunnuksella. Jostain syystä arduino IDE toimi minulla vain root tunnuksella oikein. Koodin kyllä pystyi kirjoittamaan normaali käyttäjänä, mutta koodia ei voinut polttaa levylle muuten kuin vaihtamalla ROOT tunnukselle. Asialle piti sitten tehdä jotain useamman vuoden jahkailun jälkeen.

Netistä löytyi monestakin kohti ohje, jolla sai lisättyä oman käyttäjä tunnuksen dialout ryhmään. (Arduinon oma ohje näyttää tältä), jonka pitäisi auttaa asiaan .

sudo usermod -a -G dialout <username> >

Kyseinen käsky ei kuitenkaa minua auttanut. Pääsin polttamaan koodia edelleen vain root tunnuksella.

Lopulta syylliseksi paljastui vanhan asennuksen asetustiedosto. Olen siis päivittänyt arduino IDE:n vuosien varrella useaan otteeseen ja välillä ollut pitkään käyttämättäkin sitä, mutta koska minun kotihakemisto on ollut koko ajan sama (ja siirtynyt jopa koneesta toiseen) oli arduinon vanhassa asetustiedostossa jotain, joka esti normi käyttäjällä koodin polttamisen levylle.

En alkanut tutkia tarkemmin mikä esti toiminnan vaan poistin koko tiedoston löytämäni vinkin perusteella.

rm ~/.arduino/preferences.txt

IDE ei saa olla käynnissä, kun tuon tiedoston poistaa! Käynnistyksen yhteydessä IDE kysyi muutaman kysymyksen ja sen jälkeen homma alkoi pelittämään taas!

Edit: Kannattaa muuten huomata, että ubuntun omista repoista tulee varsin vanha versio arduino idestä. Kannattaa siis ladata tuorein versio suotaan arduinon sivuilta.

Vahingossa webadminiksi, webmasteriksi? Whatever

Näin se elämä heittelee 😉 Onhan minulla ollut oma blogi jo hetken aikaa, mutta ”muutaman” mutkan kautta päädyin pitämään huolta ystävän blogin teknisestä puolesta. En suoraan sanottuna edes tiedä mitä termiä asiasta kannattaisi käyttää. Webadmin? Webmaster? Vaikkapa hälläpä väliä, en minä tätä ammatikseni tee 😉

”Muutama mutka” sisältää myöskin sen, että ostin domainin ja kotisivutilan syntymäpäivälahjaksi ystävälle. Molemmat blogit sijaitsevat tällä hetkellä louhen palvelimilla.  Tämän blogin osoitteen tiedätkin 😉 ja se ystävän blogi sijaitsee osoitteessa http://www.janutzki.fi. Sinne vaan kakkuja ja muita herkkuja katselemaan.Suklaa kuppikakku

Viime aikoina on tullut luettua esimerkiksi SEO:sta(=search engine optimization=hakukone optimointi), wordpressistä, google analyticsistä ja monesta muusta jutusta. Ei tästä ole tarkoitus ammattia tehdä, mutta mielenkiintoista kuitenkin ja sen verran pitänee alkaa osata, että saa pysymään kasassa molemmat sivustot. Tosin näillä lukija määrillä homma on suhteellisen helppoa.

Kuten sanottua wordpress pyörittää blogeja ja tähän mennessä eniten käytetty lisäosa  taitaa olla JetPack.  Tähän mennessä ei ole mitään katastrofeja päässyt tapahtumaan, mutta sitä odotellessa on hyvä tehdä varmuuskopioita. (Ai niiiin!! )

Sisustusongelma & valoa katossa vol 2

Eihän se sitten kestänytkään kuin melkein puolitoista vuotta, mutta nyt on katossa lamppu! Ei vielä kaikkia niitä ominaisuuksia, mitä aioin ja aion tuohon laittaa, mutta se perus lampun virka on nyt täytetty. Edellisen kerran kirjoittelin tästä asiasta syyskuussa 2015.

Kattoon siis päätyi kolme metriä valkoista ledinauhaa, metrin verran WS2812B ledinauhaa, tyhjä taulu, pari virtalähdettä ja muuta pikku sälää mm. arduino. Lamppu vielä vaatii ”siivousta” esimerkiksi osa johdoista näkyy rumasti sivusta.

Pitkän aikaa olin sitä mieltä, että mitään roikkuvaa lamppua en halua ja kuinkas sitten taas kävikään. Ketjujen varassa roikkuvaan lamppuun päädyin. Lamppu on kuitenkin niin korkealla, että se ei minua haittaa. Eikä oletettavasti myöskään ketään muitakaan.

Valaisimesta tuleva valo on varsin pehmeää, koska se heijastuu katon kautta. Valoteho on valkoisella valolla varsin riittävä, mutta värillinen valo on hiukan heikko. Olisin voinut helpostikin laittaa WS2812B nauhaa pitemmästikin lamppuun, mutta iski vähän piheys ja laitoin vain metrin.  Onneksi tuo on aika helppo lisättävä, jos jossain vaiheessa oikeasti haluaa lisää värivaloon tehoa.

Miten valaisin on sitten tehty? Lyhyesti sanottuna clas ohlsonilta tyhjä 50cmx50cm taulu ketjuilla kattoon kiinni. Ebaysta tilattua ledinauhaa sopivan pituiseksi pätkityn kynnyslistan päälle, joka sekin on ostettu clasulta. Virtalähteenä on samoin ebaysta ostettuna 12v ja 5v virtalähteet. (Ja juu en ole jättämässä tuota valoa päälle yksinään tai anna kenenkään muun mennä koskemaan tuota jännitteellisenä.)

Ohjaus on tällä hetkellä osittain valokatkaisijalla, osittain arduinolla. Valkea valo on katkaisijalla ja värillinen valo arduinolla, mutta katkaisijan takana.  Ihan suoraan katkaisijasta siis voi valita kumman valotyypin haluaa päälle.

Jatkossa on tarkoitus tehdä tuosta lampusta himmennettävä. Vielä en kylläkään tiedä ihan tarkkaan miten sen teen.

Koodi arduinossa on tällä hetkellä aivan suoraan Adafruitin neopixel esimerkki koodia.

Hintaa hökötykselle kertyi about 100e ja (aktiivisia) työtunteja ehkä 2-3. Kaiken kaikkiaan aikaa meni huomattavasti enemmän, kun piti kameran kanssa leikkiä ja saattoipa siinä sivussa muutama youtube pätkäkin ja useampi kupillinen teetäkin mennä. Kolmena iltana rakentelin lamppua.

RJ45 aka TIA/EIA-568 aka T568A/B eli Lähiverkkokaapelin korjaaminen

Vuosien varrella on kertynyt muutamiakin lähiverkkokaapeleita lojumaan kaapin pohjalle. Välillä ne ovat useampia kuukausia laatikon pohjalla ja sitten niitä johonkin silloin tällöin tarvitsee. Melkein jokaisessa kaapelissa on kuitenkin sama vika toisessa tai molemmissa päissä kaapelia, liittimen klipsi on katkennut. Se ei estä kaapelin käyttöä, mutta se tekee siitä epävarmaa, koska kaapeli ei välttämättä pysy kiinni. Onpa ollut jotain tapauksia, että laitteessa olevan liittimen pinnit ovat painaneet klipsittömän kaapelin välittömästi pois paikoiltaan.

Joitain kaapeleita olen heitellyt roskiinkin, mutta 3-4 kaapelia on vielä jäljellä. Pitkän aikaa olen luullut, että liittimien tekoon tarvittavat pihdit maksavat niin paljon, etten viitsi edes kokeilu mielessä ostaa niitä, mutta eihän se enää niinkään mene. Suomesta tilattuna tosin näyttää hintaa edelleen kertyvän. Tilasin siis Englannista ebayn kautta paketin, josta löytyi 50m verkkokaapelia, puristuspihdit, kaapelitesteri,  liittimiä ja liittimien suojakuoria, 50kpl molempia. Hintaa näille tuli lähipostiin toimitettuna pyöreästi 20e! Halpaa kuin saippua! Paitti, että saippua on kalliimpaa 😉 Kaapelitesteri ei ole mitenkään ominaisuuksilla pilattu, käytännössä voi tarkistaa vain parijärjestyksen, mutta eipä tällä käytöllä kannata yhtään enempää sijoittaa moiseen.

Testailin kaapelia, johon olen itse laittanut liittimet ja toimihan se! Jopa ihan gigabps nopeudella, vaikkakin hetken näytti, että data liikkuu kaapelissa toiseen suuntaan nopeammin kuin toiseen, mutta se johtuikin vain siitä, että tuo minun vanhempi läppäri ei pysty lähettämään gigabitti nopeuksilla dataa vaikka kyseessä olisi vain testi ohjelma.

Useasti lähiverkkokaapeleiden liittimistä puhutaan RJ45 liittiminä, mutta tarkkaan ottaen se ei pidä paikkaansa, vaikkakaan virhe ei mitenkään iso ole. (Esimerkiksi wikipediasta löytyy tarkemmin tietoa TIA/EIA-568 standardista)

Lähiverkkokaapeli on siis kierrettyä  parikaapelia, kaapelin ominaisuudet riippuvat halutusta/tarvitusta kaapeliluokasta (CAT5/6/7/suojattu/suojaamaton).  Kaapelista kuitenkin löytyy vähintään ulkokuori ja neljä paria johtoja eli kaikkiaan se on kahdeksan napaista johtoa.  Johtimet on värjätty pareittain: sininen/sinivalkoinen, oranssi/oranssivalkoinen, vihreä/vihreävalkoinen ja ruskea/ruskeavalkoinen . TIA-568 määrittelee kaksi ”värimaailmaa” johtojärjestykselle liittimille, A ja B. Sinällään ei ole merkitystä kumpaa käyttää omissa asennuksissa, kunhan käyttää samaa järjestystä kaikissa liittimissä. USA:n virastot vaativat käytettäväksi TIA-568A versiota, mutta muuten kuulema aika yleisesti käytetään TIA-568B versiota (ja ensimmäiset mitä minä tein olivat B versioita).  Ero näissä kahdessa on itseasiassa vain se, että oranssi ja vihreä ovat vaihtaneet paikkaa.

Johdin järjestys ja pinni numerointi, TIA568B (Suluissa TIA 568A). (Liittimen kontaktit oikealla, kaapeli tulee vasemmalta ja klipsi on takana)

  1. Oranssivalkoinen (VIhreävalkoinen)
  2. Oranssi (Vihreä)
  3. Vihreävalkoinen (Oranssivalkoinen)
  4. Sininen
  5. Sinivalkoinen
  6. Vihreä (Oranssi)
  7. Ruskevalkea
  8. Ruskea

Suoraan kytketyn kaapelin lisäksi on olemassa muitakin tapoja kytkeä kaapeli, mutta niistä ei tässä sen enempää.

Videolla on selitetty liittimen kiinnittäminen, mutta laitetaan se nyt lyhyesti tähänkin.

  1. Syötä liittimen suoja kaapeliin
  2. Kuori noin 3 cm kaapelia (varo vahingoittamasta johtimien kuorta)
    • Joissain kaapeleissa on naru, jonka avulla saat ulkokuoren rikki ilman teräasetta.
    • Jos kaapelin keskellä on ohjain, joka pitää johdin parit erillään, katkaise sekin lyhyeksi.
  3. Oio johdin parit suoraksi
  4. Järjestä johdot oikeaan järjestykseen
  5.  Katkaise johdot sopivan pituiseksi ja tasaiseksi
  6. Syötä kaapeli liittimeen siten, että johtimet painuvat liittimen uriin ja ovat pohjassa asti
    • Joissain liittimissä on erikseen ohjain jonka läpi johtimet syötetään ensiksi.
    • Liittimiä on montaa sorttia! Kannattaa ehdottomasti harjoitella, ennen kuin tekee mitään tärkeää kaapelia.
    • varmista, että johtimet pysyvät oikeassa järjestyksessä!
  7. Purista liitin paikoilleen
    • Varmista, että johdon kuori jää kiinni liittimeen! Kaapelista tulee kestävämpi niin. Liittimessä on vedonpoisto, joka ei toimi jos kaapeli on huonosti liittimessä.

Lopuksi kannattaa vielä tarkistaa, että kaikki on kunnossa. Helpoiten se tapahtuu erikseen tarkoitukseen suunnitellulla laitteella, mutta toki tarkistuksen voi tehdä laittamalla kaapeli käyttöönkin.

 

Köyhän miehen DOORIS

Piiitkän tauon jälkeen tännekin jotain. SOK on kehittänyt DOORIS nimisen järjestelmän, jonka kautta olisi minunkin mahdollista saada työvuorot sähköiseen kalenteriin. Paino sanalla mahdollista, en siis saa, koska HOK-Elanto ei ole tehnyt päätöstä ottaa DOORISta käyttöön.  Perustelut mitä olen kuullut ovat suurimmaksi osaksi täyttä tuubaa, yksi vähän asiallinen perustelu on ”antaa pienempien osuuskauppojen tehdä beta-testaus. Tosin tämä perustelu vesittyy aika hyvin, kun katsoo whois dataa sokdooris.fi osoitteesta. Se on hankittu 2010.  Samoin s-kanavan artikkelissa puhutaan vuodesta 2012 käyttöönottovuotena. Pitkä beta-testaus vaihe….

Seuraava ei taida kenellekään olla yllätys, se maksaa liikaa. No hei haloo!? Miten niillä pienemmillä osuuskaupoilla on varaa DOORIS:kseen, jos isoimmalla ei ole?  Lisäksi yleensä perään tulee pitkä lista sinällään kyllä hyviä asioita joita  HOK-Elanto tarjoaa työntekijöilleen. Minusta on kuitenkin aika naurettavaa verrata esimerkiksi lintsi päivää ja DOORISta , ne ovat aivan eri asioita.  Konttorin logiikka ei (tässäkään) asiassa käy järkeen. Vai onko HOK-elanto köyhempi kuin luulin? Vetääkö joku välistä?

Tilanne ei hirveästi kiitosta meikältä saa, vetkuteltu ja venytelty aika pitkään.  Pieniä lupauksia on, että DOORIS tai vastaava tulee jossain vaiheessa, mutta varmaa tietoa ei ole ja milloin se jossain vaiheessa on?

No näistä johtuen sitten päätein tehdä asian itse. Enhän mä toki voi tehdä koko DOORISta, mutta en minä toisaalta siitä ole kaivannutkaan kuin yhtä ominaisuutta, saada työvuorot helposti sähköiseen kalenteriin. Enkä myöskään ole koodari, mutta jotain saan koodillakin aikaiseksi. Lähinnä copy pasteamalla toisten koodia ja siitä muokkaamalla, mutta niin kai kaikki tekee (joskus).

Alunperin oli tarkoitus tehdä systeemi, joka olisi suoraan maraplanin tulosteesta (tai siis sen sähköisestä tulosteesta) siirtänyt työvuorot googlen kalenteriin, mutta johtuen useammastakin syystä (osa jo tässä aiemmin mainittu) päätin tehdä vain apusovelluksen, johon pitää itse syöttää vuorot ja skripti sylkäisee  .CSV muodossa vuorot ulos ja sitä kautta ne saa nätisti googlen kalenteriin. Jos haluat kokeilla skriptiä, se löytyy osoitteesta rahikkala.net/kalenteri ja koodi itsessään löytyy githubista. 

Kieli valinta osui tällä kertaa PERLiin. En ole koskaan mitään tuolla kielellä kirjoittanut, mutta vaikuttaa varsin helpolta kieleltä, vaikkakin paikoitellen helpottavat asiat tekevätkin siitä itseasiassa vaikeamman. Esimerkiksi käytin hyvän hetken ihmettelyyn, koska en ollut huomannut että vaikka $string1 == $string2 on täysin validi vertailu, se ei tee sitä mitä halusin. Oikea muoto on $string1 eq $string2. No nytpä tiedän tuonkin tärkeän eron, joka oli mennyt tyystin minulta ohi netin ohjepalstoja lukiessa.

Koodi on melkoinen purkkapallo, eikä siinä ole juurikaan suojauksia käyttäjän idioottimaisuuksia vastaan. Käytä sitä siis omalla vastuulla! Suosittelen tekemään erillisen kalenterin, johon tulee pelkästään työvuorot. Kalenteriin on helppo lisätä kerralla monta tapahtumaa tällä skriptillä , mutta ne joutuu poistamaan sieltä yksitellen, jos vaikka sattuu lipsahtamaan väärä kuukausi. Maksimi määrä mitä tapahtumia (tai oikeastaan päiviä) voi kerralla lisätä on 32.

Joku voisi sanoa, että ammutaan tykillä hyttystä tässä, mutta päätin käyttää käyttäjä seurantaan google analyticsiä. Seuranta skripti kuitenkin on vain aloitus sivulla, ainakin tällä hetkellä.

 

Edit: 29.9. Muutettu muutamaa kohtaa saadun palautteen perusteella.

Kauko-ohjausta kaukana vol. 2

ITS ALIVE!!!

Etäohjain toimii,  pääosin ainakin.

Pitäisi varmaan kertoa vielä, että mistä laitteesta on kysymyShaisse saurus pönttös. Kyseessä on siis Shaisse sauruksen pumppuun tarkoitettu kauko-ohjain. Mikä se Shaisse saurus sitten on? No se on serkkupojan lietteen levitykseen tarkoitettu laite: kaksin kappalein traktoreita, pumppuvaunu, pitkästi letkua ja levitinyksikkö sekä muuta tilpehööriä. Liete siis levitetään suoraan montusta. Pumppu tulee lietemontun viereen ja liete pumpataan pellolle, jossa se sitten levitetään multaimella suoraan maahan.
Tilanne siis alunperin oli sellainen, että lietteen levityksen yhteydessä levitystraktorissa oli yksi kuski ja toinen kuski oli pumpputraktorin päässä. Levitin päässä nyt loogisesti oli koko ajan tarpeellista olla kuski, mutta pumppu päässä tarve kuskille oli vain hetkittäinen. Koti navetan vieressä ongelma ei mahdottoman iso ole, koska lähistöltä löytyy aina jotain tehtävää, mutta urakointi hommissa pumpputraktorin kuskilla ei kovin pajoa tekemistä ollut. Isolla pellolla pumppua ei tarvitse sammuttaa tai käynnistää kovin useasti.
Itse kauko-ohajain koostuu harmaasta laatikosta, jonka sisällä on kaksi piiri levyä toinen itse tehty ja toinen tilattu netista. Netistä tilasin GSM-modulin, josta olen shaisse saurus kauko-ohajainjo aiemmin tässä kirjoitellu ja itse tein siihen relekortin, josta siitäkin olen pikkuisen jo kirjoitellut.
Asennukseen oli periaatteessa varattu perjantai päivä ja lauantaille sekä sunnuntaille olisi ollut muuta, mutta harmillisesti (mutta ei ehkä niinkään yllätättävästi) asennukseen meni oletettua enemmän aikaa ja lopulta asennukseen tuli käytetteä aika iso osa sekä lauantaista, että sunnuntaista. Asennus kuitenkin traktorin osalta saatiin loppuun asti ja pumpun puolen serkkupoika asentelee itsekseen kunhan ehtii. Kaikki ominaisuudet eivät siis vielä ole käytössä, mutta jo näillä mitkä saatiin käyttöön vähenee pumpputraktorin kuskin tarve varsin merkittävästi.
Helpointa traktorin puolen asennus olisi ollut toteuttaa esimerkiksi ISOBUS-väylän kautta, mutta suunnittelu vaiheessa pumpun eteen ei ollut tarkoitus saada ko. väylällä varustettua traktoria, mutta monen mutkan kautta nyt kun prototyyppi ohjaimesta on valmis ja hiljalleen testauksessa ihan tosi toimissa, yllättäen pumpun eteen on ilmestynyt Fend, jossa on ISOBUS. Sellaista se elämä joskus on. Laite asennettiin siis kuitenkin Valtraan. Nyt siis ohjaus on toteutettu ihan releillä. Käsikaasun potentiometrejä on asennettu toinen kappale ja releellä valitaan kumpi asettaa kierrokset koneeseen. Ulosoton käynnistykseen on tuhrattu kaksi relettä toisella ulosotto saadaan päälle ja toisella vastaavasti pois päältä. Asennus on lisäksi tehty niin, että kauko-ohjaimen ollessa sammuksissa asennus ei vaikuta traktorin normaaliin käyttöön mitenkään, käsikaasu sekä ulosoton kytkin toimii ihan samoin kuin jos mitään ylimääräistä ei traktorissa olisikaan. Lisäksi ulosotto on kytketty niin, että kytkimen ollessa OFF-asennossa kauko-ohjaimella ei ole mahdollista vahingossakaan kytkeä ulosottoa päälle.
Jo nyt tässä vaiheessa on tiedossa useampikin asia joita joutuu seuraavaan versioon korjaamaan tai lisäämään. Esimerkiksi piirilevy itsessään on suunniteltu kestämään useita amppeereita virtaa, mutta noilla liittimillä levylle ei saa syötettyä sellaisia virtoja. Kaiken kaikkiaan olen varsin tyytyväinen projektiin. Erittäin fiksu idea olisi ollut istua pari kolme päivää itse pumpputraktorissa ja sisäistää pumpun toiminta ja ohjaus sitä kautta, mutta meni se näinkin ja ehkäpä jo  seuraavaan projektiin tajuaa sellaisen tutustumisen tehdä.

Tositoimissa laitetta ei ole viellä testattu, mutta sen verran testattiin, että saatiin videolle pätkä kännykällä kuvattua. Tarttee jossain vaiheessa tehdä parempi video aiheesta, koska tämä versio ei loppujen lopuksi kovin kuvauksellinen ole.  Harmillisesti kunnollinen kamera jäi matkasta pois juuri ratkaisevalla hetkellä, mutta onneksi kännykällä voi edes vähän paikata, vaikka kiirus meinasi tullakin videon kanssa.

 

Jos joku haluaa tarkempia tietoja itse kauko-ohjaimesta, minulle voi laittaa viestiä tuosta alhaalta ja jos on tarvetta lietteen levitykselle tai muuten haluaa tarkempia tietoja itse levitys laitteesta, Aapelille voi soittaa numeroon 044 328 0187.

Tästä aiheesta tulee varmaan viellä lisää tarinaa jossain vaiheessa, mutta tässä vaiheessa mennään nyt tällä.

Kauko-ohjausta kaukana


Nyt se olisi sitten menoa! Tämän kertainen projekti olisi sitten siinä vaiheessa, että se pitäisi laittaa ihan oikeasti testiin voiko sitä käyttää ja toimiiko se traktorin kopissa.

Istuskelen tällä hetkellä Helsinki-Vantaalla ja odottelen lennon lähtöä Ouluun. Harvinaista herkkua päästä katselemaan auringon nousua näin rauhassa.

Projekti on siis kauko-ohjain serkun lietteen levitys laitteeseen. Tämän hetken ohjaus on tekstiviestillä, mutta jatkossa olisi tarkoitus saada laite toimimaan niin, että kummassakin päässä on vain harmaa boksi ja muutama nappi.

Kirjoittelen asiasta tarkemmin kunhan ehdin ja saadaan viikonlopun aikana masiinaa testailtua.