Upd.:
- ca. 13:00 Uhr ist sie wieder abgestürzt, ich war aber nicht vor Ort, weiß also nicht was im System evtl. geschaltet wurde.
- SymOS Frontend aufgerufen: System startet - „dauert zu lang Meldung“ - wiederholen geklickt und es war wieder da.
Jetzt wieder zu Hause fällt mir auf, dass einige angelegte Variablen nicht korrekt gesetzt sind (daran hatte ich gestern Änderungen gemacht und daher auch zuerst nachgeschaut).
-
Ich führe das Skript aus das Sie setzen sollte - nix passiert
-
im Skript ein wenig gesucht und den Grund gefunden:
-
Sys_GetURLContentEx(„http://192.168.5.27/homebus“, Array(„AuthUser“=> $Username, „AuthPass“=> $Passwort)); läuft ins leere. Gestern klappte es noch, URL geprüft, alles da. Variablenzuweisung kommt mit
Warning: Unknown error 125 in /mnt/data/symcon/scripts/46217.ips.php on line 24
zurück.
Dann wollte ich das Backup von gestern einspielen, nicht aber ohne vorher ein Aktuelle gemacht zu haben.
Es folgt wieder die Fehlermeldung
Ups da lief was schief! unexpected error.
, das Backupfile wurde dann aber kurz später runtergeladen.
An dieser Stelle habe ich jetzt aufgehört. Ich kann mich aber dunkel Erinnern, dass dieser Fehler schon mal (nicht nur gestern und heute) auftrat, ich Ihn aber ignoriert habe, da das Backupfile generiert wurde.
Soll ich das Backup von gestern einspielen, oder das System zurückstzten, oder …?
Herzlichen Dank im Voraus,
Frank
Und hier der Vollständigkeit halber noch das komplette Skript:
<?
// **************************************************************************
// Eingabedaten
// **************************************************************************
$IPAdresse = "192.168.5.27"; //IP-Adresse XGW300 Gateway.
$Passwort = ""; //Passwort für die Homebus anmeldung. Standard ist "xgw3000".
// 20160228 diese Version ist getestet unter IPS 4.0 beta aktueller Stand, XGW3000 aktuelle Firmware mit einem Trockner und einer Waschmaschine
// **************************************************************************
// **************************************************************************
// Username für die Homebus Anmeldung
$Username = "xgw3000";
// ID des Übergeordneten Objekts ermittlen (ID der Kategorie)
// $ParentID = IPS_GetParent($IPS_SELF); //vor IPS v 4.0
$ParentID = IPS_GetParent($_IPS['SELF']);
// Allgemeine Gerätedaten vom Gateway abfragen
// $content = @Sys_GetURLContentEx('http://' . $IPAdresse . '/homebus', Array("AuthUser"=> $Username, "AuthPass"=> $Passwort));
$content = Sys_GetURLContentEx("http://192.168.5.27/homebus", Array("AuthUser"=> $Username, "AuthPass"=> $Passwort));
if ($content == false) {
echo "schiefgegangen";
//SetValue(58606 /*[ Keller\Waschküche\Waschi\Gerätestatus]*/,"Aus");
return;
}
// Empfangene XML-Struktur laden
$devices=simplexml_load_string($content);
// Alle gefundenen Geräte durchgehen
foreach($devices as $device)
{
// Allgemeine Daten parsen
$device_uid = str_replace("-", "N", $device->UID);
$device_name = utf8_decode($device->name);
$device_type = utf8_decode($device->type);
$device_additionalname= utf8_decode($device->additionalName);
$device_url = $device->actions->action->attributes()['URL'];
// Dummy Instance ID ermitteln, wenn nicht vorhanden, dann erstellen
$DeviceID = GetInstID($ParentID, $device_uid, $device_additionalname);
// Dummy Instance Name aktualisieren, wenn unterschiedlich
if (IPS_GetName($DeviceID) != $device_additionalname)
{
IPS_SetName($DeviceID, $device_additionalname);
}
// VariablenID ermitteln, wenn nicht vorhanden, dann erstellen
$VarID = GetVarID($DeviceID, 'Typ', 'Gerätetyp');
// Variablenwert aktualisieren, wenn unterschiedlich
if (GetValueString($VarID) != $device_type)
{
SetValueString($VarID, $device_type);
}
// Gerätedetails abfragen
$content = @Sys_GetURLContentEx(strval($device_url), Array("AuthUser"=> $Username, "AuthPass"=> $Passwort));
if ($content == false) {
return;
}
// Empfangene XML-Struktur laden
$device=simplexml_load_string($content);
$keys = $device->information;
// Alle Werte durchgehen
foreach($keys->children() as $key)
{
// VariablenID ermitteln, wenn nicht vorhanden, dann erstellen
// $VarID=GetVarID($DeviceID, filter_characters(utf8_decode($key['name']))); //vor IPS v 4.0
$VarID=GetVarID($DeviceID, utf8_decode($key['name']));
// Variablenwert aktualisieren, wenn unterschiedlich
if (GetValueString($VarID) != utf8_decode($key['value']))
{
SetValueString($VarID, utf8_decode($key['value']));
}
}
}
//Script Timer prüfen, wenn nicht vorhande dann mit 10 sec erstellen
If (IPS_GetScriptTimer($_IPS['SELF']) == 0)
{
IPS_SetScriptTimer($_IPS['SELF'], 10);
}
// **************************************************************************
// Hilfsfunktionen
// **************************************************************************
// Diese Funktion dient zum Ermitteln einer Variablen-ID anhand des Ident
// Wenn die Variable nicht existiert, wird sie angelegt
function GetVarID($parentid, $ident)
{
// $varid = @IPS_GetObjectIDByIdent($ident, $parentid); //vor IPS v 4.0
$varid = @IPS_GetObjectIDByName($ident, $parentid);
if ($varid === false)
{
$ScriptID = $_IPS['SELF'];
$varid = IPS_CreateVariable(3);
IPS_SetParent($varid, $parentid);
IPS_SetIdent($varid, $ident);
IPS_SetName($varid, $ident);
IPS_SetInfo($varid, "This Variable was created by Script #$ScriptID");
IPS_SetVariableCustomProfile($varid, "~String");
}
return $varid;
}
// Diese Funktion dient zum Ermitteln einer Dummy Instanz-ID anhand des Ident
// Wenn die Dummy Instanz nicht existiert, wird sie angelegt
function GetInstID($parentid, $ident, $name)
{
$ObjektID = @IPS_GetObjectIDByIdent($ident, $parentid);
if ($ObjektID === false)
{
$ScriptID = $_IPS['SELF'];
$ObjektID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}"); //Dummy Instance erstellen
IPS_SetParent ($ObjektID, $parentid); // Dummy Instance verschieben
IPS_SetName ($ObjektID, $name); //Dummy Instance umbenennen
IPS_SetInfo ($ObjektID, "This Variable was created by Script #$ScriptID");
IPS_SetIdent ($ObjektID, $ident);
}
return $ObjektID;
}
// Funktion zum filtern von nicht erlaubten Zeichen (z.B. bei Variablennamen) vor IPS v 4.0 wird zum ermitteln von $VarID nicht mehr benötigt, da Variablennamen jetzt in UTF8 gespeichert werden.
function filter_characters($input)
{
$search = explode(",","ç,æ,,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u,-, ");
$replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u,_,_");
return str_replace($search, $replace, $input);
}
?>