Page 1 sur 2

[PHP] Pollens

Publié : 06 mai 2016, 09:24
par Domo89
Bonjour,
J'ai cre un script permettant de recuperer les dennées du site http://www.pollens.fr/docs/vigilance.html
Il necessite l'extension GD de php mais si vous ne l'avez pas, j'en ai codé un autre exploitant l'api de cette appli http://www.pollens.fr/alerte-pollens/

Code : Tout sélectionner

<?php 
$dep = 89;

//general
$im = imagecreatefrompng("http://www.pollens.fr/docs/Departements_de_France-simple.png");
$x = getDep($dep,"x");
$y = getDep($dep,"y");
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);

if ($colors['red'] == 0 && $colors['green'] == 128 && $colors['blue'] == 0)
{
	$pollens[0]["color"] = "green";
	$pollens[0]["class"] = 0;
}
elseif ($colors['red'] == 255 && $colors['green'] == 255 && $colors['blue'] == 0)
{
	$pollens[0]["color"] = "yellow";
	$pollens[0]["class"] = 1;
}
elseif ($colors['red'] == 255 && $colors['green'] == 153 && $colors['blue'] == 85)
{
	$pollens[0]["color"] = "orange";
	$pollens[0]["class"] = 2;
}
else
{
	$pollens[0]["color"] = "red";
	$pollens[0]["class"] = 3;
}

//detail
$i = 1;
$im = imagecreatefromgif("http://www.pollens.fr/docs/d%20".$dep.".gif");
$x = 116;$y = 45;
while ($i != 20)
{
$rgb = imagecolorat($im, $x, $y);
$colors = imagecolorsforindex($im, $rgb);
if ($colors['red'] == 255 && $colors['green'] == 255 && $colors['blue'] == 255 || $colors['red'] == 135 && $colors['green'] == 135 && $colors['blue'] == 135)
{
	$pollens[$i]["color"] = "brown";
	$pollens[$i]["class"] = 0;
}
elseif ($colors['red'] == 0 && $colors['green'] == 255 && $colors['blue'] == 0)
{
	$pollens[$i]["color"] = "green";
	$pollens[$i]["class"] = 1;
}
elseif ($colors['red'] == 0 && $colors['green'] == 176 && $colors['blue'] == 80)
{
	$pollens[$i]["color"] = "yellow";
	$pollens[$i]["class"] = 2;
}
elseif ($colors['red'] == 255 && $colors['green'] == 255 && $colors['blue'] == 0)
{
	$pollens[$i]["color"] = "orange";
	$pollens[$i]["class"] = 3;
}
elseif ($colors['red'] == 247 && $colors['green'] == 150 && $colors['blue'] == 70)
{
	$pollens[$i]["color"] = "red";
	$pollens[$i]["class"] = 4;
}
else
{
	$pollens[$i]["color"] = "violet";
	$pollens[$i]["class"] = 5;
}

$y = $y + 20;
$i++;
}

$pollens["goals"]["min"] = 0;
$pollens["goals"]["max"] = 5;
$pollens[0]["name"] = "general";
$pollens[1]["name"] = "crupressacées";
$pollens[2]["name"] = "noisetier";
$pollens[3]["name"] = "aulne";
$pollens[4]["name"] = "peuplier";
$pollens[5]["name"] = "saule";
$pollens[6]["name"] = "frene";
$pollens[7]["name"] = "charme";
$pollens[8]["name"] = "bouleau";
$pollens[9]["name"] = "platane";
$pollens[10]["name"] = "chene";
$pollens[11]["name"] = "olivier";
$pollens[12]["name"] = "tilleul";
$pollens[13]["name"] = "chataigner";
$pollens[14]["name"] = "rumex";
$pollens[15]["name"] = "graminées";
$pollens[16]["name"] = "plantain";
$pollens[17]["name"] = "urticacées";
$pollens[18]["name"] = "armoises";
$pollens[19]["name"] = "ambroisies";





/*
//affiche dirctement les donnees sur la page web
	$j = 0;
	while ($j != 20)
	{
	echo "<font color=".$pollens[$j]["color"].">".$pollens[$j]["name"].": ".$pollens[$j]["class"]."</font><br>";
	$j++;
	}
	*/
	$color = $pollens[12]["color"];
	$level = $pollens[12]["class"];
	//exemple pour domoticz (tilleul) :
	file_get_contents("http://192.168.1.147:8080/json.htm?type=command&param=udevice&idx=160&nvalue=$level&svalue=$color");
	
	
	
	
	
	
	
	
	function getDep($dep,$v)
	{
		switch($dep)
{
	case "62":
	$x = 293;
	$y = 39;
	break;
		case "59":
	$x = 355;
	$y = 54;
	break;
		case "76":
	$x = 292;
	$y = 65;
	break;
		case "80":
	$x = 295;
	$y = 74;
	break;
		case "02":
	$x = 360;
	$y = 91;
	break;
		case "08":
	$x = 403;
	$y = 93;
	break;
		case "27":
	$x = 243;
	$y = 124;
	break;
		case "60":
	$x = 303;
	$y = 115;
	break;
		case "51":
	$x = 385;
	$y = 136;
	break;
		case "55":
	$x = 439;
	$y = 149;
	break;
		case "54":
	$x = 470;
	$y = 156;
	break;
		case "57":
	$x = 485;
	$y = 126;
	break;
		case "67":
	$x = 532;
	$y = 143;
	break;
		case "50":
	$x = 150;
	$y = 130;
	break;
		case "14":
	$x = 182;
	$y = 124;
	break;
		case "95":
	$x = 301;
	$y = 132;
	break;
		case "78":
	$x = 288;
	$y = 149;
	break;
		case "91":
	$x = 305;
	$y = 164;
	break;
		case "92":
	$x = 303;
	$y = 149;
	break;
		case "75":
	$x = 308;
	$y = 147;
	break;
		case "93":
	$x = 314;
	$y = 143;
	break;
		case "94":
	$x = 314;
	$y = 152;
	break;
		case "61":
	$x = 215;
	$y = 160;
	break;
		case "28":
	$x = 262;
	$y = 175;
	break;
		case "77":
	$x = 331;
	$y = 158;
	break;
		case "10":
	$x = 375;
	$y = 180;
	break;
		case "52":
	$x = 431;
	$y = 184;
	break;
		case "88":
	$x = 485;
	$y = 186;
	break;
		case "68":
	$x = 520;
	$y = 197;
	break;
		case "29":
	$x = 33;
	$y = 177;
	break;
		case "22":
	$x = 83;
	$y = 167;
	break;
		case "35":
	$x = 135;
	$y = 177;
	break;
		case "56":
	$x = 76;
	$y = 203;
	break;
		case "53":
	$x = 163;
	$y = 192;
	break;
		case "72":
	$x = 215;
	$y = 197;
	break;
		case "41":
	$x = 262;
	$y = 221;
	break;
		case "45":
	$x = 314;
	$y = 206;
	break;	
	case "89":
	$x = 360;
	$y = 208;
	break;	
	case "21":
	$x = 411;
	$y = 229;
	break;
		case "70":
	$x = 476;
	$y = 221;
	break;
		case "90":
	$x = 507;
	$y = 219;
	break;
		case "44":
	$x = 119;
	$y = 240;
	break;
		case "49":
	$x = 178;
	$y = 236;
	break;
		case "37":
	$x = 232;
	$y = 244;
	break;
		case "36":
	$x = 269;
	$y = 275;
	break;
		case "18":
	$x = 312;
	$y = 275;
	break;	
	case "58":
	$x = 359;
	$y = 259;
	break;	
	case "71":
	$x = 396;
	$y = 288;
	break;	
	case "39":
	$x = 461;
	$y = 281;
	break;
		case "25":
	$x = 483;
	$y = 251;
	break;
		case "85":
	$x = 146;
	$y = 285;
	break;
		case "79":
	$x = 187;
	$y = 287;
	break;
		case "86":
	$x = 225;
	$y = 290;
	break;
		case "23":
	$x = 292;
	$y = 316;
	break;
		case "63":
	$x = 340;
	$y = 341;
	break;
		case "42":
	$x = 390;
	$y = 354;
	break;
		case "03":
	$x = 333;
	$y = 305;
	break;
		case "69":
	$x = 409;
	$y = 339;
	break;
		case "01":
	$x = 439;
	$y = 316;
	break;
		case "74":
	$x = 496;
	$y = 322;
	break;
		case "73":
	$x = 494;
	$y = 367;
	break;
		case "38":
	$x = 455;
	$y = 370;
	break;
		case "05":
	$x = 496;
	$y = 411;
	break;
		case "26":
	$x = 437;
	$y = 411;
	break;
		case "84":
	$x = 442;
	$y = 460;
	break;
		case "13":
	$x = 435;
	$y = 490;
	break;
		case "04":
	$x = 483;
	$y = 447;
	break;
		case "83":
	$x = 494;
	$y = 497;
	break;
		case "06":
	$x = 532;
	$y = 454;
	break;
		case "17":
	$x = 167;
	$y = 341;
	break;
		case "16":
	$x = 206;
	$y = 346;
	break;
		case "87":
	$x = 258;
	$y = 341;
	break;
		case "23":
	$x = 292;
	$y = 396;
	break;
		case "63":
	$x = 331;
	$y = 342;
	break;
		case "43":
	$x = 359;
	$y = 383;
	break;
		case "07":
	$x = 398;
	$y = 419;
	break;
		case "30":
	$x = 396;
	$y = 456;
	break;
		case "33":
	$x = 169;
	$y = 402;
	break;
		case "24":
	$x = 228;
	$y = 389;
	break;
		case "19":
	$x = 282;
	$y = 372;
	break;
		case "15":
	$x = 321;
	$y = 389;
	break;
		case "46":
	$x = 267;
	$y = 419;
	break;
		case "47":
	$x = 210;
	$y = 438;
	break;
		case "40":
	$x = 160;
	$y = 462;
	break;
		case "64":
	$x = 148;
	$y = 505;
	break;
		case "32":
	$x = 223;
	$y = 480;
	break;
		case "82":
	$x = 253;
	$y = 452;
	break;
		case "12":
	$x = 320;
	$y = 439;
	break;
		case "48":
	$x = 364;
	$y = 434;
	break;
		case "65":
	$x = 206;
	$y = 521;
	break;
		case "31":
	$x = 262;
	$y = 495;
	break;
		case "81":
	$x = 293;
	$y = 469;
	break;
		case "34":
	$x = 340;
	$y = 490;
	break;
		case "09":
	$x = 266;
	$y = 531;
	break;
		case "11":
	$x = 305;
	$y = 520;
	break;
		case "66":
	$x = 318;
	$y = 549;
	break;
		case "20":
	$x = 530;
	$y = 557;
	break;
}
		if ($v == "x")
		{
			return $x;
		}
		else
		{
			return $y;
		}
	}
	?>
et saans GD (moins fiable):

Code : Tout sélectionner

<?php 

	// AMBR Ambroisie
	// ARMO Armoise
	// AULN Aulne
	// BOUL Bouleau
	// CHAT Chataigner
	// CHEN Chene
	// CYPR Cypres
	// FREN Frene
	// GRAM Gramines
	// NOIS Noisetier
	// OLIV Olivier
	// PARI Parietaire
	// PEUP Peuplier
	// PLAN Plantain
	// PLAT Platane
	// SAUL Saule
	// TILL Tilleul
	
	$key_url = "http://api-pollens.stallergenes.fr/users/api/2.0/json?_dc=1461696648863";
	$key_param = "uuid=9150ac7314d0130c&device=Phone&os=Android&version=4.4.2&width=360&height=615";
	$cmd = "curl $key_url -X POST -d '$key_param'";
	$rep = shell_exec ($cmd);
	
	$rep = json_decode($rep);
	$var = json_decode(json_encode($rep), True);
	$key = $var["apiKey"];
	
	$arbres = "AMBR%2CARMO%2CAULN%2CBOUL%2CCHAT%2CCHEN%2CCYPR%2CFREN%2CGRAM%2CNOIS%2COLIV%2CPARI%2CPEUP%2CPLAN%2CPLAT%2CSAUL%2CTILL";
	$dep = "89";
	
	$req = file_get_contents("http://api-pollens.stallergenes.fr/alerts/api/2.0/json?_dc=1461696689507&key=".$key."&pollens=".$arbres."&departments=".$dep."&dp=1461696690&dpu=1461696648");
	$var = json_decode($req);
	$var = json_decode(json_encode($var), True);
	
	/*
	//affiche directement les données sur la page web
	$i = 0;
	while ($i != 17)
	{
		$l = $var["data"]["alerts"][0]["pollens"][$i]["level"];
		
		if ($l == 0)
			$c = "green";
		elseif($l == 1)
		$c = "yellow";
		elseif ($l == 2)
		$c = "orange";
		else
			$c = "red";
		
	echo "<font color=".$c.">".$var["data"]["alerts"][0]["pollens"][$i]["name"].": ".$l."</font><br>";
	$i++;
	}*/
	
	//exemple pour domoticz
	$level = $var["data"]["alerts"][0]["pollens"][2]["level"];
	file_get_contents("http://192.168.1.147:8080/json.htm?type=command&param=udevice&idx=159&nvalue=$level&svalue=$level");
	?>
J'ai mis un exemple pour chaque script,il suffit de modifier (pour changer de pollen) le 12 de $color = $pollens[12]["color"] pour le premier et le 2 de $level = $var["data"]["alerts"][0]["pollens"][2]["level"]; pour le second.
PS: Cette api n'est en aucun cas officielle et est le resultat du'une longue analyse du code html,elle peut donc cesser de fonctionner a tout moment.

Re: Pollens

Publié : 06 mai 2016, 09:54
par vil1driver
Salut,

Merci du partage ;)

Re: Pollens

Publié : 07 mai 2016, 00:48
par deennoo
Merci pour ce Script !

Je prends la version GD

Par contre j'ai un petit probleme : je souhaite avoir le niveau d'alerte "general" donc le [0] dans le classement.

Habitant en Gironde et suivant cette carte :

http://www.pollens.fr/docs/Departements ... simple.png

Mon niveau doit etre "vert" mais le script me remonte "red".

Une idee?

Re: Pollens

Publié : 07 mai 2016, 01:26
par Domo89
Corrige,
Le script etant assez recent,je n'avais pas encore la decomposition de la couleur verte (si aucune couleur ne corrspond c'est la rouge qui est affichée).

Re: Pollens

Publié : 07 mai 2016, 01:35
par deennoo
Comme il depote le Gars ! le triangle est Gris...tj pas vert (idem chez les moustiques)

Re: Pollens

Publié : 07 mai 2016, 02:18
par Domo89
Pour les pollens et moustiques,il y a 5 ou 6 valeurs possibles j'utilise donc le gris en primier en plus des autres (tu peux verifier que le systeme marche en decommantant la section "affiche dirctement les donnees sur la page web" normalement le script renvoie un code html et dans ton cas tu peux lire

Code : Tout sélectionner

<font color=green>general: 0</font>
).Tu peux changer ca sur les lignes 12 a 28 et 41 a 67

Code : Tout sélectionner

$pollens[$i]["class"] = 2;
,0 c'est gris,1 vert,2 jaune ... et pour les moustiques suffit de changer les ligne 29 a 41

Code : Tout sélectionner

$mosquitto = "0";

Re: Pollens

Publié : 07 mai 2016, 08:03
par deennoo
Merci

Re: Pollens

Publié : 26 févr. 2017, 20:36
par natacha3
Je tenterais bien l'installation de de script (avec les beaux jours qui reviennent, les pollens ne tarderont pas !) mais j'ai peur de faire des bêtises avec mon domoticz qui marche plutôt bien !

Est-ce que pour installer l'extension GD cette commande irait bien ?

Code : Tout sélectionner

sudo apt-get install php5-gd

Et dans les 2 scripts (bien sûr je n' en utiliserait qu'un !) il s'agit bien de les enregistrer sous "script_device_xxx.lua" ?

Merci !

Re: Pollens

Publié : 16 mars 2017, 15:50
par brogen67
Salut à tous,

Je sais, je sais... ce n'est pas exactement le bon endroit pour, mais...

Je ne sais pas trop comment utiliser ce genre de script. C'est la première fois que je souhaite en mettre un en place, et je suis un peu comme un âne devant mon domoticz ^^.

J'ai chercher comment mettre en place un script php, mais... je n'ai pas l'impression que ce soir la bonne façon de faire (mettre le script dans la section "Action ON" du périphérique

Si une âme charitable pouvait partager un lien, ou un tuto ce serait vraiment super sympa :-).

Re: Pollens

Publié : 18 mars 2017, 16:26
par manu663
Salut Brogen,

Je vais tenter de répondre à ta question mais je ne suis pas le plus qualifié pour ça. :oops:
Voilà comment je fais:

Tout d'abord pour manipuler le script, je me sers de notepad++ (menu langage/L/LUA) pour du ... lua bien sûr! :mrgreen:
une fois le script édité et adapté (config, IP, mot de passe, adressage ou tempo bref tu te le customise à ta sauce) je le sauvegarde avec le nom suivant:
script_device_xxle nom de ton scriptxx.lua

(attention les scripts peuvent être de 2 types:
device=si changement d' état d' un capteur ou autre
time=s'execute en fonction de l'heure

donc par exemple pour un scrip que je nommerai "exemple":
script_time_exemple.lua
ou
script_device_exemple.lua

Puis avec le programme Win SCP (par exemple) je transfère ce fichier script dans mon raspberry a l'emplacement suivant:
home/pi/domoticz/scripts/lua

Voilà, n'hésites pas à revenir si tu as des soucis !

==> Natacha3, désolé mais je n' ai pas installé ce script et mes connaissances sont trop limitées pour pouvoir t'aider.
Mais je ne doute pas qu'un balaise du forum passera ici et te donnera le coup de main attendu ! Patience !

[EDIT] Oh le boulet ! C'est effectivement du PHP ! :roll: