Introduction
This little program allows for activation or deactivation of a Fritz!Box WLAN. It works reliable and has been tested on Debian-Linux with the following Fritz!Boxes:
•    Fritz!Box 7390
•    Fritz!Box 7170
•    fritzed Speedport W 900V
•    other types might work as well but have not been tested

How it works
In order to control a Fritz!Box WLAN this little Perl program named “fritzwlan.pl” has been written. It can be executed directly from the command line and uses the telnet protocol to retrieve the current status or turn the WLAN on or off. Of course, the telnet-daemon on your Fritz!Box has to be activated beforehand.

So what we need is the following:
•    Activation of telnetd on the Fritz!Box
•    Installation of Perl module Net::Telnet
•    Installation of fritzwlan.pl

Activation of telnetd on the Fritz!Box
Using your Fritz!Box connected handheld phone is probably the easiest way to activate the telnet daemon on your Fritz!box. Just dial
#96*7* for activation
#96*8* for deactivation

Installation of Perl module Net::Telnet
fritzwlan.pl  requires Net::Telnet to function. On Debian systems this module comes with the
libnet-telnet-perl –package and can be installed with the following command:

apt-get install libnet-telnet-perl

Installation of fritzwlan.pl
The installation of fritzwlan.pl is quite simple: Just copy it to a path of your choice (e.g. /usr/local/scripts or whatever). Assuming it resides in /usr/local/scripts you can do a quick test by executing the following command:

/usr/local/scripts/fritzwlan.pl help

=> some usage information about its correct invocation is shown.

Now it is time trying to switch on/off  the WLAN or querying the state. Assuming your Fritz!Box is password protected and has the IP 192.168.178.1 you could use the following commands for status/switching on/switching off:

/usr/local/scripts/fritzwlan.pl  192.168.178.1 password status
/usr/local/scripts/fritzwlan.pl  192.168.178.1 password on
/usr/local/scripts/fritzwlan.pl  192.168.178.1 password off

Please note, it might take a few seconds until the WLAN reaches the desired state. For further information check the output of

/usr/local/scripts/fritzwlan.pl help

 

Copyright (c) 2013, Thomas Hoerndlein, GPL.  All rights reserved, some wrongs reversed.

Attachments:
Download this file (fritzwlan.pl)fritzwlan.pl[frizwlan.pl Version 1.1]2 kB2014-10-18 00:08

luxtronik.pl ist ein Testkript für das Perl-Modul Luxtronik.pm. Das Skript zeigt nahezu alle Daten an, die auf der Luxtronik im Menü "Informationen" angezeigt werden. Zur Installation einfach die beiden Dateien "luxtronik.pl" und "Luxtronik.pm" herunterladen und im gleichen Verzeichnis ablegen. Im File luxtronik.pl noch die richtige serielle Schnittstelle konfigurieren (Default: /dev/ttyS0).

Attachments:
Download this file (luxtronik.pl)luxtronik.pl[luxtronik.pl]7 kB2014-10-16 20:03

Achtung: Luxtronik.pm ist aktuell eine Testversion. Das Modul ist funktionsfähig, aber möglicherweise nicht ausreichend getestet.

Eine Haftung für Schäden, die eventuell durch Verwendung des Moduls entstehen, wird nicht übernommen. Die Verwendung erfolgt auf eigenes Risiko!

Download-Link unten am Ende der Seite

Installation:

1. Luxtronik.pm in ein Diskverzeichnis kopieren

2. Das Kommando > use lib "/path/to/your/directory" < im aufrufenden Skript verwenden, um das Modul einzubinden.

 

Luxtronik.pm

 

 

NAME

Luxtronik - Steuern und Abfragen einer Luxtronik 1 Steuerung

 

VERSION

Dieses Dokument bezieht sich auf die Version 0.5 der Luxtronik-Schnittstelle. Veroeffentlicht am 18.10.2014

 

SYNOPSIS

 use Luxtronik;
 my $luxtronik = Luxtronik->new();
 # Hole Informationsdaten der Luxtronik-Steuerung:
 $luxtronik->update_infos();
 # Speichere alle Temperatuerwerte in Liste @temperatur:
 my @temperatur = $luxtronik->temperaturen();
 # Lege Ruecklauftemperatur in $tr ab:
 my $tr = $luxtronik->temperaturen('ruecklauf')
 # Schalte Warmwasserbereitung ab:
 $luxtronik->warmwasser('aus');

 

BESCHREIBUNG

Luxtronik.pm stellt eine objektorientierte Schnittstelle zur Kommunikation mit einer Luxtronik-Steuerung (Hardwareversion 1) bereit.

 

KONSTRUKTORMETHODEN

$luxtronik = Luxtronik->new();
$luxtronik = Luxtronik->new(serialport => '/dev/ttyS0', request_retries => 5);

Diese Methode erzeugt das Luxtronik-Objekt und gibt es zurueck.

   Option            Voreinstellung   Beschreibung
   ------            --------------   ------------
   serialport        /dev/ttyS0       Gibt die zu verwendente serielle Schnittstelle an.
   request_retries   5                Gibt an, wie oft im Belegungsfall versucht wird,
                                      eine Kommunikation mit der Luxtronik ueber die
                                      serielle Schnittstelle durchzufuehren.

 

OBJEKTMETHODEN

Bei den Objektmethoden wird zwischen aktiven und passiven Methoden unterschieden.

Aktive Methode: Baut bei Aufruf eine Kommunikationsverbindung zur Luxtronik auf und liest oder schreibt Daten ueber diese Verbindung.

Passive Methode: Baut bei Aufruf keine Kommunikationsverbindung zur Luxtronik auf. Gibt nur Objekteigenschaften zurueck, die ggf. vorher durch eine aktive Methode gesetzt wurden.

$luxtronik->heizung;
$luxtronik->heizung($action);

Bei Aufruf ohne Argument wird die Betriebsart der Heizung zurueckgegeben. Mit Argument kann die gewuenschte Betriebsart gesetzt werden.

Methodenart: aktiv

   Moegliche Betriebsarten   Argument ($action)
   -----------------------   ------------------
   Automatik                 automatik
   Zweitwaermeerzeuger       zwe
   Party                     party
   Ferien                    (wird derzeit noch nicht unterstuetzt)
   Aus                       aus
$luxtronik->warmwasser;
$luxtronik->warmwasser($action);

Bei Aufruf ohne Argument wird die Betriebsart der Warmwasserbereitung zurueckgegeben. Mit Argument kann die gewuenschte Betriebsart gesetzt werden.

Methodenart: aktiv

   Moegliche Betriebsarten   Argument ($action)
   -----------------------   ------------------
   Automatik                 automatik
   Zweitwaermeerzeuger       zwe
   Party                     party
   Ferien                    (wird derzeit noch nicht unterstuetzt)
   Aus                       aus
$luxtronik->heizkurve;
$luxtronik->heizkurve(\%hk);

Bei Aufruf ohne Argument wird eine Referenz auf einen Hash zurueckgegeben, der die aktuelle Heizkurve enthaelt.

Methodenart: aktiv

   Hashkey:                     Bedeutung:
   --------                     ----------
   codeword                     Luxtronik Protokollcodewort
   elements                     Anzahl der aller Werte (ohne Codeword)
   abweichung                   Heizkurvenabweichug vom Standardwert -5 - +5
   endpunkt                     Heizkurvenendpunkt
   parallelverschiebung         Parallelverschiebung der Heizkurve
   absenkung                    Nachtabsenkung
   key6                         unbekannter Wert
   key7                         unbekannter Wert
   key8                         unbekannter Wert
   key9                         unbekannter Wert
   key10                        unbekannter Wert

Alle zurueckgegebenen Temperaturwerte werden als zehntel Grad Celsius dargestellt. Ein Wert von 35 entspricht also 3,5 Grad Celsius.

Wird der Methode eine Referenz auf einen Hash uebergeben, welcher die Heizkurve enthaelt, dann diese Heizkurve gesetzt. Der Rueckgabewert entspricht in diesem Fall 1 (true).

   Praxisbeispiel
   --------------
   $hkref = $luxtronik->heizkurve;              erzeuge Referenz auf Heizkurvenhash
   $hkref->{'abweichung'} = -15;                Heizkurve um -1,5 Grad Celsius absenken
   $luxtronik->heizkurve($hkref);               neue Heizkurve abspeichern
$luxtronik->exit_progmode;

Noch nicht implementiert.

Methodenart: aktiv

$luxtronik->update_infos

Holt die aktuellen Informationsdaten der Luxtronik-Steuerung ab und speichert diese in den Objekteigenschaften. Diese Methode muss mindestens einmal aufgerufen werden, bevor eine der nachfolgend aufgefuehrten Abfragemethoden aufgerufen wird.

Methodenart: aktiv

$luxtronik->info_time

Gibt Datum und Uhrzeit des letzten Aufrufs von $luxtronik->update_infos zurueck.

Methodenart: passiv

$luxtronik->temperaturen
$luxtronik->temperaturen('vorlauf')
$luxtronik->temperaturen('ruecklauf')
$luxtronik->temperaturen('ruecklauf_soll')
$luxtronik->temperaturen('heissgas')
$luxtronik->temperaturen('aussen')
$luxtronik->temperaturen('brauchwasser_ist')
$luxtronik->temperaturen('brauchwasser_soll')
$luxtronik->temperaturen('waermequelle_ein')
$luxtronik->temperaturen('kaeltekreis')
$luxtronik->temperaturen('mischkreis1_vorlauf')
$luxtronik->temperaturen('mischkreis1_vorlauf_soll')
$luxtronik->temperaturen('raumstation')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Temperaturen in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert der angefragten Temperatur als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Temperaturen in Grad Celsius
   ----------------------------
   Vorlauf
   Ruecklauf
   Ruecklauf Soll
   Heissgas
   Aussen
   Brauchwasser Ist
   Brauchwasser Soll
   Waermequelle Eingang
   Kaeltekreis
   Mischkreis 1 Vorlauf
   Mischkreis 1 Vorlauf Soll
   Raumstation
$luxtronik->eingaenge
$luxtronik->eingaenge('asd')
$luxtronik->eingaenge('evu')
$luxtronik->eingaenge('hd')
$luxtronik->eingaenge('mot')
$luxtronik->eingaenge('nd')
$luxtronik->eingaenge('pex')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Eingaengen in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert des angefragten Eingangs als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Eingaenge
   ---------
   ASD
   EVU
   HD
   MOT
   ND
   PEX
$luxtronik->ausgaenge
$luxtronik->ausgaenge('abtauventil')
$luxtronik->ausgaenge('bup')
$luxtronik->ausgaenge('fup1')
$luxtronik->ausgaenge('hup')
$luxtronik->ausgaenge('mischer1_auf')
$luxtronik->ausgaenge('mischer1_zu')
$luxtronik->ausgaenge('ventilation')
$luxtronik->ausgaenge('ventil_bosup')
$luxtronik->ausgaenge('verdichter1')
$luxtronik->ausgaenge('verdichter2')
$luxtronik->ausgaenge('zup_zip')
$luxtronik->ausgaenge('zwe1')
$luxtronik->ausgaenge('zwe2_sst')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Ausgaengen in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert des angefragten Ausgangs als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Ausgaenge
   ---------
   Abtauventil
   Brauchwasserumwaelzpumpe
   Fussbodenheizungsumwaelzpumpe
   Heizungsumwaelzpumpe
   Ausgang Mischer 1 Auf
   Ausgang Mischer 1 Zu
   Ventilation
   Ventil BOSUP
   Verdichter 1
   Verdichter 2
   ZUP-ZIP
   ZWE1
   ZWE2 SST
$luxtronik->ablaufzeiten
$luxtronik->ablaufzeiten('wp_seit')
$luxtronik->ablaufzeiten('zwe1_sei')
$luxtronik->ablaufzeiten('zwe2_seit')
$luxtronik->ablaufzeiten('netzeinv')
$luxtronik->ablaufzeiten('ssp_zeit_standzeit')
$luxtronik->ablaufzeiten('ssp_zeit_einschverz')
$luxtronik->ablaufzeiten('vd_stand')
$luxtronik->ablaufzeiten('hrm_zeit')
$luxtronik->ablaufzeiten('hrw_zeit')
$luxtronik->ablaufzeiten('tdi_seit')
$luxtronik->ablaufzeiten('sperre_bw')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Ablaufzeitn in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert der angefragten Ablaufzeit als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Ablaufzeiten
   ------------
   WP seit
   ZWE 1 seit
   ZWE 2 seit
   Netzeinschaltverz
   Schaltspielsperre (SSP) Standzeit
   Schaltspielsperre (SSP) Einschverz
   VD Stand
   HRM Zeit
   HRW Zeit
   TDI seit
   Sperre BW
$luxtronik->betriebsstunden
$luxtronik->betriebsstunden('vd1')
$luxtronik->betriebsstunden('vd1imp')
$luxtronik->betriebsstunden('vd1dez')
$luxtronik->betriebsstunden('vd2')
$luxtronik->betriebsstunden('vd2imp')
$luxtronik->betriebsstunden('vd2dez')
$luxtronik->betriebsstunden('zwe1')
$luxtronik->betriebsstunden('zwe2')
$luxtronik->betriebsstunden('wp')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Betriebsstunden in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert der angefragten Betriebsstunden als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Betriebsstunden
   ---------------
   VD1
   VD1 Impulse
   VD1 deZ
   VD2
   VD2 Impulse
   VD2 deZ
   ZWE1
   ZWE2
   WP
$luxtronik->anlagenstatus
$luxtronik->anlagenstatus('wp-typ')
$luxtronik->anlagenstatus('sw-stand')
$luxtronik->anlagenstatus('biv-stufe')
$luxtronik->anlagenstatus('betriebszustand')
$luxtronik->anlagenstatus('compact')
$luxtronik->anlagenstatus('comfort')
$luxtronik->anlagenstatus('einschaltzeitpunkt'

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Anlagenstatus in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert des angefragten Anlagenstatus als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Anlagenstatus
   -------------
   WP-Typ
   SW-Stand
   Biv-Stufe
   Betriebszustand
   Compact
   Comfort
   Einschaltzeitpunkt
$luxtronik->fehlerspeicher
$luxtronik->fehlerspeicher(0)
$luxtronik->fehlerspeicher(1)
$luxtronik->fehlerspeicher(2)
$luxtronik->fehlerspeicher(3)
$luxtronik->fehlerspeicher(4)

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Fehlerspeichern in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert des angefragten Fehlerspeichers als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Fehlerspeicher
   --------------
   0
   1
   2
   3
   4
$luxtronik->abschaltungen
$luxtronik->abschaltungen(0)
$luxtronik->abschaltungen(1)
$luxtronik->abschaltungen(2)
$luxtronik->abschaltungen(3)
$luxtronik->abschaltungen(4)

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Abschaltungen in der aufgefuehrten Reihenfolge zurueckgegeben. Mit Argument wird der Wert der angefragten Abschaltung als Skalar zurueckgegeben. Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Abschaltung
   -----------
   0
   1
   2
   3
   4
$luxtronik->informationen
$luxtronik->informationen('csv')

Bei Aufruf ohne Argument wird eine Liste mit den u.g. Informationen in der aufgefuehrten Reihenfolge zurueckgegeben. Mit dem Argument 'csv' erfolgt die Ausgabe im CSV-Format (Trennung durch Semikolon). Vor Aufruf diese Methode muss mindestens einmal $luxtronik->update_infos aufgerufen worden sein.

Methodenart: passiv

   Informationen
   -------------
   Info Zeit (Zeitpunkt des letzten Aufrufs von $luxtronik->update_infos)
   Liste aller Temperaturen
   Liste aller Eingaenge
   Liste aller Ausgaenge
   Liste aller Ablaufzeiten
   Liste aller Betriebsstunden
   Liste aller Fehlerspeicher
   Liste aller Abschaltungen
   Liste aller Anlagenstatus

 

AUTHOR

Thomas Hoerndlein

 

COPYRIGHT

Copyright (c) 2012-2013, Thomas Hoerndlein. All rights reserved, some wrongs reversed.

Attachments:
Download this file (Luxtronik.pm)Luxtronik.pm[Luxtronik.pm]34 kB2014-10-17 22:52

ATTENTION: IPWE.pm is still a testing version. It works, but it might not be sufficiently tested.

To download IPWE.pm have a look at the bottom of this page.

Installation instructions:

1. copy IPWE.pm to some directory on your harddisk 

2. use the command > use lib "/path/to/your/directory" < in your script to include this module.


 IPWE.pm

 

NAME

IPWE - Query an IPWE 1 (IP-Wetterdatenempfaenger / IP weather data receiver)

 

VERSION

This document refers to version 0.41 of IPWE released 26.04.2010

 

SYNOPSIS

 use IPWE;
my $url = "http://192.168.1.100";;
 my $ipwe = IPWE->new(url => $url);
 # print raw data for the whole IPWE (all sensors):
$ipwe->print;
 # to get the sensor object for sensor 9:
my $s = $ipwe->sensor(9);
 # print raw data for the current sensor object:
$s->print;
 # let's get the humidity of the current sensor object:
my $humidity = $s->humidity();
 # do something if it's raining:
if ($s->raining) {
# close_roof_window();
}
 # Retrieve new information from the IPWE hardware device:
$ipwe->update;
 # print temperature for all sensors:
foreach ($ipwe->sensor) {
print $_->temperature . "\n";
}
 # for the lazy, instead of doing
my $s = $ipwe->sensor(9);
my $temperature = $s->temperature();
# you can also write:
my $temperature = $ipwe->sensor(9)->temperature();

 

DESCRIPTION

The IPWE 1 (IP-Wetterdatenempfaenger) is an electronic appliance from ELV (http://www.elv.de) which is able to receive weather information from up to nine local sensors.

This module provides an object oriented API to access the IPWE device and retrieve its sensor values.

While using this module you will have to deal with 10 objects - one of type "IPWE" for the IPWE device itself and nine of type "IPWE::Sensor" (one for each sensor).

 

CONSTRUCTOR METHODS

$ipwe = IPWE->new(url => $url)

This method constructs a new IPWE object and returns it. During initialization the nine IPWE::Sensor objects will be created internally. There is no constructor method for IPWE:Sensor objects (of course there is a private method to construct them, otherwise we could not create IPWE::Sensor objects at all). A special method "$ipwe->sensor()" exists to return the sensor objects. See below for details.

 

IPWE OBJECT METHODS

$ipwe->update

This method retrieves the current information from the IPWE hardware device and stores it into nine IPWE::Sensor objects (one object for each sensor). Return values: 1 if update was successful, 0 if unsuccessful.

$s = $ipwe->sensor($nr)
@s = $ipwe->sensor

This method returns an IPWE::Sensor object. The first form returns the IPWE::Sensor object for the sensor identified by $nr. Possible values for $nr are digits from 1-9.

The second form without any arguments returns a list of all nine sensor objects.

$ipwe->timestamp

This method returns the timestamp of the last update.

$ipwe->url

This method just returns the url the IPWE-object was constructed with.

$ipwe->print

This prints out a nice table which shows all sensors and their values. Values shown are exactly what IPWE 1 reports via its web frond-end or telnet interface (adjust your terminal size, so that the output fits on your screen).

 

IPWE::Sensor OBJECT METHODS

These are the methods to be used in order to get the weather information from a particular sensor:

$s->type

Returns the type of the sensor to be queried.

$s->address

Returns the address of the sensor to be queried.

$s->description

Returns the sensor description if available.

$s->temperature()
$s->temperature("Fahrenheit")
$s->temperature("Kelvin")
$s->temperature("Rankine")

Returns the temperature if the sensor is able to report it. With no argument (default) the unit in °Celsius (°C). Possible other units are: "Fahrenheit", "Kelvin", "Rankine"

$s->humidity

Returns the humidity if the sensor is able to report it.

$s->windspeed
$s->windspeed("m/s)
$s->windspeed("mph")
$s->windspeed("kn")

Returns the wind speed if the sensor is able to report it. With no argument (default) the unit is km/h (kilometers per hour). Possible other units are: "m/s" (meters per second), "mph" (miles per hour), "kn" (knots)

$s->beaufort

Returns the wind speed in "Beaufort".

$s->beaufort_bezeichnung

Returns the Beaufort wind speed in text form (german), like "frische Briese", "orkanartiger Sturm", etc.

$s->beaufort_description

Returns the Beaufort wind speed in text form (english), like "Fresh breeze", "Violent storm", etc.

$s->rain

Returns the amount of rain if the sensor is able to report it. The unit is "mm/24h" which equals to "l/sqm/24h" (liter per square meter in 24 hours).

$s->rain_beginning

Returns 1 (true) at rain beginning (the hash sign '#' preceeds the rain value in the web front-end of IPWE 1), otherwise the empty string "" will be returned.

$s->rain_increased

Returns 1 (true) if the amount of rain has increased in comparison to the previously measured value, otherwise the empty string "" will be returned.

$s->raining

Returns 1 (true) if either $s->rain_beginning or $s->rain_increased returns 1, otherwise the empty string "" will be returned.

$s->new_values

Returns 1 (true) if the measured values for the specified sensor have changed after execution of $ipwe->update, otherwise 0 will be returned. This can be useful e.g. if you only want to know whether new sensor values are available or not in order to control your program flow.

$s->print

This prints out a nice table which shows the information about the requested sensor. Values shown are exactly what IPWE 1 reports via its web frond-end or telnet interface (adjust your terminal size, so that the output fits on your screen).

 

DEPRECATED IPWE::Sensor OBJECT METHODS

Those are deprecated methods which still exist for backward compatibility. Do not use them any longer, they might disappear in futur releases:

$s->raining_reported

This method is deprecated. Use $s->rain_beginning instead which does exactly the same.

$s->raining_calculated

This method is deprecated. Use $s->rain_increased instead which does exactly the same.

 

REQUIRED MODULES

LWP::UserAgent; HTML::TableExtract;

 

AUTHOR

Thomas Hoerndlein

 

COPYRIGHT

Copyright (c) 2009, Thomas Hoerndlein. All rights reserved, some wrongs reversed. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.

Attachments:
Download this file (IPWE.pm)IPWE.pm[Version 0.41]18 kB2016-02-22 20:37

Überblick 

weatherinfo.pl ist ein simples CGI-Skript, welches aus den ipwewd-generierten Daten eine kleine Webseite baut. Beispiel: siehe Wetterinfo-Box auf der Startseite (Hauptmenü -> Home).

Voraussetzungen

  • Halbwegs aktuelles Linux Betriebssystem, z.B. Debian 3.1 (Sarge) oder besser
  • Perl-Interpreter
  • ipwewd

Lizenz

GPL V3

weatherinfo.pl wurde unter der General Public License (GPL) veröffentlicht.

Überblick 

Mit Hilfe des ipwewd können die Wetterdaten vom IP-Wetterdatenempfänger IPWE 1 automatisiert abgeholt werden.  ipwewd konnektiert sich über das http-Protokoll mit dem IP-Wetterdatenempfänger und legt die bereitgestellten Wetterdaten in Dateien ab oder versendet sie über das TCP-Protokoll an weitere Verarbeitungstools.

Schnittstellen

ipwewd stellt zwei Dateischnittstellen zur Verfügung:

  • Die Datei "ipwe.current" enthält den jeweils den zuletzt empfangenen Datensatz mit den jeweiligen Wetterdaten
  • Die Datei "ipwe.history" enthält alle empfangenen Datensätze und baut somit eine Historie auf

 

Als weitere Schnittstelle kann ipwewd die Wetterdaten über eine TCP-Verbindung an einen sogenannten Weather Data Processor (WDProc) versenden. Ein WDProc ist eine Folgeverarbeitung, die aufgrund der empfangenen Wetterinformationen Aktionen durchführt. 

Welche der drei Schnittstellen zum Einsatz kommen, lässt sich parametrisieren. 

Das Datensatzformat ist für alle Schnittstellen identisch:
timestamp;type;address;description;temperature;humidity;wind-speed;rain;raining;

  • timestamp: Vergangene Zeit in Sekunden seit 1.1.1970 00:00:00 Uhr
  • type: Sensortyp, z.B. Kombisensor, etc.
  • address: Adresse des Sensors
  • description: Optionale Beschreibung des Sensors (in IPWE 1 einzurichten, falls gewünscht)
  • temperature: Außentemparatur
  • humidity: Luftfeuchtigkeit in %
  • wind-speed: Windgeschwindigkeit
  • rain: Regenmenge (letzte 24 h)
  • raining: Regen-Sofortmeldung ("y" oder "n")

Beispieldatensätze:

1219542710;Kombi;;;12.0;88;4.4;1.2;n;
1219542860;Kombi;;;11.9;89;4.4;1.2;n;
1219543010;Kombi;;;11.9;89;4.7;1.2;n;
1219543160;Kombi;;;11.9;89;2.7;1.5;y;
1219543310;Kombi;;;11.9;89;4.4;1.5;n;

Voraussetzungen

  • Halbwegs aktuelles Linux Betriebssystem, z.B. Debian 3.1 (Sarge) oder besser
  • Perl-Interpreter in der Version 5.8.4

Weiterhin sind folgende Perl-Module erforderlich:

  • LWP::UserAgent
  • HTML::TreeBuilder
  • HTML::FormatText
  • Proc::Daemon
  • IO::Socket
  • Proc::PID::File;

Lizenz

GPL V3

ipwewd wurde unter der General Public License (GPL) veröffentlicht.

Changes:

Version 1.2 (23.08.2008) - Regen-Sofortmeldung + PID
Das Datensatzformat hat sich leicht geändert. Es wurde ein neues Feld "raining" (s.o.) angehängt. Es dient zur Sofortmeldung bei Regen.
Diese Version generiert ein  Prozess-Id-File wie es für UNIX-Daemons üblich ist. Dies ermöglicht vereinfachte Initskripte zum automatischen Start des Deamons.

Version 1.1 (15.08.2008) - CPU-Load und Networkload reduziert
Die Vorgängerversion prüfte den IPWE sekündlich auf neue Daten ab. Da der Sensor jedoch nur alle 150 Sekunden neue Daten an den IPWE liefert, macht eine sekündliche Abfrage keinen Sinn. Diese Version schläft für ca. 148 Sekunden nachdem sich die Daten aktualisiert haben. Hierdurch werden CPU- und Netzwerklast auf ein Minimum reduziert.

Version 1.0 (04.07.2008) - Veröffentlichtes Ursprungsrelease

Attachments:
Download this file (ipwewd.zip)ipwewd.zip[ipwewd Version 1.2]2 kB2016-02-22 20:35