Ws2300

Hallo zusammen,

hat schonmal einer die Wetterstation WS2300 über den IPS Com Port angesprochen ?

Danke

Gruß
Oliver

Salü

Hab da vor Jahren mal versucht die Daten per seriell von meiner WS2300 einzulesen,was leider scheiterte. Den anno dazumal konnten das nicht mal andere Wetterprogramme. Ich hab dann die Heavy Weather Software Version 2.0 installiert den in dieser werden alle Werte minütlich in eine Datei Namens currdat.lst geschrieben, von wo ich Sie nun per PHP-Script in IPS einlese !

Gruss Aschi

Jo, habe ich. Es läuft auch ganz passabel, allerdings musste ich die Variablen alle manuell anlegen und das Progrämmchen zum Auslesen immer extern via System aufrufen.
Es lief bis nach einem Neustart meiner Vmware Sitzung eigentlich stabil. Jetzt habe ich keinen Zugriff mehr auf den COM-Port :confused: Ist zwar nicht schön, aber funktionierte halt bei mir.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Wetterstation_auslesen.ips.php
Trigger  : 
Interval : 
*/

$strFile = "C:\Programme\Windows-bin\daten.xml";
$xmlFile = file($strFile);
$ws2300xml = "C:\Programme\Windows-bin\xml2300.exe $strFile";
$position = 0;
$varname[0] = "";
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "cdata");

//Aufruf 2300xml via system...
system($ws2300xml, $status);

$i = 0;
$maxTries = 5;
//filesize > 0?
while (filesize($strFile) == 0) {
// warte 5 Sekunden...
   sleep(10);
   echo "Waiting... i$";
   $i++;
   if ($i = $maxTries) {
      die ("Keine Daten in $strFile...");
   }
}



foreach($xmlFile as $elem)
{
   xml_parse($parser, $elem);
}
xml_parser_free($parser);

function startElement($parser, $element_name, $element_attribute) {
global $position;
global $varname;

$varname[$position] = $element_name;
$position = $position + 1;
}


function endElement($parser, $element_name) {
global $position;

$position = $position - 1;
}

function cdata($parser, $element_inhalt) {
global $varname;
global $position;

$var = "";

$element_inhalt = trim($element_inhalt);
if ($element_inhalt != "") {
   for ( $i = 0; $i < ($position - 1); $i++ ) {
      $var .= "$varname[$i]_";
   }
   $var .= $varname[$i];

   switch (substr($var, -4, 4)) {
      case "DATE":
         SetValueString($var, $element_inhalt);
         break;
      case "TIME":
         SetValueString($var, $element_inhalt);
         break;
      case "ENCY":
         SetValueString($var, $element_inhalt);
         break;
      case "CAST":
         SetValueString($var, $element_inhalt);
         break;
      case "TEXT":
         SetValueString($var, $element_inhalt);
         break;
      default:
         SetValueFloat($var, doubleval($element_inhalt));
   }
}
}

Die Binaries erhälst du von hier. Das Projekt stammt von Kenneth Lavrsen.

Gruß,

Specky

PS: Ist mein erstes PHP Skript, also Verbesserungsvorschläge sind DRINGEND erwünscht :smiley:

Hallo,
der Link mit den Binaries scheint nicht mehr zu funktionieren.

Hat die jemand und kann die bitte mal hier in den Beitrag als Anhang reinlegen?

Das interessaante daran, die WS2300 wurde von 250 auf 99 Euronen preisgesenkt. Dann noch die Kabel- und Netzteil-Option bei 8sec Abtastintervall lassen einen Versuch lohnenswert erscheinen…

Gruß Gerd

Oder hat jemand ein aktuelleres Interface / Link für die WS2300?

Edit:

…scheint genauso für die Quellen-Links von seiner (noch erreichbaren) Homepage zu gelten. Gehen auch nicht.

http://sourceforge.net/search/?type_of_search=soft&type_of_search=soft&words=open2300

oder im Search Bereich vom Sourceforge mal open2300 probieren.

Grüße,
Josef.

hmmm. Am Ende ist auch das der gleiche, schon oben genannte und (im Moment) nicht funktionierende Link. Alles klappt, bis man zum eigentlichen Download kommt.

Vielleicht ist der ja auch nur temporär nicht verfügbar. Ich probier das in den nächsten Tagen nochmal.