Visualisierung mit Mediola finde über IPSymcon keine toggle Funktion

Hallo,
Ich teste seit 3 Wochen die Ipsymcon Demo Version. Da ich Anfänger bin und nur am Wochenende mit beschäftige, komme ich nicht so schnell voran. Habe bis jetzt 2 Harmony hub und eine Hue in IPS zum Testen.
1.Frage
Mit Mediola im testmodus versuche ich für eine Hue Lampe einen Schalter anzulegen.
Ich möchte ein Schalter anlegen mit Power On/Off + Status Anzeige .Mit Hue plugin funktioniert es, über ipsymcon Plugin kann ich keine Toggle Finden.
2.Frage
Habe in NEO für die Lampe jeweils über hue und ipsymcon Plugin einen Schieberegler angelegt, wenn ich über die Hue App die Helligkeit verstelle änder sich der Schieberegler in NEO unterschiedlich schnell. Hue Plugin 3-4 sec ipsymcon 15 sec.
Woran kann das liegen.
Für eine Antwort sowie Tipps,Links wäre ich sehr dankbar 😅

Das liegt daran das Mediola grundsätzlich aus welchen Gründen auch immer kein Toggle anbietet, das wäre längst überfällig und ist trotz SUS bisher nicht von Mediola ergänzt worden. Daher hilft es da nur direkt bei Mediola nachzufragen wann und ob diese gedenken das mal nativ in NEO zu ergänzen. Dennoch kann man aus NEO togglen, Du musst dazu nur ein Toggle Skript ausführen. Du legst also auf den Button in NEO ein Skript und keinen direkten Befehl der Geräteinstanz. IP-Symcon prüft dann was der jetzige Zustand des Geräts ist und schaltet auf den gegenteiligen Zustand.

Für Hue führst Du z.B. einmalig dieses Skript in IP-Symcon aus, dies legt Dir zu jeder Hue Instanz ein Skript an, das Du aus NEO zum toggeln aufrufen kannst.


<?php

//Script zum Anlegen von Toggle Script für Hue mit State
//-----------------------
$InstanzenListe = IPS_GetInstanceListByModuleID("{83354C26-2732-427C-A781-B3F5CDF758B1}"); // Hue
$InstanzCount = 0;

foreach ($InstanzenListe as $InstanzID) {
	//echo $InstanzID."
";
    createPowerToggle($InstanzID);
	 $InstanzCount++;
    $Childs[] = IPS_GetChildrenIDs($InstanzID);
}

$Variablen = flatten($Childs);
$Variablen = count(array_unique($Variablen));

IPS_LogMessage("NEO Toggle Install", "Es wurden ".$InstanzCount." Hue Instanzen gefunden!");
IPS_LogMessage("NEO Toggle Install", "Es wurden ".$Variablen." Variablen in den Hue Instanzen gefunden!");


function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

function createPowerToggle($InstanzID)
{
	  $Name = IPS_GetName($InstanzID);
      $ScriptName = $Name."_Power toggle";
      $StatusID = @IPS_GetObjectIDByIdent("HUE_State", $InstanzID);
      if ($StatusID)
			{
    			$ScriptID = @IPS_GetObjectIDByIdent("Togglescript_".$InstanzID, $StatusID);
				if($ScriptID)
				{
					IPS_LogMessage("NEO Toggle Install", "Es existiert bereits ein Toggle Skript für die Variable ".$StatusID."!");
				}
				else
				{
				$ScriptID = IPS_CreateScript(0);
				IPS_SetName($ScriptID, $ScriptName);
				IPS_SetIdent($ScriptID, "Togglescript_".$InstanzID);
				
				IPS_SetParent($ScriptID, $StatusID);
				$contentPowertoggle = '<?php
$status = GetValueBoolean('.$StatusID.'); // Status des Geräts auslesen
IPS_LogMessage( "Hue:" , "NEO Script toggle" );
if ($status == false)// Befehl ausführen
	{
	  IPS_LogMessage( "'.$Name.':" , "Anschalten" );
      RequestAction('.$StatusID.', true);
    }
elseif ($status == true)// Befehl ausführen
	{
      IPS_LogMessage( "'.$Name.':" , "Ausschalten" );
      RequestAction('.$StatusID.', false);
	}';
				IPS_SetScriptContent($ScriptID, $contentPowertoggle);
				IPS_LogMessage("NEO Toggle Install", "Es wurde ein Skript mit der Objekt ID  ".$ScriptID." für die Variable mit der Objekt ID ".$StatusID." angelegt!");
				}    		
			}
}

Hast Du ein Aktualisierungsintervall eingestellt in NEO auf der Seite auf der der Schieberegler angezeigt wird, wenn ja auf was ist das eingestellt?
Wenn Du kein Aktualisierungsintervall nutzten willst, weil dort viele andere Dinge angezeigt werden die Du nicht ständig aktualisieren willst, kannst Du die Seite auch bei Bedarf aus IP-Symcon aktualisieren.
Dazu legst Du ein auslösendes Ereignis auf die Variable, die eine Seitenaktualisierung in NEO auslösen soll, Bedingung wäre bei Variablenänderung.

Das Ereigniss startet dann ein Skript das die NEO Seite aktualisiert.


<?php

 $remote = "NEO Remote Name"; // Remote Name der NEO Remote
 $page = "index"; // NEO Seitenname der zu aktualisierenden Seite
MEDIOLA_PUSH_Sitechange($remote, $page);

function MEDIOLA_PUSH_Sitechange($remote, $page)
{
    $port = 1902; //Push Port
    $broadcast = "192.168.55.255"; // Broadcastadresse für eigenes Subnetz
	 $msg = '{XC_EVT}{"func":"changePage","remote":"'.$remote.'","page":"'.$page.'"}'; //Push Message data an device mit Bezeichnung Gruppe.Name IPS Gruppe.Name:ObjectID den Status der auslösenden Variable
	 $len = strlen($msg);//Länge der Message
	 var_dump($len);
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
    socket_sendto($sock, $msg, $len, 0, $broadcast, $port);
    socket_close($sock);
}

Hier musst Du den NEO Remote Namen sowie den aufzurufenden NEO Seitennamen und die Broadcast Adresse an Dein eigenes Netzwerk anpassen. Wenn also in Deinem Netzwerk ein Gerät die IP Adresse 192.168.179.50 hätte, wäre die passende Adresse, die im Skript einzutragen ist, die 192.168.179.255, die 179 ist also der Teil der IP Adresse, der in Deinem Netzwerk anders sein kann. Den Seitenamen und Remote Namen entnimmst Du der Bezeichnung in NEO. Desweitern must Du schauen was in IP-Symcon selber als Aktualisierungsintervall im Splitter von Hue eingestellt worden ist. Die Hue API unterstützt kein Push d.h. IP-Symcon muss anfragen wie der aktuelle Status der Hue Lampe ist. Wenn Du die Lampe anderweitig schaltest, bekommt das also IP-Symcon und damit auch NEO erst dann mit, wenn der Status von IP-Symcon aktualisiert wurde. Du kannst also im Splitter von Hue ein Intervall einstellen, was für Dich passend ist, z.B. auch 1 Sekunde, dann werden eben aber auch sekündlich Abfragen an die Hue Bridge geschickt.

Hallo Fonzo,

Vielen für die ausführlich Antwort.
Aktualiesierungsintervall in NEO und Ipsymcon 10 sec
Power toggle Script wurde in jede Hue Instanz hinterlegt :slight_smile:
Bekomme aber eine Fehlermeldung beim ausführen.
Variable #14440 existiert nicht in /var/lib/symcon/scripts/54800.ips.php on line 7
Bzw line 12 je nach Status.
ID14440 kann ich über Befehle testen ein und ausschalten.

Dann hast Du ja Deine Erklärung dafür das es so lange dauert bis der Status aktualisiert wird. Kommt jetzt persönlich drauf an was Du erwartest, wenn sich der Status schneller aktualisieren soll, musst Du den Wert in IP-Symcon und in NEO runterstellen.

Oh ja tut mir leid mein Fehler, normalerweise steuere ich über spezifische Methoden da ist die Instanz die richtige Objekt ID. Bei RequestAction wird aber direkt auf die Variable verwiesen. Da Du zur Zeit nur eine Lampe zum testen hast ist das nicht weiter wild, da musst Du nur die 14440 gegen die Objekt ID der Variable Status austauschen, das Skript oben muss ich dann noch anpassen.

Danke :slight_smile: funktioniert

Na dann viel Spass beim weiter ausprobieren. Was willst Du denn am Schluss eigentlich alles steuern außer Hue und einem Harmony Hub?

Ich möchte noch Denon AVR x4200 , 3x Harmony Hub,PS4, Lightmanager Air, Homematic IP Heizungssteuerung möchte da evtl. auf ccu3 umsteigen.

Erkennt symcom ein Tastendruck auf der Harmony Companion. Würde gerne nach Tastendruck einen anderen Harmony Hub darzubringen ein Befehl auszusenden.

Da musst Du nur im Modul Store Denon eingeben und das Denon Modul installieren, als Gerät wählst Du die Telnet Instanz.

Gibt es auch ein Modul für, suche mal nach Playstation 4 im Modul Store.

Der wird per HTTP angesteuert also z.B. Befehl mit Sys_GetURLContent absetzten, dazu muss Dir der HTTP Befehl für den Lightmanager bekannt sein.

Was nutzt Du zur Zeit ein Homematic IP Access Point oder ein AIO Gateway?

Ich persönlich besitzte keine Companion nur eine Elite aber ich denke das sollte vom Prinzip her das gleiche sein. Du musst also ein Roku Gerät entsprechend der Anleitung hinzufügen. Das Roku Gerät fügst Du dann der Harmony Aktion hinzu mit der Du auf einen Tastendruck reagieren willst und legst eine Funktion des Roku Geräts auf die Tasten. In IP-Symcon musst Du dann noch auf das Skript verlinken, dass ausgeführt werden soll, wenn Du diese Taste gedrückt bzw. diesen Befehl ausgelöst hast.

[QUOTE=Fonzo;415441]
Was nutzt Du zur Zeit ein Homematic IP Access Point oder ein AIO Gateway?

Hallo Fonzo
Für HomematicIP benutze ich den Access Point.
Gateway habe ich noch einen V3. Wenn ich alles richtig verstanden habe kann ich den V3 in Rente schicken mit IP-Symcon Harmony hub, Hue,ccu3 da ich dann nur die Sofware NEO zum visualisieren brauche.
Meine Plugin SUS von Mediola sind schon Jahre abgelaufen. Deshalb die Überlegung mit IP-Symcon.

Der ist recht umständlich einzubinden, da es vom Hersteller nur eine offizielle Anbindung an Cloud Systeme gibt wie Conrad Connect. Man könnte diesen therotisch auch aus IP-Symcon über den Umweg Conrad Connect schalten, das ist aber sehr umständlich einzurichten. Eine CCU3 ist da deutlich besser und wird direkt von IP-Symcon unterstützt und lokal angesteuert und man ist unabhängig von der Cloud.

Das V3 kannst Du in Rente schicken insofern nur Homematic mit der CCU3 benutzt werden soll. Wenn Du noch ein paar Baumarkt Steckdosen für den Weihnachtsbaum und Ähliches zu Hause rumfliegen hast, kannst Du das V3 ja auch noch aufheben um auch Systeme die auf 433 MHZ senden und vom V3 unterstützt werden aus IP-Symcon steuern zu können. Ansonsten kannst Du aus IP-Symcon mit dem Harmony Hub dann IR senden und Geräte per Bluetooth steuern, mit dem Hue Gateway Zigbee Geräte schalten und mit der CCU3 Homematic IP. Wenn Du also sonst keine einfachen Baumarkt Funkgeräte mehr besitzt kann das V3 in die „Rente“.

Ist halt eine einmalige Investition für IP-Symcon und das NEO Plugin IP-Symcon, dafür sparst Du Dir die Kosten für das SUS bzw. nachträgliche aktiveren der alten NEO Plugins. SUS brauchst Du dann in der Regel auch nicht mehr, irgendwie liefert ja Mediola nicht wirklich Updates für die entsprechenden NEO Plugins, für die SUS bezahlt wird, daher kann man sich das dann eigentlich auch schenken da Geld auszugeben, wenn man keine Neuerungen als Gegenleistung dafür erhält. Auf alle Fälle ist mit IP-Symcon und NEO deutlich mehr möglich, als wenn Du die alten existierenden NEO Plugins wieder aktivieren würdest.