Developer Guide
Tango device server
A MidWeatherMonitoring device has been developed to publish Weather Monitoring Station data automatically to interested clients.
Device properties
The following Tango device properties should be set:
Host: hostname of the Weather Station Modbus server
Port: port number to connect to
A MidWeatherMonitoring device will start in adminMode.OFFLINE and will need to be brought online e.g.:
dp = DeviceProxy("ska-mid/weather-monitoring/s1")
dp.adminMode = 0
Device attributes
The MidWeatherMonitoring Tango device uses the ska-mid-wms-interface package which publishes data for the following sensors:
windSpeed
windDirection
temperature
pressure
humidity
rainfall
The Modbus addresses for these sensors are sourced from the same register section (for an Acromag 961EN-4006 the addresses are 9-14).
For each of the default sensors the device server will create 4 attributes:
Engineering value - “<sensor_name>”. It is calculated from the ADC value using the following formula:
ADC value read directly from the Acromag device - “<sensor_name>ADC”.
The raw current reading from the sensor - “<sensor_name>Current”. It is calculated from the ADC value using the following formula:
The input signal status of the sensor read from the Acromag device - “<sensor_name>SignalStatus” of type InputSignalStatusEnum.
There is also an extra attribute called the rainfallRate, which calculates the difference in absolute rainfall every minute (mm/min).
Here are the current default attributes and their properties for the SKA-Mid Weather Monitoring Station Rev. B ICD issued 14 Feb 2025:
Attribute |
Type |
Unit |
Min |
Max |
|---|---|---|---|---|
windSpeed |
float |
m/s |
0.0 |
65.0 |
windDirection |
float |
° |
0.0 |
360.0 |
temperature |
float |
°C |
-50.0 |
50.0 |
pressure |
float |
mbar |
500.0 |
1100.0 |
humidity |
float |
% |
0.0 |
100.0 |
rainfall |
float |
mm |
0.0 |
100.0 |
rainfallRate |
float |
mm/min |
0.0 |
3.2 |
*ADC |
int |
counts |
0 |
20000 |
*Current |
float |
mA |
4.0 |
20.0 |
*SignalStatus |
Enum (int) |
0 |
2 |
Helm charts
The repository contains a Helm chart for deploying MidWeatherMonitoring Tango
servers. Each individual device server pod configuration has been defined in
charts/ska-mid-wms/weather_station_config.yaml. By default, 5 devicer server instances
are deployed to a Kubernetes cluster but is configurable in charts/ska-mid-wms/values.yaml
under deviceServers.wms.station_ids - this list corresponds to the simulator instances
that will be created.
The MidWeatherMonitoring pods expect Host and Port properties that
are used to connect the pod to a weather station server. To connect to hardware simply
provide the IP address and port number to connect to in the values file on
modbus_server_hostnames and modbus_server_ports respectively. If the WMS simulator
is used, the default values are set in the Helm chart and do not need to be changed.
The length of these lists must match, and the order of the entries in these lists must
correspond to the order of the station IDs in station_ids. In the example below, the
station ID is “1”, will be used to connect to the modbus server running on “1.1.1.1:8080”
deviceServers:
wms:
station_ids: ["1", "2"]
modbus_server_hostnames:["1.1.1.1", "2.2.2.2"]
modbus_server_ports: ["8080", "9000"]
Deploying
Helm charts describe a Kubernetes configuration. To run a Helm chart locally it is
recommended to use Minikube.
The Helm chart is available from artefact.skao.int. To check which remote repositories
Helm knows of run:
helm repo list
If https://artefact.skao.int/repository/helm-internal is not in the output, it needs to be
added e.g.:
helm repo add ska-internal https://artefact.skao.int/repository/helm-internal
Helm also needs to fetch the list of available packages:
helm repo update
A chart can then be pulled locally (to specify a version use the --version option):
helm pull ska-internal/ska-mid-wms
With Minikube started the chart can be deployed to the local cluster with:
helm install ska-mid-wms ska-internal/ska-mid-wms --create-namespace -n ska-mid-wms -f charts/ska-mid-wms/values.yaml
To redeploy first delete the installation and run the install command again.
helm delete ska-mid-wms -n ska-mid-wms