MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    [DEBUG] Default Weather Module with OpenWeatherMap One Call API

    Scheduled Pinned Locked Moved Development
    openweathermaponecallapidefaultweathermodulehourlycurrentdaily
    7 Posts 5 Posters 2.6k Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L Offline
      lost
      last edited by lost

      Hey all, I’m trying to get a basic implementation of OpenWeatherMap’s One Call API working inside the default Weather module, mainly so I can get hourly weather data, but I’m running into some problems.

      Link to Branch.

      Files with changes inside the modules/default/weather/ directory:

      • weather.js
      • weatherprovider.js
      • providers/openweathermap.js
      • wdatahourly.njk (renamed from wdataHourly.njk, Windows is being stupid)

      Sample Module Configuration: (all included config parameters are required for the moment)

      module: "weather",
      position: "bottom_center",
      header: "Hourly Forecast",
      config: {
      	weatherProvider: "openweathermap",
      	type: "wDataHourly", // wDataCurrent and wDataDaily theoretically work but currently don't have .njk files
      	apiKey: "OPENWEATHERMAPAPIKEY", // your OpenWeatherMap API key
      	lat: 40.7128, // your latitude
      	lon: -74.0060, // your longitude
      	weatherEndpoint: "/onecall",
      	maxNumberOfEntries: 12
      }
      

      The module just stays at “Loading …” indefinitely. The console tab in the menu that shows up after I hit Ctrl+Shift+I doesn’t report any errors or warnings, so I’m not sure what’s causing the readings to not show up.

      Any advice is appreciated since I haven’t worked too much with in the past with JavaScript, Node.js, etc. so I’m not sure what the proper way to troubleshoot problems is.


      *edit: The module seems to be loaded just fine and the weather provider gets initialized as expected. Still not sure what the problem could be.

      console log 01

      console log 02

      1 Reply Last reply Reply Quote 0
      • L Offline
        lost
        last edited by

        minor correction, the maxNumberOfEntries config parameter is wrong, it should be maxEntries instead:

        module: "weather",
        position: "bottom_center",
        header: "Hourly Forecast",
        config: {
        	weatherProvider: "openweathermap",
        	type: "wDataHourly", // wDataCurrent and wDataDaily theoretically work but currently don't have .njk files
        	apiKey: "OPENWEATHERMAPAPIKEY", // your OpenWeatherMap API key
        	lat: 40.7128, // your latitude
        	lon: -74.0060, // your longitude
        	weatherEndpoint: "/onecall",
        	maxEntries: 12
        }
        
        1 Reply Last reply Reply Quote 0
        • L Offline
          lost
          last edited by

          Got it working! I think I’ll just avoid dot notation from now on…

          Repo is linked below. If anyone’s looking to use this, OpenWeatherMap’s One Call API asks for latitude and longitude instead of a location or location ID. But in return, you can get not only current and daily (max 7 days) forecasts, but also hourly forecasts (max 48 hours).

          All original functionality of the module should remain intact.

          Sample Module Configurations:

          {
          	module: "weather",
          	position: "bottom_left",
          	header: "Current Forecast",
          	config: {
          		weatherProvider: "openweathermap",
          		weatherEndpoint: "/onecall",
          		type: "wDataCurrent",
          		apiKey: "OPENWEATHERMAPAPIKEY", // your OpenWeatherMap API key
          		initialLoadDelay: 0,
          		lat: 40.7128, // your latitude
          		lon: -74.0060, // your longitude
          	}
          },
          {
          	module: "weather",
          	position: "bottom_center",
          	header: "Hourly Forecast",
          	config: {
          		weatherProvider: "openweathermap",
          		weatherEndpoint: "/onecall",
          		type: "wDataHourly",
          		apiKey: "OPENWEATHERMAPAPIKEY", // your OpenWeatherMap API key
          		initialLoadDelay: 2500,
          		lat: 40.7128, // your latitude
          		lon: -74.0060, // your longitude
          		maxEntries: 32, // max 48, set by OWM One Call API
          		showPrecipitationAmount: true
          	}
          },
          {
          	module: "weather",
          	position: "bottom_right",
          	header: "Daily Forecast",
          	config: {
          		weatherProvider: "openweathermap",
          		weatherEndpoint: "/onecall",
          		type: "wDataDaily",
          		apiKey: "OPENWEATHERMAPAPIKEY", // your OpenWeatherMap API key
          		initialLoadDelay: 5000,
          		lat: 40.7128, // your latitude
          		lon: -74.0060, // your longitude
          		maxEntries: 7, // max 7, set by OWM One Call API
          		colored: true,
          		showPrecipitationAmount: true
          	}
          }
          

          Sample MagicMirror Output:
          Current, Hourly, and Daily Forecasts using the OpenWeatherMap One Call API

          Link to Branch

          Not making a pull request yet since I don’t know how the default Weather module is meant to be designed.

          1 Reply Last reply Reply Quote 1
          • Feedy88F Offline
            Feedy88
            last edited by

            Hey @lost,

            thanks for creating this. I am currently building my first mirror and have issues with the weather module from the master (only showing “Loading”) and hence wanted to try yours, as I am looking for hourly data anyways.

            However, I am a total noob to git and stuff, so I don’t know how to install your branch. Could you help me out here? Much appreciated in advance.

            1 Reply Last reply Reply Quote 0
            • J Offline
              julien-vancouver
              last edited by

              Hi,

              Thanks for your work, ive tried using your config above and have run into two issues.

              {
              module: “weather”,
              position: “bottom_left”,
              header: “Current Forecast”,
              config: {
              weatherProvider: “openweathermap”,
              weatherEndpoint: “/onecall”,
              type: “wDataCurrent”,
              apiKey: “xxxxxxx”, // your OpenWeatherMap API key
              initialLoadDelay: 0,
              lat: 40.7128, // your latitude
              lon: -74.0060, // your longitude
              }
              },

              1. using the type: “wDataCurrent” results in “UNDEFINED”
                however if I change variable to Current, I then run into issue 2.

              2. loading. Similar to your original post, my screen remains forever loading and doesn’t load the retrieved values.

              any other thoughts or tips & tricks on how to resolve?

              1 Reply Last reply Reply Quote 0
              • I Offline
                icemanmw
                last edited by

                i had the same problem and changed type: “wDataCurrent”, to type: “current”, because in the folder /home/pi/MagicMirror/modules/default/weather i found the files

                current.njk
                hourly.njk
                forecast.njk

                now is runs

                D 1 Reply Last reply Reply Quote 0
                • D Offline
                  dangarlen @icemanmw
                  last edited by

                  This post is deleted!
                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Enjoying MagicMirror? Please consider a donation!
                  MagicMirror created by Michael Teeuw.
                  Forum managed by Sam, technical setup by Karsten.
                  This forum is using NodeBB as its core | Contributors
                  Contact | Privacy Policy
                    OSZAR »