YIO Remote Two auf Kickstarter

danke Fehlermeldung ist weck aber starten/stoppen tut leider trotzdem nichts.

<?php
/*
/entities/{entity_id}/command {"entity_id": <entityid>, "cmd_id": "activity.on"}
*/
$IP = '192.168.178.63';
$PIN = '3014'; 
$ch = curl_init('http://' . $IP . '/api/entities/uc.main.963241a8-6c81-4036-b773-6625bbd64549');
$data = array(
    'entity_id' => "uc.main.963241a8-6c81-4036-b773-6625bbd64549",
    'cmd_id' => 'activity.on',
//    'cmd_id' => 'activity.off',
);
$data_string = json_encode($data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);
curl_setopt($ch, CURLOPT_USERPWD, 'web-configurator:' . $PIN);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>


Du hast das /command bei $ch= am Ende gelöscht. Nur die UID austauschen gegen deine UID.

Ralf

1 „Gefällt mir“

super das wars jetzt geht es
danke

Hi,
ich habe die Scripte nochmal überarbeitet. Alle erzeugen jetzt die Kategorien selbst in dem Verzeichnis wo sie stehen. Alle haben jetzt einheitliche Struktur, d.h. In der Kategorie neue Kategorieen mit den Namen der Objekte und als erstes darin immer die UI. Die Einträge bekommen Positionen so das UID wirklich immer an erster Stelle stehtJ e nach Typ kommen weitere Infos dazu. Bei Aktivität neu Staus (ON/OFF) und enabled (true/false). Ich will heute Abend mal pollen und sehen ob ich Start/Ende in IPS mitbekomme als Test für die Zukunft und es ist so leichter erweiterbar.

Ralf
r2-scripte.zip (1,9 KB)

2 „Gefällt mir“

Moin,
also man kann den Status pollen und somit wüsste IPS was so los ist. Allerdings hatte ich auch Fehler die ich mir anschauen muss. Ach ja Ladezustand kann man auch abfragen.

Weiter habe ich gestern es geschafft 2 R2 mit Hilfe von IPS zu synchronisieren :rofl: leider läuft auch das noch nicht rund :unamused:

Ralf

Hi,
letzte Woche habe ich mich damit erfolgreich beschäftigt 2 Remote Two synchron zu halten, d.h. man startet/beendet eine Aktion auf Remote 1 und dann wird es automatisch auf Remote 2 gemacht.

Vorgehen:

  1. Remote 1 nehmen und die Integration HTTP-Post hinzufügen und zu jeder Aktion die entity HTTP-Post hinzufügen.
  2. In IPS einen WebHook SZ2-UC einrichten und auf ein Script zeigen lassen.
  3. Bei Start/Ende jeder Aktion einen HTTP-Post mit folgendem Ziel einrichten:
http://192.168.178.2:3777/hook/SZ2-UC§cmd=R1-R2-Start,UID=aefacc2e-6f9a-43a4-b2f3-d5df5a4c39a2

für Start bzw.

http://192.168.178.2:3777/hook/SZ2-UC§cmd=R1-R2-End,UID=aefacc2e-6f9a-43a4-b2f3-d5df5a4c39a2

für Ende hinzufügen. UID ist die UID der Aktion die gestartet/beendet werden soll.
4. Backup von Remote 1 erstellen. Restore von diesem Backup auf Remote 2 machen. Bei Remote 2 in jedem Start/Ende das R1-R2 durch R2-R1 ersetzen. R1-R2 heißt bei mir Remote 1 will etwas auf Remote 2 machen.
5. Jetzt kommen wir zum Script für den WebHook das wie folgt aussehen muss:

<?php
// 16532 Boolean Variable als Flag
// Wenn Flag gesetzt ist dieses Kommando ignorieren
// Das ist wichtig damit man keine Endlosschleife programmiert denn sonst
// R1 schickt Start nach R2, R2 schickt Start nach R1, R1 schickt wieder Start an R2 usw.
if (GetValue(16532)){
    SetValue(16532, false);
    return;
}
// IP und Pin für den Web-Configurator der beiden Remotes
$IP1 = '192.168.178.227';
$PIN1 = '5312'; 
$IP2 = '192.168.178.228';
$PIN2 = '2044'; 

$kommando = $_POST['cmd'];
switch ($kommando){
    case "R1-R2-Start":
// Per Device Monitor IP von R2 prüfen wenn Remote nicht an ist nichts schicken
        if (!GetValue(44614)) return;
        $UID = $_POST['UID'];
        send_remote($UID, 'Start', $IP2, $PIN2);
        break;
    case "R1-R2-End":    
        if (!GetValue(44614)) return;
        $UID = $_POST['UID'];
        send_remote($UID, 'End', $IP2, $PIN2);
        break;
// Per Device Monitor IP von R1 prüfen wenn Remote nicht an ist nichts schicken
    case "R2-R1-Start":
        if (!GetValue(43134)) return;
        $UID = $_POST['UID'];
        send_remote($UID, 'Start', $IP1, $PIN1);
        break;
    case "R2-R1-End":
        if (!GetValue(43134)) return;
        $UID = $_POST['UID'];
        send_remote($UID, 'End', $IP1, $PIN1);
        break;
}

function send_remote($UID, $Start, $IP, $PIN) {
// Flag auf true setzen damit keine Endlosschleife entsteht
    SetValue(16532, true);
// Start/Ende einer Aktion per curl an eine Remote schicken
    $ch = curl_init('http://' . $IP . '/api/entities/uc.main.'.$UID.'/command');
    $data['entity_id'] = 'uc.main.'.$UID;
    if ($Start == 'Start') $data['cmd_id'] = 'activity.on';
    else $data['cmd_id'] = 'activity.off';
    $data_string = json_encode($data);
// 57445 String Variable wo man zu Kontrollzwecken das Kommando eintragen kann    
//    SetValue(57445, $data_string);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    curl_setopt($ch, CURLOPT_USERPWD, 'web-configurator:' . $PIN);
    $result = curl_exec($ch);
// 31876 String Variable um das Ergebnis von curl abzuspeichern
    SetValue(31876, $ressult);
    curl_close($ch);
}
?>

So einfach kann man 2 Remote 2 synchron halten. Man kann es auch einfach auf 3 oder 4 Fernbedienungen erweitern wenn nötig.

Viel Spaß Ralf

1 „Gefällt mir“

Toll, dass hier etwas Bewegung drin ist. Ich nutze aktuell noch die Neeo mit Fonzos Modul und habe die Remote 3 auf Kickstarter gebacked. Sieht vielversprechend aus, auch wenn es mit der Remote 2 alles lange gedauert hat (die habe ich damals aber nicht mehr bekommen). Es wäre echt Klasse, wenn jemand ein IPS Modul erstellen könnte oder das System direkt in IPS integriert würde. Ich spende auch gerne was!

Mit Modul wird es durch mich leider eher nichts. Fonzo hat die R3 aber auch gebacken von der Richtung könnte vielleicht was kommen wenn er einen guten Eindruck hat und da würde ich ihn natürlich unterstützen :rofl:

1 „Gefällt mir“

@HarmonyFan
Hallo Ralf wie machst du das wegen des immer wider ändernden Pin code? ich muss den regelmäßig ändern, gibts dafür eine Lösung?
gruß Stefan

Merken :sunglasses: er ändert sich nur wenn Du es sagst ansonsten sind es nur Sternchen aber der vorherige Pin bleibt gültig. Ich komme höchsten durcheinander mit den Pins meiner 2 R2.

Ralf

Bei mir ändert sich der pin warum auch immer immer mal wider.

Machst Du auch was direkt an der Fernbedienung? Ich benutze immer nur einen Browser auf PC oder Surface Pro und da hat sich der Pin noch nie bei mir geändert. Die 1. R2 (gebraucht gekauft) ist jetzt auch schon > 7 Monate bei mir.

Ralf

Moin auch,
in den letzten Wochen habe ich es erfolgreich geschafft meine Harmonies durch die Remote Two zu ersetzen dabei sind mir neue Erkenntnisse gekommen:

  1. Wenn man die Entities ausliest sind dort alle Sachen enthalten, also Aktivitäten, Geräte und Macros.
  2. Ich habe mich gewundert das die Aktivitäten bei mir in IPS oft anders heißen als im Web-Konfigurator. Das lag daran das die Daten mehrere Sprachen enthalten können und ich nur Englisch ausgelesen hatte. Da mein Web-Konfigurator aber auf Deutsch eingestellt ist gab es Unterschiede. Ich habe meine Scripte so angepasst das ich bevorzugt Deutsch als Sprache nehme und nur wenn nicht vorhanden die englische Bezeichnung nehme.

Obwohl in Entities auch Aktivitäten enthalten sind habe ich dafür ein eigenenes Script erstellt da ich dieses Script einmal pro Minute aufrufe um den aktuellen Status in meiner Visu anzeigen zu können und 20 Einträge geht schneller als 200. Hier das geänderte Script für Aktivitäten:

<?php
// API Key und IP der ersten Fernbedienung
$Key1 = GetValue(22717);
$IP1 = '192.168.178.227';
// API Key und IP der zweiten Fernbedienung
$Key2 = GetValue(17539);
$IP2 = '192.168.178.228';
$Page = 1;

// Mit Device Monitor prüfen ob erste Fernbedienung online ist
if (!GetValue(43134)) return;
//if (!GetValue(44614)) return;

// cURL-Session initialisieren
$ch = curl_init();
// cURL-Optionen festlegen
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $Key1,
    'accept: application/json'
]);

// Kategorie Activities erzeugen
$ParentID = @IPS_GetObjectIDByName("Activities", IPS_GetParent($_IPS['SELF']));
if ($ParentID == false){
    $ParentID = IPS_CreateCategory();                                       // Kategorie anlegen
    IPS_SetName($ParentID, "Activities");                                   // Kategorie benennen
    IPS_SetParent($ParentID, IPS_GetParent($_IPS['SELF']));                 // Kategorie einsortieren unter dem Objekt
}
while (true){
    curl_setopt($ch, CURLOPT_URL, 'http://'.$IP1.'/api/activities?page='.$Page.'&limit=100');
    $response = curl_exec($ch);
    $Activities = array();
    $Activities = ($response);
    $Activities = json_decode($response,true);
    if ((is_null($Activities)) || (count($Activities) == 0)) {
    // cURL-Session schließen
        curl_close($ch);
        return;
    }
    $Page++;
    foreach ($Activities as $Activity){
        if (array_key_exists("de", $Activity["name"])){
            $Parent = @IPS_GetObjectIDByName($Activity["name"]["de"], $ParentID);
            if ($Parent == false){
                $Parent = IPS_CreateCategory();                                     // Kategorie anlegen
                IPS_SetName($Parent, $Activity["name"]["de"]);                      // Kategorie benennen
                IPS_SetParent($Parent, $ParentID);                                  // Kategorie einsortieren unter dem Objekt
            }
        }
        else if (array_key_exists("en", $Activity["name"])){
            $Parent = @IPS_GetObjectIDByName($Activity["name"]["en"], $ParentID);
            if ($Parent == false){
                $Parent = IPS_CreateCategory();                                     // Kategorie anlegen
                IPS_SetName($Parent, $Activity["name"]["en"]);                      // Kategorie benennen
                IPS_SetParent($Parent, $ParentID);                                  // Kategorie einsortieren unter dem Objekt
            }
        }
        $UIDID = @IPS_GetObjectIDByName("UID", $Parent);
        if ($UIDID == false){
            $UIDID = IPS_CreateVariable(3);                                     // Stringvariable anlegen
            IPS_SetPOsition($UIDID, 10);                                        // Position setzent
            IPS_SetName($UIDID, "UID");                                         // Kategorie benennen
            IPS_SetParent($UIDID, $Parent);                                     // Kategorie einsortieren unter dem Objekt
        }
        if (GetValue($UIDID) != $Activity["entity_id"]){
            SetValue($UIDID, $Activity["entity_id"]);
        }
        $StateID = @IPS_GetObjectIDByName("State", $Parent);
        if ($StateID == false){
            $StateID = IPS_CreateVariable(3);                                   // Stringvariable anlegen
            IPS_SetPOsition($StateID, 20);                                      // Position setzent
            IPS_SetName($StateID, "State");                                     // Kategorie benennen
            IPS_SetParent($StateID, $Parent);                                   // Kategorie einsortieren unter dem Objekt
        }
        if (GetValue($StateID) != $Activity["attributes"]["state"]){
            SetValue($StateID, $Activity["attributes"]["state"]);
            $text = IPS_GetName($Parent);
            if (GetValue($StateID) == 'OFF'){
                $text .= ' ausgeschaltet';
            }
            else{
                $text .= ' eingeschaltet';
            }
            //IPS_RunScriptEx(59691 , Array("SENDER" => "RBsoft", "Betreff" => "Remote 2", "Text" => $text, "Sprache" => 0, "Mail" => 0, "Enigma2" => 0, "LogFile" => 1));
        }
        $enbledID = @IPS_GetObjectIDByName("enabled", $Parent);
        if ($enbledID == false){
            $enbledID = IPS_CreateVariable(0);                                  // Booleanvariable anlegen
            IPS_SetPOsition($enbledID, 30);                                     // Position setzent
            IPS_SetName($enbledID, "enabled");                                   // Kategorie benennen
            IPS_SetParent($enbledID, $Parent);                                  // Kategorie einsortieren unter dem Objekt
        }
        if (GetValue($enbledID) != $Activity["enabled"]){
            SetValue($enbledID, $Activity["enabled"]);
        }
    }
}
?>

Ach ja ich habe mir einen API-Key generiert und in einer Variablen abgelegt so das Pin-Änderungen keine Rolle mehr spielen.

Hier noch das Script für alle Entities.

<?php
// API Key und IP der ersten Fernbedienung
$Key1 = GetValue(22717);
$IP1 = '192.168.178.227';
// API Key und IP der zweiten Fernbedienung
$Key2 = GetValue(17539);
$IP2 = '192.168.178.228';
$Page = 1;

// Mit Device Monitor prüfen ob erste Fernbedienung online ist
if (!GetValue(43134)) return;
//if (!GetValue(44614)) return;

// Kategorie Entities/Devices erzeugen
$ParentID = @IPS_GetObjectIDByName("Entities", IPS_GetParent($_IPS['SELF']));
if ($ParentID == false){
    $ParentID = IPS_CreateCategory();                                   // Kategorie anlegen
    IPS_SetName($ParentID, "Entities");                                 // Kategorie benennen
    IPS_SetParent($ParentID, IPS_GetParent($_IPS['SELF']));             // Kategorie einsortieren unter dem Objekt
}

// cURL-Session initialisieren
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $Key1,
    'accept: application/json'
]);
while (true){
    curl_setopt($ch, CURLOPT_URL, 'http://'.$IP1.'/api/entities?page='.$Page.'&limit=100');
    $response = curl_exec($ch);
    $Entities = array();
    $Entities = ($response);
    $Entities = json_decode($response,true);
    if ((is_null($Entities)) || (count($Entities) == 0)) {
    // cURL-Session schließen
        curl_close($ch);
        return;
    }
//    var_dump($Entities);
//    return;
    $Page++;
    
    foreach ($Entities as $Entity){
        if (array_key_exists("de", $Entity["name"])){
            $Parent = @IPS_GetObjectIDByName($Entity["name"]["de"], $ParentID);
            if ($Parent == false){
                $Parent = IPS_CreateCategory();                                     // Kategorie anlegen
                IPS_SetName($Parent, $Entity["name"]["de"] . '=' . $Entity["entity_type"]); // Kategorie benennen
                IPS_SetParent($Parent, $ParentID);                                  // Kategorie einsortieren unter dem Objekt
            }
        }
        else if (array_key_exists("en", $Entity["name"])){
            $Parent = @IPS_GetObjectIDByName($Entity["name"]["en"], $ParentID);
            if ($Parent == false){
                $Parent = IPS_CreateCategory();                                     // Kategorie anlegen
                IPS_SetName($Parent, $Entity["name"]["en"] . '=' . $Entity["entity_type"]); // Kategorie benennen
                IPS_SetParent($Parent, $ParentID);                                  // Kategorie einsortieren unter dem Objekt
            }
        }
        if (isset($Entity["entity_id"]) && isset($Entity["entity_type"])){
            $UIDID = @IPS_GetObjectIDByName("UID", $Parent);
            if ($UIDID == false){
                $UIDID = IPS_CreateVariable(3);                             // Stringvariable anlegen
                IPS_SetPosition($UIDID, 10);                                // Stringvariable positionieren
                IPS_SetName($UIDID, "UID");                                 // Stringvariable benennen
                IPS_SetParent($UIDID, $Parent);                             // Stringvariable einsortieren unter dem Objekt
            }
            SetValue($UIDID, $Entity["entity_id"]);
            $TypeID = @IPS_GetObjectIDByName("Type", $Parent);
            if ($TypeID == false){
                $TypeID = IPS_CreateVariable(3);                            // Stringvariable anlegen
                IPS_SetPosition($TypeID, 20);                               // Stringvariable positionieren
                IPS_SetName($TypeID, "Type");                               // Stringvariable benennen
                IPS_SetParent($TypeID, $Parent);                            // Stringvariable einsortieren unter dem Objekt
            }
            SetValue($TypeID, $Entity["entity_type"]);
        }
        if (isset($Entity["features"])){
            foreach ($Entity["features"] as $Feature){
                $FeaturesID = @IPS_GetObjectIDByName("Features", $Parent);
                if ($FeaturesID == false){
                    $FeaturesID = IPS_CreateVariable(3);                    // Stringvariable anlegen
                    IPS_SetPosition($FeaturesID, 30);                       // Stringvariable positionieren
                    IPS_SetName($FeaturesID, "Features");                   // Stringvariable benennen
                    IPS_SetParent($FeaturesID, $Parent);                    // Stringvariable einsortieren unter dem Objekt
                }
                $Features = json_encode($Entity["features"]);
                SetValue($FeaturesID, $Features);
            }
        }
        if (isset($Entity["options"]["simple_commands"])){
            $SimpleCommandsID = @IPS_GetObjectIDByName("SimpleCommands", $Parent);
            if ($SimpleCommandsID == false){
                $SimpleCommandsID = IPS_CreateVariable(3);                  // Stringvariable anlegen
                IPS_SetPosition($SimpleCommandsID, 40);                     // Stringvariable positionieren
                IPS_SetName($SimpleCommandsID, "SimpleCommands");           // Stringvariable benennen
                IPS_SetParent($SimpleCommandsID, $Parent);                  // Stringvariable einsortieren unter dem Objekt
            }
            $SimpleCommands = json_encode($Entity["options"]["simple_commands"]);
            SetValue($SimpleCommandsID, $SimpleCommands);
        }
        if ($Entity["entity_type"] == "macro"){
            if (isset($Entity["options"]["sequence"])){
                $MacrosID = @IPS_GetObjectIDByName("Commands", $Parent);
                if ($MacrosID == false){
                    $MacrosID = IPS_CreateVariable(3);                      // Stringvariable anlegen
                    IPS_SetPosition($MacrosID, 50);                         // Stringvariable positionieren
                    IPS_SetName($MacrosID, "Commands");                     // Stringvariable benennen
                    IPS_SetParent($MacrosID, $Parent);                      // Stringvariable einsortieren unter dem Objekt
                }
                $string = '';
                foreach ($Entity["options"]["sequence"] as $Sequence){
                    if (isset($Sequence["command"])){
                        $string .= $Sequence["command"]["cmd_id"] . ' , ';
                    }
                }
                SetValue($MacrosID, $string);
            }
        }
        $StateID = @IPS_GetObjectIDByName("State", $Parent);
        if ($StateID == false){
            $StateID = IPS_CreateVariable(3);                       // Stringvariable anlegen
            IPS_SetPosition($StateID, 50);                          // Stringvariable positionieren
            IPS_SetName($StateID, "State");                         // Stringvariable benennen
            IPS_SetParent($StateID, $Parent);                       // Stringvariable einsortieren unter dem Objekt
        }
        SetValue($StateID, $Entity["attributes"]["state"]);
    }
}
?>

Da hier ja Aktivitäten, Geräte und Macros enthalten sind schreibe ich hinter dem Namen noch den Typ des Entities:

grafik

Um Aktivitäten zu starten oder einen Befehl auszuführen habe ich ein Script geschrieden das beides macht:

<?php
switch ($_IPS['SENDER']){
    case 'R2':
        $IP = $_IPS['IP'];
        $Key = $_IPS['Key'];
        $UID = $_IPS['UID'];
        $Kommando = $_IPS['Kommando'];
        send_remote($IP, $Key, $UID, $Kommando);
        break;
}


function send_remote($IP, $Key, $UID, $Kommando) {

    $ch = curl_init('http://' . $IP . '/api/entities/'.$UID.'/command');
    $data['entity_id'] = $UID;
    $data['cmd_id'] = $Kommando;
    $data_string = json_encode($data);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Authorization: Bearer ' . $Key,
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    $result = curl_exec($ch);
    SetValue(34457, $result);
    curl_close($ch);
    sleep(5);
// rufe Script GetActivities auf damit der Status schneller kommt
    IPS_RunScript(22072);
}
?>

Aufgerufen wird dieses Script mit
IPS_RunScriptEx(, Array(„SENDER“ => „R2“, „IP“ => $IP, „Key“ => $Key, „UID“ => $UID, „Kommando“ => $Command));

$IP und $Key sind die IP und der Key der gewünschten R2. Ich benötige diese Information zusätzlich um 2 (oder später mal mehr) Fernbedienungen synchron zu halten.

Viel Spaß Ralf

Wie hast du das gemacht?

Nur so als Info. Denn nutzen kann ich es noch nicht. Ich warte auf meine R3.

Moin,
du musst dich erst im Wb-Configurator anmelden und dann wieder zurück auf die Startseite:

grafik

Dort Core-API Rest auswählen:

Bei POST: api_keys musst Du auf try out gehen und dir einen Namen ausdenken:

Den API Key siehst Du dann im curl Ergebnis:

Den musst Du sofort rauskopieren und in einer Variable speichern denn Du hast keine Chance ihn noch einmal zu erzeugen:

Ralf der auch auf seine R3 wartet :sunglasses:

hallo verstehe leider nicht wie genau du eine Aktivität startest wie richte ich das genau ein?


was sind das für zwei Variable?

danke
gruß Stefan

Moin,
34457 speichert nur die Antwort von Curl um zu sehen ob es Fehler gab oder nicht. Noch werte ich die Information nicht aus.

22072 ist die ID von meinem Script um die Aktivitäten von der R2 auszulesen damit ich schnell den Status der Aktivitäten bekommen. Normal wird das Script nur einmal pro Minute aufgerufen. Leider gibt es noch keine Push-Nachrichten von der R2 dazu müsste man wohl eine Integration oder so schreiben und ich HASSE Python seit Version 3.

Ralf

1 „Gefällt mir“

irgendwie geht es bei mir nicht so recht es startet nichts ich glaube es gehört bei Kommando noch was rein aber ob der erst so Bast bin ich mir auch nicht sicher:


danke

Moin,
Sorry hatte vielleicht zu wenig geschrieben.

Mein Senddescript muss mit
IPS_RunScriptEx(„ID vom Sendescript“ , Array(„SENDER“ => „R2“, „IP“ => $IP, „Key“ => $Key, „UID“ => $UID, „Kommando“ => $Command));
aufgerufen werden. Es würde wohl auch gehen wenn Du die Zeile mit switch, case und } löscht und $Kommando = ‚activity.on‘ für an bzw. ‚activity.off‘ für aus schreibst.

Zur Erklärung ich benutze die Script um ca. 20 Aktivitäten für 5 Zimmer zu starten/beenden und damit ich nur eine Sende-Routine habe hatte ich es so gemacht.

Ralf

muss mir das am Wochenende noch mal anschauen werde daraus nicht schlau wie genau das geht aber trotzdem mal danke