language
keyboard_arrow_up
language

Description

Plugin for retrieving weather data from Netatmo stations (even if you don’t own one yourself!). You choose which stations to retrieve from your favorite weather stations in your (free) Netatmo account. Creation and management on https://weathermap.netatmo.com

Prerequisites

Configuration

Connection between Jeedom and Netatmo

Once the plugin has been installed, go to the Plugin Configuration page (“Configuration” icon). You have 2 choices for retrieving data from your favorite stations.

Method n°1: “Hosted application” (simple)

Click on the I authorize the application to access my favorite Netatmo stations button to authorize the NetatmoPublicData hosted application to retrieve your access tokens.

A new window opens, you authorize the Netatmo application, then you’ll see the green icon: ✅. Go on to the next step, “Test the connection”.

Method 2: “Your application” (expert)

Your Jeedom must have external access configured. You need to create a client_id and a client_secret generated from https://dev.netatmo.com.

To do this, create your application (free of charge): https://dev.netatmo.com/apps/createanapp#form

Once you’ve installed the plugin, you’ll need to fill in :

  • Client ID: your client ID
  • Client secret`: your secret client

Then click on Association Netatmo to link your account.

##Test the link Still on the Configuration page, you have the Status of the link: OK or NOK. Different actions are possible depending on the status:

  • NOK you can Test the link which attempts a recovery of the access tokens.
  • If OK is selected, you can Unplug to delete previously stored tokens.

In the plugin, the Synchronize button: allows your Jeedom to automatically discover your “favorite” Netatmo stations, yours and those of your neighbors.

FAQ

  • What’s the difference between the “Hosted application” method and the “Your application” version?

    In both methods, station data are retrieved directly from Netatmo. (Your Jeedom > Netatmo server).

    • The “Your application” version requires configuration of a Client ID, a Client secret and external access to Jeedom. Data flows only between your Jeedom and Netatmo servers. This is the initial configuration method.
    • The “Hosted application” version relies on a single hosted application to obtain access tokens. My server stores these tokens and automatically renews them for you. No data linked to your stations, just your personal data in transit. The full script will be published on Github soon.
  • Can I change my connection method without enabling my stations?

    Yes, you can change your connection method as you like. No impact on your Stations (Equipment) already created and configured in your Scenarios.

  • Does the plugin use third-party APIs?

    Yes, the plugin uses Netatmo APIs to retrieve data from your favorite weather stations.

  • How long does it take to update?

    Every 15 minutes, via the Cron Jeedom task.

  • Where can I manage (add / delete) weather stations?

    Only from https://weathermap.netatmo.com. Once connected, you can put stations in your * favorites *. Start synchronization, and the devices are created (active + visible).

  • If I delete a weather station from my favorites, what happens?

    The equipment is * deactivated *, but remains present in Jeedom. You can delete it manually.

  • Why equipment’s name has ‘star’ ( * ) as prefix ?

    Just to highlight that this name come from Netatmo. You could rename it, it won’t be override on the next synchronisation.

  • You’ve got a JS error like ‘Uncaught TypeError: cmd.find(…).delay(…).animate is not a function’ ?

    This plugin use new widget from Jeedom v4. But some others plugins create conflict with those widget. Please, update yours plugins, developers have fixed it. (eg : horlogehtc )

  • Data are not updated, even with cron15 enabled ?

    There are some technical background conflict with others plugins. Please, update yours plugins, developers have fixed it (eg : NetatmoPro )

Example

Dashboard (Widget natif v4)

Equipments

Commands

$(document).ready(function () { var title = 'jeedom-netatmoPublicData'; title = title.replace('plugin-', ''); $('#doc_title').append(title[0].toUpperCase() + title.substring(1)) document.title = 'Documentation Jeedom | ' + title[0].toUpperCase() + title.substring(1) $(".button-collapse").sideNav(); $('meta[name=description]').remove(); $('head').append(''); $('img').addClass('responsive-img'); $('#div_content table').addClass('striped'); init(); var regex = /\/([a-z]{2}_[A-Z]{2})\//g; var corresp = regex.exec(window.location.href) if (corresp !== null && corresp[1]) { $('.sel_lang').val(corresp[1]) } $('select').material_select(); $('.sel_lang').on('change', function () { var regex = /\/([a-z]{2}_[A-Z]{2})\//g; var corresp = regex.exec(window.location.href); var url = window.location.href.replace(corresp[1], $(this).find('option:selected').attr('value')); if (url.endsWith('/')) { url += 'index'; } window.location.href = url; }) $('#bt_up').on('click', function () { window.scrollTo(0, 0); }) $(window).on("orientationchange", function (event) { init(); }); $(window).on("resize", function (event) { init(); }); function init() { $('#div_summary2,#div_summary,#div_summary3').empty(); var titlePlugin = title.charAt(0).toUpperCase() + title.substring(1).toLowerCase() if (window.innerWidth < 992) { $('#div_main').addClass('container'); $('#div_content').toc({ renderIn: "#div_summary2", selectors: 'h1,h2' }); } else { $('#div_main').removeClass('container'); $('#div_content').toc({ renderIn: "#div_summary", selectors: 'h1,h2' }); } $('#div_content').toc({ renderIn: "#div_summary3", selectors: 'h1,h2' }); $('#div_summary #toctitle').html('

' + titlePlugin + '

'); $('#div_summary2 #toctitle').html('

' + titlePlugin + '

'); $('#div_summary3 #toctitle').html('

' + titlePlugin + '

'); $('.toclevel-2').parent().css('color', 'blue'); } var i = 1, j = 1; $('h1, h2', $('#div_content')).each(function () { if ($(this)[0].tagName.toLowerCase() == 'h1') { $('#' + $(this).attr('id')).text(i + ') ' + $(this).text()); i++; } if ($(this)[0].tagName.toLowerCase() == 'h2') { $('#' + $(this).attr('id')).text((i - 1) + '.' + j + ') ' + $(this).text()); j++; } else { j = 1; } }); }); var idChapitre = null, nbrChapitre = 0, idAncre = null; $('#div_content h1, #div_content h2').on('inview', function (event, isInView) { nbrChapitre = $('a.active').length; idAncre = $(this).attr('id'); if (isInView) { $('a[href="#' + idAncre + '"]').addClass('active'); if (idChapitre != null) { $('a[href="#' + idChapitre + '"]').removeClass('active'); idChapitre = null; } } else if (nbrChapitre > 1) { $('a[href="#' + idAncre + '"]').removeClass('active'); } else { idChapitre = idAncre; } $('#div_summary3 a').removeClass('active'); });