Hallo,
habe das Skript mal etwas überarbeitet.
PHP-Code:
<?
// Pi S.USV Werte auslesen von Audi2010 30.12.2016
// Kategorie anlegen, ID eintragen
// Script starten
//legt die Variablen automatisch an
// Profile müssen man. erstellt werden
// 14.09.2018 jnicke
// Anpassung an Windows sowie 2 Korrekturen
// $i um 1 erhöht und in Zeile 79 $i ergänzt
//SSH Login : Beginn
include('Net/SSH2.php');
// IP vom Raspberry
$ssh = new Net_SSH2('192.168.x.x');
//Anmeldeuser und Passwort für Raspberry nach UFT8 konvertieren
//nur mit UTF8 Einstellung klappt auch ein putty login
//ohne diese Konvertierung erscheint immer "Login Failed" auch hier per ssh->login
$username = utf8_encode( 'pi' );
$password = utf8_encode( 'xxxxxxxx' );
if (!$ssh->login($username, $password)) // Hier der echte Login
{
exit('Login Failed');
}
//SSH Login: Ende
$id_parent = 48423 /*[Hardware\Raspberry\Raspi.pivCCU2.70N\S.USV.60N]*/;
//exec("/opt/susvd/susv -status", $e); //Werte holen direkt auf PI
//#### unter Windows #################################################
$a = $ssh->exec("/opt/susvd/susv -status"); //Werte holen
//echo $a;
$e = explode( "\n", $a); // Array aus der Meldung erstellen
//####################################################################
// Zeit umwandeln in
$zeit = substr($e[17], 6, 24);
$e[18] = "* Zeit: " . strtotime($zeit). " *";
//Testausgabe um Zeilennummer anzuzeigen
//print_r ($e);
//Array abarbeiten Zeile für Zeile
$i = 0 ;
foreach ($e as $zeile) {
$pos = strpos($zeile, ":");
if( $pos <> 0 ) {
$name = substr($zeile, 2, $pos-2);
//echo $i . " Name = " . $name ." \n ";
$id = @IPS_GetVariableIDByName($name, $id_parent);
$wert = trim(substr($zeile, $pos+1, -2));
//echo $i . " Wert = " . $wert ." \n ";
//Boolean
if ( ($i == 10) || ($i == 12) || ($i == 15) || ($i == 23) || ($i == 33)) {
$typ = 0 ;
if (($wert == "Enabled") || ($wert == "enabled") || ($wert == "ONLINE")) {
$wert = true ;
$profil = "AnAus";
}
else {
$wert = false ;
}
}
elseif (($i == 18) || ($i == 13) || ($i == 16) || ($i == 32) || ($i == 34) ) {
//Integer
$typ = 1;
$wert = intval(trim(substr($zeile, $pos+1, -2)));
}
elseif ( ($i == 26) ||($i == 28) ||($i == 24)||($i == 27)||($i == 29)||($i == 30)) {
//Float
$typ = 2 ;
$wert = floatval(trim(substr($zeile, $pos+1, -2)));
}
else {
//String
$typ = 3;
$wert = trim(substr($zeile, $pos+1, -2));
}
if ($id === false) {
anlegen($id, $typ, $id_parent, $zeile, $pos, $i);
}
// echo "Wert = " . $wert ."\n";
SetValue($id,$wert);
// echo $i . "Ende \n";
}
$i++;
}
function anlegen($id, $typ, $id_parent, $zeile,$pos,$i) {
$id = IPS_CreateVariable($typ);
IPS_SetName($id, substr($zeile, 2, $pos-2)); // Variable benennen
IPS_SetParent($id, $id_parent); // Variable in die Kategorie bringen
IPS_SetPosition($id, $i); // Variable in der Kategorie nach Zeilennummer sortieren
}
?>