hab ich aus irgend einem Beitrag hier im Forum für meine Zwecke umgeschrieben. Muss sicher erklärt werden, würde ich aber fragenspezifisch machen.
Das Script improtiert eine WSWIN.csv-Datei. Wenn der letzte WSWIN-Datensatz älter als xx Minuten ist geht das >script davon aus das der „Wetterserver (Name: Ba-Al)“ und/oder WSWIN nicht online sind und startet Fehlerbehandlungsroutinen (Rechner aufwecken/neustarten). Das kannst Du ja erstmal weglassen.
Dann startet der Datenimport. fertig;)
<?
#################### Konfig ####################################################
$TS_Datum = 47237 /*[rs.loc Wetterdaten\Timestamp\aktualisiert am]*/;
$TS_Uhrzeit = 49552 /*[rs.loc Wetterdaten\Timestamp\aktualisiert um]*/;
$Temp_innen = 51692 /*[rs.loc Wetterdaten\Wohnzimmer\°C]*/;
$Temp_aussen = 49472 /*[rs.loc Wetterdaten\Außen\Balkon °C ]*/;
$Temp_Schlafzimmer = 58434 /*[rs.loc Wetterdaten\Kühlschrank\°C]*/;
$Temp_Serverraum = 55318 /*[rs.loc Wetterdaten\Serverraum Server Zuluft\Zuluft °C]*/;
$Temp_Arbeitszimmer = 32419 /*[rs.loc Wetterdaten\Arbeitszimmer\°C]*/;
$Temp_ = 33599 /*[rs.loc Wetterdaten\Serverraum Server Abluft CH 05\°C]*/;
$Hum_innen = 47623 /*[rs.loc Wetterdaten\Wohnzimmer\rel. Feuchte]*/;
$Hum_aussen = 21424 /*[rs.loc Wetterdaten\Außen\rel. Feuchte]*/;
$Hum_Schlafzimmer = 41712 /*[rs.loc Wetterdaten\Kühlschrank\rel. Feuchte]*/;
$Hum_Serverraum = 56696 /*[rs.loc Wetterdaten\Serverraum Server Zuluft\rel. Feuchte]*/;
$Hum_Arbeitszimmer = 53459 /*[rs.loc Wetterdaten\Arbeitszimmer\rel. Feuchte]*/;
$Hum_ = 39796 /*[rs.loc Wetterdaten\Serverraum Server Abluft CH 05\Feuchte]*/;
$AirPressure = 57492 /*[rs.loc Wetterdaten\Außen\Luftdruck]*/;
$UVI = 53937 /*[rs.loc Wetterdaten\Außen\UVI]*/;
$file = file_get_contents('S:\S\WsWIN\ws_newdata.csv'); // gesamte Datei in einen String einlesen
$uhrzeit = date("Hi");
$uhrzeit_m = date("H:i");
$warn = 20; // Schwellwert für Warnungen in Minuten
$alert = 40; // Schwellwert für Alarm in Minuten
$ba_al = "192.168.0.3";
$ba_al_status = getvalueBoolean(15456 /*[IPS Maintenance\Infrastruktur\Geräte-Status\Ping 15s\LAN Watch\Ba-AL]*/);
$ba_al_lreboot = 48019 /*[rs.loc Wetterdaten\WsWIN Import\Ba-AL last reboot]*/;
$JtHutt = '192.168.0.1';
$MePo = '192.168.0.2';
$anwesenheitsmodus = 55650 /*[Haussteuerung\Security\Anwesenheitsmodus\Anwesenheitsmodus]*/;
$sendmail = 56608 /*[Messaging\E-Mail senden (SMTP) mail@gmx.de]*/;
$snarlport = 1886;
$timer_id = 13130 /*[rs.loc Wetterdaten\WsWIN Import\]*/;
$restart = 39596 /*[Haussteuerung\Diele\Hermes WFE\Hermes restart via EG]*/;
#################### Konfig Ende ###############################################
// Rohdatenimport
$lines = explode("
", $file); // String in Zeilen zerlegen und in ein Array schreiben
$lastentry = $lines[count($lines)-2]; // letzte Zeile extrahieren
$data = explode(",", $lastentry); // Daten in ein Array schreiben
// Ermittlung Delta Timestamp des letzten WSWIN-Datensatzes und aktueller Uhrzeit für Fehlerbehandlung
$ts_wswin = (substr((substr($data[1],0)), 0,2).substr((substr($data[1],0)), 3,2)); //letzter WSWIN-Timestamp in Integer umwandeln
$ts_delta = $uhrzeit - $ts_wswin; // Delta zwischen aktueller Uhrzeit und Timestamp WSWIN ermitteln
// Fehlerbehandlung/Datensätze in IPS importieren
if ($ba_al_status == false) // startet Ba-AL per WoL wenn Ba-Al nicht online
{
//IPS_Runscript($wol); // Ba-Al aufwecken
SMTP_SendMail($sendmail, "IPS WsWin Alert", "Ba-AL ist um ".$uhrzeit_m." Uhr nicht online, Abweichung $ts_delta Minuten");
@Snarl_ShowMessage($JtHutt, $snarlport, "IPS WsWin Alert", "Ba-AL ist um $uhrzeit_m Uhr nicht online, Abweichung $ts_delta Minuten", 120);
@Snarl_ShowMessage($MePo, $snarlport, "IPS WsWin Alert", "Ba-AL ist um ".$uhrzeit_m." Uhr nicht online, Abweichung $ts_delta Minuten", 20);
setValue(48019 /*[rs.loc Wetterdaten\WsWIN Import\Ba-AL last reboot]*/, date("d.m.y H:i"));
}
elseif (($ts_delta > $warn) && ($ts_delta < 40) && ($ba_al_status == true))// Fehlerbehandlung Ba-AL, startet PC bei zu grossem Delta Timestamp neu
{
//$Result = TT_RunFile($ba_al, "C:\Windows\System32\shutdown.exe", "-r -f -t 10"); // reboot Ba-AL
IPS_Runscript($restart); // reboot Hermes
// Messaging
SMTP_SendMail($sendmail, "IPS WsWin Warnung", "der Timestamp des letzten WsWin-Datensatzes sind um $uhrzeit_m Uhr nicht mehr aktuell, Abweichung $ts_delta Minuten, Ba-Al wird neu gestartet");
@Snarl_ShowMessage($JtHutt, $snarlport, "IPS WsWin Warnung", "der Timestamp des letzten WsWin-Datensatzes sind um ".$uhrzeit_m." Uhr nicht mehr aktuell, Abweichung $ts_delta Minuten, Ba-Al wird neu gestartet", 120);
@Snarl_ShowMessage($MePo, $snarlport, "IPS WsWin Warnung", "der Timestamp des letzten WsWin-Datensatzes sind um $uhrzeit_m Uhr nicht mehr aktuell, Abweichung $ts_delta Minuten, Ba-Al wird neu gestartet", 20);
setValue(48019 /*[rs.loc Wetterdaten\WsWIN Import\Ba-AL last reboot]*/, date("d.m.y H:i"));
IPS_SetEventCyclic($timer_id, 2, 1, 0, 0, 2, 10);
}
elseif (($ts_delta > $warn) && ($ts_delta >= 52) && ($ba_al_status == true))// Fehlerbehandlung erfolglos, Timer wird auf 60 Minuten gesetzt (nur zur Info)
{
// Messaging
SMTP_SendMail($sendmail, "IPS WsWin Fehler", "Fehlerbehandlung erfolglos, Abweichung $ts_delta Minute, Ba-Al wird neu gestartet");
@Snarl_ShowMessage($JtHutt, $snarlport, "IPS WsWin Fehler", "Fehlerbehandlung erfolglos, Abweichung $ts_delta Minuten", 120);
@Snarl_ShowMessage($MePo, $snarlport, "IPS WsWin Fehler", "Fehlerbehandlung erfolglos, Abweichung $ts_delta Minuten", 20);
IPS_SetEventCyclic($timer_id, 2, 1, 0, 0, 2, 60);
}
else
{
// Werte selektieren und in die Variablen schreiben
SetValueString($TS_Datum,substr($data[0],0));
SetValueString($TS_Uhrzeit,substr($data[1],0));
SetValueFloat($Temp_innen,doubleval(str_replace(',','.',trim(substr($data[2],0)))));
SetValueFloat($Temp_aussen,doubleval(str_replace(',','.',trim(substr($data[3],0)))));
SetValueFloat($Temp_Schlafzimmer,doubleval(str_replace(',','.',trim(substr($data[4],0)))));
SetValueFloat($Temp_Serverraum,doubleval(str_replace(',','.',trim(substr($data[5],0)))));
SetValueFloat($Temp_Arbeitszimmer,doubleval(str_replace(',','.',trim(substr($data[6],0)))));
SetValueFloat($Temp_,doubleval(str_replace(',','.',trim(substr($data[7],0)))));
SetValueFloat($Hum_innen,doubleval(str_replace(',','.',trim(substr($data[12],0)))));
SetValueFloat($Hum_aussen,doubleval(str_replace(',','.',trim(substr($data[13],0)))));
SetValueFloat($Hum_Schlafzimmer,doubleval(str_replace(',','.',trim(substr($data[14],0)))));
SetValueFloat($Hum_Serverraum,doubleval(str_replace(',','.',trim(substr($data[15],0)))));
SetValueFloat($Hum_Arbeitszimmer,doubleval(str_replace(',','.',trim(substr($data[16],0)))));
SetValueFloat($Hum_,doubleval(str_replace(',','.',trim(substr($data[17],0)))));
SetValueFloat($AirPressure,doubleval(str_replace(',','.',trim(substr($data[18],0)))));
SetValueFloat($UVI,doubleval(str_replace(',','.',trim(substr($data[22],0)))));
IPS_SetEventCyclic($timer_id, 2, 1, 0, 0, 2, 5);
}
?>