Einsatz:
Einheitliche Implementierung von WS300-Series Sensoren (Devices) von verschieden Empfangsgeräte (Splitter) in IP-Symcon
Download: www.tdressler.net
Komponenten:
IPWE1-Splitter - Auswertung der Anzeige eines ELV IPWE1 Netzwerk Empfängers
WDE1-Splitter - Auswertung des Logfiles eines ELV WDE1
WS300PC-Splitter - Auswertung der Sensordaten, die von einer ELV WS300PC- USB Wetterstation empfangen worden sind
FS20WUE-Splitter - Auswertung der Daten eines ELV FS20WUE -Empfängers für Wetterdaten und FS20-Signale
WS300Sensor Device Anzeige der Daten eines spezifischen Sensors
Kompatibilität und Voraussetzungen
IP-Symcon Kernel/SDK Version 2.5+ (die Module sind SDK-Versionsspezifisch)
IP-Symcon FTDI-Modul
IP-Symcon ComPort-Modul
IP-Symcon WWWReader-Modul
von den jeweiligen Empfangsgeräten unterstützen Sensoren S 300 IA, ASH 2200, PS 50, KS 200/300, S 300 TH
WS300PC mit Device-ID (USB-Description) 'eQ3 WS 300 PC II',ab V2.1+ auch 'ELV WS300 PC' (andere lagen dem Autor nicht vor, kann aber ergänzt werden)
IPWE1 mit oder ohne Paßwortschutz
viele (nicht alle) gerätespezifische Features
Installation
Die Datei ws300series.dll muss in das IP-Symcon-“modules“-Unterverzeichnis kopiert werden. Anschließend muss der Dienst neu gestartet werden.
Konfiguration:
Zunächst muss das passende Splittermodul für die eingesetzte Hardware ausgewählt und eine Instanz angelegt werden. Dazu (entsprechend der jeweils gültigen IP-Symcon-Dokumentation ) in der Verwaltungskonsole "Objekt hinzufügen"->"Instanz-Hinzufügen" auswählen. Im nächsten Fenster erst den Haken bei "Alle Module anzeigen" machen, dann kann man links die Sektion "Splitter auswählen, wodurch rechts alle Splittermodule auftauchen. Dort kann das entsprechende Splittermodul selektiert und der Dialog mit OK verlassen werden.

Anschließend muss die Konfiguration überprüft werden. Bei Bedarf legt das Splittermodul sich eine passende "Übergeordnete-Instanz" an, verwendet aber bevorzugt schon vorhandene kompatible Parents. Diese Auswahl muss unbedingt geprüft und ggf. korrigiert werden.
Wichtig: Sind im System schon "SendText-Interface kompatible"-IO-Instanzen vorhanden, wird sich das Modul diese Instanz bei Neuanlage als parent suchen. Das kann leider dazu führen, das deren Konfiguration geändert wird. Diese Konflikte müssen z.Z. manuell evtl. mit einer Neuanlage einer IO-Instanz und deren Zuweisung an den WS300-Splitter gelöst werden (siehe "Bekannte Probleme"
Die eingestellte Konfiguration muss nun noch mit "Übernehmen" und "OK" bestätigt werden. Evtl. noch notwendige Zusatzkonfigurationen können leider auf Grund einer Beschränkung des aktuellen IP-Symcon-SDK nicht auf diesen Seiten vorgenommen, aber über PHP-Funktionen eingestellt werden. Dazu ist die Modulreferenz zu konsultieren.
Bei einer richtigen Verknüpfung von Parent (IO-Modul) und Splitter ist von nun an ein Datenempfang und Verarbeitung möglich. Nach Ablauf der eingestellten (IPWE1 und WS300PC =300s) bzw. vorgegebenen (WDE1 =ca. 180s) Ausleseintervalle sollten die angeschlossenen Sensoren als neue Objekte angelegt worden sein. Beim FS20WUE werden die Instancen nach der erfolgreichen Auswertung des Empfanges angelegt. Das manuelle Erstellen der Sensor-Instanzen ist deshalb i.d.R. nicht notwendig. Bei Problemen und Fehlanzeigen liefert die Debug-Funktion wertvolle Hinweise
WSWIN-Unterstützung (nicht für FS20WUE)
Zur Nutzung der ab Modulversion V2.20.68 vorhandenen WSWIN-Unterstützung muss in IPS mittels der xxx_setWsWinFile('<Dateiname>') -Funktion ein Dateiname übergeben werden, worin die Daten für den WSWIN-Dateiüberwachungsmodus gespeichert werden. Details dazu in der Funktionsreferenz. Diese Datei wird unmittelbar nach dem Auslesen durch WSWIN gelöscht und kann in der Regel nur gefunden werden, wenn WSWIN nicht läuft.
WSWIN muss für den Dateiüberwachungsmodus(CSV) ohne echtes Interface konfiguriert werden (Menü Wetterstation->Interface->Dateiüberwachung). Als Wetterstation kann der Typ „WS2000PC“ verwendet werden. Details finden sich in der WSWIN-Hilfe.

Als Regenmenge wird das Produkt aus Zählerstand und Umrechnungsfaktor (Summe=Typ134) übergeben . Nicht genutzte Felder erhalten den Wert „0“. Bei der WS300PC der Luftdruck wie aus dem Interface gemeldet übergeben. Da darin schon die Korrektur für die Höhe enthalten ist, darf im WSWIN Höhe „0“ ohne Korrektur eingetragen werden.
1. IPWE1
Funktion
Extrahiert Daten aus der Webseite des IPWE1-Empfängers
Status-Variablen
keine
Konfiguration
URL der Weboberfläche im Parent-Modul setzten. Dabei ist entweder die ipwe.cgi oder die sensors.cgi einzustellen
Beispiel: http://ipwe1/ipwe.cgi
Authentifikation und Timer-Intervall im Parent-modul oder über PHP-Funktionen setzen
weitere Parameter werden über freigegebene Get/Set PHP-Funktionen eingestellt

PHP-Funktionen
Alle Funktionen haben im PHP den Präfix "IPWE1_"
function GetUrl:string
liefert die zuletzt eingestellte URL zurück
procedure SetInterval(Intervall: integer);
setzt das Auslese-Intervall für den WWWReader in Sekunden. Standard sind 300s=5min
Beispiel: IPWE1_SetInterval(600); //Ausleseintervall=600s
Hinweis: Die gleiche Funktionalität bietet das WWWReader-Modul auf seiner Konfigurationsseite. Zusätzlich ist dort die Checkbox "Timer aktiviert" zu setzen.
function GetInterval: integer;
liest das zuletzt eingestellte Ausleseintervall
function GetLogFile: string;
liest den Namen der eingestellten Logdatei. Leerer String, wenn nicht gesetzt.
procedure SetLogFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard)
Beispiel: IPWE1_SetLogFile("ipwe1.log"); //Log to %IP-Symcon%\ipwe1.log
Time;Typ;id;Name;Temp;Hum;Wind;Rain 2009-04-17 07:54:49;T/F;0; Wohnzimmer;21.9;43;;; 2009-04-17 07:54:49;T/F;1; Büro UG;20.4;45;;; 2009-04-17 07:54:49;T/F;4; S300;23.1;46;;; 2009-04-17 07:54:49;T/F;5; Werkstatt;23.2;0;;; 2009-04-17 07:54:49;T/F;7;Serverschrank;18.3;0;;; 2009-04-17 07:54:49;Kombi;8;Kombisensor;8.6;94;0.0;54.6;
procedure SetWsWinFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine WSWIN -kompatible CSV-Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard)
Beispiel: IPWE1_SetWsWinFile("wswin.csv"); //Log to %IP-Symcon%\wswin.csv erzeugt eine Datei mit diesem Inhalt.
,,2,18,3,19,4,20,5,21,6,22,7,23,8,24,9,25,10,26,1,17,33,134,35 03.06.2010,20:38,18.6,58,21.9,62,25.5,35,0,0,23.6,46,0,0,0,0,22.6,0,0,0,0,0,0,0,0
function GetWswinFile: string;
liest den Namen der eingestellten WSWIN-Datei. Leerer String, wenn nicht gesetzt.
function GetAuth:string;
liest die aktuell eingestellte Authentifizierung-Information zur Nutzung durch den WWWReader. Format "User:Password"
procedure SetAuth(auth:string)
setzt die aktuell eingestellte Authentifizierungs--Information zur Nutzung durch den WWWReader. Format "User:Password". Es müssen User und Password gesetzt werden, sonst wird die Passwordabfrage nicht aktiviert.
Beispiel: IPWE1_SetAuth("admin:adminpw"); //Setzt User und Password für WWWReader
Hinweis: Die gleiche Funktionalität bietet das WWWReader-Modul auf seiner Konfigurationsseite. Zusatzlich ist dort die Checkbox "Benutze Authentifizierung" zu setzen.
procedure SetRainPerCount(I: integer);
setzt die vom Modul zur Umrechnung von mm in Ticks genutzte Regenkonstante in Tausend (default 295)
Beispiel: IPWE1_SetRainPerCount(294); //Setzt Umrechnungskonstante auf 0.294mm Regen pro Tick
function GetRainPerCount: integer;
liest die zuletzt eingestellte Regenkonstante
function update:boolean;
Startet den Ausleseprozess durch den WWWReader unabhängig vom eingestellten Timer und ist das Target der Funktion "update" eines WS300Device. Es wird immer True zurückgegeben.
Alle Set-Funktionen müssen mit einem finalen Aufruf von IPS_ApplySettings übernommen werden.
2. WDE1
Funktion
Extrahiert Daten aus der Logging-Ausgabe des WDE1-Empfängers
Status-Variablen
keine
Konfiguration
Der WDE1 muss in den Auslieferungszustand konfiguriert sein (9600 bit/s, Datenausgabe im OpenFormat). Details dazu stehen in der Gerätebeschreibung
Der mitgelieferte serielle Treiber muss installiert sein und dem Gerät ist ein virtueller COM-Port zugewiesen
serielle-Parameter werden im Parent-Modul gesetzt
weitere Parameter werden über freigegebene Get/Set PHP-Funktionen eingestellt

PHP-Funktionen
Alle Funktionen haben im PHP den Präfix "WDE1_"
function GetComPort: string;
liest den augenblicklich konfigurierten IOPort
procedure SetLogFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard).Die Daten werden an eine vorhandene Datei angehangen.
Beispiel: WDE1_SetLogFile("wde1.log"); //Log to %IP-Symcon%\wde1.log
Time;Typ;id;Name;Temp;Hum;Bat;Lost;Wind;Rain;Raining 2009-05-09 20:18:04;T/F;4;;23.2;46;;;;;NO 2009-05-09 20:20:59;T/F;4;;23.3;46;;;;;NO 2009-05-09 20:23:54;T/F;4;;23.2;46;;;;;NO 2009-05-09 20:26:49;T/F;4;;23.2;45;;;;;NO
function GetLogFile: string;
liest den Namen der eingestellten Logdatei. Leerer String, wenn nicht gesetzt.
procedure SetWsWinFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine WSWIN -kompatible CSV-Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard)
Beispiel: WDE1_SetWsWinFile("wswin.csv"); //Log to %IP-Symcon%\wswin.csv
,,2,18,3,19,4,20,5,21,6,22,7,23,8,24,9,25,10,26,1,17,33,134,35 03.06.2010,20:38,18.6,58,21.9,62,25.5,35,0,0,23.6,46,0,0,0,0,22.6,0,0,0,0,0,0,0,0
function GetWswinFile: string;
liest den Namen der eingestellten WSWIN-Datei. Leerer String, wenn nicht gesetzt.
procedure SetRainPerCount(I: integer)
setzt die vom Modul zur Umrechnung von Ticks in mm genutzte Regenkonstante in Tausend (default 295)
Beispiel: WDE1_SetRainPerCount(294); //Setzt Umrechnungskonstante auf 0.294mm Regen pro Tick
function GetRainPerCount: integer;
liest die zuletzt eingestellte Regenkonstante
3. WS300PC
Funktion
Extrahiert Daten aus der USB-Schnittstelle des WS300PC Loggers
Status-Variablen
History record count (Integer)->Anzahl der ausgelesenen History-Records (siehe Script-Beispiel "WS300_auslesen")
Last History Record(String) ->Datum des letzten gelesenen History Records im Format YYYY-MM-DD HH24:MI:SS
More History Records(boolean)->Flag, ob noch mehr History-Records auslesbar sind
Konfiguration
Der WS300PC-Logger connected sich an das nächste FTDI-Interface und versucht ein Device mit der Description 'eQ3 WS 300 PC II' oder 'ELV WS 300 PC' zu finden. Es gibt sich aber auch mit jedem SendText-Interface zufrieden
Der mitgelieferte USB Treiber muss installiert sein Es wird der Treiber aus dem WeatherProfessional-Paket empfohlen (FTDI 3.1.4). Die Software selbst muss nicht installiert sein.
serielle-Parameter werden im Parent-Modul gesetzt
weitere Parameter werden über freigegebene Get/Set PHP-Funktionen eingestellt

PHP-Funktionen
Alle Funktionen haben im PHP den Präfix "WS300PC_"
procedure SetReadInterval(Intervall: integer);
setzt das Auslese-Interval in Sekunden. Standard sind 300s=5min
Beispiel: WS300PC_SetReadInterval(600); //Ausleseintervall=600s
function GetReadInterval: integer;
liest das zuletzt eingestellte Ausleseintervall
procedure SetLogFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard). Die Daten werden an eine vorhandene Datei angehangen.
Beispiel: WS300PC_SetLogFile("ws300.log"); //Log to %IP-Symcon%\ws300pc.log
Time;Typ;id;Name;Temp;Hum;Bat;Lost;Wind;Rain;IsRaining;RainCounter;Pressure;willi;
2009-05-09 21:37:34;;4;;23.4;45;OK;0;
2009-05-09 21:37:34;;9;;23.7;47;;;;;;;1023;0;
2009-05-09 21:42:34;;4;;23.4;45;OK;0;
2009-05-09 21:42:34;;9;;23.8;47;;;;;;;1023;0;
2009-05-09 21:47:35;;9;;23.8;47;;;;;;;1023;0;
function GetLogFile: string;
liest den Namen der eingestellten Logdatei. Leerer String, wenn nicht gesetzt.
procedure SetWsWinFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine WSWIN -kompatible CSV-Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard)
Beispiel: WS300PC_SetWsWinFile("wswin.csv"); //Log to %IP-Symcon%\wswin.csv
,,2,18,3,19,4,20,5,21,6,22,7,23,8,24,9,25,10,26,1,17,33,134,35 03.06.2010,20:38,18.6,58,21.9,62,25.5,35,0,0,23.6,46,0,0,0,0,22.6,0,0,0,0,0,0,0,0
function GetWswinFile: string;
liest den Namen der eingestellten WSWIN-Datei. Leerer String, wenn nicht gesetzt.
function GetAltitude: integer;
gibt die gespeicherte Standorthöhe zurück. Diese Information wird für die Berechnung des Luftdrucks benötigt. Zuvor ist (einmalig für alle Get-Funktionen) GetConfig auszuführen.
function GetRainPerCount: integer;
liest die gespeicherte Regenkonstante. Zuvor ist (einmalig für alle Get-Funktionen) GetConfig auszuführen.
function GetWS300PCinterval: integer;
liest das gespeicherte Messintervall. Zuvor ist (einmalig für alle Get-Funktionen) GetConfig auszuführen.
function GetConfig:boolean;
liest die in der WS300 gespeicherte Konfiguration über angemeldete Sensoren, Höhe, Leseintervall und Regenkonstante
procedure SetAltitude(I: integer);
setzt eine neue Einstellung für die Höhe im Modul. Zur Übergabe an die WS300 muss zusätzlich (einmalig für alle Set-Funktionen) setConfig aufgerufen werden
procedure SetRainPerCount(I: integer);
setzt eine neue Einstellung für die Regenkonstante im Modul. Zur Übergabe an die WS300 muss zusätzlich (einmalig für alle Set-Funktionen) setConfig aufgerufen werden
procedure Setws300pcinterval(I: integer);
setzt eine neue Einstellung für das Messintervall im Modul. Zur Übergabe an die WS300 muss zusätzlich (einmalig für alle Set-Funktionen) setConfig aufgerufen werden
function setConfig:boolean
schreibt die im Modul gespeicherten Werte zurück in die WS300PC. Dadurch wird anschließend ein Reset mit folgender 10minutiger Neusynchronisation der Sensoren bewirkt
function GetVersion:string;
liest die Firmwareversion aus der WS300PC
function GetDeviceID: string;
ermittelt den angeschlossene IO-GeräteID (ComPort oder USB Serial Number)
function getCurrentRecord:boolean;
liest den aktuellen Record aus dem Speicher der WS300PC und entspricht der Funktion "update" und dem Aufruf des Timers. Anschließend wird der Timer neu gesetzt.
function update:boolean;
entspricht der Funktion "getCurrentRecord" und ist das Target der Funktion "update" eines WS300Device
function getNextRecord(logfile:string):boolean;
liest nächsten historischen Record aus der WS300PC. Der Dateiname eines Logfiles für historische Daten wird übergeben. Das kann/sollte ein andere Datei als für die Current-Records durch die Funktion "SetLogfile" eingestellte Datei sein. Die Daten werden an eine vorhandene Datei angehangen.
Anmerkung:
Mit dieser Funktion wird der älteste verfügbare Record in der WS300PC ausgelesen und aus dem Speicher gelöscht. Sind keine Fehler aufgetreten, wird True zurückgegeben. Durch mehrfaches Aufrufen der Funktion bis False können alle gespeicherten Sätze nach und nach ausgelesen werden. Dabei ist die max. Laufzeit eines PHP-Scriptes (30s) zu beachten, da das vollständige Auslesen mehrere Minuten in Anspruch nehmen kann. Im folgenden Beispiel wird deshalb das Script immer wieder neu gestartet, bis keine Daten mehr da sind oder ein Fehler vorliegt. Die Anzahl der Sätze wird dabei in der Statusvariablen "HistoryRecordCount", das Datum des letzten Satzes in der Status-Variable "LastHistoryRecord" und der letzte Rückgabe-Status in der Variable "MoreHistoryRecords" zur nachträglichen Auswertung abgelegt.
Beispiel-Script: ws300_auslesen.php
<?php
//Fügen Sie hier ihren Skriptquellcode ein,
if (WS300PC_getNextRecord(37470 /*[WS300PC USB]*/,'alldata.log') {
IPS_RunScript($IPS_SELF);
}
?>
function GetHistoryCount: integer;
gibt den Wert der StatusVariablen "History RecordCount" zurück
4. FS20WUE
Funktion
Verarbeitung der Daten des FS20WUE Empfängers. Es werden sowohl die Wetterdaten der WS300 Sensoren als auch empfangene FS20 Daten (z.B von der FS20FB oder FS20 Regensensor) ausgewertet.
Status-Variablen
Das Modul hat keine Status-Variablen
Konfiguration
Das FS20WUE Modul connected sich an das nächste SendText-Interface. Bei Anschluss über USB ist das der virtuelle ComPort, kann aber genauso gut der ClientSocket eines XPort sein. GGfls ist die Zuordnung an das gewünschte IO-Modul zu korrigieren.
serielle-Parameter eines ComPort-Moduls werden von FS20WUE auf 4800,8,N,1 gesetzt.
Die Einstellung des FS20WUE-Controlers wird auf "Enable Wetter- und FS20-Datenempfang, Versand sofort" festgelegt
weitere Parameter werden über freigegebene Get/Set PHP-Funktionen eingestellt

PHP-Funktionen
Alle Funktionen haben im PHP den Präfix "FS20WUE__"
function GetComPort: string;
liest den augenblicklich konfigurierten ComPort aus den Settings
procedure SetLogFile(name:string);
setzt Filename zum Loggen der empfangenen Daten in eine Datei. Relative Pfadnamen beziehen sich auf die Position von ips.exe. Es wird eine CSV-Datei im folgenden Format erzeugt. Ist kein Dateiname gesetzt oder ist dieser leer, wird keine Logdatei erzeugt(Standard). Die Daten werden an eine vorhandene Datei angehangen.
Beispiel:FS20WUE_SetLogFile($id,"fs20wue_wetter.log"); //Log to %IP-Symcon%\fs20wue_wetter.log
Time;Typ;id;Name;Temp;Hum;Bat;Lost;Wind;Rain;IsRaining;RainCounter;Pressure;willi; 2009-05-09 21:37:34;;4;;23.4;45;OK;0; 2009-05-09 21:37:34;;9;;23.7;47;;;;;;;1023;0; 2009-05-09 21:42:34;;4;;23.4;45;OK;0; 2009-05-09 21:42:34;;9;;23.8;47;;;;;;;1023;0; 2009-05-09 21:47:35;;9;;23.8;47;;;;;;;1023;0;
function GetLogFile: string;
liest den Namen der eingestellten Logdatei. Leerer String, wenn nicht gesetzt.
procedure SetRainPerCount(I: integer)
setzt die vom Modul zur Umrechnung von Ticks in mm genutzte Regenkonstante in Tausend (default 295)
Beispiel: FS20WUE_SetRainPerCount($id,294); //Setzt Umrechnungskonstante auf 0.294mm Regen pro Tick
function GetRainPerCount:integer;
liest die zuletzt eingestellte Regenkonstante
Beispiel:Testscript
<?php //Fügen Sie hier Ihren Skriptquellcode ein $id=52002; FS20WUE_SetRainPerCount($id,360); print FS20WUE_GetRainPerCount($id)."\n"; print FS20WUE_GetComPort($id)."\n"; FS20WUE_SetLogFile($id,'fs20wue.log'); print FS20WUE_GetLogFile($id)."\n"; ?>

4. WS300Device
Funktion
Anzeige der von den Splittern aufgearbeiteten Sensor-Daten. Dabei wir für jeden Sensor pro Splitter eine eigene Instanz angelegt und mit dem anlegenden Splitter verknüpft. Jede Instanz referenziert auf die Device-ID des Sensors. Sensoren mit der Device-ID 0-7 sind reine Temperatur (und Feuchte-)-Sensoren. Der Kombisensor hat immer die ID8 und der interne Sensor der WS300PC die ID9. Letztere haben zusätzliche Funktionen.
Status-Variablen
für alle Sensoren
Temperature(Float) mit Profile dpTemperature
Hum(integer) mit Profile dpHumidity
für den Kombi-Sensor
Wind(Float) in kmh mit Profile dpWindSpeed->Windgeschwindigkeit
Rain(Float) in mm mit Profile dpRainFall->angezeigter oder mit Regenkonstante aus Counter berechneter(WDE1) Regen
RainCounter(Integer) in Ticks mit Profile IntegerProfile('Counter4196', '', 'ticks', 0, 4196, 1)->Anzahl Wippenschläge oder mit Regenkonstante berechnet aus Rain(IPWE1)
isRainig(boolean) mit Profile BooleanProfile('Raining', 'Is Raining','No Rain')->Regen jetzt Flag
für den Internen WS300PC-Sensor
Pressure(Integer) Luftdruck in hPa mit Profile dpAirPressure
Willi(Integer) Wettervorhersage mit Profile IntegerProfile('Willi', '', '', 0, 7, 1))
für Funksensoren, die an eine WS300PC senden
Battery(Boolean) Batteryzustand mit Profile dpReversedBattery
LostRecords (Integer) Empfangsfehler(0-15)
Konfiguration
keine Konfiguration erforderlich
PHP-Funktionen
Alle Funktionen haben im PHP den Präfix "WS300SENSOR_"
procedure SetDeviceID(DeviceID: Integer);
ist als Schnittstelle zum Konfigurationsdialog gedacht und sollte nur in Ausnahmefällen direkt aufgerufen werden. Damit wird die Sensorid gesetzt, auf die die Instanz reagiert. Es können durchaus mehrere Instanzen pro SensorID gleichzeitig im System sein
function GetDeviceID:integer;
gibt die aktuell konfigurierte Sensor-ID zurück
function update:boolean;
fordert den angeschlossenen Splitter zur Datenaktualisierung auf. Dabei wird die Update-Funktion des Splitters ausgeführt.

Bekannte Probleme
Beim Starten des Service ist u.U. Eine Meldung zu lesen, das Variablen nicht existieren. Diese Meldung kann ignoriert werden.
10.05.2009 16:30:49.134 | 41988 | MESSAGE | WS300 Series Sensor | Creating... 10.05.2009 16:30:49.134 | 41988 | DEBUG | WS300 Series Sensor | Set Device ID:5 10.05.2009 16:30:49.135 | 41988 | ERROR | WS300 Series Sensor | Variable #20688 existiert nicht 10.05.2009 16:30:49.135 | 41988 | ERROR | WS300 Series Sensor | Variable #40400 existiert nicht 10.05.2009 16:30:49.135 | 41988 | ERROR | WS300 Series Sensor | Variable #42021 existiert nicht
Beim Anlegen eines Splitters kann es vorkommen, das eine schon genutzte IO-Instanz als Parent Assistenz und vorkonfiguriert wird. Workaholic: Manuelle Konfiguration eines neuen IO-Moduls und Korrektur der Einstellungen des falsch zugeordneten Moduls
Beim Löschen eines Splitters als letztem Teil des Baumes kann die Meldung kommen "Fehler in ips.exe Kein Parent connected". Die Konsole lässt sich dann nur noch schließen. Workaround: Konsole schließen und neu öffnen. Anschließend kann der Splitter problemlos entfernt werden, wenn keine zugeordneten Sensorinstanzen mehr existieren.