Pour contourner le problème en attendant une mise à jour du plugin par le développeur, je vous propose la solution suivante.
Elle nécessite de modifier quelques lignes du code du plugin.
C’est sans danger car en cas de problème ou d’erreur, vous n’aurez qu’à réinstaller le plugin depuis le Market Jeedom.
Voici la procédure pas à pas pour les non initiés au développement.
-
Allez dans le menu REGLAGES → SYSTEM → CONFIGURATION → _OS/DB puis cliquez sur le bouton OUVRIR de l’option EDITEUR DE FICHIER.
-
Dans la partie DOSSIERS (liste de gauche), cliquez sur PLUGINS → VIGILANCEMETEO → CODE → CLASS
-
Dans la partie FICHIERS (liste du milieu), cliquez sur VIGILANCEMETEO.CLASS.PHP afin d’afficher le code du plugin dans la partir droite.
-
Recherchez le texte suivant avec CTRL-F (ou CMD-F sous Mac) : function getmaree
-
L’éditeur affiche la ligne: public function getMaree() {
-
Supprimez la ligne : $result = file($url);
-
Copiez à la place les lignes suivantes :
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, ‹ Jeedom ›);
$result = curl_exec ($ch);
curl_close($ch);
-
Supprimez toutes les lignes suivantes :
$maree = explode(’
’, $result[15]);
$maree = explode(’"’, $maree[1]);
$maree = $maree[0];
$pleine = explode('PM ', $result[17] );
$pleine = substr($pleine[1], 0, 5);
$pleine = str_replace(‹ h ›, ‹ ›, $pleine);
$basse = explode('BM ', $result[17]);
$basse = substr($basse[1], 0, 5);
$basse = str_replace(‹ h ›, ‹ ›, $basse);
-
copiez à la place les lignes suivantes :
preg_match(’((Coef.
)([0-9]{2,3}))’, $result, $data);
$maree = $data[2];
preg_match(’((innerHTML="PM )([0-9]{2}h[0-9]{2}))’, $result, $data);
$basse = str_replace(‹ h ›,’’,$data[2]);
preg_match(’((
BM )([0-9]{2}h[0-9]{2}))’, $result, $data);
$pleine= str_replace(‹ h ›,’’,$data[2]);
Il ne vous reste plus qu’à cliquer sur le bouton SAUVEGARDER (en haut à droite).
Vous devriez retrouver l’horaire des marées.
Exemple du code obtenu après modifications (vous pouvez aussi remplacer la totalité de la fonction par le code ci-dessous mais attention à bien prendre l’accolade de fin)
public function getMaree() {
$port = $this->getConfiguration('port');
if ($port == '') {
log::add(__CLASS__, 'error', 'Marée : Port non saisi');
return;
}
$url = 'http://horloge.maree.frbateaux.net/ws' . $port . '.js?col=1&c=0';
log::add(__CLASS__, 'debug', $url); // JYQ
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Jeedom');
$result = curl_exec ($ch);
curl_close($ch);
log::add(__CLASS__, 'debug', $result); // JYQ
if ($result === false) {
return;
}
//log::add(__CLASS__, 'debug', 'Log ' . print_r($result, true));
preg_match('((Coef.<br>)([0-9]{2,3}))', $result, $data);
$maree = $data[2];
preg_match('((innerHTML="<b>PM )([0-9]{2}h[0-9]{2}))', $result, $data);
$basse = str_replace('h','',$data[2]);
preg_match('((</b><br>BM )([0-9]{2}h[0-9]{2}))', $result, $data);
$pleine= str_replace('h','',$data[2]);
log::add(__CLASS__, 'debug', 'Marée ' . $maree . ', Pleine ' . $pleine . ', Basse ' . $basse);
$this->checkAndUpdateCmd('maree', $maree);
$this->checkAndUpdateCmd('pleine', $pleine);
$this->checkAndUpdateCmd('basse', $basse);
return ;
}