This repository was archived by the owner on Mar 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrain_trend.php
More file actions
95 lines (81 loc) · 2.46 KB
/
rain_trend.php
File metadata and controls
95 lines (81 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/*******************************************************************************
* Un script pour la box domotique eedomus
* Pour connaitre les prévisions pluvieuses des prochaines 48h
********************************************************************************
* Version :
* 1.1
*
* Auteur :
* Nikya
* https://github.com/Nikya/
*
* Documentation complète et aide :
* https://github.com/Nikya/eedomusScript_rainTrend
*
* Param :
* cityId : identifiant de la ville
* slotCnt : Nombre de slot (de 3h) à interpréter
*
* Retour :
* XML : Résultat formaté au format XML
*
*******************************************************************************/
// Seulement utile en mode test
// require_once ("../eedomusScriptsEmulator.php");
////////////////////////////////////////////////////////////////////////////////
// Lecture du paramêtre du script
$cityId = getArg('cityId', true);
$slotCnt = getArg('slotCnt', false, 4);
$slotCnt = $slotCnt >= 1 ? $slotCnt : 1;
////////////////////////////////////////////////////////////////////////////////
// Appel de l'API Météo
$url = "http://www.meteo-france.mobi/ws/getDetail/france/$cityId.json";
$jsonStr = httpQuery($url);
$jData = sdk_json_decode($jsonStr);
////////////////////////////////////////////////////////////////////////////////
// Analyse du résultat
$cityName = $jData['result']['ville']['nom'];
$rainyTrend = false;
$previsions48h = $jData['result']['previsions48h'];
$inXml = '';
$i = 0;
if ($previsions48h==null) {
echo "Id de ville inconnue : '$cityId' ";
exit -1;
}
// Pour chaque slot
foreach ($previsions48h as $slot => $data){
$description = $data['description'];
$probaPluie = $data['probaPluie'];
if($probaPluie>60)
$rainyTrend = true;
$inXml .= <<<IN_XML
<slot>
<slotname>$slot</slotname>
<description>$description</description>
<probapluie>$probaPluie</probapluie>
</slot>
IN_XML;
// Arret de la lecture si le nombre de slot voulue est lue
$i++;
if ($i>=$slotCnt)
break;
}
////////////////////////////////////////////////////////////////////////////////
// Formatage et renvoie du resultat en XML
$content_type = 'text/xml';
sdk_header($content_type);
$rainyTrendStr = $rainyTrend ? '1' : '0';
echo <<<OUT_XML
<data>
<cityId>$cityId</cityId>
<slotCnt>$slotCnt</slotCnt>
<cityName>$cityName</cityName>
<rainyTrend>$rainyTrendStr</rainyTrend>
<slots>
$inXml
</slots>
</data>
OUT_XML;
?>