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

Achtung: ELV hat den IPWE 1 leider nicht mehr im Sortiment. Er ist zwischenzeitlich nicht mehr erhältlich (Stand 25.10.2014).

 

Der IP-Wetterdatenempfängers IPWE 1 besitzt einen integrierten Webserver über den die aktuellen Informationen bezüglich Außentemperatur, Windstärke, Luftfeuchtigkeit und Niederschlagsmenge mittels Browserzugriff abgefragt werden können. Weiterhin hält der IPWE 1 die letzten 5 Datensätze zum Abruf bereit, die von den jeweiligen Außensensoren empfangen wurden. Ebenfalls implementiert ist ein Telnet-Server, welcher dieselben Informationen über das Telnet-Protokoll zugänglich macht. Der IPWE 1 ist (leider nur) als Bausatz über das Elektronikversandhaus ELV erhältlich.

IP-Wetterdatenempänger IPWE 1

BILD 1: IP-Wetterdatenempfänger

Funktionsweise

Die Wetterdaten erhält der IPWE 1 über ein Funksignal im 868 MHz-Bereich von einem oder mehreren Außensensoren. Erwähnt werden soll hierbei der Kombisensor KS 300, der Außentemperatur, Windstärke, Luftfeuchtigkeit und Niederschlagsmengen erfasst und die gemessenen Werte ca. alle 150 Sekunden aussendet.
Die Reichweite beträgt laut Herstellerangaben im Freien ca. 100m. Als Empfangsmodul kommt ein Überlagerungsempfänger zum Einsatz. Wenn höhere Reichweiten erzielt werden sollen oder wenn eine Empfangsverbesserung innerhalb von Räumlichkeiten notwendig ist, kann der Überlagerungsempfänger möglicherweise durch ein Superhet-Empfangsmodul ausgetauscht werden. Ausprobiert habe ich das allerdings nicht. Hier wäre ich für Erfahrungen dankbar.
Die Außensensoren sind batteriebetrieben, so dass auf das Verlegen von Leitungen verzichtet werden kann. Der IPWE 1 wird über ein Steckernetzteil mit Strom versorgt.
Die IP-Addresse kann fest auf dem Gerät eingestellt oder über einen DHCP-Server bezogen werden. Da das Gerät gewissermaßen als Server agiert, sollte im DHCP-Betrieb der DHCP-Server immer dieselbe IP-Addresse für den IPWE 1 vergeben.

Wissenswertes vor dem Kauf 

Über die Meinung des Herstellers "Ein Telnet-Server sorgt zusätzlich für einen einfachen Zugriff per Kommandozeile, so kann der IPWE 1 auch in eigene Softwareprojekte eingebunden werden" lässt sich streiten. Zwar funktioniert der interaktive Zugriff über "telnet" einwandfrei, die Schwierigkeiten treten jedoch auf, sobald über eigene Programme der Telnet-Server automatisiert abgefragt werden soll. Dieser verhält sich nämlich nicht wie ein üblicher Telnet-Dienst unter UNIX bzw. Linux, sondern scheint ziemlich exotisch implementiert worden zu sein. Weiterhin ist die Implementierung einer Programmierschnittstelle über Telnet nicht gerade als gelungen zu bezeichnen. Glücklicherweise braucht ihr euch mit diesem Manko nicht herumschlagen, wenn ihr unseren ipwewd-Dämon zum Abholen der Daten verwendet. Die Funktionsweise des ipwewd ist in einem eigenen Artikel beschrieben.

Wirklich unschön ist, dass es derzeit keine Funksensorsen für Windrichtung, Luftdruck und Helligkeit gibt, die ihre Daten an den IPWE 1 übertragen könnten. Demzufolge ist auch die eingebrannte Software nicht für die Auswertung solcher Sensoren ausgelegt.
Wer mit diesen Einschränkungen leben kann, ist dennoch mit dem IPWE 1 gut bedient, da sich die generierten Daten über ein Netzwerk an weitere Computersysteme übertragen und in beliebiger Art und Weise weiterverarbeiten lassen. 

Wer sich den IPWE 1 kaufen möchte, braucht auch Funksensoren, die die Daten erfassen und an diesen übermitteln. Die günstigte und flexibelste Lösung scheint hier der Kombisensor KS 300 zu sein. Bitte hierbei beachten, dass dieser Kombisensor einzeln (als Bausatz) erhältlich ist, aber auch als Paket zusammen mit einer Wetterstation WS 300. Das Paket hat einerseits einen wesentlichen Preisvorteil gegenüber dem alleinigen Kauf des Kombisensors, außerdem ist er hierbei bereits fertig montiert.

Hinweise zum Bau des IPWE 1

Alle SMD Bauteile sind bereits vorbestückt, so dass sich der Aufbau auf das Bestücken der ca. 20 konventionellen Bauteile beschränkt. In erster Line handelt es sich hierbei um Elektrolytkondensatoren, Quarze, Buchsen, Taster und das Empfangsmodul. Die notwendigen Werkzeuge beschränken sich auf einen Mikroschneider oder einen kleinen Seitenschneider, einer Spitzange sowie Lötkolben und Lötzinn.

Leiterplatte des IPWE 1

Bild 2: IPWE 1 im fertig bestückten Zustand

Da die Lötaugen verhältnismäßig klein sind, ist ein wenig Übung im Umgang mit dem Lötkolben erforderlich. Empfehlenswert sind dünne Lötspitzen und entsprechendes Lötzinn. Ein paar Grundlagen über elektronische Bauelemente schaden auch nicht - zumindest sollte man gepolte Bauteile von ungepolten unterscheiden können.

Das aus Plexiglas bestehende Gehäuse nimmt die Leiterplatte stabil ohne zusätzliche Verschraubungen auf.

 

Sonstiges

Die Bauanleitung mit weiteren technischen Informationen inklusive Schaltplan steht unter www.elv.de zum Download zur Verfügung. Ebenfalls dort zu finden sind die Beschreibungen zu den optionalen Komponenten.

Leiterplatte des IPWE 1

Bild 3: IPWE 1 Rückseite (im Gehäuse)

Erforderliche Komponenten:

1 x IP-Wetterdatenempfänger IPWE 1 Komplettbausatz
1 x Steckernetzteil (6V - 9V)

Optionale Komponenten:

Funk-Kombi-Sensor KS 200/KS 300,
Funk-Innen-/Außensensor S 300 IA,
Funk-Temperatur-/Luftfeuchtesensor ASH 2200,
Pool-Sensor PS 50
Wetterstation WS 300 (für den Betrieb des IPWE 1 nicht erforderlich). 

ipwewd und IPWE.pm

Zur automatischen Übertragung der Wetterdaten auf den PC ist auf unserer Homepage das Tool "ipwewd" (IPWE Daemon for Web Access)" erhältlich. Seit kurzem gibt es auch das Perl-Modul IPWE.pm. Dieses Modul bietet über eine objektorientierte API einfachen Zugriff auf die Informationen des IPWE 1. Nähere Infos sind in den zugehörigen Artikeln zu finden.

 

Überblick 

Um Uhrzeit und Datum auf den Bus zu bringen, ist keine physikalische EIB-Funkuhr notwendig. eibtime.pl wandelt die Systemzeit eines Linux-PCs in ein EIB-kompatibles Format um und schickt diese über EIBD auf zugehörige Gruppenadressen für Datum und Uhrzeit. Dies ermöglicht so die Anzeige der aktuellen Zeit- und Datumsinformationen auf Ausgabegeräten wie Infodisplays, Raumcontrollern usw.

Wer seinen PC / Server zudem noch von einem öffentlichen Zeitserver synchronisieren lässt, bekommt somit eine hochgenaue Uhrzeit, quasi ohne Investitionskosten, auf den Bus. Als Zeitserver empfiehlt sich pool.ntp.org.

Voraussetzungen

  • Linux Betriebssystem
  • Perl-Interpreter, Version nahezu egal
  • Martin Köglers EIBD von der TU Wien

Lizenz

 

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

Attachments:
Download this file (eibtime.pl)eibtime.pl[Version 1.0b]1 kB2014-10-18 06:23