meteocat 1.1.2 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,10 +1,18 @@
1
- ## [1.1.2](https://github.com/figorr/meteocat/compare/v1.1.1...v1.1.2) (2025-01-26)
1
+ ## [2.0.2](https://github.com/figorr/meteocat/compare/v2.0.1...v2.0.2) (2025-01-27)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * 2.0.1 ([7e95865](https://github.com/figorr/meteocat/commit/7e958659305f7f3a3049a8bcee1c713f60ff56ca))
7
+
8
+ ## [2.0.0](https://github.com/figorr/meteocat/compare/v1.1.1...v2.0.0) (2025-01-26)
2
9
 
3
10
 
4
11
  ### Bug Fixes
5
12
 
6
13
  * 2.0.0 ([8f9ad16](https://github.com/figorr/meteocat/commit/8f9ad169b92da1093c3cdb2ff64ad5ffae9c9b24))
7
14
  * update installation methods at README ([e588ffa](https://github.com/figorr/meteocat/commit/e588ffa17c10652992a4c26d19d26b7757b051b5))
15
+ * new alert sensors feature
8
16
 
9
17
  ## [1.1.1](https://github.com/figorr/meteocat/compare/v1.1.0...v1.1.1) (2025-01-08)
10
18
 
@@ -29,7 +29,7 @@ from .const import DOMAIN, PLATFORMS
29
29
  _LOGGER = logging.getLogger(__name__)
30
30
 
31
31
  # Versión
32
- __version__ = "2.0.0"
32
+ __version__ = "2.0.1"
33
33
 
34
34
  # Definir el esquema de configuración CONFIG_SCHEMA
35
35
  CONFIG_SCHEMA = vol.Schema(
@@ -9,5 +9,5 @@
9
9
  "issue_tracker": "https://github.com/figorr/meteocat/issues",
10
10
  "loggers": ["meteocatpy"],
11
11
  "requirements": ["meteocatpy==0.0.20", "packaging>=20.3", "wrapt>=1.14.0"],
12
- "version": "2.0.0"
12
+ "version": "2.0.1"
13
13
  }
@@ -1189,6 +1189,19 @@ class MeteocatAlertStatusSensor(CoordinatorEntity[MeteocatAlertsCoordinator], Se
1189
1189
 
1190
1190
  class MeteocatAlertRegionSensor(CoordinatorEntity[MeteocatAlertsRegionCoordinator], SensorEntity):
1191
1191
  """Sensor dinámico que muestra el estado de las alertas por región."""
1192
+
1193
+ METEOR_MAPPING = {
1194
+ "Temps violent": "violent_weather",
1195
+ "Intensitat de pluja": "rain_intensity",
1196
+ "Acumulació de pluja": "rain_amount",
1197
+ "Neu acumulada en 24 hores": "snow_amount_24",
1198
+ "Vent": "wind",
1199
+ "Estat de la mar": "sea_state",
1200
+ "Fred": "cold",
1201
+ "Calor": "heat",
1202
+ "Calor nocturna": "night_heat",
1203
+ }
1204
+
1192
1205
  _attr_has_entity_name = True # Activa el uso de nombres basados en el dispositivo
1193
1206
 
1194
1207
  def __init__(self, alerts_region_coordinator, description, entry_data):
@@ -1212,10 +1225,16 @@ class MeteocatAlertRegionSensor(CoordinatorEntity[MeteocatAlertsRegionCoordinato
1212
1225
 
1213
1226
  @property
1214
1227
  def extra_state_attributes(self):
1215
- """Devuelve los atributos extra del sensor."""
1228
+ """Devuelve los atributos extra del sensor con los nombres traducidos."""
1216
1229
  meteor_details = self.coordinator.data.get("detalles", {}).get("meteor", {})
1217
- attributes = {f"alert_{i+1}": meteor for i, meteor in enumerate(meteor_details.keys())}
1218
- _LOGGER.info("Atributos simplificados del sensor: %s", attributes)
1230
+
1231
+ # Convertimos las claves al formato deseado usando el mapping
1232
+ attributes = {
1233
+ f"alert_{i+1}": self.METEOR_MAPPING.get(meteor, "unknown")
1234
+ for i, meteor in enumerate(meteor_details.keys())
1235
+ }
1236
+
1237
+ _LOGGER.info("Atributos traducidos del sensor: %s", attributes)
1219
1238
  return attributes
1220
1239
 
1221
1240
  @property
@@ -1240,6 +1259,45 @@ class MeteocatAlertMeteorSensor(CoordinatorEntity[MeteocatAlertsRegionCoordinato
1240
1259
  ALERT_WARM_NIGHT: "Calor nocturna",
1241
1260
  ALERT_SNOW: "Neu acumulada en 24 hores",
1242
1261
  }
1262
+
1263
+ STATE_MAPPING = {
1264
+ "Obert": "opened",
1265
+ "Tancat": "closed",
1266
+ }
1267
+
1268
+ UMBRAL_MAPPING = {
1269
+ "Ratxes de vent > 25 m/s": "wind_gusts_25",
1270
+ "Esclafits": "microburst",
1271
+ "Tornados o mànegues": "tornadoes",
1272
+ "Ratxa màxima > 40m/s": "wind_40",
1273
+ "Ratxa màxima > 35m/s": "wind_35",
1274
+ "Ratxa màxima > 30m/s": "wind_30",
1275
+ "Ratxa màxima > 25m/s": "wind_25",
1276
+ "Ratxa màxima > 20m/s": "wind_20",
1277
+ "Pedra de diàmetre > 2 cm": "hail_2_cm",
1278
+ "Intensitat > 40 mm / 30 minuts": "intensity_40_30",
1279
+ "Intensitat > 20 mm / 30 minuts": "intensity_20_30",
1280
+ "Acumulada > 200 mm /24 hores": "rain_200_24",
1281
+ "Acumulada > 100 mm /24 hores": "rain_100_24",
1282
+ "Onades > 4.00 metres (mar brava)": "waves_4",
1283
+ "Onades > 2.50 metres (maregassa)": "waves_2_50",
1284
+ "Fred molt intens": "cold_very_intense",
1285
+ "Fred intens": "cold_intense",
1286
+ "Calor molt intensa": "heat_very_intense",
1287
+ "Calor intensa": "heat_intense",
1288
+ "Calor nocturna molt intensa": "heat_night_very_intense",
1289
+ "Calor nocturna intensa": "heat_night_intense",
1290
+ "gruix > 50 cm a cotes superiors a 1000 metres fins a 1500 metres": "thickness_50_at_1000",
1291
+ "gruix > 30 cm a cotes superiors a 800 metres fins a 1000 metres": "thickness_30_at_800",
1292
+ "gruix > 20 cm a cotes superiors a 600 metres fins a 800 metres": "thickness_20_at_600",
1293
+ "gruix > 20 cm a cotes superiors a 1000 metres fins a 1500 metres": "thickness_20_at_1000",
1294
+ "gruix > 15 cm a cotes superiors a 300 metres fins a 600 metres": "thickness_15_at_300",
1295
+ "gruix > 10 cm a cotes superiors a 800 metres fins a 1000 metres": "thickness_10_at_800",
1296
+ "gruix > 5 cm a cotes inferiors a 300 metres": "thickness_5_at_300",
1297
+ "gruix > 5 cm a cotes superiors a 600 metres fins a 800 metres": "thickness_5_at_600",
1298
+ "gruix > 2 cm a cotes superiors a 300 metres fins a 600 metres": "thickness_2_at_300",
1299
+ "gruix ≥ 0 cm a cotes inferiors a 300 metres": "thickness_0_at_300",
1300
+ }
1243
1301
 
1244
1302
  _attr_has_entity_name = True # Activa el uso de nombres basados en el dispositivo
1245
1303
 
@@ -1272,7 +1330,10 @@ class MeteocatAlertMeteorSensor(CoordinatorEntity[MeteocatAlertsRegionCoordinato
1272
1330
  return "Desconocido"
1273
1331
 
1274
1332
  meteor_data = self.coordinator.data.get("detalles", {}).get("meteor", {}).get(meteor_type, {})
1275
- return meteor_data.get("estado", "Tancat")
1333
+
1334
+ # Convertir estado para translation_key
1335
+ estado_original = meteor_data.get("estado", "Tancat")
1336
+ return self.STATE_MAPPING.get(estado_original, "unknown")
1276
1337
 
1277
1338
  @property
1278
1339
  def extra_state_attributes(self):
@@ -1284,13 +1345,17 @@ class MeteocatAlertMeteorSensor(CoordinatorEntity[MeteocatAlertsRegionCoordinato
1284
1345
  meteor_data = self.coordinator.data.get("detalles", {}).get("meteor", {}).get(meteor_type, {})
1285
1346
  if not meteor_data:
1286
1347
  return {}
1348
+
1349
+ # Convertir umbral para translation_key
1350
+ umbral_original = meteor_data.get("umbral")
1351
+ umbral_convertido = self.UMBRAL_MAPPING.get(umbral_original, "unknown")
1287
1352
 
1288
1353
  return {
1289
1354
  "inicio": meteor_data.get("inicio"),
1290
1355
  "fin": meteor_data.get("fin"),
1291
1356
  "fecha": meteor_data.get("fecha"),
1292
1357
  "periodo": meteor_data.get("periodo"),
1293
- "umbral": meteor_data.get("umbral"),
1358
+ "umbral": umbral_convertido,
1294
1359
  "nivel": meteor_data.get("nivel"),
1295
1360
  "peligro": meteor_data.get("peligro"),
1296
1361
  "comentario": meteor_data.get("comentario"),
@@ -231,71 +231,71 @@
231
231
  "alert_1": {
232
232
  "name": "Alert 1",
233
233
  "state": {
234
- "Temps violent": "Violent weather",
235
- "Intensitat de pluja": "Rain intensity",
236
- "Acumulació de pluja": "Rain amount",
237
- "Neu acumulada en 24 hores": "Snow amount in 24 hours",
238
- "Vent": "Wind",
239
- "Estat de la mar": "Sea state",
240
- "Fred": "Cold",
241
- "Calor": "Heat",
242
- "Calor nocturna": "Night heat"
234
+ "violent_weather": "Violent weather",
235
+ "rain_intensity": "Rain intensity",
236
+ "rain_amount": "Rain amount",
237
+ "snow_amount_24": "Snow amount in 24 hours",
238
+ "wind": "Wind",
239
+ "sea_state": "Sea state",
240
+ "cold": "Cold",
241
+ "heat": "Heat",
242
+ "night_heat": "Night heat"
243
243
  }
244
244
  },
245
245
  "alert_2": {
246
246
  "name": "Alert 2",
247
247
  "state": {
248
- "Temps violent": "Violent weather",
249
- "Intensitat de pluja": "Rain intensity",
250
- "Acumulació de pluja": "Rain amount",
251
- "Neu acumulada en 24 hores": "Snow amount in 24 hours",
252
- "Vent": "Wind",
253
- "Estat de la mar": "Sea state",
254
- "Fred": "Cold",
255
- "Calor": "Heat",
256
- "Calor nocturna": "Night heat"
248
+ "violent_weather": "Violent weather",
249
+ "rain_intensity": "Rain intensity",
250
+ "rain_amount": "Rain amount",
251
+ "snow_amount_24": "Snow amount in 24 hours",
252
+ "wind": "Wind",
253
+ "sea_state": "Sea state",
254
+ "cold": "Cold",
255
+ "heat": "Heat",
256
+ "night_heat": "Night heat"
257
257
  }
258
258
  },
259
259
  "alert_3": {
260
260
  "name": "Alert 3",
261
261
  "state": {
262
- "Temps violent": "Violent weather",
263
- "Intensitat de pluja": "Rain intensity",
264
- "Acumulació de pluja": "Rain amount",
265
- "Neu acumulada en 24 hores": "Snow amount in 24 hours",
266
- "Vent": "Wind",
267
- "Estat de la mar": "Sea state",
268
- "Fred": "Cold",
269
- "Calor": "Heat",
270
- "Calor nocturna": "Night heat"
262
+ "violent_weather": "Violent weather",
263
+ "rain_intensity": "Rain intensity",
264
+ "rain_amount": "Rain amount",
265
+ "snow_amount_24": "Snow amount in 24 hours",
266
+ "wind": "Wind",
267
+ "sea_state": "Sea state",
268
+ "cold": "Cold",
269
+ "heat": "Heat",
270
+ "night_heat": "Night heat"
271
271
  }
272
272
  },
273
273
  "alert_4": {
274
274
  "name": "Alert 4",
275
275
  "state": {
276
- "Temps violent": "Violent weather",
277
- "Intensitat de pluja": "Rain intensity",
278
- "Acumulació de pluja": "Rain amount",
279
- "Neu acumulada en 24 hores": "Snow amount in 24 hours",
280
- "Vent": "Wind",
281
- "Estat de la mar": "Sea state",
282
- "Fred": "Cold",
283
- "Calor": "Heat",
284
- "Calor nocturna": "Night heat"
276
+ "violent_weather": "Violent weather",
277
+ "rain_intensity": "Rain intensity",
278
+ "rain_amount": "Rain amount",
279
+ "snow_amount_24": "Snow amount in 24 hours",
280
+ "wind": "Wind",
281
+ "sea_state": "Sea state",
282
+ "cold": "Cold",
283
+ "heat": "Heat",
284
+ "night_heat": "Night heat"
285
285
  }
286
286
  },
287
287
  "alert_5": {
288
288
  "name": "Alert 5",
289
289
  "state": {
290
- "Temps violent": "Violent weather",
291
- "Intensitat de pluja": "Rain intensity",
292
- "Acumulació de pluja": "Rain amount",
293
- "Neu acumulada en 24 hores": "Snow amount in 24 hours",
294
- "Vent": "Wind",
295
- "Estat de la mar": "Sea state",
296
- "Fred": "Cold",
297
- "Calor": "Heat",
298
- "Calor nocturna": "Night heat"
290
+ "violent_weather": "Violent weather",
291
+ "rain_intensity": "Rain intensity",
292
+ "rain_amount": "Rain amount",
293
+ "snow_amount_24": "Snow amount in 24 hours",
294
+ "wind": "Wind",
295
+ "sea_state": "Sea state",
296
+ "cold": "Cold",
297
+ "heat": "Heat",
298
+ "night_heat": "Night heat"
299
299
  }
300
300
  }
301
301
  }
@@ -303,8 +303,8 @@
303
303
  "alert_wind": {
304
304
  "name": "Alert Wind",
305
305
  "state": {
306
- "Obert": "Opened",
307
- "Tancat": "Closed"
306
+ "opened": "Opened",
307
+ "closed": "Closed"
308
308
  },
309
309
  "state_attributes": {
310
310
  "inicio": {
@@ -325,14 +325,14 @@
325
325
  "umbral": {
326
326
  "name": "Threshold",
327
327
  "state": {
328
- "Ratxes de vent > 25 m/s": "Wind gusts > 25 m/s",
329
- "Esclafits": "Microburst",
330
- "Tornados o mànegues": "Tornadoes or waterspouts",
331
- "Ratxa màxima > 40m/s": "Max. wind speed > 40 m/s",
332
- "Ratxa màxima > 35m/s": "Max. wind speed > 35 m/s",
333
- "Ratxa màxima > 30m/s": "Max. wind speed > 30 m/s",
334
- "Ratxa màxima > 25m/s": "Max. wind speed > 25 m/s",
335
- "Ratxa màxima > 20m/s": "Max. wind speed > 20 m/s"
328
+ "wind_gusts_25": "Wind gusts > 25 m/s",
329
+ "microburst": "Microburst",
330
+ "tornadoes": "Tornadoes or waterspouts",
331
+ "wind_40": "Max. wind speed > 40 m/s",
332
+ "wind_35": "Max. wind speed > 35 m/s",
333
+ "wind_30": "Max. wind speed > 30 m/s",
334
+ "wind_25": "Max. wind speed > 25 m/s",
335
+ "wind_20": "Max. wind speed > 20 m/s"
336
336
  }
337
337
  },
338
338
  "peligro": {
@@ -346,8 +346,8 @@
346
346
  "alert_rain_intensity": {
347
347
  "name": "Alert Rain Intensity",
348
348
  "state": {
349
- "Obert": "Opened",
350
- "Tancat": "Closed"
349
+ "opened": "Opened",
350
+ "closed": "Closed"
351
351
  },
352
352
  "state_attributes": {
353
353
  "inicio": {
@@ -368,10 +368,10 @@
368
368
  "umbral": {
369
369
  "name": "Threshold",
370
370
  "state": {
371
- "Pedra de diàmetre > 2 cm": "Hail with diameter > 2 cm",
372
- "Esclafits": "Microburst",
373
- "Intensitat > 40 mm / 30 minuts": "Intensity > 40 mm / 30 minutes",
374
- "Intensitat > 20 mm / 30 minuts": "Intensity > 20 mm / 30 minutes"
371
+ "hail_2_cm": "Hail with diameter > 2 cm",
372
+ "microburst": "Microburst",
373
+ "intensity_40_30": "Intensity > 40 mm / 30 minutes",
374
+ "intensity_20_30": "Intensity > 20 mm / 30 minutes"
375
375
  }
376
376
  },
377
377
  "peligro": {
@@ -385,8 +385,8 @@
385
385
  "alert_rain": {
386
386
  "name": "Alert Rain",
387
387
  "state": {
388
- "Obert": "Opened",
389
- "Tancat": "Closed"
388
+ "opened": "Opened",
389
+ "closed": "Closed"
390
390
  },
391
391
  "state_attributes": {
392
392
  "inicio": {
@@ -407,9 +407,9 @@
407
407
  "umbral": {
408
408
  "name": "Threshold",
409
409
  "state": {
410
- "Esclafits": "Microburst",
411
- "Acumulada > 200 mm /24 hores": "Amount > 200 mm /24 hours",
412
- "Acumulada > 100 mm /24 hores": "Amount > 100 mm /24 hours"
410
+ "microburst": "Microburst",
411
+ "rain_200_24": "Amount > 200 mm /24 hours",
412
+ "rain_100_24": "Amount > 100 mm /24 hours"
413
413
  }
414
414
  },
415
415
  "peligro": {
@@ -423,8 +423,8 @@
423
423
  "alert_sea": {
424
424
  "name": "Alert Sea",
425
425
  "state": {
426
- "Obert": "Opened",
427
- "Tancat": "Closed"
426
+ "opened": "Opened",
427
+ "closed": "Closed"
428
428
  },
429
429
  "state_attributes": {
430
430
  "inicio": {
@@ -445,10 +445,10 @@
445
445
  "umbral": {
446
446
  "name": "Threshold",
447
447
  "state": {
448
- "Esclafits": "Microburst",
449
- "Tornados o mànegues": "Tornadoes or waterspouts",
450
- "Onades > 4.00 metres (mar brava)": "Waves > 4.00 meters (rough sea)",
451
- "Onades > 2.50 metres (maregassa)": "Waves > 2.50 meters (tidal)"
448
+ "microburst": "Microburst",
449
+ "tornadoes": "Tornadoes or waterspouts",
450
+ "waves_4": "Waves > 4.00 meters (rough sea)",
451
+ "waves_2_50": "Waves > 2.50 meters (tidal)"
452
452
  }
453
453
  },
454
454
  "peligro": {
@@ -462,8 +462,8 @@
462
462
  "alert_cold": {
463
463
  "name": "Alert Cold",
464
464
  "state": {
465
- "Obert": "Opened",
466
- "Tancat": "Closed"
465
+ "opened": "Opened",
466
+ "closed": "Closed"
467
467
  },
468
468
  "state_attributes": {
469
469
  "inicio": {
@@ -484,8 +484,8 @@
484
484
  "umbral": {
485
485
  "name": "Threshold",
486
486
  "state": {
487
- "Fred molt intens": "Very intense cold",
488
- "Fred intens": "Intense cold"
487
+ "cold_very_intense": "Very intense cold",
488
+ "cold_intense": "Intense cold"
489
489
  }
490
490
  },
491
491
  "peligro": {
@@ -499,8 +499,8 @@
499
499
  "alert_warm": {
500
500
  "name": "Alert Warm",
501
501
  "state": {
502
- "Obert": "Opened",
503
- "Tancat": "Closed"
502
+ "opened": "Opened",
503
+ "closed": "Closed"
504
504
  },
505
505
  "state_attributes": {
506
506
  "inicio": {
@@ -521,8 +521,8 @@
521
521
  "umbral": {
522
522
  "name": "Threshold",
523
523
  "state": {
524
- "Calor molt intensa": "Very intense hot",
525
- "Calor intensa": "Intense heat"
524
+ "heat_very_intense": "Very intense hot",
525
+ "heat_intense": "Intense heat"
526
526
  }
527
527
  },
528
528
  "peligro": {
@@ -536,8 +536,8 @@
536
536
  "alert_warm_night": {
537
537
  "name": "Alert Warm Night",
538
538
  "state": {
539
- "Obert": "Opened",
540
- "Tancat": "Closed"
539
+ "opened": "Opened",
540
+ "closed": "Closed"
541
541
  },
542
542
  "state_attributes": {
543
543
  "inicio": {
@@ -558,8 +558,8 @@
558
558
  "umbral": {
559
559
  "name": "Threshold",
560
560
  "state": {
561
- "Calor nocturna molt intensa": "Very intense night heat",
562
- "Calor nocturna intensa": "Intense night heat"
561
+ "heat_night_very_intense": "Very intense night heat",
562
+ "heat_night_intense": "Intense night heat"
563
563
  }
564
564
  },
565
565
  "peligro": {
@@ -573,8 +573,8 @@
573
573
  "alert_snow": {
574
574
  "name": "Alert Snow",
575
575
  "state": {
576
- "Obert": "Opened",
577
- "Tancat": "Closed"
576
+ "opened": "Opened",
577
+ "closed": "Closed"
578
578
  },
579
579
  "state_attributes": {
580
580
  "inicio": {
@@ -595,17 +595,17 @@
595
595
  "umbral": {
596
596
  "name": "Threshold",
597
597
  "state": {
598
- "Pedra de diàmetre > 2 cm": "Hail with diameter > 2 cm",
599
- "gruix > 50 cm a cotes superiors a 1000 metres fins a 1500 metres": "thickness > 50 cm at altitudes above 1000 meters up to 1500 meters",
600
- "gruix > 30 cm a cotes superiors a 800 metres fins a 1000 metres": "thickness > 30 cm at altitudes above 800 meters up to 1000 meters",
601
- "gruix > 20 cm a cotes superiors a 600 metres fins a 800 metres": "thickness > 20 cm at altitudes above 600 meters up to 800 meters",
602
- "gruix > 20 cm a cotes superiors a 1000 metres fins a 1500 metres": "thickness > 20 cm at altitudes above 1000 meters up to 1500 meters",
603
- "gruix > 15 cm a cotes superiors a 300 metres fins a 600 metres": "thickness > 15 cm at altitudes above 300 meters up to 600 meters",
604
- "gruix > 10 cm a cotes superiors a 800 metres fins a 1000 metres": "thickness > 10 cm at altitudes above 800 meters up to 1000 meters",
605
- "gruix > 5 cm a cotes inferiors a 300 metres": "thickness > 5 cm at altitudes below 300 meters",
606
- "gruix > 5 cm a cotes superiors a 600 metres fins a 800 metres": "thickness > 5 cm at altitudes above 600 meters up to 800 meters",
607
- "gruix > 2 cm a cotes superiors a 300 metres fins a 600 metres": "thickness > 2 cm at altitudes above 300 meters up to 600 meters",
608
- "gruix ≥ 0 cm a cotes inferiors a 300 metres": "thickness ≥ 0 cm at altitudes below 300 meters"
598
+ "hail_2_cm": "Hail with diameter > 2 cm",
599
+ "thickness_50_at_1000": "thickness > 50 cm at altitudes above 1000 meters up to 1500 meters",
600
+ "thickness_30_at_800": "thickness > 30 cm at altitudes above 800 meters up to 1000 meters",
601
+ "thickness_20_at_600": "thickness > 20 cm at altitudes above 600 meters up to 800 meters",
602
+ "thickness_20_at_1000": "thickness > 20 cm at altitudes above 1000 meters up to 1500 meters",
603
+ "thickness_15_at_300": "thickness > 15 cm at altitudes above 300 meters up to 600 meters",
604
+ "thickness_10_at_800": "thickness > 10 cm at altitudes above 800 meters up to 1000 meters",
605
+ "thickness_5_at_300": "thickness > 5 cm at altitudes below 300 meters",
606
+ "thickness_5_at_600": "thickness > 5 cm at altitudes above 600 meters up to 800 meters",
607
+ "thickness_2_at_300": "thickness > 2 cm at altitudes above 300 meters up to 600 meters",
608
+ "thickness_0_at_300": "thickness ≥ 0 cm at altitudes below 300 meters"
609
609
  }
610
610
  },
611
611
  "peligro": {