Quelques programmes Météo, RATP

Faites nous part ici de vos expériences avec les OpenKarotz/Karotz et de leur intégration dans Domoticz

Modérateurs : patrice, Doume

Répondre
fredclo
Messages : 81
Enregistré le : 28 févr. 2015, 16:57

Quelques programmes Météo, RATP

Message par fredclo » 01 mars 2015, 18:00

Bonjour,

je remercie toutes les personnes de ce forum car j'ai appris grâce à vous à créer une interaction entre domoticz et openkarotz. C'est que du bonheur !
Avant j'utilisais l'api pushingbox pour faire parler le lapin, et pleins de trucs, alors que maintenant c'est bcp plus puissant et facile (mais il faut s'investir un minimum pour comprendre).

Donc maintenant j'ai décidé de partager.

Dans le long thread de touteladomotique.com, on trouve un prg météo.
Je le remets ici, personnalisé au niveau des infos voulus. Le format json que je ne connaissais pas, est très simple et bien pensé. Facile donc de personnaliser les annonces. Le listing est en php (langage que je ne connaissais pas, à part de nom), mais facilement manipulable. Je l'ai mis sur mon raspberry pi dans le répertoire /var/www (serveur web). Ca peut etre sous nginx, ou autre et sur un synology ou autre serveur.

Dans Openkarotz, j'ai associé un bookz à ce prg pour qu'il soit appelé quand je le désire, mais j'ai aussi créé un interrupteur comme décrit dans ce forum, pour que domoticz me donne la météo tous les jours de la semaine, au réveil !

Code : Tout sélectionner

<?php
$json = file_get_contents('http://www.prevision-meteo.ch/services/json/paris');
$json = json_decode($json);

$today = "A Paris, aujourdhui il fait ".$json->current_condition->tmp." degrés. Les conditions sont ".$json->current_condition->condition.". Il fera une température maximum de ".$json->fcst_day_0->tmax." degrés. Demain, les conditions seront ".$json->fcst_day_1->condition." .Les températures iront de ".$json->fcst_day_1->tmin." degrés a ".$json->fcst_day_1->tmax." degrés.";
$replacetoday=str_replace(" ","%20",$today);

$url = "http://192.168.0.40/cgi-bin/tts?voice=alice&text=".$replacetoday."&nocache=1";
$lapin = file_get_contents("$url");

?>
fredclo
RPi sur powerbank, bouton off/reset, domoticz (début avec Fhem sur dockstar), 4 sondes 1wire via rj45, ctrl des volets, tv/fbx, lumière, détecteurs d'ouverture, karotz, multiroom via pifm, ecodevice, ATI RF, et prg du mode arrêt des radiateurs via FP

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


fredclo
Messages : 81
Enregistré le : 28 févr. 2015, 16:57

Re: Quelques programmes Météo, RATP

Message par fredclo » 01 mars 2015, 18:09

Autre prg qui m'était très très cher avec le Karotz : les horaires RATP. J'ai cherché partout, j'ai demandé plusieurs fois sur des forums, mais à priori je dois être le seul à utiliser ce prg ! comme je suis sûr que non, je vous fais partager ce que j'ai fait, et qui fonctionne.

Code : Tout sélectionner

<?php
// Include the php dom parser
include_once '/var/www/simplehtmldom_1_5/simple_html_dom.php';
setlocale(LC_CTYPE, 'fr_FR.UTF-8');
// Create DOM from URL or file
$html = new simple_html_dom();
$html = file_get_html('http://www.ratp.fr/horaires/fr/ratp/rer/prochains_passages/RB/Bures+Sur+Yvette/A');

$element1 = $html->find('td',3);
$element2 = $html->find('td',6);
$element3 = $html->find('td',9);
$element4 = $html->find('td',12);
$element5 = $html->find('td',15);
$element6 = $html->find('td',18);

// function remove accents
function wd_remove_accents($str, $charset='utf-8')
{
    $str = htmlentities($str, ENT_NOQUOTES, $charset);
    $str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
    $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
    $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractEres
    return $str;
}

// on construit lannonce
$annonce = "Prochains trains en direction de Paris, ".$element1." , ".$element2." , ".$element3." , ".$element4." , ".$element5." , ".$element6;
$annonce2=str_replace(" ","%20",$annonce);
$annonce3=str_replace("td%20class=\"passing_time\"","",$annonce2);
$annonce4=str_replace("/td","",$annonce3);
$annonce5=str_replace("'","",$annonce4);
$annonce6=str_replace("&agrave;","a",$annonce5);
$annonce7=wd_remove_accents($annonce6);
// echo $annonce7;

$url = "http://192.168.0.40/cgi-bin/tts?voice=alice&text=".$annonce7."&nocache=1";
$lapin = file_get_contents("$url");

?>
Comme pour la météo, ce n'est qu'un fichier à mettre dans le répertoire de votre site web (/var/www sur mon Rpi), à la différence près qu'ici, il faut ajouter un autre fichier php qu'on télécharge sur le web ici http://sourceforge.net/projects/simplehtmldom/files/, et le mettre dans /var/www/simplehtmldom_1_5/simple_html_dom.php

Ensuite il suffit de changer dans le listing, le nom de la gare voulue et c'est tout. Idem que météo, j'ai créer un interrupteur dans Domoticz pour que le lapin me donne les horaires juste avant de partir le matin. Très pratique. J'ai aussi associé un bookz pour avoir les horaires à la demande (comme décrit dans ce forum).

Évidemment, comme je n'y connais rien en programmation, des améliorations importantes sont à faire. Et elles sont les bienvenues : si le code peut-être plus rapide, mieux foutu, ou débuggé, partagez !

merci encore

fredclo
RPi sur powerbank, bouton off/reset, domoticz (début avec Fhem sur dockstar), 4 sondes 1wire via rj45, ctrl des volets, tv/fbx, lumière, détecteurs d'ouverture, karotz, multiroom via pifm, ecodevice, ATI RF, et prg du mode arrêt des radiateurs via FP

Répondre