From df2ecd988db884d9fcc394b81290d4d619d2555c Mon Sep 17 00:00:00 2001 From: michaeldavie Date: Tue, 18 Jun 2019 14:13:11 -0400 Subject: [PATCH] Add Environment Canada weather, sensor, and camera platforms (#8604) * Add Environment Canada weather platform * Add icon, and pages for sensor and camera platforms * Add image file * Collapse to single page and update * :pencil2: Tweaks * :ambulance: Fixes header --- .../_components/environment_canada.markdown | 206 ++++++++++++++++++ .../supported_brands/environment_canada.png | Bin 0 -> 10434 bytes 2 files changed, 206 insertions(+) create mode 100644 source/_components/environment_canada.markdown create mode 100644 source/images/supported_brands/environment_canada.png diff --git a/source/_components/environment_canada.markdown b/source/_components/environment_canada.markdown new file mode 100644 index 00000000000..e1eab1a79b6 --- /dev/null +++ b/source/_components/environment_canada.markdown @@ -0,0 +1,206 @@ +--- +layout: page +title: "Environment Canada Weather" +description: "Weather data from Environment Canada." +date: 2019-06-01 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: environment_canada.png +ha_category: + - Weather + - Sensor + - Camera +ha_release: 0.95 +ha_iot_class: Cloud Polling +--- + +The `environment_canada` weather platforms provide meteorological data for Canadian locations from [Environment Canada](hhttps://weather.gc.ca/index_e.html). + +The following device types and data are supported: + +- [Weather](#weather) - Current conditions and forecasts +- [Sensor](#sensor) - Current conditions and alerts +- [Camera](#camera) - Radar imagery + +## {% linkable_title Location Selection %} + +Each platform automatically determines which weather station's data to use. However, as station coordinates provided by Environment Canada are somewhat imprecise, in some cases you may need to override the automatic selection to use the desired station. + +For each platform, the location to use is determined according to the following hierarchy: + + - Location ID specified in platform configuration (optional) + - Closest station to latitude/longitude specified in platform configuration (optional + - Closest station to latitude/longitude specified in Home Assistant core configuration + +## {% linkable_title Weather %} + +The `environment_canada` weather platform populates a weather card with Environment Canada current conditions and forecast [data](https://weather.gc.ca/canada_e.html). + +To add Environment Canada weather to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +weather: + - platform: environment_canada +``` + +- The sensor checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. +- If no name is given, the weather entity will be named `weather.`. +- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: + - A specific station code based on [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or + - A specific latitude/longitude + +{% configuration %} +latitude: + description: Part of a set of coordinates to use when finding the closest weather station. + required: inclusive + type: float +longitude: + description: Part of a set of coordinates to use when finding the closest weather station. + required: inclusive + type: float +station: + description: The station code of a specific weather station to use. Station codes must be in the form `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. + required: false + type: string +name: + description: Name to be used for the weather entity. + required: false + type: string +forecast: + description: Specify hourly or daily forecasts. Valid values are 'daily' and 'hourly'. + required: false + type: string + default: daily +{% endconfiguration %} + +## {% linkable_title Sensor %} + +The `environment_canada` sensor platform creates sensors based on Environment Canada [current conditions](https://weather.gc.ca/canada_e.html) and [alerts](https://weather.gc.ca/warnings/index_e.html). + +To add Environment Canada sensors to your installation, add the desired lines from the following example to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: environment_canada +``` + +- By default, a sensor entity is created for each monitored condition and each category of alert. Each sensor entity will be given the `device_id` of `sensor.`. +- The sensor checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. +- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: + - A specific station code based on [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or + - A specific latitude/longitude + +{% configuration %} +latitude: + description: Part of a set of coordinates to use when finding the closest weather station. + required: inclusive + type: float +longitude: + description: Part of a set of coordinates to use when finding the closest weather station. + required: inclusive + type: float +station: + description: The station code of a specific weather station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. Station codes must be in the form of `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code. + required: false + type: string +name: + description: Name to be used for the sensor entities. + required: false + type: string +monitored_conditions: + description: The conditions to monitor. A sensor will be created for each condition. + required: true + type: list + default: All keys + keys: + temperature: + description: The current temperature, in ºC. + dewpoint: + description: The current dewpoint, in ºC. + wind_chill: + description: The current wind chill, in ºC. + humidex: + description: The current humidex, in ºC. + pressure: + description: The current air pressure, in kPa. + tendency: + description: The current air pressure tendency, e.g. "Rising" or "Falling". + humidity: + description: The current humidity, in %. + visibility: + description: The current visibility, in km. + condition: + description: A brief text statement of the current weather conditions, e.g. "Sunny". + wind_speed: + description: The current sustained wind speed, in km/h. + wind_gust: + description: The current wind gust, in km/h. + wind_dir: + description: The current cardinal wind direction, e.g. "SSW". + high_temp: + description: The next forecast high temperature, in ºC. + low_temp: + description: The next forecast low temperature, in ºC. + pop: + description: The next forecast probability of precipitation, in %. + warnings: + description: Current warning alerts. + watches: + description: Current watch alerts. + advisories: + description: Current advisory alerts. + statements: + description: Current special weather statements. + endings: + description: Alerts that have recently ended. +{% endconfiguration %} + +## {% linkable_title Camera %} + +The `environment_canada` camera platform displays Environment Canada meteorological [radar imagery](https://weather.gc.ca/radar/index_e.html). + +To add Environment Canada radar imagery to your installation, add the desired lines from the following example to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: environment_canada +``` + +- If no name is given, the camera entity will be named `camera._radar`. +- The platform automatically determines which radar station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: + - A specific station ID from [this table](https://en.wikipedia.org/wiki/Canadian_weather_radar_network#List_of_radars) (remove the leading `C`, e.g. `XFT` or `ASBV`), or + - A specific latitude/longitude + +{% configuration %} +latitude: + description: Part of a set of coordinates to use when finding the closest radar station. + required: inclusive + type: float +longitude: + description: Part of a set of coordinates to use when finding the closest radar station. + required: inclusive + type: float +station: + description: The station code of a specific radar station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. + required: false + type: string +name: + description: Name to be used for the camera entity. + required: false + type: string +loop: + description: Boolean setting to determine whether to display an animated GIF of images from the last 2 hours. If `false`, the latest still image will be displayed. + required: false + default: true + type: boolean +precip_type: + description: Determines whether to use the intensity bands for rain or snow. Valid values are RAIN and SNOW. + required: false + type: string + default: RAIN from April to October, SNOW from November to March +{% endconfiguration %} diff --git a/source/images/supported_brands/environment_canada.png b/source/images/supported_brands/environment_canada.png new file mode 100644 index 0000000000000000000000000000000000000000..030df90bb29750ca5d7b5515288f7e686e155da5 GIT binary patch literal 10434 zcmY*<1ymeCvo67d>jJ?Y0*kxL;uhRtad&qOuE8}pBtA33v-r{RbiNM*m~8Qc?T|;%+BQrK9wTLek0Af`Xfci-nC!1cicv zLdezJQa}wP{XgB`TEbM;?(WV4tgK#MUMyamEKaUgtnB>!{H$yotQ;J`Hw4hl$I;!y z8|dgp{og|Vj~tMNo0+SPv%8IxBgH?tCZ+Z zKz2=ZwX!x#`Bp?nHu_sSYPquV4n&0V>v^wD!g78-hF#ORu1xf>wf|Nel`2 z$utS$Lph#?Z3s?Ss`VR?v{5WtT);Y4?b90+O|2+I4b}ZO>@Y^J1eVtNLN*nnkS!Bk zS5Ralq^YM4kY!)N;4{i&VX*wgC!k0wDq!&tA80V#DXvGMrH8agaiSw}iSH0%PIzc` zz_x8=`hL`$^Mlq_xBu%p2n%jASF9hkMq>2N5CsjnUXlI6XUEnq-DHp^J^aZg@?I5TZv z)ILx>7F~GvQA^mF(+)eKzklcN#NWO!Ebb$U-V$i}bB=Sb(2Q>F(3_ua@-d4d3Xou&i zviX(#$h3W=34k?9NRx-Hn(^7Rr|uHhZJiYZ0H+4pfyX>Zi?9;L51{lsJRJ2!%Hv4ma3hGELXCpRcKFhNGuMq>LDj^1VDc2&4vrNUqbI8zz$6Gglsim8x@ zYer@5LT5x^LZ4ZYzsPNuad0zycv-MK^Zj{bbZ#vM${Aw4K_OECZCID7l-g@ z4lt+8C`$Pkh6BCV;9Vd23z)U*uE^tP&Y@{iC`)lEm*4GpMqQ;T3`2l{Eyb(E3_%6* zHL~gN&7F$KeaRn>c|#umJLmSx5vFSOa^=d6+m-?Er7PBiW|p;+4f}~8LubF08|TTu zv(DT6Y8^=L&5~X1>{8FP%$lkVgL{2RGRb?pmc+`fYVPV}PU;7<5{DcV!fK)(O7XvD zSauYdjZw8e$x#dpWK<7L2ipab43HN_ZT5_jPs`xZp@fD34|V$mvUdHdHm8CcvGd-= z?=3EAyfR(RAi$fV`gDbP>OwJj=dDx(#m zGZEYU75p)Lv=xP7sZrLT)Ql{(WeNMZ`}G9@v9P*mo$5=X|1UlavRxaYIPA;k+qGsH z@&GQO3`0*{S&0@-VjCAfJ*qqVT^FIQAl&)q4zzImEf<6Q1Si(Yy^X(&%13Mcu?g3c z{?UESVdc@gA>=9zi2dEqCr&qE!6f-^Yq>BGJSp*2K9$V3U3PIq)mMNi?R9l9=>2wn9fu~!0S z>yGHbopIY*eox|117vF4GjzwHkl|}dV54O1Mdf9E?27P3KrBf9hFe6;7ml{;HE2a9 z_qn(BDI{v2Fc{-#g{XSyI2>2G4wa>)fKA6cQj#Iy;rhKxM_8ZCOSvkikCc=Y1;ANm z3*^E^EcHHy=$qHsDv$U1dJ>uYr1Rxx?~hDOaFCE3=ck

`+mkjR{Gka2c22l$IG@ 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 literal 0 HcmV?d00001