So…hab jetzt mal ein bischen weiter getestet.
Mein Problem, dass Werte nur als „36“ übernommen werden, besteht nur, wenn der Datenempfang über IPS und den Client Socket läuft.
Bei diesem Socket hab ich mal den Timer rausgeschmissen, und mir folgendes Skript gebastelt, dass ich bei Bedarf über die Variable „Verbindung_belegt“ anhalten kann, sonst läuft das Skript zyklisch alle 30sec.
// Verbindung durch Wertänderung über Browser belegt
$Verb_belegt = getValueBoolean(11083 /*[UVR Reglerverbund\Verbindung_belegt]*/);
// Verbindung frei - Datenempfang BL-NET
if ($Verb_belegt == false)
{
CSCK_SetOpen(54735 /*[BL Net 1]*/,true);
IPS_Sleep(240);
$status = CSCK_GetOpen(54735 /*[BL Net 1]*/);
if ($status == true)
{
CSCK_SetOpen(54735 /*[BL Net 1]*/,false);
UVR_UpdateValues(17506 /*[UVR Reglerverbund\UVR1611_1]*/);
echo "Datenempfang ok";
}
if ($status == false)
{
echo "Error Datenempfang";
}
}
if ($Verb_belegt == true)
{
echo "Verbindung belegt";
}
Bis hierher klappts mal einwandfrei - Datenempfang von den beiden Reglern funktioniert.
Dann hatte ich vor den Wert zu schreiben nachdem ich den Datenempfang von der UVR angehalten habe.
<?
// Verbindung nicht geöffnet
$status = CSCK_GetOpen(54735 /*[BL Net 1]*/);
if ($status == false)
{
setValueBoolean(11083 /*[UVR Reglerverbund\Verbindung_belegt]*/,true); // Datenempfang über Datenleitung anhalten
IPS_Sleep(240);
WWWReader_RetrievePage(10086 /*[WWW Reader UVR write]*/,"http://192.168.1.77/580E01.htm?tB0v120C3001=0A"); // einzustellende Werte
echo "Daten übertragen";
}
setValueBoolean(11083 /*[UVR Reglerverbund\Verbindung_belegt]*/,false); // Datenempfang über Datenleitung freigeben
if ($status == true)
{
echo "Verbindung belegt";
}
?>
Nach dieser Änderung ist es sporadisch möglich die Daten „wie gesendet“ zur UVR zu übertragen. Es kommt allerdings auch noch vor dass „36“ übertragen wird.
Halte ich das Verbindungsskript mehrere Minuten an, so kann ich ohne Probleme die Daten übertragen.
Hat da jemand eine Idee?
@Bussard013
ich habe die A2.27DE im 1611er und die V1.34 im BLNet und benutze dieses Skript zum Schalten meiner Ausgänge.
<?
$button = $IPS_COMPONENT;
CSCK_SetOpen(24885 /*[Client Socket Bootloader NET]*/,true);
IPS_Sleep(240);
$status = CSCK_GetOpen(24885 /*[Client Socket Bootloader NET]*/);
if ($status == true) {
$text = WWWReader_RetrievePage(15541 /*[WWW Reader]*/,"http://192.168.2.34/NWKMEN.htm?v=1");
IPS_Sleep(240);
$text = WWWReader_RetrievePage(15541 /*[WWW Reader]*/,$button);
IPS_Sleep(240);
CSCK_SetOpen(24885 /*[Client Socket Bootloader NET]*/,false);
UVR_UpdateValues(19726 /*[UVR1611\UVR1611]*/);
echo "ausgeführt";
}
if ($status == false) {
echo "error";
}
?>
einfach noch den Link im Designer bei IPSYMID eintragen und sollte es funktionieren.
Da versteh ich nicht ganz, warum du den Client-Socket vor dem Aufruf des WWWReaders öffnest???
greetz Daniel