[Externe Integration]: National Weather Service

Für Info, ich habe die Entwicklung der externen Integration für den National Weather Service gestartet.

Ein Testbild ist verfügbar

Installation des Testbildes im Entwicklermodus

ghcr.io/william-de71/gladys-national-weather-service:dev

Die Manifestdatei zum manuellen Installieren des Testbildes

{
  "manifest_version": 1,
  "type": "weather",
  "name": "National Weather Service",
  "description": {
    "en": "Official US forecasts and alerts from the National Weather Service.",
    "de": "Offizielle US-Vorhersagen und Warnungen des National Weather Service."
  },
  "version": "0.1.0",
  "docker_image": "ghcr.io/william-de71/gladys-national-weather-service:dev",
  "gladys_version": ">=5.1.1",
  "categories": [
    "environment"
  ],
  "cover_image": "https://raw.githubusercontent.com/William-De71/gladys-national-weather-service/main/cover.jpg",
  "transports": [
    "cloud"
  ],
  "location": true,
  "config_schema": [
    {
      "key": "intro",
      "type": "section",
      "label": {
        "en": "Ready to use",
        "de": "Einsatzbereit"
      },
      "description": {
        "en": "Forecasts and alerts work with no configuration: the National Weather Service API is free and needs no key. It covers the United States and its territories only — a house elsewhere gets its weather from another provider.",
        "de": "Vorhersagen und Warnungen funktionieren ohne Konfiguration: Die API des National Weather Service ist kostenlos und benötigt keinen Schlüssel. Sie deckt nur die Vereinigten Staaten und ihre Gebiete ab — ein Haus anderswo erhält sein Wetter von einem anderen Anbieter."
      },
      "links": [
        {
          "url": "https://www.weather.gov/documentation/services-web-api",
          "label": {
            "en": "NWS API documentation",
            "de": "NWS-API-Dokumentation"
          }
        }
      ]
    },
    {
      "key": "contact",
      "type": "string",
      "label": {
        "en": "Contact email (optional)",
        "de": "Kontakt-E-Mail (optional)"
      },
      "description": {
        "en": "Added to the identification the NWS requires from every application, so it can reach you before blocking traffic it finds abusive. Never shared with anyone else.",
        "de": "Hinzugefügt zur Identifikation, die der NWS von jeder Anwendung verlangt, damit er Sie vor dem Blockieren von als missbräuchlich erachtetem Verkehr erreichen kann. Wird niemals mit anderen geteilt."
      },
      "required": false,
      "placeholder": {
        "en": "me@example.com",
        "de": "ich@beispiel.de"
      }
    },
    {
      "key": "cache_duration",
      "type": "number",
      "label": {
        "en": "Cache duration (s)",
        "de": "Cache-Dauer (s)"
      },
      "description": {
        "en": "In seconds, between 0 and 3600. How long a forecast is reused before calling the NWS again. The NWS refreshes its forecasts about once an hour: the default of 600 (10 min) costs no freshness. Set to 0 to always call the API. Alerts are not affected: they are checked on their own schedule.",
        "de": "In Sekunden, zwischen 0 und 3600. Wie lange eine Vorhersage wiederverwendet wird, bevor der NWS erneut angerufen wird. Der NWS aktualisiert seine Vorhersagen etwa einmal pro Stunde: Der Standardwert von 600 (10 min) kostet keine Frische. Auf 0 setzen, um die API immer aufzurufen. Warnungen sind nicht betroffen: Sie werden nach ihrem eigenen Zeitplan überprüft."
      },
      "required": false,
      "default": 600,
      "min": 0,
      "max": 3600
    },
    {
      "key": "alert_check_interval",
      "type": "number",
      "label": {
        "en": "Alert check interval (s)",
        "de": "Warnintervall (s)"
      },
      "description": {
        "en": "In seconds, between 30 and 900. How often the official alerts of your houses are checked, for the scene triggers and the alerts widget. A Tornado Warning lasts about 30 minutes: the default of 60 s fires your scenes within a minute of its issuance.",
        "de": "In Sekunden, zwischen 30 und 900. Wie oft die offiziellen Warnungen Ihrer Häuser überprüft werden, für die Szenenauslöser und das Warnwidget. Eine Tornadowarnung dauert etwa 30 Minuten: Der Standardwert von 60 s löst Ihre Szenen innerhalb einer Minute nach ihrer Veröffentlichung aus."
      },
      "required": false,
      "default": 60,
      "min": 30,
      "max": 900
    }
  ],
  "scene_triggers": [
    {
      "key": "alert_issued",
      "label": {
        "en": "NWS alert issued",
        "de": "NWS-Warnung ausgegeben"
      },
      "description": {
        "en": "A new watch, warning or advisory covers the house. Its updates do not fire again. Checked every minute by default.",
        "de": "Eine neue Beobachtung, Warnung oder ein Hinweis deckt das Haus ab. Seine Aktualisierungen lösen nicht erneut aus. Standardmäßig jede Minute überprüft."
      },
      "fields": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "de": "Haus"
          },
          "description": {
            "en": "Name of the house, exactly as shown in Gladys. Leave empty for every house.",
            "de": "Name des Hauses, genau wie in Gladys angegeben. Leer lassen für jedes Haus."
          },
          "required": false
        },
        {
          "key": "category",
          "type": "multi_select",
          "label": {
            "en": "Kind of alert",
            "de": "Art der Warnung"
          },
          "description": {
            "en": "Leave empty for every kind.",
            "de": "Leer lassen für jede Art."
          },
          "required": false,
          "options": [
            {
              "value": "tornado",
              "label": {
                "en": "Tornado",
                "de": "Tornado"
              }
            },
            {
              "value": "hurricane",
              "label": {
                "en": "Hurricane / tropical storm",
                "de": "Hurrikan / tropischer Sturm"
              }
            },
            {
              "value": "thunderstorm",
              "label": {
                "en": "Severe thunderstorm",
                "de": "Schweres Gewitter"
              }
            },
            {
              "value": "flood",
              "label": {
                "en": "Flood",
                "de": "Überschwemmung"
              }
            },
            {
              "value": "winter",
              "label": {
                "en": "Winter storm, snow, ice",
                "de": "Wintersturm, Schnee, Eis"
              }
            },
            {
              "value": "cold",
              "label": {
                "en": "Cold, freeze, wind chill",
                "de": "Kälte, Frost, Windchill"
              }
            },
            {
              "value": "heat",
              "label": {
                "en": "Heat",
                "de": "Hitze"
              }
            },
            {
              "value": "wind",
              "label": {
                "en": "Wind",
                "de": "Wind"
              }
            },
            {
              "value": "fire",
              "label": {
                "en": "Fire weather (red flag)",
                "de": "Feuerwetter (Red Flag)"
              }
            },
            {
              "value": "fog",
              "label": {
                "en": "Fog",
                "de": "Nebel"
              }
            },
            {
              "value": "air",
              "label": {
                "en": "Air quality, smoke, dust",
                "de": "Luftqualität, Rauch, Staub"
              }
            },
            {
              "value": "marine",
              "label": {
                "en": "Marine, surf, rip currents",
                "de": "Marine, Surf, Strömungen"
              }
            },
            {
              "value": "other",
              "label": {
                "en": "Other",
                "de": "Andere"
              }
            }
          ]
        },
        {
          "key": "level",
          "type": "multi_select",
          "label": {
            "en": "Level",
            "de": "Stufe"
          },
          "description": {
            "en": "Leave empty for every level". Eine Watch bedeutet, dass die Bedingungen günstig sind; eine Warnung bedeutet, dass die Gefahr besteht oder unmittelbar bevorsteht.",
            "de": "Lassen Sie leer für alle Ebenen. Eine „Watch“ bedeutet, dass die Bedingungen günstig sind; eine „Warning“ bedeutet, dass die Gefahr besteht oder unmittelbar bevorsteht."
          },
          "required": false,
          "options": [
            {
              "value": "warning",
              "label": {
                "en": "Warning (take action)",
                "de": "Warning – Warnung (handeln)"
              }
            },
            {
              "value": "watch",
              "label": {
                "en": "Watch (be prepared)",
                "de": "Watch – Beobachtung (vorbereitet sein)"
              }
            },
            {
              "value": "advisory",
              "label": {
                "en": "Advisory",
                "de": "Advisory – Hinweis"
              }
            },
            {
              "value": "statement",
              "label": {
                "en": "Statement",
                "de": "Statement – Bulletin"
              }
            },
            {
              "value": "other",
              "label": {
                "en": "Other notice",
                "de": "Andere Information"
              }
            }
          ]
        },
        {
          "key": "severity",
          "type": "multi_select",
          "label": {
            "en": "Severity",
            "de": "Schweregrad"
          },
          "description": {
            "en": "Official CAP severity. Leave empty for any.",
            "de": "Offizielle CAP-Schweregrad. Leer lassen für alle."
          },
          "required": false,
          "options": [
            {
              "value": "extreme",
              "label": {
                "en": "Extreme",
                "de": "Extrem"
              }
            },
            {
              "value": "severe",
              "label": {
                "en": "Severe",
                "de": "Schwer"
              }
            },
            {
              "value": "moderate",
              "label": {
                "en": "Moderate",
                "de": "Mäßig"
              }
            },
            {
              "value": "minor",
              "label": {
                "en": "Minor",
                "de": "Gering"
              }
            },
            {
              "value": "unknown",
              "label": {
                "en": "Unknown",
                "de": "Unbekannt"
              }
            }
          ]
        }
      ],
      "variables": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "de": "Haus"
          }
        },
        {
          "key": "event",
          "type": "string",
          "label": {
            "en": "Event (e.g. Tornado Warning)",
            "de": "Ereignis (z. B. Tornado-Warnung)"
          }
        },
        {
          "key": "category",
          "type": "string",
          "label": {
            "en": "Kind (key)",
            "de": "Art (Schlüssel)"
          }
        },
        {
          "key": "category_label",
          "type": "string",
          "label": {
            "en": "Kind",
            "de": "Art"
          }
        },
        {
          "key": "level",
          "type": "string",
          "label": {
            "en": "Level (warning, watch, advisory, statement, other)",
            "de": "Ebene (Warnung, Beobachtung, Hinweis, Bulletin, andere)"
          }
        },
        {
          "key": "level_label",
          "type": "string",
          "label": {
            "en": "Level label",
            "de": "Ebenenbezeichnung"
          }
        },
        {
          "key": "severity",
          "type": "string",
          "label": {
            "en": "Severity (extreme, severe, moderate, minor, unknown)",
            "de": "Schweregrad (extrem, schwer, mäßig, gering, unbekannt)"
          }
        },
        {
          "key": "urgency",
          "type": "string",
          "label": {
            "en": "Urgency",
            "de": "Dringlichkeit"
          }
        },
        {
          "key": "certainty",
          "type": "string",
          "label": {
            "en": "Certainty",
            "de": "Sicherheit"
          }
        },
        {
          "key": "headline",
          "type": "string",
          "label": {
            "en": "Headline",
            "de": "Überschrift"
          }
        },
        {
          "key": "area",
          "type": "string",
          "label": {
            "en": "Area",
            "de": "Gebiet"
          }
        },
        {
          "key": "onset",
          "type": "string",
          "label": {
            "en": "Start (local time)",
            "de": "Beginn (Ortszeit)"
          }
        },
        {
          "key": "ends",
          "type": "string",
          "label": {
            "en": "End (local time)",
            "de": "Ende (Ortszeit)"
          }
        },
        {
          "key": "instruction",
          "type": "string",
          "label": {
            "en": "Instructions",
            "de": "Anweisungen"
          }
        },
        {
          "key": "description",
          "type": "string",
          "label": {
            "en": "Description",
            "de": "Beschreibung"
          }
        },
        {
          "key": "summary",
          "type": "string",
          "label": {
            "en": "Summary",
            "de": "Zusammenfassung"
          },
          "description": {
            "en": "A sentence ready to put in a message.",
            "de": "Ein Satz, der in eine Nachricht eingefügt werden kann."
          }
        }
      ]
    },
    {
      "key": "alert_ended",
      "label": {
        "en": "NWS alert ended",
        "de": "NWS-Warnung beendet"
      },
      "description": {
        "en": "A watch, warning or advisory covering the house expired or was cancelled.",
        "de": "Eine Beobachtung, Warnung oder ein Hinweis, der das Haus betraf, ist abgelaufen oder wurde abgesagt."
      },
      "fields": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "de": "Haus"
          },
          "description": {
            "en": "Name of the house, exactly as shown in Gladys. Leave empty for every house.",
            "de": "Name des Hauses, genau wie in Gladys angezeigt. Leer lassen für jedes Haus.". Für alle Häuser leer lassen."
          },
          "required": false
        },
        {
          "key": "category",
          "type": "multi_select",
          "label": {
            "en": "Kind of alert",
            "fr": "Type d'alerte"
          },
          "description": {
            "en": "Leave empty for every kind.",
            "fr": "Laissez vide pour tous les types."
          },
          "required": false,
          "options": [
            {
              "value": "tornado",
              "label": {
                "en": "Tornado",
                "fr": "Tornade"
              }
            },
            {
              "value": "hurricane",
              "label": {
                "en": "Hurricane / tropical storm",
                "fr": "Ouragan / tempête tropicale"
              }
            },
            {
              "value": "thunderstorm",
              "label": {
                "en": "Severe thunderstorm",
                "fr": "Orage violent"
              }
            },
            {
              "value": "flood",
              "label": {
                "en": "Flood",
                "fr": "Inondation"
              }
            },
            {
              "value": "winter",
              "label": {
                "en": "Winter storm, snow, ice",
                "fr": "Tempête hivernale, neige, verglas"
              }
            },
            {
              "value": "cold",
              "label": {
                "en": "Cold, freeze, wind chill",
                "fr": "Froid, gel, refroidissement éolien"
              }
            },
            {
              "value": "heat",
              "label": {
                "en": "Heat",
                "fr": "Chaleur"
              }
            },
            {
              "value": "wind",
              "label": {
                "en": "Wind",
                "fr": "Vent"
              }
            },
            {
              "value": "fire",
              "label": {
                "en": "Fire weather (red flag)",
                "fr": "Risque d'incendie (red flag)"
              }
            },
            {
              "value": "fog",
              "label": {
                "en": "Fog",
                "fr": "Brouillard"
              }
            },
            {
              "value": "air",
              "label": {
                "en": "Air quality, smoke, dust",
                "fr": "Qualité de l'air, fumée, poussière"
              }
            },
            {
              "value": "marine",
              "label": {
                "en": "Marine, surf, rip currents",
                "fr": "Mer, houle, courants"
              }
            },
            {
              "value": "other",
              "label": {
                "en": "Other",
                "fr": "Autre"
              }
            }
          ]
        },
        {
          "key": "level",
          "type": "multi_select",
          "label": {
            "en": "Level",
            "fr": "Niveau"
          },
          "description": {
            "en": "Leave empty for every level. A Watch means conditions are favorable; a Warning means the hazard is happening or imminent.",
            "fr": "Laissez vide pour tous les niveaux. Une « Watch » signifie que les conditions sont réunies ; un « Warning » que le phénomène est en cours ou imminent."
          },
          "required": false,
          "options": [
            {
              "value": "warning",
              "label": {
                "en": "Warning (take action)",
                "fr": "Warning – alerte (agir)"
              }
            },
            {
              "value": "watch",
              "label": {
                "en": "Watch (be prepared)",
                "fr": "Watch – veille (se préparer)"
              }
            },
            {
              "value": "advisory",
              "label": {
                "en": "Advisory",
                "fr": "Advisory – avis"
              }
            },
            {
              "value": "statement",
              "label": {
                "en": "Statement",
                "fr": "Statement – bulletin"
              }
            },
            {
              "value": "other",
              "label": {
                "en": "Other notice",
                "fr": "Autre information"
              }
            }
          ]
        }
      ],
      "variables": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          }
        },
        {
          "key": "event",
          "type": "string",
          "label": {
            "en": "Event",
            "fr": "Événement"
          }
        },
        {
          "key": "category",
          "type": "string",
          "label": {
            "en": "Kind (key)",
            "fr": "Type (clé)"
          }
        },
        {
          "key": "category_label",
          "type": "string",
          "label": {
            "en": "Kind",
            "fr": "Type"
          }
        },
        {
          "key": "level",
          "type": "string",
          "label": {
            "en": "Level",
            "fr": "Niveau"
          }
        },
        {
          "key": "level_label",
          "type": "string",
          "label": {
            "en": "Level label",
            "fr": "Libellé du niveau"
          }
        },
        {
          "key": "severity",
          "type": "string",
          "label": {
            "en": "Severity",
            "fr": "Sévérité"
          }
        },
        {
          "key": "area",
          "type": "string",
          "label": {
            "en": "Area",
            "fr": "Zone"
          }
        },
        {
          "key": "summary",
          "type": "string",
          "label": {
            "en": "Summary",
            "fr": "Résumé"
          },
          "description": {
            "en": "A sentence ready to put in a message.",
            "fr": "Une phrase prête à mettre dans un message."
          }
        }
      ]
    }
  ],
  "scene_actions": [
    {
      "key": "get_alerts",
      "label": {
        "en": "Get the NWS alerts",
        "fr": "Obtenir les alertes NWS"
      },
      "description": {
        "en": "The watches, warnings and advisories in force at the house, the most serious first.",
        "fr": "Les veilles, alertes et avis en cours pour la maison, le plus grave en premier."
      },
      "timeout_seconds": 30,
      "fields": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Für das erste Haus mit Standort leer lassen."
          },
          "required": false
        }
      ],
      "outputs": [
        {
          "key": "count",
          "type": "number",
          "label": {
            "en": "Number of alerts",
            "fr": "Nombre d'alertes"
          }
        },
        {
          "key": "has_alert",
          "type": "boolean",
          "label": {
            "en": "Alert in force",
            "fr": "Alerte en cours"
          }
        },
        {
          "key": "has_warning",
          "type": "boolean",
          "label": {
            "en": "Warning in force",
            "fr": "Warning en cours"
          }
        },
        {
          "key": "warnings",
          "type": "number",
          "label": {
            "en": "Warnings",
            "fr": "Warnings"
          }
        },
        {
          "key": "watches",
          "type": "number",
          "label": {
            "en": "Watches",
            "fr": "Watches"
          }
        },
        {
          "key": "advisories",
          "type": "number",
          "label": {
            "en": "Advisories",
            "fr": "Advisories"
          }
        },
        {
          "key": "events",
          "type": "string",
          "label": {
            "en": "Events",
            "fr": "Événements"
          }
        },
        {
          "key": "top_event",
          "type": "string",
          "label": {
            "en": "Most serious: event",
            "fr": "Plus grave : événement"
          }
        },
        {
          "key": "top_category",
          "type": "string",
          "label": {
            "en": "Most serious: kind (key)",
            "fr": "Plus grave : type (clé)"
          }
        },
        {
          "key": "top_category_label",
          "type": "string",
          "label": {
            "en": "Most serious: kind",
            "fr": "Plus grave : type"
          }
        },
        {
          "key": "top_level",
          "type": "string",
          "label": {
            "en": "Most serious: level",
            "fr": "Plus grave : niveau"
          }
        },
        {
          "key": "top_level_label",
          "type": "string",
          "label": {
            "en": "Most serious: level label",
            "fr": "Plus grave : libellé du niveau"
          }
        },
        {
          "key": "top_severity",
          "type": "string",
          "label": {
            "en": "Most serious: severity",
            "fr": "Plus grave : sévérité"
          }
        },
        {
          "key": "top_severity_label",
          "type": "string",
          "label": {
            "en": "Most serious: severity label",
            "fr": "Plus grave : libellé de la sévérité"
          }
        },
        {
          "key": "top_headline",
          "type": "string",
          "label": {
            "en": "Most serious: headline",
            "fr": "Plus grave : titre"
          }
        },
        {
          "key": "top_instruction",
          "type": "string",
          "label": {
            "en": "Most serious: instructions",
            "fr": "Plus grave : consignes"
          }
        },
        {
          "key": "top_ends",
          "type": "string",
          "label": {
            "en": "Most serious: end (local time)",
            "fr": "Plus grave : fin (heure locale)"
          }
        },
        {
          "key": "summary",
          "type": "string",
          "label": {
            "en": "Summary",
            "fr": "Résumé"
          },
          "description": {
            "en": "A sentence ready to put in a message.",
            "fr": "Une phrase prête à mettre dans un message."
          }
        }
      ]
    },
    {
      "key": "get_forecast",
      "label": {
        "en": "Get the NWS forecast of a day",
        "fr": "Obtenir la prévision NWS d'un jour"
      },
      "description": {
        "en": "High, low, sky, chance of rain and wind of one day, with the forecaster's text.",
        "fr": "Maximum, minimum, ciel, risque de pluie et vent d'une journée, avec le texte du prévisionniste."
      },
      "timeout_seconds": 30,
      "fields": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Für das erste Haus mit Standort leer lassen."
          },
          "required": false
        },
        {
          "key": "day",
          "type": "select",
          "label": {
            "en": "Day",
            "fr": "Jour"
          },
          "required": false,
          "default": "0",
          "options": [
            {
              "value": "0",
              "label": {
                "en": "Today",
                "fr": "Aujourd'hui"
              }
            },
            {
              "value": "1",
              "label": {
                "en": "Tomorrow",
                "fr": "Demain"
              }
            },
            {
              "value": "2",
              "label": {
                "en": "In 2 days",
                "fr": "Dans 2 jours"
              }
            },
            {
              "value": "3",
              "label": {
                "en": "In 3 days",
                "fr": "Dans 3 jours"
              }
            },
            {
              "value": "4",
              "label": {
                "en": "In 4 days",
                "fr": "Dans 4 jours"
              }
            },
            {
              "value": "5",
              "label": {
                "en": "In 5 days",
                "fr": "Dans 5 jours"
              }
            },
            {
              "value": "6",
              "label": {
                "en": "In 6 days",
                "fr": "Dans 6 jours"
              }
            }
          ]
        }
      ],
      "outputs": [
        {
          "key": "date",
          "type": "string",
          "label": {
            "en": "Date (YYYY-MM-DD)",
            "fr": "Date (AAAA-MM-JJ)"
          }
        },
        {
          "key": "name",
          "type": "string",
          "label": {
            "en": "Period name",
            "fr": "Nom de la période"
          }
        },
        {
          "key": "condition",
          "type": "string",
          "label": {
            "en": "Sky (key)",
            "fr": "Ciel (clé)"
          }
        },
        {
          "key": "condition_label",
          "type": "string",
          "label": {
            "en": "Sky",
            "fr": "Ciel"
          }
        },
        {
          "key": "short_forecast",
          "type": "string",
          "label": {
            "en": "NWS short forecast",
            "fr": "Prévision courte NWS"
          }
        },
        {
          "key": "temperature_max",
          "type": "number",
          "label": {
            "en": "High",
            "fr": "Maximum"
          }
        },
        {
          "key": "temperature_min",
          "type": "number",
          "label": {
            "en": "Low",
            "fr": "Minimum"
          }
        },
        {
          "key": "precipitation_probability",
          "type": "number",
          "label": {
            "en": "Chance of rain (%)",
            "fr": "Risque de pluie (%)"
          }
        },
        {
          "key": "wind_speed",
          "type": "number",
          "label": {
            "en": "Wind (km/h or mph)",
            "fr": "Vent (km/h ou mph)"
          }
        },
        {
          "key": "wind_direction",
          "type": "string",
          "label": {
            "en": "Wind direction",
            "fr": "Direction du vent"
          }
        },
        {
          "key": "detailed_forecast",
          "type": "string",
          "label": {
            "en": "Forecast text, day (English)",
            "fr": "Texte de la prévision, jour (anglais)"
          }
        },
        {
          "key": "detailed_forecast_night",
          "type": "string",
          "label": {
            "en": "Forecast text, night (English)",
            "fr": "Texte de la prévision, nuit (anglais)"
          }
        },
        {
          "key": "summary",
          "type": "string",
          "label": {
            "en": "Summary",
            "fr": "Résumé"
          },
          "description": {
            "en": "A sentence ready to put in a message.",
            "fr": "Une phrase prête à mettre dans un message."
          }
        }
      ]
    },
    {
      "key": "get_current",
      "label": {
        "en": "Get the current NWS conditions",
        "fr": "Obtenir les conditions actuelles NWS"
      },
      "description": {
        "en": "The conditions measured at the nearest weather station, or forecast when it has not reported recently.",
        "fr": "Les conditions mesurées à la station météo la plus proche, ou prévues quand elle n'a rien transmis récemment."
      },
      "timeout_seconds": 30,
      "fields": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Lassen Sie leer für das erste Haus mit Standort."
          },
          "required": false
        }
      ],
      "outputs": [
        {
          "key": "temperature",
          "type": "number",
          "label": {
            "en": "Temperature",
            "fr": "Température"
          }
        },
        {
          "key": "apparent_temperature",
          "type": "number",
          "label": {
            "en": "Feels like",
            "fr": "Ressenti"
          }
        },
        {
          "key": "humidity",
          "type": "number",
          "label": {
            "en": "Humidity (%)",
            "fr": "Humidité (%)"
          }
        },
        {
          "key": "dew_point",
          "type": "number",
          "label": {
            "en": "Dew point",
            "fr": "Point de rosée"
          }
        },
        {
          "key": "pressure",
          "type": "number",
          "label": {
            "en": "Pressure (hPa)",
            "fr": "Pression (hPa)"
          }
        },
        {
          "key": "wind_speed",
          "type": "number",
          "label": {
            "en": "Wind (km/h or mph)",
            "fr": "Vent (km/h ou mph)"
          }
        },
        {
          "key": "wind_gust",
          "type": "number",
          "label": {
            "en": "Gusts (km/h or mph)",
            "fr": "Rafales (km/h ou mph)"
          }
        },
        {
          "key": "wind_direction",
          "type": "string",
          "label": {
            "en": "Wind direction",
            "fr": "Direction du vent"
          }
        },
        {
          "key": "visibility",
          "type": "number",
          "label": {
            "en": "Visibility (km or mi)",
            "fr": "Visibilité (km ou mi)"
          }
        },
        {
          "key": "condition",
          "type": "string",
          "label": {
            "en": "Sky (key)",
            "fr": "Ciel (clé)"
          }
        },
        {
          "key": "condition_label",
          "type": "string",
          "label": {
            "en": "Sky",
            "fr": "Ciel"
          }
        },
        {
          "key": "observed",
          "type": "boolean",
          "label": {
            "en": "Measured by a station",
            "fr": "Mesuré par une station"
          }
        },
        {
          "key": "station",
          "type": "string",
          "label": {
            "en": "Station",
            "fr": "Station"
          }
        },
        {
          "key": "observed_at",
          "type": "string",
          "label": {
            "en": "Observed at (local time)",
            "fr": "Relevé à (heure locale)"
          }
        },
        {
          "key": "summary",
          "type": "string",
          "label": {
            "en": "Summary",
            "fr": "Résumé"
          },
          "description": {
            "en": "A sentence ready to put in a message.",
            "fr": "Une phrase prête à mettre dans un message."
          }
        }
      ]
    }
  ],
  "widgets": [
    {
      "key": "alerts",
      "label": {
        "en": "NWS alerts",
        "fr": "Alertes NWS"
      },
      "description": {
        "en": "Watches, warnings and advisories in force, with their full text.",
        "fr": "Veilles, alertes et avis en cours, avec leur texte complet."
      },
      "icon": "alert-triangle",
      "settings": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Laissez vide pour la première maison localisée."
          },
          "required": false
        }
      ]
    },
    {
      "key": "forecast",
      "label": {
        "en": "NWS text forecast",
        "fr": "Prévision NWS détaillée"
      },
      "description": {
        "en": "The forecaster's narrative, period by period, with the NWS icons.",
        "fr": "Le texte du prévisionniste, période par période, avec les icônes NWS."
      },
      "icon": "file-text",
      "settings": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Laissez vide pour la première maison localisée."
          },
          "required": false
        },
        {
          "key": "show_icons",
          "type": "boolean",
          "label": {
            "en": "Show the icons",
            "fr": "Afficher les icônes"
          },
          "default": true
        }
      ]
    },
    {
      "key": "hourly",
      "label": {
        "en": "NWS next hours",
        "fr": "NWS heure par heure"
      },
      "description": {
        "en": "Temperature, chance of rain or wind of the next hours, as a curve.",
        "fr": "Température, risque de pluie ou vent des prochaines heures, en courbe."
      },
      "icon": "trending-up",
      "settings": [
        {
          "key": "house",
          "type": "string",
          "label": {
            "en": "House",
            "fr": "Maison"
          },
          "description": {
            "en": "Name of the house, as shown in Gladys. Leave empty for the first house with a location.",
            "fr": "Nom de la maison, tel qu'affiché dans Gladys. Laissez vide pour la première maison localisée."
          },
          "required": false
        },
        {
          "key": "metric",
          "type": "select",
          "label": {
            "en": "Show",
            "fr": "Afficher"
          },
          "default": "temperature",
          "options": [
            {
              "value": "temperature",
              "label": {
                "en": "Temperature and feels like",
                "fr": "Température et ressenti"
              }
            },
            {
              "value": "precipitation",
              "label": {
                "en": "Chance of rain",
                "fr": "Risque de pluie"
              }
            },
            {
              "value": "wind",
              "label": {
                "en": "Wind and gusts",
                "fr": "Vent et rafales"
              }
            }
          ]
        },
        {
          "key": "hours",
          "type": "select",
          "label": {
            "en": "Period",
            "fr": "Période"
          },
          "default": "24",
          "options": [
            {
              "value": "12",
              "label": {
                "en": "12 hours",
                "fr": "12 heures"
              }
            },
            {
              "value": "24",
              "label": {
                "en": "24 hours",
                "fr": "24 heures"
              }
            },
            {
              "value": "48",
              "label": {
                "en": "48 hours",
                "fr": "48 heures"
              }
            }
          ]
        }
      ]
    }
  ]
}