Hilfe bei Gembird Steckdosenscript

Hallo,
ich habe das Script aus dem Nützliche Anleitungen gefunden und auch mit der IP meiner Leiste oben eingetragen und im Dummy modul einmal ausgeführt.
Sieht auch gut aus, aber die Komunikation scheint nicht zu klappen. Wenn ich über das Webfront den entsprenchenden Kanal schalte, wird aber leider nicht die entsprechende Steckdose ein bzw ausgeschaltet.
Kann mir jemand von Euch einen Tip geben, wo es bei mir hakt. Ich habe mein Script unten nochmal gepostet.

 <?
// hier die IP eintragen
$deviceAddress = '192.168.3.54';

$scriptId = $_IPS['SELF'];
$instanceId = IPS_GetParent($scriptId);

$obj = IPS_GetObject($instanceId);
if($obj['ObjectType'] != 1)
{
    echo 'Error: The script must be placed under a dummy instance.';
    return;
}

IPS_SetHidden($scriptId, TRUE);

$switchStatusId = Array(0, 0, 0, 0);

for($i = 0; $i < 4; $i++)
{
    $switchStateId[$i] = @IPS_GetObjectIDByIdent('socket' . $i, $instanceId);
    if(!$switchStateId[$i])
    {
        $switchStateId[$i] = IPS_CreateVariable(0);
        IPS_SetIdent($switchStateId[$i], 'socket' . $i);
        IPS_SetParent($switchStateId[$i], $instanceId);
        IPS_SetName($switchStateId[$i], 'Socket ' . ($i + 1));
        IPS_SetVariableCustomProfile($switchStateId[$i], '~Switch');
        IPS_SetVariableCustomAction($switchStateId[$i], $scriptId);

        $eventId = IPS_CreateEvent(0);
        IPS_SetParent($eventId, $scriptId);
        IPS_SetEventTrigger($eventId, 1, $switchStateId[$i]);
        IPS_SetEventScript($eventId, $scriptId);
        IPS_SetEventActive($eventId, true);
    }
}

$deviceStatusId = @IPS_GetObjectIDByIdent('device_status', $instanceId);
if(!$deviceStatusId)
{
    $deviceStatusId = IPS_CreateVariable(0);
    IPS_SetIdent($deviceStatusId, 'device_status');
    IPS_SetParent($deviceStatusId, $instanceId);
    IPS_SetName($deviceStatusId, 'Device Status');
}

$postVar = '';

if($_IPS['SENDER'] == 'WebFront')
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    return;
}
else if($_IPS['SENDER'] == 'Variable')
{
    $variableId = $_IPS['VARIABLE'];
    $value = $_IPS['VALUE'];

    for($i = 0; $i < 4; $i++)
    {
        if($variableId == $switchStateId[$i])
        {
           if($value)
               $postVar .= '&cte'.($i + 1).'=1';
            else
               $postVar .= '&cte'.($i + 1).'=0';
        }
    }
}
else
{
    for($i = 0; $i < 4; $i++)
    {
        $postVar .= '&cte'.($i + 1).'=';
        if(GetValue($switchStateId[$i]))
           $postVar .= '1';
        else
           $postVar .= '0';
    }
}

IPS_SetScriptTimer($scriptId, 15);

$addr = 'http://' . $deviceAddress . '/login.html';

$ch = curl_init($addr);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'pw=');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

$addr = 'http://' . $deviceAddress . '/';

$ch = curl_init($addr);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postVar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

if($result)
{
    SetValue($deviceStatusId, true);
}
else
{
    SetValue($deviceStatusId, false);
}

?> 

Ist bei dir ein Kennwort gesetzt? Das Skript geht von einem leeren Kennwort aus, sonst ergänze es hinter dem

pw=

Hallo,
das war es leider nicht.
Ich hatte erst absichtlich kein passwort gesetzt.Gestern habe ich dann ein passwort für die Steckdosenleiste gestetzt und dieses auch im Script hinterlegt. Device Status ist bei mir immer true, aber wenn ich die entsprechenden sockets schalte ändert sich nichts in der Steckdosenleiste. Hast Du noch einen Tip wo ich suchen kann? Ich würde es so gerne benutzen:confused:

Hallo

Ich habe mir auch eine dieser Steckdosenleisten besorgt. Mit dem Skript klappt das bestens , vielen Dank !!

Allerdings ist da ein kleiner Fehler drin…

Man muss die Hochkomma (’) gegen (") tauschen…

[b]$addr = "http://" . $deviceAddress . "/login.html";[/b]
$ch = curl_init($addr);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'pw=');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

$addr =[b] "http://" . $deviceAddress . "/";[/b]

Dann klappt auch das schalten.

Oliver

Hallo,

ich habe nun auch eine solche Steckdosenleiste. Da schalten funktioniert auch mit dem Script. Jedoch bin ich mir nicht ganz sicher für was der Timer alle 15s ausgeführt wird?
Soll damit der Status der einzelnen Sockets abgefragt werden? Wenn ja so funktioniert das bei mir nicht. Es kommt aber auch eine Fehlermeldung. :frowning: