Saturday, July 12, 2014

NodeJS / Express and Restful API on the PI

Am now looking at how to provide a restful interface for the PI using NodeJS thankfully there was already a blog entry that explained how to get started with exposing a restful interface ( GET , POST , DELETE) using NodeJS express.

So if you are like me and want to have something clean and easy that gets you up and running check out the following :
http://blog.modulus.io/nodejs-and-express-create-rest-api

All the codes work seamlessly on the Raspberry PI .

I also found a NodeJS plugin which seems very promising to integration with omxplayer at the following link:
https://github.com/vabatta/omx-manager#basicusage

I have thus managed to integrate a REST API on the PI that allows me to Post a Request to play a file and it actually calls omxplayer and the video file is played on my HDMI TV.

I will post a sample Express NodeJS file once I have something working well with basic features e.g

1. Controls for pausing , forward etc..
2. Availability to display currently playing file in list
3. Looping
4. Amount of time remaining (no idea if this is achievable)
5. etc..

Saturday, July 05, 2014

No Audio on Raspberry PI

If for some reason you are not getting any audio through omxplayer on your Raspberry Pi , try the following steps:


  1. Execute:  sudo nano /boot/config.txt
  2. Uncomment line:  hdmi_drive=2
  3. Re-start your Raspberry Pi such as it reboots
  4. Connect to your PI again and try to play a file e.g  omxplayer -o hdmi /home/pi/myNAS/myShare/The.Big.Bang.Theory.mp4
The important thing is to use the -o hdmi option.



Mounting a NAS Drive on Raspberry Pi

I got my Pi last year in December and I know i went through the painful task of searching for all the options for configuring my Pi to access a NAS (Network Attached Storage) drive. In my case my Transcend 750GB HD is connected to my Orange Livebox .

Today I decided that I would restart from scratch with my PI installation as OMXPlayer somehow stopped working so am writing this up such as others can quickly setup their NAS drive.

First thing you need to create the following directory on your PI :

/home/pi/myNAS/myShare

this is simple as executing :



  1. mkdir myNAS
  2. then cd myNAS
  3. mkdir myShare
Once you've create the directory you need the following information :

  • Location of your NAS storage device e.g //livebox/myNASLocation
  • Username and password to connect to the NAS device e.g myUsername / myPassword
Then login to your raspberryPi and execute the following command:



  • sudo nano /etc/fstab
You will need to specify the mapping for the NAS within this file simply add a line like the following to the file within the nano editor:
  • //livebox/myNASLocation/  /home/pi/myNAS/myShare cifs username=myUsername,password=myPassword,uid=pi  0 0

Obviously you will need to replace :


  1. //livebox/myNasLocation/  
  2. , myUsername with your actual NAS username
  3. and myPassword  with password for your NAS
-with your own values.


Now do a CONTROL+X  to exit nano , enter Y to save and enter on your Return to exit Nano.


Just to make sure you might want to re-open the file to check whether the settings were correctly saved.

Now that we have added the value , the last thing that to do is to mount the NAS , simply enter the following command :


  • sudo mount /home/pi/myNAS/myShare

Saturday, January 04, 2014

Firing up Raspberry PI omxplayer using Java code

The Pi has an excellent HDMI media player called omxplayer but it fails short in terms of interface to interact with , for starters by default you can interact with it only via command line for example the following command will play an mp4 file:

omxplayer -r -o hdmi myVideoFile.mp4

I have been working on a Spring Boot Restful application to be able to control the OMXPlayer on the Raspberry Pi . For now my Spring Boot application which runs on Raspberry Pi itself only provides a means to play a specified file and to stop the omxplayer .

Now whats interesting is that Spring Boot provides an easy means to quickly put up an executable jar file which can expose Restful endpoints . So next step is how to call the command above from Java on the Pi which is basically a unix system .

Play

Strangely as it sounds it took me a while to figure this out whilst navigating through stackoverflow , well its not that complicated.

All you need is a ProcessBuilder :

-----------------------------
ProcessBuilder pb = new ProcessBuilder("bash", "-c", "omxplayer -r -o hdmi myVideoFile.mp4");
Process process = pb.start();


StringBuffer sb = new StringBuffer();

BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));

String line = reader.readLine();
sb.append(line);
while (line != null) {
line = reader.readLine();
sb.append(line);
}
-------------------------------------------

The ProcessBuilder will execute a Java process which in turn execute your omxplayer play command on the unix system , the output of this operation is returned back to the sb StringBuffer . 


Stop

Currently I couldn't find an elegant way to stop the playback though so what am doing is that am literally killing the process using the kill command e.g :

kill -9 3144

where 3144 is some PID (Process ID) which you need to capture to kill the process (executed through the process builder) , note that each time you fire off the omxplayer it will have a different ID.

Note that I use the following  command to get the PID 

ps -ef |egrep \"/usr/bin/omxplayer.bin


This will give you something as shown in the screenshot below :





Note that in either case you can use the same codes above to execute the :

1. codes that will return you the output from which you can then extract the PID 
2. execute the kill command to stop the process 

So that's as simple as it is for now.

Thursday, January 02, 2014

Spring Boot on Raspberry Pi

Update-4th Jan 2014 : OMXPlayer start and stop now working through Rest Interface


I've successfully managed to deploy a minimal Spring Boot application which contains only one controller to interface with the Pi's omxplayer on a Raspberry Pi device. Although I managed to deploy the Spring Boot application properly and the rest interface is working , interaction with the omxplayer is still work in progress :) !


Below you will find the steps to get started installing JAVA and your existing Spring Boot application on the PI.

Installing Java on the PI

All that is really required as a pre-requisite is that JAVA needs to be installed and this is achieved with the following command on the PI:

sudo apt-get update && sudo apt-get install oracle-java7-jdk

The command will update your Raspberry Pi OS in my case its Raspbian and afterwards will install JAVA 7 embedded on your device its a 70+ MB download , so took less than 12 minutes in Mauritius .

Then once downloaded the install will unpack by itself here you need to have a little dose of patience , remember the Raspberry is not like your standard pc , give it some time :) .

Once everything has been installed go to your ssh client on Mack or Putty on Windows and execute the following command to check whether Java has been installed properly:

java - version



Running your Spring Boot Application

This section assumes that you already have a working Spring Boot application the one I've deployed merely exposes a Rest interface but does not have to persist anything in a database .

Note that there are lots of examples already available from the Spring.io GIT hub check the webui one here :

A simple getting started guide is also available here:

I've decided to use Jetty as the embedded servlet container as it is much lighter than Tomcat , so you will need to add the following within your maven POM file are adapt it to your gradle build if thats what your using.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M6</version>
</parent>
   <groupId>com.your.groupid</groupId>
        <artifactId>your-artifactid</artifactId>
        <packaging>jar</packaging>
        
<properties>
        </properties>
        
<dependencies>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-jetty</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-webmvc</artifactId>
                </dependency>
        </dependencies>
        <build>
                <plugins>
                        <plugin>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-maven-plugin</artifactId>
                        </plugin>
                </plugins>
        </build>
</project>

Note that the jackson-databind is required for exposing your Rest interface.

Once you are satisfied with your spring boot application and have tested that it is working properly its time to deploy the app on your Raspberry .

Get hold of your favorite FTP program and transfer generated Jar file to your /home/pi directory for example.

Then all you need to do is to execute the jar file as follows:

java - jar your-jar-filename-xxx.jar

where your-jar-filename-xxx needs to be substituted with the name of your generated jar file.

My application as mentioned was just a couple of classes big but it did take around 82 seconds to be installed , however once installed it ran without any issues , so this is promising. 


Ok that's it for now , I need to work a bit more on my Raspberry application such as I can finally provide a RESTful interface to the omxplayer , one thing for sure is that  Spring Boot makes deploying a webserver on the raspberry device something as easy as executing a JAR file.


Wednesday, January 01, 2014

Cyclone warning class 2 - Bejisa

Update 2-Jan-2014  9:05pm: There is now no cyclone warning in Mauritius , theoretically normal office day tomorrow !



Update 2-Jan-2014  6:30pm - A cyclone warning class 2 is still in force in Mauritius .  Adding some photos which are circulating on Facebook. Outside there are still sudden bursts of rain , weather is heavily cloudy in Port-Louis.



Picture of waves hitting Caudan Waterfront in Port-Louis





Careless people with small children enjoying themselves at the beach 





Branches/Trees have falling down near by car parking


Update 2-Jan-2014 12:17pm - Raining a lot in Port-Louis at the moment for some 30 minutes now looks like its  going to continue like that for a while now , also the cyclone is moving past Mauritius onto Reunion island , until something really unexpected happens chances are that tomorrow its normal working day :) !



Update 2-Jan-2014 8:08 am - Just had some heavy rainfall some moments ago in Port-louis , so hard that I could not open the window to take a picture as the rain was gushing in  , now its gone back to be more calm but there will be intermittent rainfall throughout the day. Thankfully its not hot the temperature is 23 degrees Celcius so its more or less bearable.





Update 2-Jan-2014 6:00 am - There is still a cyclone warning class 2 in force in Mauritius .

In Port-Louis the weather is cloudy there are some strong winds and some rain but nothing apart from that I cannot see any damage to trees etc.  From the looks of the updated trajectory however it appears that to be curving towards our friends in Reunion island either case for them the 3rd is going to be stormy.


Picture Source L'Express


Original Post 1-Jan-2014 -Mauritius has gone in cyclone warning class 2 looking at the satellite imagery it is highly likely that we will go in cyclone warning class 3 probably somewhere tomorrow afternoon and possibly not cyclone warning on the 3rd of January but this is only guess work , it might just be that cyclone turns a bit to the right and it would go over Mauritius rather than down straight to Reunion island.

                                                           Picture Source L'Express

The latest bulletin can be found here:

By the way if you are in Reunion be careful and take all your necessary precautions as in current downward progression it is highly likely that the eye of the cyclone will pass straight over the island according to the predictions of the Mauritius Meteorological Station (MMS).


However there is one thing which I was finding weird in the last prediction from MMS when there was a cyclone warning class 1 , the path of the eye of the cyclone was between Mauritius and Reunion which appeared really odd to me since the cyclone was really far off. I was thinking it would go rather downwards to the south.

Now with the latest satellite imagery I can see that at the actual path of the cyclone is indeed straight to the south which makes sense but then there are a lot of factors that affect the trajectory of a cyclone.

Lets see how things goes during the night hopefully there will not be any casualties and only wind and rain .

Motorcyclists wear uniforms now

Went to buy some rotis in the morning in Port-louis and it immediately struck me that something had drastically changed on our roads.

Dozen of brightly colored individuals were riding their bikes whilst flashing colors ranging from bright orange to lemon yellow. This is due to a law that has been passed that makes wearing those reflectors compulsory even in daylight as of 1st of Jan 2014.

Note that in Port-louis there are a lot of policeman so better wear that reflector if your using your bike.

I personally think its a good move to protect 2 wheelers although definitively not very sexy ! :)

Poisson Salay


A friend just shared this clip on his facebook wall,  really appreciate it as it looks like its a low budget production but the song is very catchy !



Tuesday, December 31, 2013

2014 Begins

We are now officially in 2014 in Mauritius and the deafning blast of firecracks in Port-louis is slowly coming to a halt !

All the best for 2014 everybody and long prosperity to the country ....and its inhabitants ;) !

Xbox One buying from Mauritius

The XBox one has been out since more than a month now but been officially released only in a few countries such as USA , UK , Canada and Australia.For the rest of us we know that there is not going to be any official release at all in Mauritius ( and many other developing countries )


So how to get an Xbox One ? There are thankfully a couple of options :

1. Option 1 - you can buy it from abroad and bring it in your suit case. However be careful it is a bit heavy , so might need to take it off its packaging but be careful with the kinect 2.0.

2. Option 2 - there are some resellers that are selling the consoles such as OneOnOne in Port-Louis and CTZone in Bagatelle but the prices at time of writing of the article are still relatively high and it doesn't appear that they have a lot in stock as well.However you do get a warranty with these resellers for CTZone is a one year warranty.

3. Option 3 - you can buy an XBox One online , and this is what I did . I bought the Xbox One from ebay and i bought it from the US and it got shipped in no time with UPS (3 days)

However buying online has some constraints:

1. You need to be certain that the seller has excellent ratings else he might  be pulling up a scam to take your money .. Note ebay does however have a service to resolve these disputes

2. If you are buying from US be careful as the AC Adapter supports only 110v , mine literarily went up in smoke , thankfully the console itself was unharmed. On a side note you will not get OEM Microsoft AC Adaptors at the moment with the XBox One as they are not sold separately so if you end up in my situation you will need to get a 3rd party replacement Adaptor. So best get an XBox One coming from Uk as it supports 240v which is the Mauritian standard as well.

3. Take time to choose you console and compare prices/games offered in the bundles don't go into a compulsive buying spree.

4. Of course try to do your transactions via Paypal ( works in Mauritius )


The graphics of the XBox One are really awesome you can see that just by looking at the texture of games such as Battlefield 4 or Killer Instinct however there are few titles at the moment on the store and installation takes a very long time .

Found one tip in regards to the long installation time on the XBox one . If you game appears to spend hours on 0% installation it is highly likely that it is first downloading patches before starting the installation. Note that the current connection bandwidth in Mauritius does not help a lot either.

So if you have the game disk :

1. Remove any disks from your tray
2. Disconnect from wireless network or take out your wired connection
3. Turn off your console
4. Turn it back on
5. Put in your game disk

You should see the installation going faster , however do note that the minute you are connected again you will be probably be asked to download updates but these would be much bearable.

Hope this helps you out will be posting on my experience as I spend more time on the XBox One !

Bejisa - Threatens our New Year Holidays !

Just been back from the supermarket its full of people pushing their loaded carts of  wine , beer , BBQ material and firecrackers but I wonder whether Mauritians will be able to be able to appreciate their BBQ or even their firecrackers tonight , I sincerely hope they do !

We currently have a cyclone warning class 1 on the island due to tropical cyclone Bejisa ..( I know its a weird name ) which is approaching the island . Now I just personally hope this is a mild cyclone which will lose in intensity in the next couple of hours as there will be a lot of people partying , drinking and driving at late hours from night clubs , parties or visiting family .



When lightning up your firecrackers or your BBQ make sure that you are shielded from strong winds which may deviate your coal for example into flammable material that may start a fire and cause harm to your property or that of others.

Make sure also to charge your batteries or top up your mobile data account , given that we have 2 days of holidays and risk of a cyclone you might end up turning your thumbs in the event of  an electrical blackout.

Nevertheless hope things work out fine in the next couple of  hours and hope every one has a very good New year party!

 


Happy new year 2014

I have decided to ressurect the Dodo for 2014 after 7 years of extinction . I have been very active on other medium but the time has come for the Dodo to jump back up on its feet :) , this time we are going to go a bit more technie with also gadgets in perspective !

Wishing everyone in the process a Happy New Year and all my wishes for 2014 !

Thursday, March 15, 2007

Adding GTalk to your Google Homepage

Google just launched yet another feature . Now you can add a GTalk widget directly to your Google Homepage.



Its cool I gave it a try a minute ago. Conversations appear in tabs.

Now you can access your Gtalk via GMail , the Gtalk desktop client and also from your Google Homepage.