Le printemps arrive .
Il est temps de ce mettre au sport .
Avant de faire des efforts dehors InMoov nous informes de la qualité de l’air de notre ville.
Ce tuto va nous permettre de voir comment utiliser une API sur le WEB.
J’ai trouvé plusieurs API gratuite sur Internet , certaines utilises le coordonnées GPS ,d’autre l’adresse IP pour localiser votre ville , j’ai choisi une API mondiale par ville .
Je me suis restreint sur les villes françaises , mais vous pouvez modifier le programme python pour le reste du monde.
Pour commencer demander uné clés API a cette page :
https://www.airvisual.com/api
vous avez droit à 10000 requêtes gratuite par mois.
Noter votre clés , il faudra la saisir dans le programme python.
Comme à chaque fois nous aurons un programme AIML pour les commandes vocales
et un programme PYTHON pour exécuter la fonction.
Pour connaître la qualité de l’air il suffit de dire pollution à paris (par exemple)
en prime l’API vous donne la vitesse du vent , la température,la pression et le taux humidité.
ci joint le programme python :
A mettre dans le répertoire …/inMoov/custom
def airqualite(ville,region):
try:
#lecture du flux de API en parametres ville et region
url = urllib2.urlopen("http://api.airvisual.com/v2/city?city="+ville+"&state="+region+"&country=France&key=VOTRE CLES AIRVISUAL ICI")
f = url.read()
# creation tableau a partir de API airvisual et suppresion des virgules
tableau = f.replace(","," ")[1:1000].decode('utf-8')
#print(tableau)
# extration des données dans des variables avec modification du type en entier
Mqualite = int(tableau[(tableau.find('aqius'))+7:(tableau.find('aqius'))+10])
Mhumide = int(tableau[(tableau.find('hu'))+4:(tableau.find('hu'))+6])
Mpression = int(tableau[(tableau.find('pr'))+4:(tableau.find('pr'))+8])
Mtemperature = int(tableau[(tableau.find('tp'))+4:(tableau.find('tp'))+6])
Mvitessevent = int(tableau[(tableau.find('ws'))+4:(tableau.find('ws'))+5])
# test niveau de pollution
if Mqualite < 50 :
talkBlocking("Le Niveau de pollution est de " + str(Mqualite) + " . La qualité de l'air est jugée satifaisante, et la pollution de l'air pose peu ou pas de risque")
if Mqualite > 50 and Mqualite <= 100 :
talkBlocking("Niveau de pollution est de : " + str(Mqualite) + " La qualité de l'air est acceptable. Cependant, pour certains polluants, un très petit nombre de personnes qui sont particulièrement sensibles à la pollution de l'air peuvent avoir des problèmes de santé modérés. Les enfants et les adultes actifs, ainsi que les personnes souffrant de maladies respiratoires, comme l'asthme, devraient limiter leur effort prolongé en plein air")
if Mqualite > 100 and Mqualite <= 150 :
talkBlocking("Niveau de pollution est de : " + str(Mqualite) + " La qualité de l'air est mauvaise . les personnes sensibles peuvent avoir des effets sur leur santé. Le grand public n'est pas susceptible d'être affecté. Les enfants et les adultes actifs, ainsi que les personnes souffrant de maladies respiratoires, comme l'asthme, devraient limiter leur effort prolongé en plein air")
if Mqualite > 150 and Mqualite <= 200 :
talkBlocking("Niveau de pollution est de : " + str(Mqualite) + " La qualité de l'air est mauvaise . Tout le monde peut commencer à éprouver des effets sur la santé; les membres des groupes sensibles peuvent éprouver des effets plus graves sur la santé Les enfants et les adultes actifs, ainsi que les personnes souffrant de maladies respiratoires, comme l'asthme, devraient éviter les efforts prolongés à l'extérieur; tout le monde, en particulier les enfants, devrait limiter l'effort prolongé en plein air")
if Mqualite > 200 and Mqualite <= 300 :
talkBlocking("Niveau de pollution est de : " + str(Mqualite) + " La qualité de l'air est trés mauvaise . Avertissements de santé de conditions d'urgence . Toute la population est plus suceptible d'être affecté")
if Mqualite > 300 :
talkBlocking("Niveau de pollution est de : " + str(Mqualite) + " La qualité de l'air est trés dangereuse . Alerte de santé, tout le monde peut ressentir des effets de santé plus graves . éviter de sortir .")
talkBlocking("humidité de l'air est de " + str(Mhumide) +" pourcent")
sleep(1)
talkBlocking("la préssion est de " + str(Mpression) + " bar")
sleep(1)
talkBlocking("la température est de " + str(Mtemperature) +" degré")
sleep(1)
talkBlocking("la vitesse du vent est de " + str(Mvitessevent) +" KM/H")
except IOError:
talk("je n'ai pas de capteur pour cette ville")
except OSError:
talkBlocking("oups il y a une erreur OS")
except ValueError:
talkBlocking("oups il y a une erreur de valeur ")
except:
print(sys.exc_info()[0])
raise
et le fichier AIML à mettre dans le répertoire
…./inMoov/chatbot/bots/fr/aiml :
<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<!-- -->
<!-- -->
<category><pattern>POLLUTION À *</pattern>
<template><think>
<set name="ville"><star index="1"/></set>
</think>
<condition>
<li name="ville" value="nice"><think><set name="region">PACA</set></think>
<li name="ville" value="aix-en-provence"><think><set name="region">PACA</set></think>
<li name="ville" value="arles"><think><set name="region">PACA</set></think>
<li name="ville" value="fos sur mer"><think><set name="ville">fos-sur-mer</set><set name="region">PACA</set></think>
<li name="ville" value="gardanne"><think><set name="region">PACA</set></think>
<li name="ville" value="martigues"><think><set name="region">PACA</set></think>
<li name="ville" value="peillon"><think><set name="region">PACA</set></think>
<li name="ville" value="saintes marie de la mer"><think><set name="ville">saintes-marie-de-la-mer</set><set name="region">PACA</set></think>
<li name="ville" value="toulon"><think><set name="region">PACA</set></think>
<li name="ville" value="antibes"><think><set name="region">PACA</set></think>
<li name="ville" value="aubagne"><think><set name="region">PACA</set></think>
<li name="ville" value="brignoles"><think><set name="region">PACA</set></think>
<li name="ville" value="fréjus"><think><set name="ville">frejus</set><set name="region">PACA</set></think>
<li name="ville" value="grasse"><think><set name="region">PACA</set></think>
<li name="ville" value="manosque"><think><set name="region">PACA</set></think>
<li name="ville" value="miramas"><think><set name="region">PACA</set></think>
<li name="ville" value="port-de-bouc"><think><set name="region">PACA</set></think>
<li name="ville" value="salon de provence"><think><set name="ville">salon-de-provence</set><set name="region">PACA</set></think>
<li name="ville" value="vitrolles"><think><set name="region">PACA</set></think>
<li name="ville" value="apt"><think><set name="region">PACA</set></think>
<li name="ville" value="avignon"><think><set name="region">PACA</set></think>
<li name="ville" value="carpentras"><think><set name="region">PACA</set></think>
<li name="ville" value="gap"><think><set name="region">PACA</set></think>
<li name="ville" value="hyères"><think><set name="ville">hyeres</set><set name="region">PACA</set></think>
<li name="ville" value="marseille"><think><set name="region">PACA</set></think>
<li name="ville" value="arcachon"><think><set name="region">GIRONDE</set></think>
<li name="ville" value="paris"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="melun"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="nogent sur marne"><think><set name="ville">nogent-sur-marne</set><set name="region">Ile-de-France</set></think>
<li name="ville" value="puteaux"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="bobigny"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="gennevilliers"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="pantin"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="fontainebleau"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="neuilly sur seine"><think><set name="ville">neuilly-sur-seine</set><set name="region">Ile-de-France</set></think>
<li name="ville" value="saint denis"><think><set name="ville">saint-denis</set><set name="region">Ile-de-France</set></think>
<li name="ville" value="rambouillet"><think><set name="region">Ile-de-France</set></think>
<li name="ville" value="alberville"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="chambery"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="lyon"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="annecy"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="grenoble"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="valence"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="villeurbanne"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="roanne"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="annemasse"><think><set name="region">auvergne-rhone-alpes</set></think>
<li name="ville" value="auxerre"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="besancon"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="daix"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="dole"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="macon"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="monbelliard"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="chalons sur saone"><think><set name="ville">chalons-sur-saone</set><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="sens"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="belfort"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="dijon"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="nevers"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="vesoul"><think><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="lons le saunier"><think><set name="ville">lons-le-saunier</set><set name="region">bourgogne-franche-comte</set></think>
<li name="ville" value="brest"><think><set name="region">brittany</set></think>
<li name="ville" value="quimper"><think><set name="region">brittany</set></think>
<li name="ville" value="saint malo"><think><set name="ville">saint-malo</set><set name="region">brittany</set></think>
<li name="ville" value="rennes"><think><set name="region">brittany</set></think>
<li name="ville" value="vannes"><think><set name="region">brittany</set></think>
<li name="ville" value="lorient"><think><set name="region">brittany</set></think>
<li name="ville" value="saint brieuc"><think><set name="ville">saint-brieuc</set><set name="region">brittany</set></think>
<li name="ville" value="blois"><think><set name="region">centre</set></think>
<li name="ville" value="chartres"><think><set name="region">centre</set></think>
<li name="ville" value="chateauroux"><think><set name="region">centre</set></think>
<li name="ville" value="bourges"><think><set name="region">centre</set></think>
<li name="ville" value="issoudun"><think><set name="region">centre</set></think>
<li name="ville" value="orléans"><think><set name="ville">orleans</set><set name="region">centre</set></think>
<li name="ville" value="dreux"><think><set name="region">centre</set></think>
<li name="ville" value="montargis"><think><set name="region">centre</set></think>
<li name="ville" value="tours"><think><set name="region">centre</set></think>
<li name="ville" value="la rochelle"><think><set name="region">charente-maritime</set></think>
<li name="ville" value="ajaccio"><think><set name="region">corsica</set></think>
<li name="ville" value="bastia"><think><set name="region">corsica</set></think>
<li name="ville" value="lucciana"><think><set name="region">corsica</set></think>
<li name="ville" value="colmar"><think><set name="region">grand-est</set></think>
<li name="ville" value="mulhouse"><think><set name="region">grand-est</set></think>
<li name="ville" value="strasbourg"><think><set name="region">grand-est</set></think>
<li name="ville" value="hagueneau"><think><set name="region">grand-est</set></think>
<li name="ville" value="amiens"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="bethune"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="lille"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="maubeuge"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="outreau"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="saint omer"><think><set name="ville">saint-omer</set><set name="region">haut-de-france</set></think>
<li name="ville" value="tourcoing"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="calais"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="saint quentin"><think><set name="ville">saint-quentin</set><set name="region">haut-de-france</set></think>
<li name="ville" value="valenciennes"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="beauvais"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="cambrai"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="douai"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="roubaix"><think><set name="region">haut-de-france</set></think>
<li name="ville" value="nogent sur oise"><think><set name="ville">nogent-sur-oise</set><set name="region">haut-de-france</set></think>
<li name="ville" value="calvados"><think><set name="region">normandy</set></think>
<li name="ville" value="dieppe"><think><set name="region">normandy</set></think>
<li name="ville" value="le havre"><think><set name="region">normandy</set></think>
<li name="ville" value="rouen"><think><set name="region">normandy</set></think>
<li name="ville" value="évreux"><think><set name="ville">evreux</set><set name="region">normandy</set></think>
<li name="ville" value="orne"><think><set name="region">normandy</set></think>
<li name="ville" value="manche"><think><set name="region">normandy</set></think>
<li name="ville" value="agen"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="angouleme"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="bayonne"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="bordeaux"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="dax"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="limoges"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="mont de marsan"><think><set name="ville">mont-de-marsan</set><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="talence"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="biarritz"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="brive la gaillarde"><think><set name="ville">brive-la-gaillarde</set><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="la rochelle"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="marmande"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="pau"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="tartas"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="anglet"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="cognac"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="mérignac"><think><set name="ville">merignac</set><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="périgueux"><think><set name="ville">perigueux</set><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="tulle"><think><set name="region">nouvelle-aquitaine</set></think>
<li name="ville" value="albi"><think><set name="region">occitanie</set></think>
<li name="ville" value="montpellier"><think><set name="region">occitanie</set></think>
<li name="ville" value="pamiers"><think><set name="region">occitanie</set></think>
<li name="ville" value="poitiers"><think><set name="region">occitanie</set></think>
<li name="ville" value="perpignan"><think><set name="region">occitanie</set></think>
<li name="ville" value="nimes"><think><set name="region">occitanie</set></think>
<li name="ville" value="millau"><think><set name="region">occitanie</set></think>
<li name="ville" value="cap d'agde"><think><set name="region">occitanie</set></think>
<li name="ville" value="lunel"><think><set name="ville">lunel-viel</set><set name="region">occitanie</set></think>
<li name="ville" value="lourdes"><think><set name="region">occitanie</set></think>
<li name="ville" value="niort"><think><set name="region">occitanie</set></think>
<li name="ville" value="toulouse"><think><set name="region">occitanie</set></think>
<li name="ville" value="angers"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="nantes"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="laval"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="cholet"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="la roche-sur-yon"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="le mans"><think><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="saint nazaire"><think><set name="ville">saint-nazaire</set><set name="region">pays-de-la-loire</set></think>
<li name="ville" value="poitiers"><think><set name="region">vienne</set></think>
</condition>
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>airqualite('<get name="ville"/>','<get name="region"/>')</param>
</mrl>
</oob></template>
</category>
</aiml>
Le code Python est commenté pour comprendre le fonctionnement qui reste assez simple.
Ci joint un fichier zip qui contient les sources
Amusez vous bien…..
-
This topic was modified 6 years, 8 months ago by lecagnois.
Attachments:
You must be
logged in to view attached files.