Hallo zusammen,
ich habe mir den AVR NET IO mit der Software von EHB gebrannt. Dank an EHB für die gute Anleitung und die geleistete Arbeit.
Es gibt noch ein kleines Problem mit den scripts.
Das sind die Fehlermeldungen in der Console.
Notice: Use of undefined constant VariableValue - assumed ‚VariableValue‘ in C:\Programme\IP-Symcon\scripts\59313.ips.php on line 53
Notice: Use of undefined constant VariableUpdated - assumed ‚VariableUpdated‘ in C:\Programme\IP-Symcon\scripts\59313.ips.php on line 55
/*
*******************************
IP-SYMCON V2 Event Scripting
*******************************
File : AVR-NET-IO_Include
Trigger : Einbindung in andere AVR-NET-IO - Scripte
Interval :
Autor : EHB
*/
// Variablen definieren ********************************************************
$RegVar_ID = 32796 /*[AVR-NET-IO Cutter\Register Variable]*/; // ID dieses Scripts
$CS_ID = 53793 /*[AVR-NET-IO]*/; // Client-Socket-ID für AVR-NET-IO-Modul
// Namen der Eingangsvariablen
$PortName[0] = "Schalter 0"; // Boolean
$PortName[1] = "Schalter 1"; // Boolean
$PortName[2] = "Schalter 2"; // Boolean
$PortName[3] = "Schalter 3"; // Boolean
$PortName[4] = "Messwert 4"; // Integer
$PortName[5] = "Messwert 5"; // Integer
$PortName[6] = "Messwert 6"; // Integer
$PortName[7] = "Messwert 7"; // Integer
// Namen der Ausgangsvariablen
$Ausgang[0] = "Ausgang 0"; // Boolean
$Ausgang[1] = "Ausgang 1"; // Boolean
$Ausgang[2] = "Ausgang 2"; // Boolean
$Ausgang[3] = "Ausgang 3"; // Boolean
$Ausgang[4] = "Ausgang 4"; // Boolean
$Ausgang[5] = "Ausgang 5"; // Boolean
$Ausgang[6] = "Ausgang 6"; // Boolean
$Ausgang[7] = "Ausgang 7"; // Boolean
$Ausgang[8] = "AVR-NET-IO-OK"; // Zustand der Verbindung zum Modul
$Var_ID_NETIO_OK = IPS_GetVariableIDByName($Ausgang[8],$RegVar_ID); // ID der Zusatndsvariable ermitteln
// Befehls-String an Modul senden **********************************************
function Befehl_senden($CS_ID,$Var_ID_NETIO_OK,$String)
{
// Variablen setzen
$OK = false;
$i = 0;
while ((!$OK) && ($i <= 5))
{
SetValue($Var_ID_NETIO_OK, false); // OK-Variable auf false setzen
IPS_LogMessage("Durchlauf : ",$i." - String: ".$String);
CSCK_SendText($CS_ID,$String); // Befehl senden
$SendeZeit = microtime(1); // Zeit übernehmen, zu der der String gesendet wurde
IPS_LogMessage("Sendezeit : ",$SendeZeit);
IPS_Sleep(300); // Pause
$VarInfo = IPS_GetVariable($Var_ID_NETIO_OK); // Variablen-Infos übernehmen
$VarWert = $VarInfo[VariableValue][ValueBoolean]; // Wert der Variable übernehmen
IPS_LogMessage("VarWert : ",$VarWert);
$VarZeit = $VarInfo[VariableUpdated]; // Zeit der letzten Aktualisierung
IPS_LogMessage("VarZeit : ",$VarZeit);
if (($VarZeit >= $SendeZeit) && ($VarWert == true)) // Antwort vom Modul OK und neuer als Sendezeit
{
$OK = true; // Schleife verlassen
IPS_LogMessage("OK ? : ",$OK);
}
$i++; // Versuchszähler erhöhen
}
if ($i >= 6) // 6 Versuche - keine Antwort
{
IPS_LogMessage(IPS_GetName($IPS_SELF)," Keine Antwort vom Modul!");
SetValue($Var_ID_NETIO_OK, false);
return($OK); // Funktion verlassen, Senden nicht Erfolgreich
}
return($OK); // Funktion verlassen, Senden Erfolgreich
}
<?
/*
*******************************
IP-SYMCON V2 Event Scripting
*******************************
File : AVR-NET-IO_Abgleich
Trigger : Aufruf durch AVR-NET-IO_Uebernahme - Befehl 03 (Modul / Telnet neu gestartet
Interval :
Autor : EHB
*/
// ID der Registervariablen (Parent-ID)
$RegVar_ID = 32796 /*[AVR-NET-IO Cutter\Register Variable]*/;
// Grundeinstellungen und Funktionen einbinden
include(IPS_GetScriptIDByName("AVR-NET-IO_Include",$RegVar_ID).".ips.php");
IPS_Sleep(2000); // 2 Sekunden warten - sonst Empfangsprobleme des Moduls
// Zustände der Ausgänge anpassen
for ($i = 0; $i < 8; $i++)
{
$VarWert[$i] = GetValue(IPS_GetVariableIDByName($Ausgang[$i],$RegVar_ID));
$Befehl = 26 - $VarWert[$i]; // 25 = Setzen, 26 = Rücksetzen Port; True = 1, False = 0
$Befehl_ok = Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 ".$Befehl." 0".$i." 03
");
}
// Eingänge abfragen
for ($i = 0; $i < 4; $i++) // Digitale Eingänge
{
Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 11 0".$i." 03
"); // Digitalen Eingang 0 .. 3 abfragen
}
for ($i = 4; $i < 8; $i++) // Analoge Eingänge
{
Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 30 0".$i." 03
"); // Analogen Eingang 4 .. 7 abfragen
}
?>
Das script Abgleich wird als Fehlerhaft gekennzeichnet!!
IPS ist die Vers.2.30 und Build vom 6.9.10 #1748
LG Manfred