Aihearkisto: Tietotekniikka

Domoticz, RFLink, Arduino, Raspberry Pi, OrangePi, DietPi, EmonCMS

Olen rakentanut kotiimme automatiikkaa. Pohjana on vanhat kunnon Raspberry Pi ja OrangePi -laitteet. Tällä hetkellä noita on kaksi OrangePi -laitetta ja kaksi Raspberry Pi -laitetta. Lisäksi comboon kuuluu kaksi Arduino Mega -laitetta, joissa on molemmissa RFLink -lisäosa.

Toinen Raspberry Pi -laitteista toimii RFM69Pi -lisäosan kanssa osana kotimme energia- ja lämpötilamittari EmonCMS -järjestelmää.
Käyttöjärjestelmänä tässä laitteessa on muista poiketen raspbian.

Muissa laitteissa on kaikissa käyttöjärjestelmänä DietPi.

Kahdessa DietPi:ssä on kiinni Arduino Mega, jossa on firmwarena RFLink.  Lisäosana Arduinossa on RFLink shield. RFLinkiä käskyttää Domoticz. Vihdoinkin laitteisto, joka osaa käskyttää noita Lidlin kauko-ohjattavia pistorasioita! Pistorasioiden lisäksi hommasin ovimagneetteja ja palovaroittimia (etäluettavia ja ketjutettavia) kotiautomatioon. Domoticz osaa käskyttää myös valvontakameroitamme.

Toinen RFLink (ja Domoticz) on mökillä lukemassa lämpötiloja ja ohjaamassa valvontakameroita. Mökin laitteeseen on tulossa ensi kesänä lisäyksenä sääasema (tuulimittari).

Kotona olevissa korttikoneissa on myös squeezelite -ohjelmisto (Logitech Squeezebox -asiakas) ja tuossa raspbianissa myös squeezebox-server. Tuo palvelin on yhteydessä talon verkkolevyyn (NAS) ja sen kautta voidaan soittaa musiikkia millä tahansa squeezelite -asiakkaalla (keittiössä, olohuoneessa ja saunan pukuhuoneessa). Kaikkia soittimia voidaan ohjata erikseen tai niitä voi yhdistellä soittamaan samaa musiikkia samanaikaisesti.

Minitietokoneet (Raspberry Pi / Orange Pi PC)

Olen jo hetken säätänyt Raspberry Pi ja Orange Pi PC -laitteiden kanssa.

Kaikki alkoi Raspberry Pi:stä, josta rakensin keittiöön VDR frontendin (vompclient) vanhentuneen Hauppauge MVP:n tilalle.
Nykyään VDR:n frontendinä toimii MQX -androidlaite, joten RPi on saanut uuden elämän muissa tehtävissä.
RPi toimii tällä hetkellä Emon HUBina, eli se on varustettu RFM12Pi v2 palikalla. Kaverina RPi:llä on emontTX v2. RPi saa siis emonTX:ltä datan radiolla ja lähettää sen eteenpäin tietokoneelle, jossa pyörii emonCMS.

Tuohon olen tunkannut kylkeen myös toisen noista OrangePi PC -laitteista lähettämään lämpötilatietoja pihasaunalta.

RPi toimii myös Logitech Media Server -laitteena, johon on kiinnittyneenä kaikki minitietokoneet SqueezeboxLite -asiakkaalla.
Tuon kanssa saan siis vaikka puhelimella (tai selaimella) laitettua musiikkikirjastosta minkä tahansa kappaleen soimaan missä tahansa noista kolmesta laitteesta. Eli saan puhelimella ohjattua, että mikä kappale soi keittiössä (RPi), olohuoneessa tai saunan pukuhuoneessa (molemmissa Orange Pi PC).

Noiden minitietokoneiden kaverina toimii vielä Nokia N800 ja N810 kämmentietokoneet, jotka toimivat taloudessamme lämpötilanäyttöinä. Nokialaiset näyttävät emonCMS -koneelta lämpötilalukemia (ulkolämpötila, sisälämpötila, patterikierron veden lämpötila, ILVEn varaajan veden lämpötila sekä saunan lämpötila). Yhdellä silmäyksellä näkee siis tarvittavat lämpötilat.
Jatkossa tuohon komboon on tulossa vielä sadevesimittari. Se on tekemistä vailla valmis systeemi jo. 🙂

Tarkoitus on myös antaa RPi:lle tai olohuoneen Orange Pi:lle lisätehtäväksi etähallittavien pistorasioiden ohjaaminen. Tässä on kuitenkin hieman haastetta enkä ole saanut noita vielä juttelemaan keskenään. Ohjauksen olen suunnitellut tapahtuvan PiLight -sovelluksella.

VDR ja sen pluginit

Nyttemmin olen siirtynyt itse käännettyyn VDR:ään.

Syynä tähän päätökseen on se, että mistään Launchpadin paketoinnista ei löydy versiota, jossa olisi kaikki tarpeelliset pluginit.
Itseasiassa mistään ei tinnut löytyä ttxtsubs -pluginia.

Nyt on siis koneessa paketista asennettu vdr 2.2.0 ja sen päälle on asennettu itse käännetty vdr 2.2.0 ja siihen käännetyt pluginit.

Asensin ensin pohjalle paketistaversion, jotta kaikki servicet ja apukirjastot asentuivat varmasti oikein. Tämän jälkeen otin asennetusta veriosta sorsan, johon olen kääntänyt haluamain liitännäiset.

Pieni metsästäminenhän noissa plugineissakin on, että on tarpeeksi tuore versio käytössä (esim. yaepghd -plugin, jossa puuttuu ”virallisesta” sorsasta kokonaan tallennusvalikko).

Yksi plugin edelleen pistää hanttiin, nimittäin menuorg.

Jostain syystä en saa valikon toista tasoa näkyviin/toimimaan.
Valikko toimii oikein ensimmäisellä tasolla, mutta alavalikkoihin ei pääse nuolinäppäimillä ja ok:lla tai numerolla. Tämä on todella ärsyttävä piirre ja siksi olen toistaiseksi jättänyt koko pluginin pois.

Käytössä on siis plugineista:
sc, burn, cdplayer, dvd, epgsearch, extrecmenu, femon, live, osdteletext, skinenigmang, softhddevice, streamdev-server, ttxtsubs, vnsiserver, vompserver, webvideo, yaepghd

Zimbra + MFE (osa 2)

Päivitin Z-Pushin versioon 2.2.1-1939

Oma asennukseni on /opt/z-push -hakemistossa Zimbra -palvelimella, mutta asennuksen voi tehdä periaatteessa mille vaan palvelimelle, jolta on pääsy Zimbraan.

config.php -tiedostoon muuttamani kohdat:
define(’TIMEZONE’, ’Europe/Helsinki’);
define(’USE_FULLEMAIL_FOR_LOGIN’, true);
define(’BACKEND_PROVIDER’, ’BackendZimbra’);

Tämän jälkeen haetaan tuo zimbra backend vaikka täältä.

Jälkimmäinen paketti puretaan z-pushin backend -hakemistoon ja siirretään syntyneestä hakemistosta z-push-2 -hakemisto nimelle zimbra (minun tapauksessa siis /opt/z-push/backend/zimbra/).

Muokkaamani kohta config.php -tiedostossa:
define(’ZIMBRA_URL’, ’http[s]://<zimbra url>’);

Muuten mennään oletuksilla.

Tämän jälkeen z-push onkin kunnossa. 🙂

Seuraava osa riippuukin sitten siitä mihin z-push on asennettu.

Jos Z-Push on asennettu Zimbran kanssa samalle palvelimelle ja sitä on tarkoitus käyttää Zimbran Jetty:n kanssa, niin seuraavilla ohjeilla se onnistunee 🙂

* Luo linkki jettyn hakemistoon:
ln -s /opt/z-push /opt/zimbra/jetty/webapps/z-push

* Luo shell -ohjelma php-cgi-fix.sh hakemistoon /usr/bin:
#/usr/bin/sh
export SCRIPT_FILENAME=$1
/usr/bin/php-cgi

* Luo WEB-INF hakemisto /opt/z-push -hakemistoon

* Luo /opt/z-push/WEB-INF -hakemistoon tiedosto web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app
      xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4"
    >

     <display-name>php</display-name>

     <servlet>
       <servlet-name>PHP</servlet-name>
       <servlet-class>org.eclipse.jetty.servlets.CGI</servlet-class>
       <load-on-startup>1</load-on-startup>

       <init-param>
            <param-name>commandPrefix</param-name>
            <param-value>/usr/bin/php-cgi-fix.sh</param-value>
       </init-param>

          <init-param>
              <param-name>Path</param-name>
              <param-value>/bin:/usr/bin:/usr/local/bin</param-value>
          </init-param>
        
     </servlet>

     <servlet-mapping>
       <servlet-name>PHP</servlet-name>
       <url-pattern>*.php</url-pattern>
     </servlet-mapping>

     <!--
     <welcome-file-list>
       <welcome-file>index.php</welcome-file>
     </welcome-file-list>
     -->

<Call name="addAliasCheck">
    <Arg>
      <New class="org.eclipse.jetty.server.handler.ContextHandler$ApprovePathPrefixAliases"/>
    </Arg>
  </Call>

<security-constraint>
        <web-resource-collection>
            <web-resource-name>deny</web-resource-name>
            <url-pattern>/backend/*</url-pattern>
	    <url-pattern>/include/*</url-pattern>
            <url-pattern>/lib/*</url-pattern>
	    <url-pattern>/WEB-INF/*</url-pattern>
            <url-pattern>/config.php</url-pattern>
            <url-pattern>/z-push-top.php</url-pattern>
            <url-pattern>/z-push-admin.php</url-pattern>
            <url-pattern>/INSTALL</url-pattern>
            <url-pattern>/LICENSE</url-pattern>
        </web-resource-collection>
	<auth-constraint>
       <role-name>deny</role-name>
    	</auth-constraint>
       </security-constraint>
</web-app>

* Muokkaa /opt/zimbra/jetty/etc/jetty.xml.in muuttaen rivi:

<Set name="replacement">/service/extension/zimbrasync</Set>

muotoon:

<Set name="replacement">/z-push/index.php</Set>

Lisää samaan tiedostoon:

<Call name="addRule">
	    <Arg>        
		<New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
		    <Set name="pattern">/z-push/*</Set>
		    <Set name="replacement">/z-push</Set>
		    <Set name="terminating">true</Set>
		</New>
	    </Arg>
        </Call>

Lisää myös:

<New id="z-push" class="org.eclipse.jetty.webapp.WebAppContext">
      <Arg><Ref id="Contexts"/></Arg>
      <Arg><SystemProperty name="jetty.home" default="."/>/webapps/z-push</Arg>
      <Arg>/z-push</Arg>
      <Set name="configurationClasses"><Ref id="plusConfig"/></Set>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
      <Set name="tempDirectory"><SystemProperty name="jetty.home" default="."/>/work/z-push</Set>
      <Set name="compactPath">true</Set>
      <Get name="errorHandler">
        <Call name="setShowStacks">
          <Arg type="boolean">false</Arg>
        </Call>
      </Get>
      <Call name="setAttribute">
        <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
		<Arg>.*/.*jsp-api-[^/]*\.jar$|.*/.*jsp-[^/]*\.jar$|.*/.*taglibs[^/]*\.jar$</Arg>
      </Call> 
    </New>

* Muuta php.ini:ä (minulla /etc/php5/cli/php.ini, koska käytän Ubuntu -jakelua, jossa web php:lle ja cli php:lle on omat php.ini:t):

magic_quotes_gpc off
register_globals off
magic_quotes_runtime off
short_open_tag on
cgi.force_redirect = 0
max_execution_time = 120
memory_limit = 128M

* Uudelleenkäynnistä jetty:
su – zimbra
zmmailboxdctl restart

LG G4 Qi NFC

No niin, nyt alkaa olla lyhenteitä otsikossa. 🙂

Eilen siis saapui voittopuhelimeen tarra Kiinasta. Tuo tarra korvaa takakannessa olevan NFC -tarran antaen puhelimelle molemmat toiminnot (NFC & Qi).

Qi on siis langaton lataus, joka on todella kätevä ominaisuus puhelimissa. ensimmäisen N900:n kanssa nimenomaan puhelimen USB -portti meni rikki laturia kytkettäessä. Qi mahdollistaa latauksen ilman hankalia johtoja. Puhelin vaan laturin päälle lepäämään ja akku täyttyy.

Heidin Nokia 810:ssä oli tuo Nokian alkuperäisellä latauskuorella, S4:ssä oli tuo Kiinasta hankitulla tarralla, Wilin Note2:ssa on Kiinasta hankitulla tarralla ja nyt G4:ssä on samanlaisella tarralla.

XenServer päivitys / uudelleenasennus

Ensin XenServeriin kiinni ulkoinen levy (omalla kohdalla laitoin koneeseen kiinni USB -lveyn) ja mountataan se XenServerin konsolista sopivaan paikkaan (tässä tapauksessa liittäminen tapahtui komennolla: mount /dev/sda1 /mnt1).

Sammutetaan virtuaalikoneet (graafisesta käyttöliittymästä) ja otetaan niistä varmistus (kone kerrallaan konsolista):
xe vm-export vm=hostname filename=/mnt1/hostname.xva

Asennetaan XenServer.
Mikäli käy niinkuin minulla, että SR Local storage jää uupumaan asennuksesta, ajetaan XenServerin konsolista komento:
xe sr-create content-type=user type=ext device-config:device=/dev/cciss/c0d0p3 shared=false name-label=”Local storage”

Liitetään USB -levy taas alustaan ja tehdään virtuaalikoneen palautus:
xe vm-import filename=”/mnt1/hostname” preserve=true

Outlook 2013 & Zimbra

Netissä löytyy ohjeita, miten Outlook 2013 kytketään Zimbraan.
z-push/lib/core/zpush.php:
static private $supportedASVersions = array(
/*
self::ASV_1,
self::ASV_2,
self::ASV_21,
*/
self::ASV_25,
self::ASV_12,
self::ASV_121,
self::ASV_14
);

Outlookin tili konfiguroidaan manuaaliset asetukset -valinnan kautta ja sietä ActiveSync -vaihtoehdolla.

Ohjeet toimivat omalla palvelimellanikin muuten, mutta…

Outlookin asetusten jälkeen alkoi z-push:in virhelokiin
(/var/log/z-push/z-push-error.log) tulemaan virheitä:
NotImplementedException: Folderid ’f14642′ is saved to be of type ’18’ but this type is not implemented – code: 0

Löysin lopulta syyllisen kääntämällä Googlen translatorin avulla yhden saksalaisen sivuston (https://blog.bartlweb.net/2015/02/outlook-synchronisation-mit-zimbra-uber-activesync-via-z-push-streikt-aufgrund-von-nicht-implementierten-ordnertypen/).

Korjaamiseen tarvitaan:
1) Zimbran Webclient
2) IMAP -client (itse käytin Thunderbirdiä)
3) Outlook 2013 🙂

Tarvittavat toimenpiteet:
1) Zimbran Webclientistä otetaan ”Näytä lähdekoodi” (Ctrl-U)
2) Lähdekoodista haetaan tuota folderin ID:tä (itselläni siis 14642)
– Tuo löytyi koodista ja osoitti kansioon Comments
3) Thunderbirdillä tilataan IMAP -konsio Comments listaan ja poistetaan se
4) Tyhjennetään Thunderbirdin Roskakori
5) Käynnistetään Outlook ja odotetaan postilaatikon päivittyminen

Emon

On tuossa tullut säädettyä tuollaisen monitorointisoftan kanssa.
Tuolta http://openenergymonitor.org/ on tilattuna osat:
http://shop.openenergymonitor.com/emontx-v2/ tämä on se peruslaite, joka pannuhuoneessa kerää dataa. Siinä on kiinni 3x
http://shop.openenergymonitor.com/100a-max-clip-on-current-sensor-ct/ ja http://shop.openenergymonitor.com/tsl257-optical-pulse-sensing-kit/
Ensinmainituilla otetaan ilmalämpöpumpun johdoista dataa ja optisella anturilla luetaan sähkömittarin pulssilediä.

EmonTX:n lähettämän datan ottaa vastaan RaspberryPi, johon on liitetty http://shop.openenergymonitor.com/rfm69pi-433mhz-raspberry-pi-base-station-receiver-board/
Tuo RaspberryPi lähettää datan suoraan webbipalvelimelle, jossa pyörii Emoncms -ohjelma http://emoncms.org/

Emoncms:lle lähettää dataa myös 1-wire -väylää lukeva tekemäni koodipätkä, joka lukee väylässä olevia lämpötila-antureita eripuolilta taloa. Emoncms:ssä nuo eri lähteet saadaan kerättyä samaan näkymään.

Asentamista odottaa vielä viisi lämpötila-anturia.

Veho Muvi action-kamera – Tuotetestaus

Kameran käyttöönotto on todella helppo toimenpide kunhan on selvinnyt siitä shokista, että isohkossa (mutta tukevassa) säilytyslaatikossa on sisällä todella pieni kamera ja todella paljon erinäköisiä ja -muotoisia osia.
Muistikortti kameraan ja kamera USB -johdolla latautumaan.

Kamerassa on sisäänrakennettu Wi-Fi, jonka avulla kameraan saa liitettyä älypuhelimen etsimeksi ja/tai säätöjen tekoa varten etänä (apuohjelman kanssa). Wi-Fi on hyvä ominaisuus, mutta sen käyttö syö akkua kamerasta aika rivakkaa tahtia. Itse käytin tätä toimintoa S4:n kanssa ja kuvaaminen onnistui mainiosti.

Kamerassa itsessään on muutamia nappeja, joista kaikkia (on/off ja Wi-Fi on/off) ei pääse käyttämään kameran ollessa kotelossaan. Pääasiallisia kuvauksessa käytettäviä nappeja voi kuitenkin käyttää myös kotelon kanssa ja päällä olevia kahta nappia yhtäaikaisesti painamalla kameran saa pois päältä (ja päälle) myös koteloituna.

Mukana tulee irrallinen näyttö kameraan liitettäväksi. Näytössä on muutama lisänappi, joita käytetään kameran zoomissa ja kuvattujen materiaalien selailussa/katselussa. Näyttöä ja koteloa käytettäessä koteloon on vaihdettava toinen takakansi, sillä kameran paksuus lisääntyy näytöstä puolisentoista senttiä. Näytön napit ei ole luonnollisesti käytettävissä koteloituna.

Kameran mukana tulee jos jonkinnäköistä ja muotoista niveltä/jalkaa ja muutama kiinnitystalla. Niiden avulla kameran saa kiinni mitä moninaisimpiin paikkoihin.

Kamera on hintaisekseen hyvä, tosin kohtalainen vääristymä kuvan reunoille muodostuu (laajimmalla kuvalla) Zoomattaessa vääristymä pienenee. Tämä johtuu toki kameran pienestä koosta ja sen linssirakenteesta ja ollee normaalia kaikille toimintakameroille.

Kamerassa on todella monipuoliset kuva- ja videoasetukset. Parhaiten/helpoiten niitä pääsee säätämään edellämainitun kamerasovelluksen kanssa.

Kameraa on helppo käyttää, kunhan totuttelee sen logiikkaan. Itselläni meni noiden kameran kolmen napin kanssa hetki, ennenkuin niitä pystyi käyttämään ”sokkona”.

Ennakkoon laitteesta ei löytynyt hirveästi aineistoa mistään ja olikin kiva huomata, että CD:llä oleva dokumentaatio on hyvä ja laite on helppokäyttöinen. CD:ssä on toki se ongelma, että se ei ole normaalin CD:n kokoinen, eli sitä ei applen läppäri osannut käyttää. Toisaalta sen käyttö ei ole mitenkään käytön edellytys, sillä yritä-erehdy -systeemilläkin tuon käytön oppii hyvin.

Ehdotonta plussaa tässä laitteessa on se, että kaikki tarvittava tulee mukana heti alusta lähtien. Itse olisin kaivannut ehkä isompaa muistikorttia, mutta sellaisia saa kaupasta. 🙂