Home Assistant Git Exporter
This commit is contained in:
@@ -371,26 +371,46 @@ class UsageRestrictionEntity(CoordinatorEntity, SensorEntity):
|
||||
|
||||
def compute_native_value(self) -> Optional[str]:
|
||||
"""This method extract the most relevant restriction level to display as aggregate"""
|
||||
|
||||
def any_restriction_match(matcher):
|
||||
r = re.compile(matcher, re.IGNORECASE)
|
||||
for restriction in self._restrictions:
|
||||
if r.search(restriction):
|
||||
return True
|
||||
return False
|
||||
|
||||
if len(self._restrictions) == 0:
|
||||
return "Aucune restriction"
|
||||
if "Interdiction sur plage horaire" in self._restrictions:
|
||||
if any_restriction_match("interdiction sur plage horaire"):
|
||||
return "Interdiction sur plage horaire"
|
||||
if "Interdiction sauf exception" in self._restrictions:
|
||||
if any_restriction_match("interdi.*sauf"):
|
||||
return "Interdiction sauf exception"
|
||||
if "Interdit sauf pour les usages commerciaux après accord du service de police de l’eau." in self._restrictions:
|
||||
if any_restriction_match("à l’exception"):
|
||||
return "Interdiction sauf exception"
|
||||
if "Interdiction" in self._restrictions:
|
||||
if any_restriction_match("à l’exclusion"):
|
||||
return "Interdiction sauf exception"
|
||||
if any_restriction_match("Interdit.*dès lors"):
|
||||
return "Interdiction sauf exception"
|
||||
if any_restriction_match("Interdiction"):
|
||||
return "Interdiction"
|
||||
if "Interdiction." in self._restrictions:
|
||||
if any_restriction_match("interdit"):
|
||||
return "Interdiction"
|
||||
if "Réduction de prélèvement" in self._restrictions:
|
||||
if any_restriction_match("interdiction"):
|
||||
return "Interdiction"
|
||||
if any_restriction_match("limitation au strict nécessaire"):
|
||||
return "Interdiction sauf strict nécessaire"
|
||||
if any_restriction_match("Réduction de prélèvement"):
|
||||
return "Réduction de prélèvement"
|
||||
if "Consulter l’arrêté" in self._restrictions:
|
||||
if any_restriction_match("Consulter l’arrêté"):
|
||||
return "Erreur: consulter l'arreté"
|
||||
if "Se référer à l'arrêté de restriction en cours de validité." in self._restrictions:
|
||||
if any_restriction_match("Se référer à l'arrêté de restriction en cours de validité."):
|
||||
return "Erreur: consulter l'arreté"
|
||||
if "Pas de restriction sauf arrêté spécifique." in self._restrictions:
|
||||
if any_restriction_match("Pas de restriction sauf arrêté spécifique."):
|
||||
return "Autorisé sauf exception"
|
||||
if any_restriction_match("Sensibiliser"):
|
||||
return "Sensibilisation"
|
||||
if any_restriction_match("Sensibilisation"):
|
||||
return "Sensibilisation"
|
||||
if len(self._restrictions) == 1:
|
||||
return self._restrictions[0]
|
||||
_LOGGER.warn(f"Restrictions are hard to interpret: {self._restrictions}")
|
||||
|
||||
@@ -52,6 +52,7 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"fontaines",
|
||||
"jeux d'eau",
|
||||
".*Alimentation de douches de plage.*",
|
||||
"Remplissage citerne, reserve, cuve à eau",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -63,6 +64,7 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"Arrosage des .*potagers",
|
||||
"arrosage.+arbres.+",
|
||||
"arrosage.+plant.+",
|
||||
"Cultures en godets et semis.+",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -74,6 +76,9 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"trottoirs",
|
||||
"voiries|voieries",
|
||||
"Arrosage de surfaces de .+ générant de la poussière",
|
||||
"Nettoyage des voies publiques.+",
|
||||
"Arrosage des pistes de chantier",
|
||||
".*voiries.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -82,7 +87,7 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
category="lawn",
|
||||
key="lawn",
|
||||
matchers=[
|
||||
"pelouses",
|
||||
".*pelouses.*",
|
||||
"jardins d'agrément",
|
||||
"massifs fleuris",
|
||||
"Arrosage des espaces verts",
|
||||
@@ -95,7 +100,17 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"Arrosage des jardinières et suspensions",
|
||||
"Arrosage des espaces arborés",
|
||||
"Arrosage.+terrains de sport",
|
||||
"Arrosage terrain de sport et espaces verts",
|
||||
"Arrosage terrains sport.+",
|
||||
"Arrosage des îlots de fraîcheur validés par l’administration",
|
||||
"sols équestres et sports motorisés",
|
||||
"Arrosage des pistes d'hippodromes",
|
||||
"pistes de chevaux",
|
||||
".*équestres.*",
|
||||
".*motorisés.*",
|
||||
".*motorisées.*",
|
||||
".*Arrosage des jardins et parcs ouverts au public.*",
|
||||
".*gazons.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -129,6 +144,7 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"Lavage de véhicule disposant d’un système équipé d’un recyclage de l’eau",
|
||||
"Carénage des bateaux",
|
||||
"Lavage et entretien des embarcations .+ en aire de carénage.",
|
||||
"lavage.*embarcation.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -161,6 +177,10 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"remise à niveau des piscines",
|
||||
"Remplissage de piscines.+",
|
||||
"Piscines ouvertes au public.*",
|
||||
"Remplissage des piscines.+publi",
|
||||
"Remplissage des jacuzzis",
|
||||
".*piscines.*",
|
||||
".*tobbogan aquatique.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -176,6 +196,8 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"alimentation.+bassin.+",
|
||||
"lestage pour stabilité",
|
||||
"Alimentation d’étangs",
|
||||
"remplissage.*retenues.*",
|
||||
"Alimentation des retenues collinaires",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -196,6 +218,8 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"rejet direct d’eaux polluées",
|
||||
"orpaillage",
|
||||
"Manœuvres des vannes d.installations hydrauliques",
|
||||
"Installations de production d’électricité hydraulique",
|
||||
"Installation de production d'électricité hydraulique et termique à flamme",
|
||||
"Manœuvres d’ouvrages hydrauliques",
|
||||
"Tout usage domestique non sanitaire de l’eau",
|
||||
"Réalisation d'un seuil provisoire",
|
||||
@@ -207,8 +231,13 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"Travaux sur les systèmes d’assainissement occasionnant des rejets",
|
||||
".*installations hydrauliques.*",
|
||||
".*électricité d’origine hydraulique.*",
|
||||
"Installations hydroélectriques",
|
||||
"production.+origine.+hydraulique.*",
|
||||
".*hydroélectriques.*",
|
||||
".*hydrauliques.*",
|
||||
"Installations de production d'électricité d'orignie hydraulique",
|
||||
"Prélèvements des centrales hydroélectriques, moulins, barrages",
|
||||
"Prélèvement domestique directement dans le cours d'eau",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -230,6 +259,9 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
matchers=[
|
||||
"arrosage des golfs",
|
||||
"Arrosage des.+golfs",
|
||||
"parcours de golf",
|
||||
"greens et départs",
|
||||
".*golf.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -255,6 +287,8 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
"Création de prélèvements",
|
||||
"Prélèvement en cours d’eau",
|
||||
"alimentation en eau potable des populations.+",
|
||||
"Prélèvement dans les cours d'eau quelque soit l'usage",
|
||||
".*forages.*",
|
||||
],
|
||||
),
|
||||
VigieEauSensorEntityDescription(
|
||||
@@ -262,17 +296,79 @@ SENSOR_DEFINITIONS: tuple[VigieEauSensorEntityDescription, ...] = (
|
||||
category="misc",
|
||||
key="misc",
|
||||
matchers=[
|
||||
"Gestion des systèmes d'assainissement",
|
||||
"Remplissage tonne de chasse",
|
||||
"Activités cynégétiques",
|
||||
"Structures gonflables/tubulaires privées à usage collectif > 1m3 nécessitant 1 vidange quotidienne",
|
||||
"Abreuvement et hygiène des animaux",
|
||||
"Abreuvement des animaux",
|
||||
"Irrigation par aspersion des cultures",
|
||||
"agricole",
|
||||
"Irrigation par aspersion.*",
|
||||
"irrigation.*cultures.*",
|
||||
"irrigation.*maraîch.*",
|
||||
"Maraîchage",
|
||||
"irrigation.*arbres.*",
|
||||
"Irrigation par système localisé et équipé d’un outil de pilotage",
|
||||
"Irrigation par système d'irrigation localisée.*",
|
||||
"irrigation.*horticulture.*",
|
||||
"Horticulture",
|
||||
"Irrigation gravitaire et aspersion",
|
||||
"Irrigation par canal gravitaire",
|
||||
"Irrigation en Période de Printemps",
|
||||
"Irrigation en Période Estivale",
|
||||
"Irrigation Période Estivale",
|
||||
"Irrigation OUGC",
|
||||
"CIVE",
|
||||
"CIPAN*",
|
||||
"Irrigation dans les unités de gestion souterraines ou les grands cours d'eau",
|
||||
"Irrigation dans le cadre de la gestion collective des associations d’irrigants",
|
||||
"Irrigation dans le cadre de la gestion collective Vie aval pilotée par la Chambre d'agriculture",
|
||||
"Cultures sensibles",
|
||||
"Cultures maraîchère",
|
||||
"Prélèvements pour l’irrigation assimilés domestiques",
|
||||
"Prélèvements hors irrigation",
|
||||
"Prélèvement pour réseau d'irrigation collective",
|
||||
"Irrigation dans le cadre de la gestion collective",
|
||||
"Jardinerie",
|
||||
"grumes",
|
||||
# ICPE means "Installation classée pour la protection de l'environment"
|
||||
"ICPE",
|
||||
"ICPE soumises à un APC relatif à la sécheresse",
|
||||
"Usages récréatifs collectifs à partir d’eau potable.+",
|
||||
"Réalisation de seuils provisoires",
|
||||
"Activités industrielles et commerciales",
|
||||
"Irrigation pour jeunes arbustes et plantiers de vigne",
|
||||
"Interventions sur Station d'épuration",
|
||||
"station.*épuration",
|
||||
"station.*traitement.*eaux.*usées",
|
||||
".*industriels.*",
|
||||
"remplissage.*neige.*",
|
||||
"Production de neige",
|
||||
"neige de culture",
|
||||
"des enneigeurs",
|
||||
"usage.*non directement.*process.*",
|
||||
"usage.*nécessaire.*process.*",
|
||||
"usages agricoles",
|
||||
"Activités industrielles.*",
|
||||
"Activités commerciales.*",
|
||||
"Établissements ayant une faible consommation d'eau",
|
||||
"Vente de plantations",
|
||||
"Prélèvements d’eau à usage industriel.*",
|
||||
"Prélèvements.*horticulture.*",
|
||||
"Prélèvement dans le canal pour un usage économique",
|
||||
"lavage.*réservoirs d'eau potable",
|
||||
"Lavage des réservoirs",
|
||||
"période d'étiage",
|
||||
"Irrigation à partir de retenues d’eau autorisées remplies hors période d’étiage",
|
||||
"Irrigation par des eaux brutes provenant des ressources dites « maîtrisées »",
|
||||
"Industries",
|
||||
"Arboriculture en technique économe",
|
||||
"Uniquement en Nouvelle Aquitaine",
|
||||
"Purge des réseaux",
|
||||
"Installations thermiques à flamme",
|
||||
"Béalières et canaux d’irrigation alimentés par gravité ou par pompage",
|
||||
"Autres prélèvements à usage industriel ou artisanal",
|
||||
"Autre irrigation",
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,29 +17,18 @@ async def main():
|
||||
restriction_list = {"restrictions": []}
|
||||
usages = set()
|
||||
async with aiohttp.ClientSession() as session:
|
||||
vigieau = VigieauApi(session)
|
||||
commune_list = await InseeApi(session).get_insee_list()
|
||||
for i, commune in enumerate(commune_list):
|
||||
print(f"{i}/{len(commune_list)}: {commune['nom']}")
|
||||
try:
|
||||
restriction = await vigieau.get_data(
|
||||
insee_code=commune["code"],
|
||||
profil="particulier",
|
||||
lat=commune["centre"]["coordinates"][1],
|
||||
long=commune["centre"]["coordinates"][0],
|
||||
)
|
||||
except VigieauApiError as e:
|
||||
print(e.text)
|
||||
# FIXME: Sometimes insee is enough to call vigieau Api, sometimes not exclude the one where it's not enough , for the moment
|
||||
if restriction:
|
||||
for usage in restriction.get("usages", []):
|
||||
usages.add(
|
||||
frozendict(
|
||||
{"usage": usage["nom"], "thematique": usage["thematique"]}
|
||||
)
|
||||
)
|
||||
if i % 10 == 0:
|
||||
dump_restrictions(restriction_list, usages)
|
||||
|
||||
resp = await session.get("https://www.data.gouv.fr/fr/datasets/r/bfba7898-aed3-40ec-aa74-abb73b92a363")
|
||||
if resp.status != 200:
|
||||
raise Exception(f"Unable to get dataset from vigieau: {resp.status}")
|
||||
data = await resp.json(content_type="binary/octet-stream")
|
||||
|
||||
# jq '.features | .[].properties.restrictions' ~/Downloads/zones_arretes_en_vigueur.geojson |less
|
||||
for feature in data["features"]:
|
||||
for restriction in feature["properties"]["restrictions"]:
|
||||
usages.add(frozendict({"usage": restriction["nom"], "thematique": restriction["thematique"]}))
|
||||
|
||||
print(f"Found {len(usages)} different usages")
|
||||
dump_restrictions(restriction_list, usages)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user