Giter VIP home page Giter VIP logo

irm-kmi-ha's Introduction

IRM KMI Weather integration for Home Assistant

Home Assistant weather provider using data from Belgian IRM KMI. The data is collected via their non-public mobile application API.

Although the provider is Belgian, the data is available for Belgium 🇧🇪, Luxembourg 🇱🇺, and The Netherlands 🇳🇱

Installing via HACS

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

or

  1. Go to HACS > Integrations
  2. Add this repo into your HACS custom repositories
  3. Search for IRM KMI and download it
  4. Restart Home Assistant

Set up the integration

Open your Home Assistant instance and start setting up a new integration.

or

  1. Configure the integration via the UI (search for 'IRM KMI')

Features

This integration provides the following things:

  • A weather entity with current weather conditions
  • Weather forecasts (hourly, daily and twice-daily) using the service weather.get_forecasts
  • Short-term rain forecasts using the radar data using the custom service ìrm_kmi.get_forecasts_radar
  • A camera entity for rain radar and short-term rain previsions
  • A binary sensor for weather warnings
  • A sensor with the timestamp for the start of the next warning
  • Sensors for active pollens

The following options are available:

  • Styles for the radar
  • Support for the old forecast attribute for components relying on this

Screenshots

Show screenshots



Limitations

  1. The weather provider sometime uses two weather conditions for the same day (see below). When this is the case, only the first weather condition is taken into account in this integration.
    Example of two weather conditions

  2. The trends for 14 days are not shown

  3. The provider only has data for Belgium, Luxembourg and The Netherlands

Mapping between IRM KMI and Home Assistant weather conditions

Mapping was established based on my own interpretation of the icons and conditions.

HA Condition HA Description IRM KMI icon IRM KMI data (ww-dayNight)
clear-night Clear night 0-n 1-n
cloudy Many clouds 14-d 14-n 15-d 15-n
exceptional Exceptional
fog Fog 24-d 24-n 25-d 25-n 26-d 26-n 27-d 27-n
hail Hail
lightning Lightning/ thunderstorms
lightning-rainy Lightning/ thunderstorms and rain 2-d 2-n 5-d 5-n 7-d 7-n 10-d 10-n 13-d 13-n 17-d 17-n
partlycloudy A few clouds 3-d 3-n
pouring Pouring rain 4-d 4-n 6-d 6-n 16-d 16-n 19-d 19-n
rainy Rain 18-d 18-n 21-d 21-n
snowy Snow 11-d 11-n 12-d 12-n 22-d 22-n 23-d 23-n
snowy-rainy Snow and Rain 8-d 8-n 9-d 9-n 20-d 20-n
sunny Sunshine 0-d 1-d
windy Wind
windy-variant Wind and clouds

Warning details

Warnings are represented with two sensors:

  • a binary sensor showing if any warning is currently active
  • a timestamp sensor with the start time of the next warning (if any, else unknown)

Binary sensor for ongoing warnings

The warning binary sensor is on if a warning is currently relevant (i.e. warning start time < current time < warning end time). Warnings may be issued by the IRM KMI ahead of time but the binary sensor is only on when at least one of the issued warnings is relevant.

The binary sensor has an additional attribute called warnings, with a list of warnings for the current location. Warnings in the list may be warning issued ahead of time.

Each element in the list has the following attributes:

  • slug: str: warning slug type, can be used for automation and does not change with language setting. Example: ice_or_snow
  • id: int: internal id for the warning type used by the IRM KMI api.
  • level: int: warning severity, from 1 (lower risk) to 3 (higher risk)
  • friendly_name: str: language specific name for the warning type. Examples: Ice or snow, Chute de neige ou verglas, Sneeuw of ijzel, Glätte
  • text: str: language specific additional information about the warning
  • starts_at: datetime: time at which the warning starts being relevant
  • ends_at: datetime: time at which the warning stops being relevant
  • is_active: bool: true if starts_at < now < ends_at

The following table summarizes the different known warning types. Other warning types may be returned and will have unknown as slug. Feel free to open an issue with the id and the English friendly name to have it added to this integration.

Warning slug Warning id Friendly name (en, fr, nl, de)
wind 0 Wind, Vent, Wind, Wind
rain 1 Rain, Pluie, Regen, Regen
ice_or_snow 2 Ice or snow, Chute de neige ou verglas, Sneeuw of ijzel, Glätte
thunder 3 Thunder, Orage, Onweer, Gewitter
fog 7 Fog, Brouillard, Mist, Nebel
cold 9 Cold, Froid, Koude, Kalt
thunder_wind_rain 12 Thunder Wind Rain, Orage, rafales et averses, Onweer Wind Regen, Gewitter Windböen Regen
thunderstorm_strong_gusts 13 Thunderstorm & strong gusts, Orage et rafales, Onweer en wind, Gewitter und Windböen
thunderstorm_large_rainfall 14 Thunderstorm & large rainfall, Orage et averses, Onweer en regen, Gewitter und Regen
storm_surge 15 Storm surge, Marée forte, Stormtij, Sturmflut
coldspell 17 Coldspell, Vague de froid, Koude, Koude

The sensor has an attribute called active_warnings_friendly_names, holding a comma separated list of the friendly names of the currently active warnings (e.g. Fog, Ice or snow). There is no particular order for the list.

Timestamp sensor for upcoming warnings

The state is the start time of the earliest next warning, if any; else unknown.

The sensor has two additional attributes:

  • next_warnings: a list of all the upcoming warnings, with the same data as the warnings attribute of the binary sensor (see above)
  • next_warning_friendly_names holding a comma separated list of the friendly names of the currently active warnings (e.g. Fog, Ice or snow). There is no particular order for the list.

Pollen details

One sensor per pollen is created and each sensor can have one of the following values: active, green, yellow, orange, red, purple or none.

The exact meaning of each color can be found on the IRM KMI webpage: Pollen allergy and hay fever

Pollen data

This data sent to the app would result in oak and ash have the 'active' state, birch would be 'purple' and alder would be 'green'. All the other pollens would be 'none'.

Custom service irm_kmi.get_forecasts_radar

The service returns a list of Forecast objects (similar to weather.get_forecasts) but only data about precipitation is available. The data is taken from the radar forecast: it is useful for very short-term rain forecast.

The service can optionally include data from the past (like shown on the radar).

Here is an example of service call:

service: irm_kmi.get_forecasts_radar
target:
  entity_id: weather.home
data:
  include_past_forecasts: true 

The data is optional and defaults to false.

Even when include_past_forecasts is false, the current 10 minutes interval is returned so the first item in the response is in the past (at most 10 minutes in the past). This can be useful to determine if rain is currently falling and how strong it is.

Disclaimer

This is a personal project and isn't in any way affiliated with, sponsored or endorsed by The Royal Meteorological Institute of Belgium.

All product names, trademarks and registered trademarks in (the images in) this repository, are property of their respective owners. All images in this repository are used by the project for identification purposes only.

irm-kmi-ha's People

Contributors

dependabot[bot] avatar jdejaegh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

irm-kmi-ha's Issues

unknown

Good morning,
I'm coming to you because I always get this "unknown" message regarding the rain forecast. Before, it warned me of rain in (x) hours, now it no longer works. Is there anything to change or modify?
I think I've had this problem since the last update of the add-on.
thank you for any information available.
Congratulations again for your superb work.

Capture d’écran 2024-05-28 à 08 50 37

Capture d’écran 2024-05-28 à 08 51 39

irm_pluie:
  friendly_name: Prevision pluie
  value_template: >-
    {% if states.camera.radar_maison.attributes.hint == "Pas de pluie prévue prochainement" %}
      Pas de pluie
    {% endif %}

hourly weather data via attributes

Would it be possible to expose the hourly weather data via attributes? More specifically I'm interested to retrieve the rain in the upcoming hours to see if I will let out my mowing robot or not.

The default weather integration does it like below.
image

I can retrieve the rain data for the coming hours like:
{{ (state_attr(''weather.forecast_home'',''forecast'')[0].precipitation | float(0) + state_attr(''weather.forecast_home'',''forecast'')[1].precipitation | float(0) + state_attr(''weather.forecast_home'',''forecast'')[2].precipitation | float(0) ) < 5 }}

I suppose you have the data because i see it in the lovelace, but I don't see any state attributes I could retrieve.
image

image

Detected blocking call to open inside the event loop by custom integration 'irm_kmi'

Describe the bug
Warning s with the new HA beta

Checklist

  • I included debug logs or at least a screenshot of the IRM KMI official app
  • If I use a custom card, I checked if the stock Lovelace weather card is working

To Reproduce
Steps to reproduce the behavior:

  1. Update HA to 2024.6 beta

Expected behavior
No warnings
Screenshots
If applicable, add screenshots to help explain your problem.

Version

  • Home Assistant: [e.g. 2024.6.0b]
  • IRM KMI integration [e.g. 0.2.14]

Additional context

Detected blocking call to open inside the event loop by custom integration 'irm_kmi' at custom_components/irm_kmi/rain_graph.py, line 96: self._dwg.embed_font(name="Roboto Medium", filename=font_file) (offender: /usr/local/lib/python3.12/site-packages/svgwrite/container.py, line 150: data = open(filename, 'rb').read()), please create a bug report at https://github.com/jdejaegh/irm-kmi-ha/issues
Detected blocking call to open inside the event loop by custom integration 'irm_kmi' at custom_components/irm_kmi/rain_graph.py, line 304: with open(bg_image_path, 'rb') as f: (offender: /config/custom_components/irm_kmi/rain_graph.py, line 304: with open(bg_image_path, 'rb') as f:), please create a bug report at https://github.com/jdejaegh/irm-kmi-ha/issues

Warnings should be visible before they actually start

hi,
I am on the latest version, I am in Belgium, in Liège, where, for the moment, there is a yellow alert in the wind, but the alert sensor always tells me "secure"
Is there anything to change or modify or is it a bug?

Capture d’écran 2024-04-15 à 11 33 24

Capture d’écran 2024-04-15 à 11 34 24

Capture d’écran 2024-04-15 à 11 37 18

there is indeed alert, so why tell me “secure”??

Capture d’écran 2024-04-15 à 11 41 24

Rainsensor

Is it possible for a rain sensor that tells you when it will be raining in minutes like described on the radar?
This sensor data can be used in automations, like closing windows if it will start raining.

Incorrect, shifted data after midnight

I have observed incorrect data being displayed and a shift in the days, in the hour after midnight. I will try to take corresponding screenshots later, hopefully tonight. I am just giving you a head start, in case you want.

Could this be caused by daylight saving time?

[Question] Timezone in `get_forecasts`

First of all, thanks for making this available!

Question

When I do call the get_forecasts service on the weather entity provided by this integration, the datetime fields don't include a timezone offset (see screenshot, taken at 20:06+02:00 / 18:06+00:00). I wonder whether I have to interpret the given datetimes as my local timezone (which would be +02:00, so the first forecast entry would be of 20:00+02:00) or as UTC (+00:00, where I still have to convert, so the first entry would be of 20:00+00:00 thus 22:00+02:00).

image

Pollen and Uv-index data as attributes

Is it possible to get the KMI data for active pollen and the current Uv-index as seperate attributes?
These values are the only ones missing to complete my custom weather card so I would greatly appreciate it if these became available!

Storm warning missing

Right now, there is a storm warning for Brussels. I can't find it anywhere. Maybe the warning sensor could be used.

Could not get data from API

screenshot:
image

request:

{"zone":"zone.home","style":"standard_style","dark_mode":false,"use_deprecated_forecast_attribute":"do_not_use_deprecated_forecast","language_override":"none"}

error response:

{"type":"form","flow_id":"82786b63ca072e6b438f057ce24314f0","handler":"irm_kmi","data_schema":[{"selector":{"entity":{"domain":["zone"],"multiple":false}},"name":"zone","required":true},{"selector":{"select":{"options":["standard_style","contrast_style","yellow_red_style","satellite_style"],"mode":"dropdown","translation_key":"style","multiple":false,"custom_value":false,"sort":false}},"name":"style","optional":true,"default":"standard_style"},{"type":"boolean","name":"dark_mode","optional":true,"default":false},{"selector":{"select":{"options":["do_not_use_deprecated_forecast","daily_in_deprecated_forecast","twice_daily_in_deprecated_forecast","hourly_in_deprecated_forecast"],"mode":"dropdown","translation_key":"use_deprecated_forecast_attribute","multiple":false,"custom_value":false,"sort":false}},"name":"use_deprecated_forecast_attribute","optional":true,"default":"do_not_use_deprecated_forecast"},{"selector":{"select":{"options":["none","fr","nl","de","en"],"mode":"dropdown","translation_key":"language_override","multiple":false,"custom_value":false,"sort":false}},"name":"language_override","optional":true,"default":"none"}],"errors":{"base":"api_error"},"description_placeholders":{"zone":"zone.home"},"last_step":null,"preview":null,"step_id":"user"}

Confidence intervals get_forecasts_radar

First of all, thanks for the excellent integration!

Describe the solution you'd like
Would it be possible to integrate the confidence intervals in the service irm_kmi.get_forecasts_radar. From the API data it seems that it should be possible to derive them from the positionLower and positionHigher (in combo with position and value). But as I don't have any info on the API I'm not really sure.

Exceptional weather - not really

Thank you for this integration!

Right now, there weather is characterised as exceptional. True is not really the case.

Screenshot with Clock Weather Card:
Screenshot_20240119-230717

Improve hourly labelling at night

Hi

Great integration to have as a Belgian!

Would it be possible to improve the labelling during the night, so weather Lovelace integrations would show a moon instead of a sun in case it is 'partly cloudy' during the night?

I'm not sure if this is accessible through the KMI data you pull, although the KMI website does properly show a moon during 'partly cloudy' at night. If not available, perhaps sunrise and sundown hours are available so one could write a workaround to have a 'partly cloudy night' condition.

I also asked if perhaps the Lovelace integration I use can add this particular label, or if it can make an override during the night.decompil3d/lovelace-hourly-weather#662

As you see below, it is a bit odd that during the night we see this 'partly cloudy' condition with a sun.

Thanks for considering this improvement.

For example
Screenshot_20240331-064528
Screenshot_20240331-064129
Screenshot_20240331-064120

Shifted values and missing day

On the following screenshot, met.no data above and IRM below:

Screenshot_20240121-004407

Sunday temperature should go to 6°C instead of zero. And Thursday is missing.

While reporting this, Sunday got fixed but Wednesday vanished. This all happened between midnight and 1.00.
Screenshot_20240121-004933~2

For reference:
Screenshot_20240121-005711
Have they inverted the tonight and Sunday values?

Also of interest: Wednesday's night value is higher the during the day. This might have wrecked havoc in your logic.

Improve API timeouts handling

Currently, when the API times out, Home Assistant shows all the sensors as 'unavailable' until the next successful refresh. As the polling interval is 7 minutes, it means that the sensors are 'unavailable' a multiple of 7 minutes.

Things to investigate to improve that:

  • Keep the existing data and do not make the sensor become unavailable immediately (wait 2 or 3 failed updates before doing so)
  • Increase the timeout limit on the client side
  • Retry sooner than the default polling interval if the last request timed out (may not be nice to the API)

Linked to #21

Problem pasing daily forecast

Describe the bug
Daily forecast using the script bellow returns puts a long string in the entity, hourly is getting processed correctly

Script

#weather forcast daily sensor 
- trigger:
    - platform: time_pattern
      minutes: 55

    - platform: homeassistant
      event: start
  action:
    - service: weather.get_forecasts
      data:
        type: daily
      target:
        entity_id: weather.home
      response_variable: daily

  sensor:
    - name: Weather Daily
      state: "{{ states('weather.home') }}"
      attributes:
        temperature: "{{ state_attr('weather.home', 'temperature') }}"
        dew_point: "{{ state_attr('weather.home', 'dew_point') }}"
        temperature_unit: "{{ state_attr('weather.home', 'temperature_unit') }}"
        humidity: "{{ state_attr('weather.home', 'humidity') }}"
        cloud_coverage: "{{ state_attr('weather.home', 'cloud_coverage') }}"
        pressure: "{{ state_attr('weather.home', 'pressure') }}"
        pressure_unit: "{{ state_attr('weather.home', 'pressure_unit') }}"
        wind_bearing: "{{ state_attr('weather.home', 'wind_bearing') }}"
        wind_speed: "{{ state_attr('weather.home', 'wind_speed') }}"
        wind_speed_unit: "{{ state_attr('weather.home', 'wind_speed_unit') }}"
        visibility_unit: "{{ state_attr('weather.home', 'visibility_unit') }}"
        precipitation_unit: "{{ state_attr('weather.home', 'precipitation_unit') }}"
        forecast: "{{ daily['weather.home'].forecast }}"

I have practcally the same script for hourly. T problem lies with the last line: forecast: "{{ daily['weather.home'].forecast }}"

Working hourly: {{ state_attr('sensor.weather_hourly','forecast') }}
Output is a array:
image

Not working Daily: {{ state_attr('sensor.weather_daily','forecast') }}
Ouptus is a string:
image

So the following template "{{ state_attr('sensor.weather_daily','forecast')[3]}}" returns the 4th char: d, and not the 4th day.

So something is broken to parse the json into an array I guess? Maybe the single quotes in forecast text? like 's morgens?

Version

  • Home Assistant: 2024.6.3
  • IRM KMI integration 0.2.17

Love the integration by the way ;-)

Thanks Wouter

Update README

  • Describe service irm_kmi.get_forecasts_radar
  • Update features and options in the list
  • Move some parts to the Wiki instead of the README

Could not get images for weather radar: Error fetching information. Keep the existing radar data.

Describe the bug
Keep getting this warning x times each hour.

Version
Core
2024.5.5
Supervisor
2024.05.1
Operating System
12.3
Frontend
20240501.1

IRM KMI 0.2.14

Additional context
Just installed the integration and getting the below error x times per hour.
Could not get images for weather radar: Error fetching information. Keep the existing radar data.

Can it be releated that i use the camera entity in a picture-entity card?

type: picture-entity
show_state: false
show_name: false
entity: camera.radar_home
camera_view: live

Missing UV index data

Since one of the most recent versions the uv-index attribute seems to be missing:
image

I think the last IRM KMI version to have this was version 0.2.4 but I could be wrong here.
Currently I'm on version 0.2.8.
Is it possible to include this attribute again?

pollen

Hello,

very nice weather integration, especially for the pollen. I have a question: would it be possible to see the upcoming days as well, like on the website where you can see three days ahead? And I have another question: what does "pollen active" mean?

Schermafbeelding 2024-05-26 142715

Detected blocking call to open inside the event loop by custom integration 'irm_kmi'

Describe the bug
Since the latest update of HA lot of warnings on startup saying "Detected blocking call to open inside the event loop".

Checklist

  • [V] I included debug logs or at least a screenshot of the IRM KMI official app

To Reproduce
Steps to reproduce the behavior:

  1. Start HA with the latest release
  2. See warnings

Expected behavior
On startup lot of warning :

Detected blocking call to open inside the event loop by custom integration 'irm_kmi' at custom_components/irm_kmi/rain_graph.py, line 304: with open(bg_image_path, 'rb') as f: (offender: /config/custom_components/irm_kmi/rain_graph.py, line 304: with open(bg_image_path, 'rb') as f:), please create a bug report at https://github.com/jdejaegh/irm-kmi-ha/issues Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 742, in async_setup_locked await self.async_setup(hass, integration=integration) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 594, in async_setup result = await component.async_setup_entry(hass, self) File "/config/custom_components/irm_kmi/__init__.py", line 27, in async_setup_entry await coordinator.async_config_entry_first_refresh() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 277, in async_config_entry_first_refresh await self._async_refresh( File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 312, in _async_refresh self.data = await self._async_update_data() File "/config/custom_components/irm_kmi/coordinator.py", line 105, in _async_update_data return await self.process_api_data(api_data) File "/config/custom_components/irm_kmi/coordinator.py", line 171, in process_api_data animation=await self._async_animation_data(api_data=api_data), File "/config/custom_components/irm_kmi/coordinator.py", line 136, in _async_animation_data rain_graph = self.create_rain_graph(radar_animation, animation_data, country, images_from_api) File "/config/custom_components/irm_kmi/coordinator.py", line 434, in create_rain_graph return RainGraph(radar_animation, image_path, bg_size, File "/config/custom_components/irm_kmi/rain_graph.py", line 75, in __init__ self.insert_background() File "/config/custom_components/irm_kmi/rain_graph.py", line 304, in insert_background with open(bg_image_path, 'rb') as f:

Detected blocking call to open inside the event loop by custom integration 'irm_kmi' at custom_components/irm_kmi/rain_graph.py, line 96: self._dwg.embed_font(name="Roboto Medium", filename=font_file) (offender: /usr/local/lib/python3.12/site-packages/svgwrite/container.py, line 150: data = open(filename, 'rb').read()), please create a bug report at https://github.com/jdejaegh/irm-kmi-ha/issues Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 255, in _handle_refresh_interval await self._async_refresh(log_failures=True, scheduled=True) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 312, in _async_refresh self.data = await self._async_update_data() File "/config/custom_components/irm_kmi/coordinator.py", line 105, in _async_update_data return await self.process_api_data(api_data) File "/config/custom_components/irm_kmi/coordinator.py", line 171, in process_api_data animation=await self._async_animation_data(api_data=api_data), File "/config/custom_components/irm_kmi/coordinator.py", line 136, in _async_animation_data rain_graph = self.create_rain_graph(radar_animation, animation_data, country, images_from_api) File "/config/custom_components/irm_kmi/coordinator.py", line 434, in create_rain_graph return RainGraph(radar_animation, image_path, bg_size, File "/config/custom_components/irm_kmi/rain_graph.py", line 70, in __init__ self.draw_svg_frame() File "/config/custom_components/irm_kmi/rain_graph.py", line 96, in draw_svg_frame self._dwg.embed_font(name="Roboto Medium", filename=font_file)

.....

Version

  • Home Assistant: 2024.6.0
  • IRM KMI integration : 0.2.14

Additional context
This is not the only custom integration impacted in my list custom one's, here is the same issue for another one and it can be related to this change of ha :
https://developers.home-assistant.io/blog/2024/05/19/fix_zoneinfo_blocking_io/

custom-components/nordpool#382

Thanks,
G.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.