Archive pour le ‘Nabaztag’ catégorie

Vos rendez-vous Google Agenda lus par votre Nabaztag

2 avril 2010

Voilà mon script qui permet à votre lapin de lire vos évènements Google Agenda, est publié sur le site Zcripts : http://www.zcripts.com/zcript/nabgendaz-votre-nabaztag-devient-votre-agenda-google-de-poche-ou-presque
Pour comprendre comment ça marche regardez ici (La version publiée sur Zcripts est améliorée par rapport à celle que j’ai mis sur le blog, notamment pour la gestion des répétitions)

Google Calendar Nabaztag

Google Calendar Nabaztag

Nabzmaree : votre Nabaztag vous donne les horaires des marées

28 mars 2010

Décidément, en ce moment j’œuvre pour ajouter quelques fonctionnalités à nos lapins. Si vous habitez près de la mer, voici Nabzmarée un script qui permet à votre lapin de vous donner les horaires des marées du jour.
Ce script est hébergé sur le site Zscript.com.

Alors, si ça vous intéresse, rendez-vous ici.

Les évènements Google Agenda dictés par votre Nabaztag (anniversaires, rdv etc…)

26 mars 2010

Si vous avez un compte Google Agenda et que vous souhaitez, que votre lapin vous rappelle les évènements du jour, voici un petit script pour vous.

A noter, que ce script sera bientôt disponible sur le site de zcripts.com pour que vous puissiez l’utiliser sans rien programmer, ni rien héberger 😉

Pour trouver l’adresse de votre fichier ical Google Calendar allez dans paramètres (en haut à droite) -> onglet Agendas -> cliquez sur le nom de l’agenda et descendez jusqu’à Adresse URL privée et cliquez enfin sur le bouton ical (vert)

ical_google_agenda

ical_google_agenda

[cc lang=’php’ width=’100%’ lines=’40’]
$serial = « ********* »; // serial de votre lapin
$token = « ********* »; // token de votre lapin
// chemin privé de votre fichier ical privé de Google Agenda
$path = « *********** »;
// une partie de l’adresse est en dur pour éviter l’exécution d’un
// script distant
$fichier = « http://www.google.com/calendar/ical ». $path . »basic.ics »;

$source = file_get_contents($fichier); // on ouvre le fichier
$source = preg_split(‘#\n(?!s)#’, $source);
$source = array_map(‘trim’, $source);

$tabEve = array(); // tableau des évenements
$cles = array(); // tableau des clés des évenements

$i = 0;
// Boucle qui parcours le fichier à la recherche des événements
// le but est de dire que de l’index début à l’index fin on a un événement
foreach($source as $k=>$eve){
// on récupère la zone pour gérer le décalage horaire
if (eregi(‘X-WR-TIMEZONE’,$eve)) {
$ex = explode(« : »,$eve);
$zone = $ex[1];
}

if ($eve == ‘BEGIN:VEVENT’) {
$cles[$i][‘debut’] = $k;
}

if ($eve == ‘END:VEVENT’) {
$cles[$i][‘fin’] = $k;
$i++;
}
}

$e = 0;
// boucle qui va rechercher les évènements que l’on a délimité plus haut, et enfin on garde seulement les
// éléments nécessaires pour le lapin
foreach($cles as $c){
for($eve=$c[‘debut’]; $eve< =$c['fin'];$eve++){ $ex = explode(":",$source[$eve]); if(!isset($eves[$e][$ex[0]])){ if(eregi("SUMMARY",$ex[0]) || eregi("RRULE",$ex[0])){ $eves[$e][$ex[0]] = utf8_decode($ex[1]); // repetitions } if(eregi("DTSTART",$ex[0])){ $eves[$e]['SMOIS'] = substr($ex[1],4,2); $eves[$e]['SJOUR'] = substr($ex[1],6,2); $eves[$e]['SANNEE'] = substr($ex[1],0,4); $eves[$e]['DTSTART'] = substr($ex[1],0,4).substr($ex[1],4,2).substr($ex[1],6,2); // jour début if(strlen($ex[1])>8){
$d = date(‘Y-m-d H:i’,mktime(substr($ex[1],9,2), substr($ex[1],11,2),0, substr($ex[1],4,2), substr($ex[1],6,2), substr($ex[1],0,4)));
$date = new DateTime($d,new DateTimeZone($zone));
$new_date = strtotime($d)+$date->getOffset(); // calcul décalage horaire
$eves[$e][‘HEURE’] = date(‘H:i’,$new_date);
}else{
$eves[$e][‘HEURE’] = «  »;
}

}
if(eregi(« DTEND »,$ex[0])){
$eves[$e][‘EMOIS’] = substr($ex[1],4,2);
$eves[$e][‘EJOUR’] = substr($ex[1],6,2);
$eves[$e][‘EANNEE’] = substr($ex[1],0,4);
$eves[$e][‘DTEND’] = substr($ex[1],0,4).substr($ex[1],4,2).substr($ex[1],6,2); // jour fin
}
}
}

$e++;
}

// Aujourd’hui
$jour = date(« d »); // jour
$mois = date(« m »); // mois
$annee = date(« Y »); // annee
$aujourdhui = date(« Ymd »); // date du jour

// création du tableau final qui récupère les évènements du jour (aussi ceux qui in une fréquence annuelle pour les anniversaires par exemple)
if(count($eves)>0){
foreach($eves as $eve){

if(empty($eve[‘HEURE’])){$eve[‘HEURE’] =  » « ;}else{$eve[‘HEURE’] =  » à  » . $eve[‘HEURE’];}

if($aujourdhui>=$eve[‘DTSTART’] && $aujourdhui< =$eve['DTEND']){ $tabEve[] = $eve['SUMMARY']. $eve['HEURE']; }else{ if(eregi("FREQ=YEARLY",$eve['RRULE'])){ $d = $annee.substr($eve['DTSTART'],4,4); if($aujourdhui>=$d && $aujourdhui<=$d){ $tabEve[] = $eve['SUMMARY']. $eve['HEURE']; } } } } } // Maintenant que nous avons le tableau tabEve des évènements du jour, on peut créer le texte du lapin $phrase = "évènements du jour : "; foreach($tabEve as $evefin){ $phrase .= $evefin. " . "; } if(empty($phrase)){ $phrase = "Rien aujourd'hui"; } // envoi au lapin ! $curl = curl_init(); $api_url = "http://api.nabaztag.com/vl/FR/api.jsp?&sn=$serial&token=$token&voice=$voice&tts=".urlencode(utf8_encode($phrase)); curl_setopt($curl,CURLOPT_HEADER,$api_url); curl_exec($curl); curl_close($curl); } [/cc] Voilà. Ce script pourrait être amélioré, avec la gestion des autres répétitions, MONTHLY etc...

Nabaztag : recevoir facilement son horoscope ! (Zcripts Nabazcope)

24 mars 2010

Enfin votre horoscope facilement sur votre Nabaztag !

nabazcope

Nabazcope

Dans un précédent billet j’expliquais comment programmer en PHP un script pour recevoir votre horoscope, maintenant il est hébergé !

Merci Zcripts

Vous pouvez grâce à Fabrice du site Zcripts recevoir votre horoscope sans rien programmer !

Recevoir mon horoscope au passage d’un Nano:ztag ou d’un Ztamp:s

Le programme que j’ai développé vous permet de générer une adresse internet à renseigner sur le site de violet.
(cliquez sur le sélecteur d’objet en haut de la page puis sélectionnez l’objet dans la liste, s’il n’apparaît pas, passez le devant le nez du lapin et il sera ensuite reconnu… Ensuite cliquez sur ses applis et rendez vous dans la rubrique /dev, puis « Transmettre des données dans une URL (Call URL) » et vous copiez/collez l’adresse

3 signes à la fois !

Et oui comme tout le monde n’est peut être pas du même signe chez vous, vous pouvez sélectionner 3 signes différents, qui seront envoyés à votre lapin (en une fois). Pourquoi pas plus ? tout simplement parce que ça fait trop pour l’API, mais rien ne vous empêche de programmer les autres signes sur un autre Ztamp:s par exemple.

Votre horoscope à une heure fixe !

Concrètement, lorsque l’adresse internet (URL) généré par le programme est lancée, votre lapin reçoit et vous dit les horoscopes sélectionnés. Si vous le voulez à heure fixe, il faut que l’adresse soit appelée à une heure donnée. Sur un serveur on appelle ça une tâche planifiée : ‘cron‘. Oui mais j’ai pas de serveur moi 🙁 ! C’est pas grave il existe une solution gratuite, qui est d’utiliser un service de cron sur internet.
Utilisez par exemple : http://www.cronoo.com/ ou http://cron.hiwit.org/.

Vous entrez l’adresse internet générée par le script et l’heure à laquelle vous voulez votre horoscope et le tour est joué !

Voici donc l’adresse de Nabazcope : http://www.zcripts.com/zcript/nabazcope-votre-nabaztag-sappelle-madame-irma

Retrouvez par ailleurs d’autres applications sur le site de Zcripts

Nabaztag et Google Reader (OPML)

7 mars 2010

Voici un petit script permettant à votre lapin de vous donner les dernières news provenant de l’ensemble de vos flux Google Reader.
Vous pouvez tester le résultat ici

Parser le fichier OPML

Pour cela, nous allons parser le fichier OPML que vous pouvez récupérer en cliquant sur Gérer mes abonnements (tout en bas à gauche de votre interface Google Reader) puis Importer/Exporter et enfin Exporter vos abonnements.

D’abord il faut extraire les différents flux du fichier OPML, pour cela j’ai créé une fonction recupFlux récursive.
[cc lang=’php’ width=’100%’]

// Flux google reader
$url_flux_rss = « http://*******/google-reader-subscriptions.xml »; // à remplacer évidemment
$tabFlux = array();
$tabNewRSS = array();

function recupFlux($xml,$prof=1) {
global $tabFlux;
foreach($xml->children() as $child) {
if (isset($child[‘xmlUrl’])) {
$tabFlux[] = $child[‘xmlUrl’];
}
recupFlux($child,$prof+1);
}

}
$opml= new SimpleXMLElement($url_flux_rss,null,true);
recupFlux($opml->body);

[/cc]

Vous obtenez ainsi un tableau $tabFlux contenant tous les flux.

Ensuite vous pouvez aller chercher chacune des 2 dernières news de chaque flux (par exemple).

[cc lang=’php’ width=’100%’]

foreach($tabFlux as $flux){
// recup des 2 dernières infos de chaque flux
$limite       = 2; // nombre d’actus à afficher

$Xml = @simplexml_load_file($flux); // charge le fichier
if($Xml === false){
die(« Erreur Flux, vérifiez l’adresse du flux »);
}

$i = 0;
foreach ($Xml->channel->item as $mon_rss){
$titre = (string) utf8_decode($mon_rss->title);
$quand = (string) utf8_decode($mon_rss->pubDate);
$i++;

$tabNewRSS[strtotime($quand)] = $titre; // on créé un nouveau tableau
if($i >= $limite){
break;
}
}

}
krsort($tabNewRSS); // trie le tableau pour avoir les dernières news dans l’ordre tous flux confondus

[/cc]
J’ai mis en clé du tableau le timestamp de la publication de la news (dans l’absolu, si 2 news avaient la même date la 2ème écraserait l’autre…)

Parle mon lapin

Il ne reste plus qu’à donner la parole à votre lapin, comme vu dans l’article précédent

[cc lang=’php’ width=’100%’]
include(‘nabClass.php’);
$serial = « **** »;
$token = « **** »;

$nabaztag = new nabaztag($serial,$token);
$phrase = «  »;
foreach($tabNewRSS as $final){
$phrase .= $final. ». « ;
}

$phrase = html_entity_decode($phrase);

if ($phrase){
$nabaztag->speak(utf8_encode($phrase));
}

$nabaztag->display_api_response();

[/cc]

Vous pouvez tester le résultat ici
A noter que ce script envoi à votre Nabaztag les infos à un instant T, mais on pourrait très facilement recréer un nouveau fichier RSS à partir de $tabNewRSS pour le soumettre à l’interface de Violet, ainsi votre Lapin vous tiendrait au courant au fur et à mesure des nouvelles informations…

Générer un nouveau flux RSS

Le but est de soumettre à l’interface de violet la page qui va générer le flux RSS qui mixe les flux de notre Google Reader.
Première chose, indiquez que le résultat sera du XML, avec la balise Header
[cc lang=’php’ width=’100%’]
header(« Content-Type: text/xml;charset=utf-8 »);
[/cc]
Ensuite, au lieu d’envoyer le texte au Nabaztag, nous allons générer un flux RSS à partir du tableau $tabNewRSS que nous avons créé ci-dessus.

[cc lang=’php’ width=’100%’]
$rss = ‘< ?xml version="1.0" encoding="utf-8"?>‘;
$rss .= ‘‘;
$rss .= « « ;
$rss .= « Mon Google Reader RSS« ;
$rss .= « http://blog.yann.info« ;
$rss .= « Compilation de mes flux Google Reader« ;
$rss .= « fr-FR« ;

foreach($tabNewRSS as $final){
$rss .= « « ;
$rss .= «  » . clean($final) . « « ;
$rss .= « http://blog.yann.info« ;
$rss .= « « .date(« D, d M Y H:i:s »). »« ;
$rss .= « « ;
$rss .= « 
« ;
}

$rss .= « « ;
$rss .= « « ;
echo $rss;
[/cc]
Pour voir un exemple de ce que ça peut donner cliquez ici
Le résultat est un nouveau flux RSS, que vous pouvez soumettre à l’interface Violet. Les news sont à chaque fois régénérées donc votre lapin ne vous donnera que les dernières news dès qu’il y aura du nouveau.
Comme le lapin ne lira que le titre du RSS je n’ai rempli que cette partie dynamiquement.

[cc lang=’php’ width=’100%’]
function clean($titre) {
return utf8_encode(htmlspecialchars(stripslashes($titre)));
}
[/cc]

Débuter avec son Nabaztag

6 mars 2010

Vous venez de recevoir votre lapin, mais vous ne savez pas encore quoi faire avec, alors je vais essayer de vous éclairer un peu.

C’est quoi ce lapin !?

Ce lapin se connecte à internet et est capable de parler, il est capable de lire à haute voix du texte. Une des principales compétence de celui ci est notamment de pouvoir lire les titres des flux RSS. Un flux RSS est un fichier XML qui est utilisé sur presque tout les sites web pour vous notifier des nouvelles informations. Exemple le flux RSS des actualités de google se trouve ici en vous y abonnant vous pouvez par exemple l’intégrer à votre barre personnelle de firefox pour être tenu au courant des dernières infos. Ce qui permet en un clic de surveiller les dernières nouveautés de vos sites préférés.

google_actus_RSS

Oui et le rapport avec ce lapin ? le rapport, c’est que le Nabaztag sera capable de lire ces informations. Ainsi, si on prend l’exemple du flux RSS de google ci-dessus, votre lapin va vous dire : « Agriculture : Sarkozy ne propose aucune solution immédiate. Le Monde » puis il va enchainer avec « Eric Besson: Je n’ai pas fait le jeu du Front national – 20minutes.fr » etc…

Le nombre de news qu’il lira est paramétrable ainsi que la fréquence (soit dès qu’il y a du nouveau, soit à heures fixes) mais on verra ça plus bas…

Sinon votre lapin est capable de « danser » disons qu’il fait des chorégraphies (il bouge les oreilles et clignote de plusieurs couleurs) c’est pas très utile mais amusant, dirons nous… A ce sujet il peut s’accorder avec un autre lapin de la communauté.

Ce qui est vraiment intéressant avec ce lapin c’est que l’API est ouverte, c’est à dire que l’on peut programmer (vous ou la communauté) des fonctions supplémentaires.

Pour voir une vidéo de ce qu’il sait faire allez ici

Connectez votre lapin en wifi

La procédure complète pour connecter votre lapin en wifi se trouve ici. Et oui car tout l’intérêt du lapin est d’être connecté à internet.

Créez un compte Violet

Maintenant qu’il est connecté au net, vous devez créer un compte ici afin de pouvoir gérer les applications de votre lapin (choix des flux RSS etc…).

Les choses

Vous avez la possibilité d’interagir avec le lapin grâce à des accessoires supplémentaires (payants). Le but est de lancer une action sur demande, c’est à ça que servent les Ztamp:s et les Nano:ztag

ztamps

nanoztag

Nano:ztag

Ztamp:s

En effet, en les plaçant devant le lapin vous allez déclencher l’action. Quelle action ? et bien c’est vous qui choisirez, sur le site de Violet, que pour tel timbre ou tel Nano (mini lapin), c’est telle action qui est exécutée. Par exemple j’ai collé un Ztamp:s sur la télécommande de ma TV et quand je la passe devant le lapin, il me dit le programme TV.

Il existe également des livres spéciaux, que votre lapin sera capable de lire, ainsi que le Mir:ror qui est une station d’accueil pour les Nano et les Ztamps, en gros au lieu de les passez devant le lapin vous les passez devant le Mir:ror qui est branché à votre PC (pour ouvrir un fichier sur votre PC par exemple…)

Première application

Vous verrez sur le site de Violet qu’il y a plusieurs applications. Pour attribuer votre première Appli à votre lapin, connectez vous sur le site de violet et allez dans le sélecteur d’objet en haut de la page pour sélectionner votre lapin, ensuite, à gauche vous verrez le nom de votre lapin et en dessous un lien Ses Applis, cliquez dessus et vous verrez tout à droite un lien Ajouter application, cliquez dessus et vous arriverez sur le champ de compétence de votre lapin.

Applcations nabaztag

Il y a plein de fonctions rangées par catégories, la plupart sont très explicites, donc là je vous propose plutôt d’aller ajouter le flux RSS de Google actus que l’on a évoqué plus haut. (enfin vous pouvez aussi mettre mon flux RSS )

Rendez-vous dans la rubrique Vie très pratique puis dans Lire un flux RSS, là vous allez entrer le nom de votre flux, exemple Actualités de Google, dans Adresse du flux vous copiez/collez l’adresse du flux de google, le nombre de news à lire, vous choisissez la langue des infos, ici Français et enfin la fréquence soit : à une heure fixe de votre choix, soit dès qu’il y a du nouveau.

RSS nabaztag

Bien sûr vous cliquez sur ajouter ces paramètres en bas de la page. N’hesitez pas à ajouter plusieurs applications, pour que vous puissiez tester les capacités de votre lapin, vous les supprimerez après si elles ne vous conviennent pas. Parmi les applications on peut citer des radios WEB, des notifications de mails, des informations…

Trouver le numéro de série et le token de mon Nabaztag

Si vous voulez exploiter l’API de votre lapin ou les applications de la communauté vous aurez besoin du numéro de série et du token qui identifie votre Nabaztag. Pour cela rendez vous dans paramètres, puis Ecosystème.

nabaztag serie token

Ajouter une application à un objet

Pour attribuer une action à un objet, cliquez sur le sélecteur d’objet en haut de la page puis sélectionnez l’objet dans la liste, s’il n’apparaît pas, passez le devant le nez du lapin et il sera ensuite reconnu… ensuite cliquez sur ses applis comme pour le lapin.

Les applications ne sont pas exactement les mêmes ! il y a surtout la rubrique /dev qui vous permet de créer vos programmes pour votre nabaztag 😉

Horoscope et Programme TV

Pour que votre lapin vous dise votre horoscope cliquez ici

Pour le programme TV du soir cliquez ici

Pour voir comment j’ai fait, allez consulter mon ancien article : nabaztag-dis-moi-ce-que-je-veux-entendre/

Pour plus d’infos

http://nabaztag.forumactif.fr/forum.htm

http://www.zcripts.com

http://www.nabzone.com

L’API de votre lapin

http://doc.nabaztag.com/api/home.html

Nabaztag, dis moi ce que je veux entendre !

12 février 2010

Pour tester :

Pour que votre lapin vous dise votre horoscope cliquez ici

Pour le programme TV du soir cliquez ici

Si vous possédez un lapin nabaztag, vous voudriez peut-être disposer de plus de fonctionnalités…

Exemple : Lapin ! donnes moi mon horoscope ou le programme TV !

Oui, mais le problème c’est que si vous demandez à votre cher et tendre lapin de lire un flux RSS, le résultat ne sera peut être pas celui que vous attendiez. En effet, il va peut être se contenter de dire « horoscope du lundi » puis « horoscope du mardi » etc… et oui car le lapin lit les titres du flux, hors, ce qui vous intéresse c’est juste la balise description du premier item du flux. Pour plus d’infos sur les flux RSS, consultez Wikipedia.

Donc ce que je vous propose de faire, à partir de la classe PHP développée par Dan Ruscoe, qui se trouve à l’adresse http://ruscoe.org/php-class-for-the-nabaztag-api/, c’est tout simplement de ne lire que n entrées du flux et de l’envoyer à votre Lapin chéri.

Vous devez tout d’abord, inclure la classe, puis renseigner le serial et le token de votre nabaztag. Enfin, vous saisissez l’adresse du flux et le nombre d’infos que le lapin devra dire.

[cc lang= »php » tab_size= »4″ width= »100% » lines= »70″]
include(‘nabClass.php’);
// ———- variables à modifier———
$serial = ‘*******’; // le serial de votre lapin
$token = ‘*******’; // le token de votre lapin
// Flux RSS ex : Horoscope
$url_flux_rss = « http://www.un_flux_rss_horoscope/rss/verseau.php »;
// nombre d’actus (horoscope =  1,  pour prog TV = nb chaines…)
$limite =  1;

//———————————————

$phrase = «  »; // initialisation du texte à prononcer

// Creation de l’objet nabaztag
$nabaztag = new nabaztag($serial,$token);

$Xml = @simplexml_load_file($url_flux_rss);
if($Xml === false){
die(« Erreur Flux, vérifiez l’adresse du flux »);
}

$i = 0;
foreach ($Xml->channel->item as $mon_rss){
$titre = (string) utf8_decode($mon_rss->title);
$description = (string) utf8_decode($mon_rss->description);
$i++;
$phrase .= $titre. » . « .$description;

if($i >= $limite){
break;
}
}
$phrase = html_entity_decode($phrase);
echo $phrase; // si on veut on affiche le texte qu’il va dire

if ($phrase){
$nabaztag->speak(utf8_encode($phrase)); // envoi son texte au lapin
}

// infos debug (optionnel)

echo  »


Paramètres API: « ;

$nabaztag->display_api_params();

echo « Réponse :« ;

$nabaztag->display_api_response();

[/cc]

NB : pour des questions de droits/autorisations je n’ai pas mis un vrai flux, cependant je suis certain que vous n’aurez pas de mal à trouver un flux d’horoscope ou de programme tv ou ce que vous voulez….

Ensuite vous mettez le script en ligne. Pour l’executer, soit vous passez par un ztamp:s ou un nano:ztag et vous lui attribuer l’application : transmettre des données dans une url (dans /dev) sur le site de violet, et vous indiquez l’adresse du script. Soit vous passez par un cron sur votre hébergement pour qu’il soit dit à heure fixe.

Perso pour le programme TV, j’ai ajouté ça :

[cc lang= »php » tab_size= »4″ width= »100% » lines= »7″]
if(eregi(« 20: »,$titre) ){
$titre = preg_replace(‘#\((.+)\)#U’,  », $titre);
$phrase .= $titre. ». « ;
}
[/cc]
pour n’avoir que la première partie de soirée.