Module UltimateMeteo EN


Module UltimateMeteo

Overview

The UltimateMeteo module is an extension for Dolibarr ERP/CRM published by Atoo-Net.

It displays real-time weather directly on your third-party, supplier, contact and member cards, based on the address stored in Dolibarr. It uses free APIs and requires no API key.

Property Value
Author Philippe Grand — Atoo-Net
Version 24.0.2
License GNU GPL v3+
Dolibarr minimum v24.0
PHP minimum v8.0

Why use UltimateMeteo?

Weather conditions have a direct impact on many professional activities. UltimateMeteo integrates weather information where you need it — directly in your Dolibarr cards — to make better decisions without switching tools.

Use cases

Construction & Building trades

Before scheduling an outdoor intervention (roofing, painting, foundations), check the weather forecast at your client's address directly from their card.

Agriculture & Landscaping

When planning treatments, seeding or mowing, check weather conditions at your client's location. A quick look at the Weather tab tells you if the week is favorable.

Transport & Logistics

When preparing a delivery or pickup, check wind speed and weather conditions at destination. This helps anticipate delays, adapt routes or warn the client in advance.

Events & Outdoor services

For caterers, event organizers or rental companies, knowing the forecast at the venue address helps confirm or adjust on-site logistics.

Field sales

Sales representatives on the road can check the weather at each stop before departing. Combined with Dolibarr's agenda management, this provides planning that accounts for weather conditions.

Customer service

When a customer reports a problem (water infiltration, equipment failure), instantly viewing recent weather at their address helps qualify the incident and prioritize intervention.

Installation

  1. Download the module from DoliStore
  2. Unzip and place the ultimatemeteo/ folder in htdocs/custom/
  3. Go to Home → Setup → Modules/Applications
  4. Locate UltimateMeteo in the AtooNet section
  5. Enable the module by clicking the button in the Enabled column
 
Enabling the UltimateMeteo module in the AtooNet section

Setup

Permissions

After activation, configure access rights per user group in Home → Setup → Users & Groups → Groups:

Permission Description
Read weather data View weather tabs on cards
Create / Update Trigger weather data refresh
Delete Delete weather records

Module settings

Since version 24.0.1, the Settings tab of the module setup page (Home → Setup → Modules/Applications → UltimateMeteo → gear icon) gathers every option. Since version 24.0.2 they are split into five sections.

Default values are applied automatically when the module is enabled. They are preserved if the module is disabled and enabled again.

Objects involved
Setting Values Default Description
Objects to show the weather on Third party, Contact, Member (multiple choice) All three Defines which Dolibarr cards get the Weather tab and, where applicable, the summary line on the card itself.

The Member entry is offered only if the native Members module is enabled.

Note: the change takes effect immediately, as soon as the card is reloaded. There is no need to disable and enable UltimateMeteo again. Unchecking an object hides its tab and denies direct access to the matching page, but does not delete any stored data.

Current weather display
Setting Values Default Description
Temperature unit Celsius / Fahrenheit Celsius Unit requested from the Open-Meteo API and displayed in the Weather tab. It applies to both current weather and the forecast table.
Wind speed unit km/h, m/s, mph, knots km/h Same for wind speed. The knots unit is convenient for marine activities.
Show weather on the card Yes / No Yes Adds a one-line weather summary directly on the card of the objects selected above, in addition to the Weather tab. Each card view triggers a call to the external APIs, within the cache limit.
Wind alert threshold 0 to 300 0 Above this value, wind speed is highlighted in red, both on the card and in the Max wind forecast column. A value of 0 disables the alert.

Important: the alert threshold is expressed in the selected wind unit. If you switch from km/h to mph, remember to adjust the threshold accordingly — no automatic conversion is performed.

Forecast
Setting Values Default Description
Show the forecast table Yes / No Yes Shows or hides the forecast table below current weather.
Number of forecast days 1 to 16 5 Number of days displayed. Open-Meteo accepts up to 16 days, with decreasing reliability beyond one week.
Additional forecast columns multi-select list none Optional columns added next to the minimum and maximum temperatures.

The available optional columns are:

Column Open-Meteo field Purpose
Weather description weathercode Dominant condition of the day, with pictogram
Precipitation precipitation_sum Daily rainfall total, in mm
Max wind windspeed_10m_max Maximum expected gust; follows the wind alert threshold
Sunrise / sunset sunrise, sunset Usable daylight window for outdoor work
Max UV index uv_index_max Sun exposure, useful for team safety

These columns do not trigger any extra call: they are requested within the same Open-Meteo query.

Map
Setting Values Default Description
Show the map Yes / No Yes Displays the OpenStreetMap map locating the third party. Disabling it avoids loading the Leaflet library from an external CDN.
Map zoom level 1 to 19 12 1 is the whole world, 19 is street level.
Map height (px) 150 to 1200 500 Height of the map block, in pixels.
External services and technical settings
Setting Values Default Description
Cache duration (minutes) 1 to 1440 30 How long a weather record stays valid before a new API call is made. A high value reduces the number of calls to external services.
HTTP timeout (seconds) 1 to 60 5 Maximum wait time for API calls. A value that is too high slows down card display when a service is unavailable.
Technical contact email email company email Sent in the User-Agent header of the calls. The Nominatim usage policy requires the operator to be identifiable. If the field is empty, the company email configured in Dolibarr is used.
Geocoding service URL url https://nominatim.openstreetmap.org/search Service converting the third party's city into GPS coordinates. It can point to a self-hosted Nominatim instance.
Weather API URL url https://api.open-meteo.com/v1/forecast Service providing weather data. It can point to a self-hosted Open-Meteo instance.

Note: if either URL field is left empty, the module automatically falls back to the corresponding public service.

Data cache

Since version 24.0.0, the module uses a smart cache:

  • Weather data is stored in the llx_ultimatemeteo_currentweather database table
  • If a record exists for a third party and is newer than the configured cache duration (30 minutes by default), data is updated (UPDATE) instead of creating a new record
  • If no recent record exists, a new one is created
  • This prevents excessive row accumulation in the database

Timezone

Forecast times are expressed in the timezone of the geocoded location (Open-Meteo's timezone=auto parameter). A third party located abroad therefore shows its own local times, not those of the Dolibarr server.

Usage

Weather tab

The module adds a Weather tab on each third-party card (customers, prospects, suppliers), provided the Third party object is ticked in the Objects to show the weather on setting.

When opening this tab, Dolibarr:

  1. Retrieves the address (postal code + city) from the card
  2. Geocodes the address via the OpenStreetMap Nominatim API to get GPS coordinates
  3. Queries the Open-Meteo API for current weather and forecasts
  4. Displays results with an interactive map
 
Weather tab on a third-party card — current weather, forecast and map

Displayed information:

Field Description
Temperature Current temperature, in the configured unit (°C or °F)
Wind speed Wind speed, in the configured unit (km/h, m/s, mph or knots). Highlighted in red when the alert threshold is exceeded
Weather description Weather condition (Clear sky, Overcast, Rain, Snow, Thunderstorm…)
Date Date and time of last observation

If the Show weather on the card option is enabled, a one-line summary (pictogram, condition, temperature and wind) is also added on the card itself, without having to open the Weather tab.

Forecast for the next days

Below current data, a table shows forecasts for the configured number of days (5 days by default, up to 16). Each row contains:

  • The date, in the location's timezone
  • Minimum temperature (Min)
  • Maximum temperature (Max)
  • The optional columns enabled in the setup: weather description, precipitation, max wind, sunrise / sunset, max UV index

This table can be hidden entirely through the Show the forecast table setting.

Interactive map

An interactive OpenStreetMap map (via Leaflet 1.9.4) is displayed at the bottom with:

  • A marker positioned on the third party's city
  • A popup showing the location name
  • Zoom +/− available
  • OpenStreetMap attribution compliant with the OSM tile usage policy

The initial zoom level and the block height are configurable, and the map can be disabled to avoid any load from an external CDN.

Contact tab

The same Weather tab is available on contact/address cards. It works identically using the contact's address.

 
Weather tab on a contact card

Member tab

Since version 24.0.2, the same Weather tab is available on member cards, under two conditions:

  • the native Members module is enabled;
  • the Member object is ticked in the Objects to show the weather on setting.

Geocoding uses the postal code and city stored on the member card. A member without a city still shows the tab, but no weather data can be computed.

Records are stored in the llx_ultimatemeteo_currentweather table through the fk_member column. If the member is linked to a third party, the fk_soc column is filled in as well; otherwise it stays empty.

Note: the fk_member column is added automatically when the module is upgraded. On an existing installation, disable and enable UltimateMeteo once so that the structure change is applied. The operation is not destructive: existing records are kept.

Supported weather conditions

The module uses standard WMO codes and translates them automatically into 5 languages (FR, EN, DE, ES, IT):

WMO Code Description
0 Clear sky
1 Mostly clear
2 Partly cloudy
3 Overcast
45 / 48 Fog / Freezing fog
51 / 53 / 55 Light / Moderate / Dense drizzle
61 / 63 / 65 Light / Moderate / Heavy rain
71 / 73 / 75 Light / Moderate / Heavy snow
77 Snow grains
80 / 81 / 82 Light / Moderate / Violent showers
85 / 86 Light / Heavy snow showers
95 Thunderstorm
96 / 99 Thunderstorm with light / heavy hail

APIs used

The module relies on entirely free APIs, with no registration or API key required:

API Role URL
Open-Meteo Current weather and forecasts https://api.open-meteo.com
OpenStreetMap Nominatim Address geocoding → GPS coordinates https://nominatim.openstreetmap.org
Leaflet 1.9.4 Interactive map library https://leafletjs.com
OpenStreetMap Tiles Map tiles https://tile.openstreetmap.org

What's new in version 24.0.2

Improvements

  • Weather tab on members: new currentweather_member.php page showing current weather, forecast and map at the member's address. Available only if the native Members module is enabled
  • Configurable objects: a new Objects to show the weather on setting selects which cards get the Weather tab (Third party, Contact, Member). The change takes effect immediately, with no module reload
  • Card summary generalised: the weather summary line, previously limited to third parties, now also appears on the selected contact and member cards
  • Cache honoured on all three tabs: the third party, contact and member tabs update the existing record as long as it is newer than the configured cache lifetime, instead of inserting a row on every view

Fixes

  • Cache actually effective: record freshness was compared on the tms column, a MySQL TIMESTAMP returned in UTC, whereas Dolibarr writes dates in the server time zone. The offset invalidated the cache every time, causing an external API call and a new row on every view. The comparison now uses date_weather
  • PHP warnings removed: when the town was missing or geocoding failed, the tabs displayed "Undefined variable" messages. Weather variables are now initialised before display
  • Member column hidden: the fk_member field no longer shows up in the third party and contact tab tables

Database

  • New fk_member column in llx_ultimatemeteo_currentweather, added automatically when the module is loaded. The operation is not destructive

What's new in version 24.0.1

Improvements

  • Settings tab: 14 configuration parameters replace the previously hardcoded values (units, forecast, map, external services, cache, HTTP timeout)
  • Configurable units: temperature in °C or °F, wind in km/h, m/s, mph or knots, passed directly to the Open-Meteo API
  • Wind alert: configurable threshold above which wind speed is highlighted in red
  • Configurable forecast: number of days (1 to 16) and optional columns (description, precipitation, max wind, sunrise / sunset, UV index)
  • Configurable map: initial zoom, block height, and the ability to disable the external CDN load entirely
  • Self-hostable services: the Nominatim and Open-Meteo URLs can point to your own instances
  • Technical contact email: sent in the User-Agent header, in compliance with the Nominatim usage policy
  • Complete translations: all 5 languages (fr, en, de, es, it) now cover every setup label and tooltip

Bug fixes

  • Third-party hook fixed: the hook class was moved from core/hooks/ to class/actions_ultimatemeteo.class.php, the only location scanned by Dolibarr's HookManager. The weather summary on the third-party card was therefore never displayed
  • Default values: they are now applied when the module is enabled, through $this->const, following module builder practices
  • More accurate geocoding: the lookup now uses the postal code and the city instead of the city alone
  • Units in labels: the hardcoded "(°C)" and "(km/h)" mentions were removed from the translations, since the actually configured unit is displayed next to the value

What's new in version 24.0.0

Bug fixes

  • 403r error on OpenStreetMap maps: added referrerPolicy and attribution in compliance with the 2026 OSM tile policy
  • Leaflet pinned to version 1.9.4 with SRI integrity check (instead of unversioned CDN URL)
  • Secure API calls: replaced file_get_contents with cURL and proper User-Agent in the third-party hook
  • Data cache: UPDATE/INSERT mechanism with 30-minute cache (removes systematic INSERT on every page view)
  • Dynamic timezone: uses Dolibarr configuration instead of hardcoded Europe/Paris

Improvements

  • Complete weather codes: added WMO codes 71-99 (snow, showers, thunderstorms, hail) in all 5 language files
  • Internationalization: weather descriptions now use Dolibarr's translation system ($langs->trans())
  • Wiki help links: added contextual documentation links to all module pages
  • Dolibarr v24 compatibility: updated patterns to follow v24 conventions

FAQ

Weather is not displayed

Check that the third-party, contact or member card has a postal code and city filled in. Geocoding requires at least a city name.

The Weather tab does not appear on a card

Open the module Settings tab and check that the object is ticked in Objects to show the weather on. For members, also check that the native Members module is enabled: without it the entry is not even offered.

I upgraded the module but the member tab returns an SQL error

The fk_member column has not been created yet. Disable and enable UltimateMeteo once: Dolibarr then replays the module SQL scripts and adds the column. The operation is not destructive.

The map shows "Access blocked" or "403r"

This issue was fixed in version 24.0.0. OpenStreetMap enforced its Referer policy in early 2026. The update includes:

  • Adding referrerPolicy: "strict-origin-when-cross-origin" to the Leaflet configuration
  • The mandatory © OpenStreetMap contributors attribution
  • Pinning Leaflet to a stable version (1.9.4)

Is weather data updated automatically?

Data is fetched each time the Weather tab is opened. A cache prevents repetitive API calls: if the last record is newer than the configured cache duration (30 minutes by default), it is simply updated in the database instead of creating a new record. This duration is set in the module's Settings tab.

How do I display temperatures in Fahrenheit?

In the module's Settings tab, select Fahrenheit (°F) as the temperature unit. The unit is passed directly to the Open-Meteo API, so the conversion happens at the source, and the selected unit is displayed next to each value.

Is the wind alert threshold converted automatically?

No. The threshold is expressed in the selected wind unit. If you switch from km/h to mph, remember to adjust the threshold value accordingly.

Does the module work offline?

No. The module requires Internet access to query the Open-Meteo and Nominatim APIs.

It is however possible to stay on an internal network by filling in, in the Settings tab, the URLs of self-hosted Nominatim and Open-Meteo instances, and by disabling the map to avoid loading Leaflet from an external CDN.

What languages are supported?

The module is available in: French, English, German, Spanish, Italian.

How to access online help?

Each module page has a contextual help link (? icon in the top right corner) that links to the corresponding section of this wiki page.

See also

Other languages