WeDroid – A Python 3 Module for generating Weather reports

descriptionPage

Please note: This page is currently being redesigned; you can visit the project repository at:
WeDroid source available on GitLab
WeDroid available on PyPi

WeDroid is a weather summary & announcement package for Python 3, cross platform (runs on anything that can run Python 3.9+) with additional bonuses for Android users through support for Tasker and/or Termux.

WeDroid Observation and Forecast Previews

WeDroid weather observation example

WeDroid weather forecast example

WeDroid + Termux + Tasker + Android

The Tasker integration allows WeDroid to update variables declared in Tasker (through an Intent); you can use these Tasker variables to then trigger additional tasks for example Text-to-speech. Termux is used to provide a shell and enable the installation of Python 3 and uses Termux-API to access the device location; view the source for this integration in Termux integation WeDroid.

If you’re eager to try it for yourself (that is: running WeDroid on Android via Termux using Tasker as the controller/trigger); it’s relatively straight forward and the information below should help you get started:

The entire Tasker WeDroid project can be downloaded at: WeDroid > Examples > Tasker

Background and purpose

As previously mentioned in “Unveiling WeDroid a weather assistant module for Python 3“; WeDroid was originally a weather reporting script that returned the current weather status in a short message form. It was written right after the Metal Gear Solid V: The Phantom Pain’s release and was heavily influenced by the iDroid weather reports that Venom Snake would receive in-game. These reports would indicate drastic changes like sandstorms, rain, or the weather clearing.

Installation requirements (Android)

  • Tasker
  • Termux (other shells are likely supported where you can install Python 3)
    • Termux configured to access local storage
  • Termux:API plugin
    • If you intend to allow WeDroid to access location data Termux:API needs to be configured to allow location access.
  • Termux:Tasker plugin

When used with Tasker on Android you can define a task and/or profile which can run the WeDroid announcement service.

Tasker Workflow

To summarise Tasker is used to:

  • Run WeDroid on a schedule.
  • Process an intent created from WeDroid with various pieces of weather data and extract the values to Tasker variables.
  • Then trigger an announcement (or action/s) when certain changes occur.

The simplest use case is to trigger a WeDroid observation every hour; and when the %WD_ANNOUNCEMENT variable is update speak the content using text-to-speech.

Tasker configuration breakdown

To run WeDroid and Python 3 under Termux with Tasker review the following details:

  • Python 3 via Termux requires:
    • Termux to be installed.
    • Python 3 package is installed with: pkg install python.
    • WeDroid installed with: pip install wedroid.
    • In your home directory create a WeDroid configuration with: wedroid -d.
    • Once created edit wedroid_settings.json and add your OWM (OpenWeatherMap) API key, create one here.
  • The Tasker Task responsible for running WeDroid is “Run Termux Script” provided by Termux:Tasker:
    • It should execute: /data/data/com.termux/files/usr/bin/wedroid -t "observation" -lt "14.0" -lc 812
      • In executable add: /data/data/com.termux/files/usr/bin/wedroid
      • In arguments add: -t "observation" -lt "14.0" -lc 812 optionally include a path to your configuration if in a different location: -c "/path/to/some/where/wedroid_settings.json"
    • Or import the Template Tasker Task: WeDroid Observation Script

Task breakdown

The screenshot below demonstrates how to configure a Termux:Tasker action within Tasker; take note of the executable file: /data/data/com.termux/files/usr/bin/wedroid

At this point the basic configuration aspect is complete; run the newly created task to ensure that it is working as expected.

If you run a observation or forecast; once complete, WeDroid sends an intent back to Tasker with various data variables and the Task name (WeDroid Received) that will parse these values:

This task should be setup to parse and assign the values to Tasker variables; below is a reference the Tasker variable on the left, the intent variable on the right.

Each entry should have a “Variable set” action comprising:

%WD_LAST_CODE = %wd_last_code
%WD_SUNRISE = %wd_sunrise
%WD_SUNSET = %wd_sunset
%WD_LAST_TEMP = %wd_last_temp
%WD_LAST_TIME = %wd_last_time
%WD_LAST_WIND_SPEED = %wd_last_wind_speed
%WD_LAST_WIND_DIRECTION = %wd_last_wind_direction
%WD_LAST_HUMIDITY = %wd_last_humidity
%WD_DAY_STATE = %wd_day_state
# The main announcement = # the main announcement
%WD_ANNOUNCEMENT = %wd_announcement
# Announcement parts separated = # announcement parts separated
%WD_TIME_MSG = %wd_time_msg
%WD_WEATHER_MSG = %wd_weather_msg
%WD_TEMP_MSG = %wd_temp_msg
%WD_WIND_MSG = %wd_wind_msg
%WD_SUN_MSG = %wd_sun_msg
%WD_HUMIDITY_MSG = %wd_humidity_msg

Running the weather status again should now update the Tasker variables on completion.

From here there are many possibilities for automation.

Tasker screenshot reference

Disclaimer & Notices

Terms & Privacy Policy

Terms & Conditions