lunes, 23 de abril de 2012

Working with Arduino Boards

Today I am spending to program Arduino Boards.

Arduino Boards are very versatile and easy to program. The board
I programing is Libelium, Libelium is a company specializing in sensor networks. The company also providing boards has a wide range of accessories, in this case I work with gas sensors.

I made a file of modular programming in which with few configuration strings I can enable or disable features.

The development in question allows the variables collected from the sensors and setting them in a string compatible with csv format and sends by radio frequency up to 12 km and writ to a local text file (MicroSD card) to ensure not lose any data.


void setup()
                {
                PWR.ifHibernate();
                key_access_in_EEPROM();
                configurar_xbee868();
                RTC.ON();
                activar_sensores();
                SD.ON();
 
                [...] 
 
                crear_fichero();
                }

void loop()
                {
                Utils.blinkLEDs(3000);
                if( intFlag & HIB_INT )
                        {
                        hibInterrupt();
                        }
                PWR.hibernate("00:00:00:10",RTC_OFFSET,RTC_ALM1_MODE2);
                }
 
 
[...]
 
void generar_paquete_motas()
                {
                [...]
                //generación de todas las variables 
                [...]
                sprintf(aux2," MOTA2: %s, -mac: %s%s, -bat: %d, -temp: %s, 
                            -ozone: %s, -polution: %s \n", RTC.getTime(), 
                             macHigh, macLow, PWR.getBatteryLevel(), tabla, 
                             tabla2, tabla3);          
                data=aux2;
                enviar_paquete();
                }
 
[...] 

void hibInterrupt()
                {
                  generar_paquete_motas();
                  escribir_linea_fichero();
                  Utils.blinkLEDs(1000);
                  Utils.blinkLEDs(1000);
                  intFlag &= ~(HIB_INT);
                  } 


As seen, the Loop and Setup functions only call functions that can run or not, based on the configuration you need.

This gives us great versatility and ease way of configuration.

jueves, 19 de abril de 2012

PicasaWeb for Google+ 1.0.1

First version Here:

http://juanantoniocarrillonavarro.blogspot.com.es/p/picasaweb-for-google.html

Developping chrome extensions

As you can imagine I am not an advanced developer of extensions for Google Chrome but I would like to share with you what I have learned to develop my first extension.

4 days ago I had no idea about how it developed an extension and that only need 3 or 4 files, possibly some more if you want to develop something more advanced.

The first and most important is "manifest.json"




{
    "name": "Title",
    "version": "1.0",
    "background_page": "background.html",
    "options_page": "opciones.html",
    "description": "Aprendiendo a usar archivos de configuracion",
    "browser_action": {"default_icon": "icono.png"},
    "content_scripts": [{ "matches": ["http://*/*"], "js": ["jquery.min.js"] }],
    "permissions": ["tabs", "http://*/", "https://plus.google.com/" ]
}

This file describes the overall configuration of the extension.
The field "background_page" is one that contains the name of the file that has the code that runs our extension.
The field "Browser_action" accepts various parameters, in this case we are defining the icon that will have our extension in the browser interface.
In "Content_scripts", as it somehow define what files we want to have available in our environment (jquery.min.js, in this case) and that websites (entire site).
Finally we have the "Permissions". In this field we will enable our extension to interact with web elements and there indicate.



The second file is background.html

<script>
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if(tab.url.indexOf("plus.google") != -1 && tab.url.indexOf("photos") != -1 ) {
        if (changeInfo.status=="complete")
            {
            chrome.tabs.executeScript(tab.id, {'file':'jquery.min.js'});
            chrome.tabs.executeScript(tab.id, {'file':'inyeccion.js'});
            }
    }
});
</script>

This file is very simple.
Here you are going to define who will do your extension.
For example for you to understand quickly. , I am detecting when a tab is updated and detect when loading is complete.

If the URL of the website in which contains the words "plus.google" and "photos" then injected into the web the "JS" file that i have defined in my Manifest.json file and "inyeccion.js" that implements the various actions that get the purpose of the extension.

Of course this post is not intended to give an extension done. My purpose is to explain how it works in a way as simple as possible. Official help of Google is very useful, I recommend it

miércoles, 18 de abril de 2012

Picasaweb for Google+ 1.0


This project is my first one personal project. I hope not the last.
I have decide to design an extension for Google Chrome to rescue an easy access to the public Picasaweb Gallery for each user.

Few weeks ago when you try to navigate to a public picasa gallery there was no problem, It wasn´t easy but you can see it. Now it´s imposible. Actually is not imposible but you must to know some tips to get access.

With this extension i want to get access everybody to the full functionality of picasaweb from Google+.

Next days i will public the extension. Now i am testing the first version.