Pasteck, le passe technique

Le Passe Technique

Aspirer une page et l’afficher dans Jeedom sans iframe

Pour des raisons de sécurité les navigateurs bloquent le contenu des iframe.

Ce qui m’a dérangé, car dans un Design, je voulais afficher la météo détaillée du site meteociel.

  1. Créer un virtuel
    Donnez un nom au virtuel :
    Ajoutez une commande « info » de type « Autre » :
  2. Créer un scénario qui va aspirer la page web et la placer dans l’info du virtuel :
    Et dans le scénario, on ajoute un bloc Code

    Voici tout le code :

    //Aspirateur de la page web
    /*$url = "http://www.meteociel.fr/previsions/10150/branoux_les_taillades.htm";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($ch);
    curl_close($ch);*/
    //Edit : On peut aussi utiliser une fonction php plus simple : 
    $content=file_get_contents("http://www.meteociel.fr/previsions/10150/branoux_les_taillades.htm");
    //Récupération de l'élément que l'on désire garder dans la page web
    $regex="/<table\s+[^>]*><tr\s+[^>]*><td\s+[^>]*>Jour<\/td>(.*)<\/table>/ismU";
    preg_match_all($regex, $content, $a, PREG_PATTERN_ORDER);
    $res =$a[0][0];
    $res = utf8_encode($res);
    
    //Nettoyage et mise en forme de l'html
    $res = str_replace("<table ", "<table class=\"meteocieltable\" ", $res);
    $res = str_replace(" °C", "", $res);
    $res = str_replace("Temp.", "T°C", $res);
    $res = str_replace("Temp.<br><font size=1>ressen.</font>", "TR°C", $res);
    $res = str_replace("Humidité", "H", $res);
    $res = preg_replace('/<td\s+[^>]*>Pression<\/td>/i', "", $res);
    $res = preg_replace('/<td\s+[^>]*>[^>]* hPa<\/td>/i', "", $res);
    
    cmd::byString("#[Météo][MétéoCielVirtualHTML][MeteoHTML]#")->event(($res));

    La dernière ligne sert à envoyer le résultat HTML dans l’info du virtuel.

  3. Configurez le virtuel
    On va paramétrer le virtuel pour que seul l’affichage de l’HTML soit visible.
    Paramètres d’affichage du virtuel : Configuration avancée -> Affichage

    Puis cliquez sur les roues crantées à droite des commandes :

    Pour « Rafraichir », le rendre invisible :
    Pour la commande MeteoHTML :

    Puis un peu plus avancé, on peut modifier le code d’affichage css du virtuel.

    J’ai mis quelques points à jour donc un peu de css pour faire un cadre avec un scroll.

    <div style="color:black;font-size:11px;font-decoration:none!important;with:280px;height:455px;overflow-x:hidden;overflow-y:scroll;"
    

Laisser un commentaire