Weather station in APRS

Weather station in APRS

This article is a sequel to my article about the construction of my weather station. As this extension is only relevant for radio hams, I have outsourced it.

Transmission into the APRS network

Since the data of the weather station are available cleanly in raw form and with openHAB the possibility exists to convert these without problems into each other format. Therefore it was also possible to feed the data into the APRS network.

With a small PHP script and with rules in openHAB a file is created which prepares the information for APRX. This program then sends the data under my callsign and SSID 13 (for weather station) over the Internet to the APRS network.

If you want to rebuild this, here is the PHP script and the openHAB rules, which I use.

aprs.php

#!/usr/bin/env php
<?php

date_default_timezone_set('UTC');
$outfile = '/opt/wxbeacon.txt';
$settings = '/etc/openhab2/wxvalues.txt';
$line = '@'.date('dHi', time()).'z4956.14N/01132.19E_';
$line_static = '000/000g000';
$software = 'WX/IGate';
$comment = '';
$change = false;

// Werte lesen
$fp = fopen($settings, 'r');
$settings_array = unserialize(fread($fp, 4096));
fclose($fp);

switch($argv[1]) {
case 'T':
  // Temperatur
  $settings_array['temp'] = $argv[2] * 1.8 + 32; // C in F
  $change = true;
  break;
case 'H':
  // Luftfeuchtigkeit
  $settings_array['humidity'] = $argv[2];
  $change = true;
  break;
case 'B':
  // Luftdruck
  $settings_array['barometer'] = ($argv[2] + 46) * 10;
  $change = true;
  break;
}

// Werte speichen
if($change == true) {
  $fp = fopen($settings, 'w');
  fwrite($fp, serialize($settings_array));
  fclose($fp);

  // Statische Werte
  $line .= $line_static;

  // Temperatur
  $line .= 't'.sprintf("%'.03d", $settings_array['temp']);
  // Luftfeuchtigkeit
  $line .= 'h'.sprintf("%'.02d", $settings_array['humidity']);
  // Luftdruck
  $line .= 'b'.sprintf("%'.05d", $settings_array['barometer']);

  // Parameter
  $line .= $software.' '.$comment;

  $fp = fopen($outfile, 'w');
  fwrite($fp, $line);
  fclose($fp);
}
?>

wetterstatino.rule

rule "Wetterstation Temperature"
  when
     Item ws_balkon_temperatur_out received update
  then
      executeCommandLine('/etc/openhab2/scripts/aprs.php T ' + ws_balkon_temperatur_out.state.toString)
end

rule "Wetterstation Humidity"
  when
     Item ws_balkon_luftfeuchtigkeit_out received update
  then
      executeCommandLine('/etc/openhab2/scripts/aprs.php H ' + ws_balkon_luftfeuchtigkeit_out.state.toString)
end

rule "Wetterstation Pressure"
  when
     Item ws_balkon_luftdruck_out received update
  then
      executeCommandLine('/etc/openhab2/scripts/aprs.php B ' + ws_balkon_luftdruck_out.state.toString)
end

View the data

The data is then regularly available in the APRS network. One way to view the station publicly is APRS.fi. There you can also see the recordings of the weather station.