Ich habe ein WS2500-PC an der Fujitsu-Siemens mit Windows XP Embeded.
Keine Harddisk, nur eine Compact-Flash-Karte. Die Programme und Daten sind am Server. Dieser PC stürzt immer wieder mit Memory-Fehler ab.
IP-Symcon ist überhaupt nicht darauf gelaufen.
Die WS2500-PC hat eine Batterie und einen Buffer für ein paar Tage Daten im 15-Minutenrythmus.
Als Software habe ich WSWin von http://www.pc-wetterstation.de im Einsatz.
Mein Script in WSWIN:
%customfile=homecontrol.txt%
%unit_off%
Datum: %ws_day%.%ws_month%.%ws_year%
Zeit: %ws_hour%:%ws_minute%
%longslabel[1]%: %curval[1]%
%longslabel[2]%: %curval[2]%
%longslabel[5]%: %curval[5]%
%longslabel[6]%: %curval[6]%
Tempmin: %curminmaxhour[1,0,2]%
Zeitmin: %mintimecurday[2]%
Tempmax: %curminmaxhour[2,0,2]%
Zeitmax: %maxtimecurday[2]%
Sonnenakt: %curval[37]%
Sonnenlastst: %curminmaxhour[4,1,37]%
Sonnenstunden: %sunday%
Sonnenint: %sunintenscur%
Sonnenschein: %sunstart%
SonneLux: %sunstartlux%
SonnenArt: %suntxt%
AktWind: %windms%
Sonnenaufgang: %ws_sunrise%
Sonnenuntergang: %ws_sunset%
In IP-Symcon verwende ich dann einige Daten in:
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : GetWS2000Data.ips.php.ips.php
Trigger :
Interval :
*/
$lines = file('L:\WsWin\Html\homecontrol.txt');
/*
$zz = GetValueInteger("TimeZaehler");
if ($zz>100) {
$zz=0;
}
$zz++;
SetValueInteger("TimeZaehler", $zz);
$Doseon =GetValueBoolean("Dose2211");
if ($Doseon == True) {
FS20_SwitchMode(20436, False);
SetValueBoolean('InfoVar',false);
}
else {
FS20_SwitchMode(20436, True);
SetValueBoolean('InfoVar',true);
}
*/
foreach($lines as $line) {
$pos=strpos($line,":");
$variable = substr($line,0,$pos);
switch ($variable) {
case 'Sonnenaufgang':
$pos=strpos($line,":");
SetValueString('Sonnenaufgang',trim(substr($line,$pos+1)));
break;
case 'Sonnenuntergang':
$pos=strpos($line,":");
SetValueString('Sonnenuntergang',trim(substr($line,$pos+1)));
break;
case 'AktWind':
$pos=strpos($line,":");
SetValueFloat('AktWind',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Temperatur Außen':
$pos=strpos($line,":");
SetValueFloat('Aussentemp',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Temperatur Innen':
$pos=strpos($line,":");
SetValueFloat('Innentemp',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Temperatur 4':
$pos=strpos($line,":");
SetValueFloat('GStemp',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Temperatur 5':
$pos=strpos($line,":");
SetValueFloat('Pooltemp',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
$Pooltemp=24.00;
break;
case 'Tempmax':
$pos=strpos($line,":");
SetValueFloat('Tempmax',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Tempmin':
$pos=strpos($line,":");
SetValueFloat('Tempmin',doubleval(str_replace(',','.',trim(substr($line,$pos+1)))));
break;
case 'Sonnenstunden':
$pos=strpos($line,":");
SetValueString('Sonnenstunden',trim(substr($line,$pos+1)));
break;
case 'Sonnenlastst':
$pos=strpos($line,":");
SetValueInteger('SonneLastSt',intval(trim(substr($line,$pos+1))));
break;
case 'Zeitmax':
$pos=strpos($line,":");
SetValueString('Zeitmax',trim(substr($line,$pos+1)));
break;
case 'Zeitmin':
$pos=strpos($line,":");
SetValueString('Zeitmin',trim(substr($line,$pos+1)));
break;
case 'Zeit':
$pos=strpos($line,":");
SetValueString('TempZeit',trim(substr($line,$pos+1)));
break;
case 'Datum':
$pos=strpos($line,":");
SetValueString('TempDatum',trim(substr($line,$pos+1)));
break;
case 'SonnenArt':
$pos=strpos($line,":");
SetValueString('Sonne',trim(substr($line,$pos+1)));
break;
}
}
$varname = "WETTER_www-wetter-net.Data"; // this ips-variable must be type 'String' !
$s = GetValueString( $varname);
$data = wddx_deserialize( $s);
$heute_min=(float)$data['VORHERSAGE'][1]['TempMin'];
$heute_max=(float)$data['VORHERSAGE'][1]['TempMax'];
$Tempmin=GetValueFloat('Tempmin');
$Tempmax=GetValueFloat('Tempmax');
//$Pooltemp=GetValueFloat('Pooltemp');
$Aussentemp=GetValueFloat('Aussentemp');
$SonneLastSt=GetValueInteger('SonneLastSt');
$Baden=GetValueBoolean('Baden');
$Tempzeit=substr(GetValueString('TempZeit'),0,2);
$AktWind=GetValueFloat('AktWind');
$Sonnenaufgang=GetValueString('Sonnenaufgang');
$Sonnenuntergang=GetValueString('Sonnenuntergang');
$Markieseautomatik =GetValueBoolean('MarkieseAutomatik');
if ($Tempmax>$heute_max)
{
SetValueFloat('TempMaxKor',$Tempmax-$heute_max);
}
if ($Tempzeit<='18')
{
if ($Tempmin<$heute_min)
{
SetValueFloat('TempMinKor',$Tempmin-$heute_min);
}
}
if ($Tempzeit=='21')
{
SetValueFloat('TempMaxKor',$Tempmax-$heute_max);
}
if ($Tempzeit=='10' or $Tempzeit=='11' or $Tempzeit=='17')
{
SetValueFloat('TempMinKor',$Tempmin-$heute_min);
}
$Sonnetext=substr(GetValueString('Sonne'),0,4);
if ($SonneLastSt>0 or $Sonnetext=='Sonn' or $Sonnetext=='sonn' or $Sonnetext=='leic' or $Aussentemp>=$Pooltemp or $Pooltemp>30 or $Baden==True)
{
FS20_SwitchMode(13011, True);
FS20_SwitchMode(55542, False);
}
else
{
FS20_SwitchMode(13011, False);
FS20_SwitchMode(55542, True);
}
if ($AktWind>13)
{
SetValueBoolean("MarkieseAutomatik", False);
FS20_SwitchMode(49511, False);
FS20_SwitchMode(62900, True);
SetValueBoolean('MarkieseAusfahren',False);
SetValueBoolean('MarkieseEinfahren', True);
IPS_RunScript('MarkieseStart');
}
else
{
$Zeit=date("H:i");
SetValueString('Zeit',$Zeit);
if ($Markieseautomatik==True)
{
if ($Zeit>$Sonnenuntergang)
{
//Einfahren
FS20_SwitchMode(62900, True);
FS20_SwitchMode(49511, False);
SetValueBoolean('MarkieseAusfahren',False);
SetValueBoolean('MarkieseEinfahren', True);
IPS_RunScript('MarkieseStart');
}
else
{
if ($Zeit>$Sonnenaufgang)
{
//Ausfahren
FS20_SwitchMode(49511, True);
FS20_SwitchMode(62900, False);
SetValueBoolean('MarkieseEinfahren', False);
SetValueBoolean('MarkieseAusfahren',True);
IPS_RunScript('MarkieseStart');
}
}
}
}
?>
Wenn es noch Fragen gibt, einfach nochmals posten.