Wetterstationsdaten in APRS

Wetterstationsdaten in APRS

Dieser Artikel ist eine Fortsetzung meines Artikels über den Bau meiner Wetterstation. Da diese Erweiterung nur für Funkamateure relevant ist, habe ich diese ausgegliedert.

Übertragung ins APRS-Netz

Da die Daten der Wetterstation ja sauber in Rohform vorliegen und mit openHAB die Möglichkeit besteht, diese ohne Probleme in jedes andere Format zu konvertieren, bestand auch die Möglichkeit, die Daten in das APRS-Netz einzuspeisen.

Mit einem kleinen PHP-Skript und mit Rules in openHAB wird eine Datei erzeugt, welche die Informationen für APRX aufbereitet. Dieses Programm sendet die Daten dann unter meinem Rufzeichen und der SSID 13 (für Wetterstation) über das Internet in das APRS-Netz.

Wer das nachbauen möchte, hier das PHP-Skript sowie die openHAB Rules, welche ich verwende.

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

Ansicht der Daten

Die Daten sind dann ganz regulär im APRS-Netz verfügbar. Eine Möglichkeit die Station öffentlich anzusehen ist APRS.fi. Dort kann man auch die Aufzeichnungen der Wetterstation einsehen.