J’ai modifié et fait tourner mon code pour faire remonter la légende en fonction des suffixes pro, part ou sans rien.
Cependant je n’ai vu absolument aucune différence dans l’intitulé des légendes sur les 3 types. Es-tu sur que ça remonte quelque chose de différent ?
Tu as repris mon code ? Je pense qu’il y a un souci avec. J’ai toujours vigilance pour ma commune alors que le site donne autre chose…
Je veux bien ton code du coup
Bon voilà ça marche !
je récupère les infos de la zone qui me concernent uniquement, en différenciant les zones eau superficielle et eau souterraine.
la légende pro/part semble marcher mais je n’ai pas pu tester tous les cas. Si tu peux vérifier chez toi
$date = date('Y-m-d');
$codeInseeCommune = '69027';
$typeInfo = 'pro'; // part, pro ou vide
if (!empty($typeInfo)){
$typeInfo = '_'.$typeInfo;
} else {
$typeInfo = '';
}
//récupération nom commune
$url = 'https://geo.api.gouv.fr/communes?code='.$codeInseeCommune.'&fields=code,nom,contour&format=geojson&geometry=contour';
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
$nomCommune = $jsonData['features']['0']['properties']['nom'];
}
//récupération info arreté
$url = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/arretes/'.$date.'/commune/'.$codeInseeCommune;
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
$codeInseeDepartement = $jsonData[0]['codeInseeDepartement'];
$dateDebutValiditeArrete = $jsonData[0]['dateDebutValiditeArrete'];
$dateFinValiditeArrete = $jsonData[0]['dateFinValiditeArrete'];
//affichage info arreté
$scenario->setlog('Département : '.$codeInseeDepartement);
$scenario->setlog('Début validité arreté : '.$dateDebutValiditeArrete);
$scenario->setlog('Fin validité arreté : '.$dateFinValiditeArrete);
$scenario->setlog('Commune : '.$nomCommune);
//balayage des zones
foreach ($jsonData[0]['restrictions'] as $value=>$jsonKey) {
$nomNiveau = $jsonKey['nomNiveau'];
$nomZone = $jsonKey['zoneAlerte']['nomZone'];
$typeZone = $jsonKey['zoneAlerte']['typeZone'];
//balayage des communes pour récupérer uniquement info de celle recherchée
foreach ($jsonKey['zoneAlerte']['communes'] as $value2=>$jsonKey2) {
if ( $jsonKey2['codeInseeCommune'] == $codeInseeCommune) {
//recupération info détaillé sur le niveau d'alerte
$url_legende = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/editoriaux/?idEditorial=legende_'.strtolower($nomNiveau).$typeInfo;
$request_http_legende = new com_http($url_legende);
$request_http_legende->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$legende=json_decode(trim($request_http_legende->exec()), true);
//affichage résultat
$scenario->setlog('');
$scenario->setlog('----------'.strtoupper($nomZone.' ['.$typeZone.']').'----------');
$scenario->setlog('Niveau >> '.$nomNiveau);
$scenario->setlog($legende[0]['contenuEditorial']);
//$scenario->setlog('URL legende -> '.$url_legende);
}
}
}
}
Maintenant je pense que je vais me faire un widget pour afficher tout ça proprement. Peut-être en as tu déjà fait un que je puisse reprendre?
non seulement il est extrêmement long à l’affichage mais je pense que le site est complètement à la ramasse: il me dit aucune alerte alors que la carte et toute rouge écarlate…
Merci @elmer69 ,
Ton code est bien plus digeste que le mien.
Oui, le site n’est pas une valeur sûre ce qui est bien dommage pour celles et ceux qui se fient à un site du gouvernement pour être dans les clous
Concernant le widget, non je n’ai rien fait. En principe je fais un truc très simple avec le module widget intégré à Jeedom et des icones Font Awesome.
J’ai poussé les infos dans un virtuel. C’est fonctionnel mais pas franchement beau
Si tu as des idées pour rendre ça un peu plus friendly
Un plugin permettrait de créer une tuile vraiment adapté avec des couleurs qui pourrait reprendre les echelles de couleur du site par exemple. C’est hors de mes compétences pour l’instant.
Hello @OUARZA
Merci pour le coup de main
Je viens d’intégrer ta contribution sur le formatage de la date. voici donc la dernière version de mon code :
$date = date('Y-m-d');
$codeInseeCommune = '69027';
$typeInfo = 'part'; // part, pro ou vide
if (!empty($typeInfo)){
$typeInfo = '_'.$typeInfo;
} else {
$typeInfo = '';
}
//récupération nom commune
$url = 'https://geo.api.gouv.fr/communes?code='.$codeInseeCommune.'&fields=code,nom,contour&format=geojson&geometry=contour';
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
$nomCommune = $jsonData['features']['0']['properties']['nom'];
}
//récupération info arrêté
$url = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/arretes/'.$date.'/commune/'.$codeInseeCommune;
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
$codeInseeDepartement = $jsonData[0]['codeInseeDepartement'];
$dateDebutValiditeArrete = date("d/m/Y",strtotime($jsonData[0]['dateDebutValiditeArrete']));
$dateFinValiditeArrete = date("d/m/Y",strtotime($jsonData[0]['dateFinValiditeArrete']));
//affichage info arreté
$scenario->setlog('Département : '.$codeInseeDepartement);
$scenario->setlog('Début validité arrêté : '.$dateDebutValiditeArrete);
$scenario->setlog('Fin validité arrêté : '.$dateFinValiditeArrete);
$scenario->setlog('Commune : '.$nomCommune);
//mise à jour des commmandes du virtuel
cmd::byString('#[Info][Propluvia info][Département]#')->event($codeInseeDepartement);
cmd::byString('#[Info][Propluvia info][Date début arrêté]#')->event($dateDebutValiditeArrete);
cmd::byString('#[Info][Propluvia info][Date fin arrêté]#')->event($dateFinValiditeArrete);
cmd::byString('#[Info][Propluvia info][Commune]#')->event($nomCommune);
//balayage des zones
foreach ($jsonData[0]['restrictions'] as $value=>$jsonKey) {
$niveauRestriction = $jsonKey['niveauRestriction'];
$nomNiveau = $jsonKey['nomNiveau'];
$nomZone = $jsonKey['zoneAlerte']['nomZone'];
$typeZone = $jsonKey['zoneAlerte']['typeZone'];
//balayage des communes pour récupérer uniquement info de celle recherchée
foreach ($jsonKey['zoneAlerte']['communes'] as $value2=>$jsonKey2) {
if ( $jsonKey2['codeInseeCommune'] == $codeInseeCommune) {
//recupération info détaillé sur le niveau d'alerte
$url_legende = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/editoriaux/?idEditorial=legende_'.strtolower($nomNiveau).$typeInfo;
$request_http_legende = new com_http($url_legende);
$request_http_legende->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$legende=json_decode(trim($request_http_legende->exec()), true);
if(is_array($legende)){
$contenuEditorial = $legende[0]['contenuEditorial'];
}
//affichage résultat dans le log scénario
$scenario->setlog('');
$scenario->setlog('----------'.strtoupper($nomZone.' ['.$typeZone.']').'----------');
$scenario->setlog('Niveau >> '.$nomNiveau.' ('.$niveauRestriction.')');
$scenario->setlog($contenuEditorial);
//$scenario->setlog('URL legende -> '.$url_legende);
//mise à jour des commmandes du virtuel
if ($typeZone == 'SUP') {
cmd::byString('#[Info][Propluvia info][Nom zone SUP]#')->event($nomZone);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SUP]#')->event($niveauRestriction);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SUP]#')->event($nomNiveau);
cmd::byString('#[Info][Propluvia info][Editorial zone SUP]#')->event($contenuEditorial);
} elseif ($typeZone == 'SOU') {
cmd::byString('#[Info][Propluvia info][Nom zone SOU]#')->event($nomZone);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SOU]#')->event($niveauRestriction);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SOU]#')->event($nomNiveau);
cmd::byString('#[Info][Propluvia info][Editorial zone SOU]#')->event($contenuEditorial);
} else {
cmd::byString('#[Info][Propluvia info][Nom zone SUP]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SUP]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SUP]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Editorial zone SUP]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Nom zone SOU]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SOU]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SOU]#')->event(NULL);
cmd::byString('#[Info][Propluvia info][Editorial zone SOU]#')->event(NULL);
}
}
}
}
}
Comme tu as pu le constater je mets à jour directement les commandes du virtuel créé pour l’occasion.
Concernant l’affichage, mon idée serait de graduer le niveau d’alerte avec le même code couleur que le site. Soit sur le texte ou une pastille qui reprenne la couleur. Tes 2 propositions sont intéressantes, à voir celle qui donnerai le meilleur rendu sur l’ensemble.
Pas complètement. cad sur les zones ça ne devrait rien afficher (valeurs vides) mais pour la première partie je ne sais pas comment ça va réagir.
Malheureusement ce matin la commune dans ton lien renvoie sur des restrictions, je ne peux donc pas le verifier. Il faudrait trouver une commune qui n’a pas encore de restriction (si cela existe encore…)
Si j’en trouve une, je ferai les modifs en conséquence.
c’est en faisant que l’on apprend n’hésites pas à me solliciter pour faire des tests ou autre.
Bon courage
Je viens de modifier le code pour prévoir ce cas là, et de le tester avec la commune d’Amiens.
Voici donc le nouveau code :
$date = date('Y-m-d');
$codeInseeCommune = '69027';
$typeInfo = 'part'; // part, pro ou vide
if (!empty($typeInfo)){
$typeInfo = '_'.$typeInfo;
} else {
$typeInfo = '';
}
//récupération nom commune
$url = 'https://geo.api.gouv.fr/communes?code='.$codeInseeCommune.'&fields=code,nom,contour&format=geojson&geometry=contour';
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
$nomCommune = $jsonData['features']['0']['properties']['nom'];
}
//récupération info arrêté
$url = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/arretes/'.$date.'/commune/'.$codeInseeCommune;
$request_http = new com_http($url);
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$jsonData=json_decode(trim($request_http->exec()), true);
if(is_array($jsonData)){
//vérifie qu'un arrêté existe
if ($jsonData['message'] != NULL) {
$scenario->setlog('Aucun arrêté trouvé à la date du '.$date. ' pour la commune de '.$nomCommune);
// mise à jour virtuel
cmd::byString('#[Info][Propluvia info][Département]#')->event('');
cmd::byString('#[Info][Propluvia info][Date début arrêté]#')->event('Aucun arrêté trouvé à la date du '.$date);
cmd::byString('#[Info][Propluvia info][Date fin arrêté]#')->event('');
cmd::byString('#[Info][Propluvia info][Commune]#')->event($nomCommune);
cmd::byString('#[Info][Propluvia info][Nom zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom restriction zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Editorial zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom restriction zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Editorial zone SOU]#')->event('');
} else {
$codeInseeDepartement = $jsonData[0]['codeInseeDepartement'];
$dateDebutValiditeArrete = date("d/m/Y",strtotime($jsonData[0]['dateDebutValiditeArrete']));
$dateFinValiditeArrete = date("d/m/Y",strtotime($jsonData[0]['dateFinValiditeArrete']));
//affichage info arreté
$scenario->setlog('Département : '.$codeInseeDepartement);
$scenario->setlog('Début validité arrêté : '.$dateDebutValiditeArrete);
$scenario->setlog('Fin validité arrêté : '.$dateFinValiditeArrete);
$scenario->setlog('Commune : '.$nomCommune);
//mise à jour des commmandes du virtuel
cmd::byString('#[Info][Propluvia info][Département]#')->event($codeInseeDepartement);
cmd::byString('#[Info][Propluvia info][Date début arrêté]#')->event($dateDebutValiditeArrete);
cmd::byString('#[Info][Propluvia info][Date fin arrêté]#')->event($dateFinValiditeArrete);
cmd::byString('#[Info][Propluvia info][Commune]#')->event($nomCommune);
//balayage des zones
foreach ($jsonData[0]['restrictions'] as $value=>$jsonKey) {
$niveauRestriction = $jsonKey['niveauRestriction'];
$nomNiveau = $jsonKey['nomNiveau'];
$nomZone = $jsonKey['zoneAlerte']['nomZone'];
$typeZone = $jsonKey['zoneAlerte']['typeZone'];
//balayage des communes pour récupérer uniquement info de celle recherchée
foreach ($jsonKey['zoneAlerte']['communes'] as $value2=>$jsonKey2) {
if ( $jsonKey2['codeInseeCommune'] == $codeInseeCommune) {
//recupération info détaillé sur le niveau d'alerte
$url_legende = 'https://eau.api.agriculture.gouv.fr/apis/propluvia/editoriaux/?idEditorial=legende_'.strtolower($nomNiveau).$typeInfo;
$request_http_legende = new com_http($url_legende);
$request_http_legende->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$legende=json_decode(trim($request_http_legende->exec()), true);
if(is_array($legende)){
$contenuEditorial = $legende[0]['contenuEditorial'];
}
//affichage résultat dans le log scénario
$scenario->setlog('');
$scenario->setlog('----------'.strtoupper($nomZone.' ['.$typeZone.']').'----------');
$scenario->setlog('Niveau >> '.$nomNiveau.' ('.$niveauRestriction.')');
$scenario->setlog($contenuEditorial);
//$scenario->setlog('URL legende -> '.$url_legende);
//mise à jour des commmandes du virtuel
if ($typeZone == 'SUP') {
cmd::byString('#[Info][Propluvia info][Nom zone SUP]#')->event($nomZone);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SUP]#')->event($niveauRestriction);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SUP]#')->event($nomNiveau);
cmd::byString('#[Info][Propluvia info][Editorial zone SUP]#')->event($contenuEditorial);
} elseif ($typeZone == 'SOU') {
cmd::byString('#[Info][Propluvia info][Nom zone SOU]#')->event($nomZone);
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SOU]#')->event($niveauRestriction);
cmd::byString('#[Info][Propluvia info][Nom restriction zone SOU]#')->event($nomNiveau);
cmd::byString('#[Info][Propluvia info][Editorial zone SOU]#')->event($contenuEditorial);
} else {
cmd::byString('#[Info][Propluvia info][Nom zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom restriction zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Editorial zone SUP]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Niveau restriction zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Nom restriction zone SOU]#')->event('');
cmd::byString('#[Info][Propluvia info][Editorial zone SOU]#')->event('');
}
}
}
}
}
}
super idée.
je suis repartie de ce code. Mais j’ai une erreur dans les logs
savez vous d’où ca vient?
------------------------------------
[2022-08-28 18:27:38][SCENARIO] -- Start : Scenario lance manuellement.
[2022-08-28 18:27:38][SCENARIO] - Exécution du sous-élément de type [action] : code
[2022-08-28 18:27:38][SCENARIO] Exécution d'un bloc code
[2022-08-28 18:27:40][SCENARIO] Département : 31
[2022-08-28 18:27:40][SCENARIO] Début validité arrêté : 25/08/2022
[2022-08-28 18:27:40][SCENARIO] Fin validité arrêté : 30/09/2022
[2022-08-28 18:27:40][SCENARIO] Commune : Flourens
[2022-08-28 18:27:40][SCENARIO]
[2022-08-28 18:27:40][SCENARIO] ----------SAUNE [SUP]----------
[2022-08-28 18:27:40][SCENARIO] Niveau >> Alerte renforcée (4)
[2022-08-28 18:27:40][SCENARIO]
[2022-08-28 18:27:41][SCENARIO]
[2022-08-28 18:27:41][SCENARIO] ----------SECTEUR RIVE DROITE GARONNE DES PETITS COURS D'EAU NON RéALIMENTéS NON INSTRUMENTéS [SUP]----------
[2022-08-28 18:27:41][SCENARIO] Niveau >> Crise (5)
[2022-08-28 18:27:41][SCENARIO] Arrêt des prélèvements non prioritaires y compris des prélèvements à des fins agricoles. Seuls les prélèvements permettant d'assurer l'exercice des usages prioritaires sont autorisés (santé, sécurité civile, eau potable, salubrité). Consultez l’arrêté préfectoral pour accéder au détail des mesures.
[2022-08-28 18:27:41][SCENARIO] [MySQL] Error code : 22001 (1406). Data too long for column 'value' at row 1 : REPLACE INTO history
SET cmd_id=:cmd_id,
`datetime`=:datetime,
value=:value
[2022-08-28 18:27:41][SCENARIO] Fin correcte du scénario