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“