sunnuntai 22. joulukuuta 2013

Rasbperry Pi:n tiedot Xivelyyn

Jäi näköjään laittamassa eräs scripti kokonaan pois. Kyseisellä scriptillä saat tarvittaessa Xivelyyn Rasbperry Pi:n tiedot; prosessorin lämpötilan, vapaan levytilan, vapaan keskusmuistin ja käytetyn keskusmuistin. Samaisessa ohjeessa myös neuvotaan miten luodaan Xively-tili.


Myöhemmin sitten lisää käyttökokemuksia Nexus 5:sta.

torstai 12. joulukuuta 2013

Nokia Lumia 1020 (kelt.)

Esipuhe

Edellinen arvosteluni koski Nokian Lumia 720 –puhelinta. Kyseinen puhelin oli ns. välivaihe Nokia Lumia 1020:n siirtymiseen. Odotin 1020 siitä asti kun sain kuulla, että kyseinen puhelin on tulossa hyvällä kameralla. Olen kuitenkin näissä asioissa tuuliviiri. Olen tällä hetkellä käyttänyt 1020:sta syyskuun lopusta tähän joulukuun alkuun eli noin parisen kuukautta kunnes iski kauhea kaipuu Androidin pariin. Tästä sitten lisää myöhemmin mutta keskitytään nyt Lumiaan ja uberkameraan.

Ominaisuudet

Myyntipakkaus

Pakkaus jossa itse puhelin saapuu, on normaaliin tapaan pakattu näyttävästi. Pakkauksessa kerrotaan itse puhelimen ominaisuuksista, unohtamatta itse kuvia puhelimesta. Nokia noudattaa tässä tutuksi tullutta kaavaansa.



Mukana toimitetaan itse puhelimen lisäksi USB-laturi, USB-johto, Handsfree-kuulokkeet, jotka sopivat puhelimen väriin, SIM/Muistikorttipaikan avaustyökalu ja ohjekirjat. Tämän lisäksi tulee varoituslappu, että ei kannata peljästyä puhelimesta lähtevää ääntä vaan tämä on aivan normaalia.


Puhelimen esittely

Puhelimessa on 4,5” kokoinen näyttö, joka on hiukan isompi kuin pikkuveljensä 720:ssa. Puhelimen yläosasta löytyy kuulokeliitäntä ja SIM-kortin telakan paikka. Oikealta sivulta löytyy äänenvoimakkuus-säätimet, virta/herätys-nappi ja kameran laukaisin. Alaosassa on microUSB-liitäntä, jonka avulla onnistuu lataus ja mahdolliset datan siirrot.


Takana sijaitsee itse uberkamera ja langattoman latauskuoren pinnit.




Käyttökokemukset

Lumia 720:n jälkeen tämä puhelin on painavan tuntuinen mutta siihen tottui suhteellisen nopeasti. Eniten tämän painon huomaa kun pitää puhelinta kädessä ja uberkameran pää painaa itseään kohti maata. Puhelimesta saa kuitenkin hyvän otteen ilman kuoriakin mutta latauskuoret tasoittavat takaosaa mukavasti ja täten antavat mielestäni mukavamman otteen itse luuriin.

Moni jo varmasti tunteekin mitä Windows Phone 8 –käyttöjärjestelmä on, joten jätän siitä kirjoittamiseen väliin vaan keskitytään itse kameraan.

Kamera on suoraan sanottuna aivan mahtava. Kameralla saa uskomattoman tarkkoja kuvia tilanteesta kuin tilanteesta. Eri tilanteita varten on kuitenkin hyvä opetella käyttämään itse ohjelmistoa, Nokia Pro Camera. Tätä varten Nokia Ääni –sivustolla on tarjolla viisiosainen käyttökoulutus ohjelmistoon.

http://aani.nokia.fi/2013/09/24/nokia-pro-camera-15-tarkennus-ja-sumennus/
http://aani.nokia.fi/2013/09/27/nokia-pro-camera-25-hamarakuvaus-ja-pitka-valotusaika/
http://aani.nokia.fi/2013/10/03/nokia-pro-camera-35-zoomaus-ja-rajaus/
http://aani.nokia.fi/2013/10/07/nokia-pro-camera-45-iso-arvo-ja-valotusaika/
http://aani.nokia.fi/2013/10/11/nokia-pro-camera-55-paluu-perusasioihin/

Itsekin kävin tämän lävitse, jotta ymmärsin ohjelmiston salat ja pääsin siihen ns. sisälle. Nämä opetukset auttoivat hyvin itse kameran käyttöä vaikka tilanteissa mitä nyt vastaan tänä aikana oli melkein aina asetukset automaatilla.

Huomasin puhelinta käyttäessä kun sillä aletaan ottamaan kuvia tai surffaamaan Internetin ihmeellisessä maailmassa, niin akku kuluu aika vauhdikkaasti. Onneksi tämän pelastus on kuitenkin Battery Saver, mikä pidentää kivasti puhelimen käyttöä.

Yhteenveto

Mitä tästä voi sitten oikein sanoa, tämä on puhelin missä hyvä kamera. Windows Phone 8 –käyttöjärjestelmä on mitä on mutta on se kuitenkin jo parempaan päin mitä ensimmäiset versiot olivat. Huomasin useasti, että tilanteiden tullessa, niin puhelimella sai siitä juurikin sen yhden kuvan. Yleensä se oli onnistunut mutta toisinaan taas tulikin aivan suttua kun tarkennus ei kerkinytkään itse kuvauksen perään. Tämä kannattaa siis huomioida, että kuvaaminen tulee tapahtua rauhassa, tästä puhelimesta kameroineen ei siis välttämättä ole aivan sen vauhdikkaan baari-illan tapahtumiin. Tämä johtuu siitä, että puhelin tallentaa kuvaa pitkään. Tämä taas selittyykin sillä, että tässä on se paras kameramoduuli mitä tällä hetkellä voi saada.

Plussat ja miinukset

+ Kamera
+ Kivan tuntuinen kädessä, jykevä
- Akunkesto kun aletaan käyttämään

lauantai 7. joulukuuta 2013

Rasbperry Pi scriptailua

Pientä bugia näköjään vähän kaikkialla mutta scripteillä korjataan.

Aluksi huomasin, että wifi-adapteri tiputtelee itseään. Nyt on sitten menossa testi, että oliko ongelmana virransäästä tai jokin muu.

Löysin tähän seuraavanlaisen testivälineen Wifi Check, jos tällä homma toimii ongelmana oli tuo, että kun verkkoliikennettä ei ole tarpeeksi, niin mennään nukkumaan tjsp.

Toisekseen huomasin, että välillä sensoreiden datan lähetys katkesi, syyksi paljastui, että screeni on kaatunut taustalla. Tähän sitten piti vääntää seuraavanlainen scripti.

#!/bin/bash
if screen -list | grep -q "sensor02"; then
    echo $(date '+%H:%M:%S %d %b %Y') Sensor02 is running! \ >> /home/user/logs/sensor02check.txt;
else
    cd /home/user/temperature/scripts/
    ./run-sensor02.sh
    echo $(date '+%H:%M:%S %d %b %Y') Sensor02 was down... Started! \ >> /home/user/logs/sensor02check.txt;
fi

Kyseisellä scriptillä tarkistetaan sensor02-nimisen screenin toiminta, jos tämä on hereillä, niin homma ok mutta muuten ajetaan tälle sensor02:lle scripti mikä käynnistää screenin ja lokituksen. Tämän voi sitten ajastaa croniin oman mielensä mukaan. Esim. tunnin välein taikka minuutin välein.

Lähde

Edit. 8.12.2013

Jos scriptillä halutaan logittaa pelkät kaatumiset muokataan scriptiä esim. seuraavanlaiseksi.

#!/bin/bash
if screen -list | grep -q "sensor02"; then
    echo $(date '+%H:%M:%S %d %b %Y') Sensor02 is running! \;
else
    cd /home/user/temperature/scripts/
    ./run-sensor02.sh
    echo $(date '+%H:%M:%S %d %b %Y') Sensor02 was down... Started! \ >> /home/user/logs/sensor02check.txt;
fi

tiistai 3. joulukuuta 2013

Raspberry Pi + lämpö+kosteus

Onhan siitä jo taas tovi kun tuli jotain kirjoiteltua. Vaikka laitearvosteluita nyt onkin odottamassa julkaisua, että kirjoittamista, niin päätin kuitenkin kuluttaa aikaa Raspberry Pi:n kanssa.

Olen omistanut jo pidemmän aikaa kyseisen laitteen mutta en ole tälle keksinyt mitään järkevää käyttöä kunnes nyt. Sain kyseisen laitteen valjastettua johonkin ns. järkevään käyttöön. Kytkin kyseiseen laitteeseen muutaman sensorin, jonka avulla saan tiedot sisä-, että ulkotiloista. Tiedot jotka saan DHT22-sensoreiden kautta ovat lämpö ja kosteus. Kyseisiä sensoreita saa Ebaysta todella halvalla. Sensoreita on moneen lähtöön ja osa tarjoaa vain tietyn arvon kuten esim. lämpötilan.

Jos sinua kiinnostaa tämä asia, niin tässä hiukan vinkkiä. Ohje on suuntaa antava ja olenkin saattanut unohtaa siitä jotain mutta en usko, että kovin tärkeää. Googlella yleensä siihenkin löytyy ratkaisu.

Tarvittavat osat:
- Raspberry Pi + virta + muistikortti
- Sensori esim. DHT22
- Wlan (Optio)

Sitten on aika aloittaa.

Aluksi on hyvä tutustua seuraavaan artikkeliin Raspberry Pi Temperature and Humidity Project Construction. Kyseisessä artikkelissa käsittellään itse Raspberry Pi:tä ja DHT22 -sensoria. Raspberry Pi:ssä tulee olla muistikortilla jokin tarjolla oleva Linux-pohjainen käyttöjärjestelmä esim. Raspbian. Jonka voit ladata täältä.

Kun sinulla on tämä paketti koossa, voitkin kokeilla sensorin toimivuutta. Artikkelissa mainituilla ohjeilla. Bcm2835-kirjastosta löytyy uudempi versio itse tekijän sivuilta, joten lataa se sieltä. Toki voit käyttää ohjeissa mainittua versiota, jos haluat. Kun näet, että sensori toimii, niin voit viedä asian astetta pidemmälle. Kytkin tässä vaiheessa toisen sensorin ensimmäisen ns. rinnalle tietenkin omaan pinniinsä mistä data otetaan sisään. Virrat tulevat samoista pinneistä.


Tämän jälkeen löysin mielenkiintoisen sivuston nimeltä Adafruit, jonka mukavan oppaan miten saat lisättyä halutut arvot suoraan Google Docsin taulukkoon. DHT Humidity Sensing on Raspberry Pi with GDocs Logging

Toki asian olisi voinut tuohonkin jättää mutta kuitenkin halu saada käyriä oli ylitsepääsemätön. Joten aloin tutkimaan tätä. Löysin sivuston Xively, joka tarjoaa API:n kautta tämän mahdollisuuden.

Sitten pitikin löytää tapa millä saada data tuonne asti. Aluksi en huomioinut kyseisen sivuston hienoa tutoriaalia miten homman kanssa pääsee alkuun. Tästä syystä tutuistuin ensin seuraavaan artikkeliin Raspberry Pi with Xively. Kyseisessä artikkelissa tulostetaan Xivelyn tarjoamaan palveluun Raspberry Pi:stä tietoja. Kun olin tuota koittanut käyttää pohjana sensorin datan lähettämiseen, niin pongasinkin sitten Xivelyn oman tutoriaalin, jonka kautta homma alkoikin jo raksuttamaan. Tämän tutoriaalin kautta sainkin homman toimimaan halutulla tapaa. Homma ei kuitenkaan jäänyt tähän vaan nyt alettiin tutkimaan sensorin datan lähetystä tarkemmin.

Tähän asiaan löysin Googlen kautta seuraavan sivuston Rspberry Pi + DHT22 + Xively. Hyödyntämällä tätä kyseistä koodia, sain datan lähtemään yhdestä sensorista. Jonka jälkeen muokkasin tätä halutuksi, jotta sain toisestakin datan eteenpäin. Toki nämä voi yhdistää jos haluaa mutta päädyin kuitenkin erilliseen ratkaisuun kun tämä toimi.

Tuota kyseistä koodia käyttäessä törmäsin ongelmaan, että MySQLdb -kirjastoa ei vaan saanut toimimaan oikein. Tähän kuitenkin löysin ratkaisun komennolla sudo apt-get install python-mysqldb. Tämän lisäksi ongelmana oli myös itse sensorin lukeminen alkuun, koska olin jättänyt siirtämättä kyseisen koodinpätkän kanssa Adafruit_DHT_Driver -kansion sisällön. Tämä kansio sisältää itse ohjelman sensorin lukemiseen.

Nyt kyseinen koodi juoksikin jo ongelmitta. Kyseisessä koodissa on muutama kohta, jotka määrittävät millä nimellä itse data lähetetään Xivelyyn.

def get_datastream(feed):
  try:
    temp_datastream = feed.datastreams.get("temperature")
    if DEBUG:
      print "Found existing temperature datastream"
  except:
    if DEBUG:
      print "Creating new temperature datastream"
    temp_datastream = feed.datastreams.create("temperature", tags="temperature")

  try:
    humidity_datastream = feed.datastreams.get("humidity")
    if DEBUG:
      print "Found existing humidity datastream"
  except:
    if DEBUG:
      print "Creating new humidity datastream"
    humidity_datastream = feed.datastreams.create("humidity", tags="humidity")

  return {'tempds':temp_datastream, 'humidityds':humidity_datastream}

Ensimmäisessä boldatussa kohdassa määritellään feedin nimi, toisessa kohtaan määritellään se, että jos kyseisen nimistä feediä ei löydy luodaan seuraavan niminen ja annetaan sille haluttu tagi. Tämä sama toistuu kosteuden kanssa.

Lopuksi vielä piti saada luku käynnistymään bootissa. Tähän tein hiukan purkkaa...

Aluksi scripti mikä ajaa sensori 1:n lukemisen.

#!/bin/bash
cd /home/coder/temperature/ && source .envs/venv/bin/activate && python pi-temp.py

Sitten tämä pitää toki ajaa omassa screenissään

screen -dmS sensor01 /home/coder/temperature/scripts/./sensori01.sh

Tämän purkan monistin toiseen otteeseen ja nyt luku toimi molemmilla sensoreilla automaattisesti. Käytän tämän ajamiseen ihan crontabia.

Toivottavasti tästä oli jotain hyötyä tai mahdollisesti innostuksen lähde. Tästä itselläni todennäköisin seuraava aste on AirPi.

Lopuksi muutama hassu kuva itse projektista.



Päivitys 4.12.2013
Huomasin pienen bugin tuossa koodissa, jolla luetaan data ja lähetetään eteenpäin Xivelyyn.

Seuraavalla rivillä määritetään lämpötilojen arvot: 

matches = re.search("Temp =\s+([0-9.]+)", output) 

Tästä pätkästä johtuen lämmöt jäivät nollaan. Kun tähän muuttaa esim. -30 päästään alle nollan.

matches = re.search("Temp =\s+([-30-9.]+)", output)