Antwort
Okt 31, 2019 - 20:03
Wenn Du so was wie bedingte Popups mit unterschiedlichen Layouts realisieren willst, geht das also zur Zeit nur mit einem Workarround, ist aber grundsätzlich realisierbar.
Dazu müsstest Du wie folgt vorgehen, statt das Popup direkt zu öffnen, wird ein System getriggert, das den Zustand des Geräts auslesen und auswerten kann. Dort wird eine Variable als Trigger für eine NEO Seite gesetzt. In NEO selber wird der Status einer duplizierten Seite zugewiesen und das Popup über den Seiten Status geöffnet.
Damit Du das grob nachvollziehen kannst wie so was eingerichtet wird hier mal ein Beispiel.
Du hast eine Ausgangsseite von der das Popup abhängig vom Zustand in unterschiedlichen Versionen geöffnet werden soll. Statt auf den Button Pop-up öffnen zu legen, wird dort einen HTTP Request drauf gelegt und damit ein Webhook getriggert.
Beispiel:
http://192.168.55.10:3777/hook/neopopup?page=heizung&popup=1
Auf den Webhook übergibst Du den Seitenname und index für das Popup das geöffnet werden soll.Von der Ursprungsseite, die das Popup öffnet, legst Du nun in NEO zwei identische Kopien an.
Der Webhook wird ausgewertet auf das Gerät das gesendet hat, sowie den Pagenamen der aufgrufen werden soll, sowie der index für das Popup.
$address = $_SERVER['REMOTE_ADDR'];
$page = $_GET['page'];
$popup = 0;
if(isset($_GET['popup']))
{
$popup = $_GET['popup'];
}
// IPS_LogMessage('NEO Remote', 'Device: ' . $address . ', Page : ' . $page);
SetValue(53399, $page); // Seitenname NEO Remote
SetValue(24586, $address); // IP Adresse NEO Remote
if($popup != 0)
{
SetValue(33462, $popup); // Popup Selektor
}
echo 'Webhook NEO Device / Device: ' . $address . ', Page : ' . $page;
Jetzt hast Du Seitennamen übergeben, der geöffnet werden soll, sowie den Index für die duplizierte Seite mit der das Popup geöffnet wird.
Du hast also jeweils eine Trigger Variable um das Popup auszulösen sowie eine Variable, die Du über den Webhook ausgewertet hast, an die Du den Index übergeben hast.
Jetzt wird auf den eigentlichen aktuellen Modus des Geräts geprüft und dann abhängig vom Modus das passende Popup geöffnet.
$remote = 'Acer Iconia';
$page_index = 'Heizung Selektiv';
$popup = GetValue(33462), // Popup Seite auslesen
$mode = GetValue(40316); // Modus auslesen
$page = $page_index . ' ' . $popup;
if($mode == 1) // Trigger für NEO Seite schalten / 1 Manuel
{
SetValue(14296, true); // Seite 1 Trigger Popup Manuel
}
elseif($mode == 2) // Automatik
{
SetValue(14120, true); // Seite 2 Trigger Popup Automatik
}
IPS_RunScriptEx(21954, ['remote' => $remote, 'page' => $page]); // Seitenwechel auslösen
IPS_Sleep(1000); // kurz warten um die Trigger Werte wieder auf false zu setzten
SetValue(14296, false); // Seite 1 Trigger Popup Manuel
SetValue(14120, false); // Seite 2 Trigger Popup Automatik
Dazu wird einfach die passende duplizierte Seite in NEO zum Laden in der NEO Remote aufgerufen.
$remote = $_IPS['remote'];
$page = $_IPS['page'];
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.'"}';
$len = strlen($msg);//Länge der Message
$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);
}
Damit nun in NEO das Popup auch öffnet, musst Du der duplizierten Seite einen Status zuweisen und als Aktion das Popup, das geöffnet werden soll.
Also auf der einen duplizierten Seite
Dadurch das der Status für das Popup als Auslöser gesetzt wird und die passende Seite in NEO geladen wird, öffnet sich nun also abhängig von dem aktuellen Zustand des Geräts das passende Popup mit dem angepassten Layout. Wenn Du das Popup schließt, wechselt Du dann wieder auf die Ursprungsseite zurück. Die beiden duplizierten Seiten dienen ausschließlich dazu das passende bedingte Popup über eine Aktion und den zugewiesenen Status zur Seite zu öffnen.
Von
Wow, du hast dir ja unglaublich viel Mühe gemacht!
Damit stößt du mich allerdings auf einen mir bisher unbekannten Kriegsschauplatz. Deshalb verstehe ich das Ganze auch noch nicht wirklich.
Dazu braucht man wohl das IP-Symcon-Plug-in? Darüber weiß ich noch gar nichts.
Von
Das hängt davon ab was für ein Gerät das ist, das Du auslesen willst mit Modus Automatik/ Manuell. Je nachdem was das für ein Gerät ist und was Du momentan an Hardware besitzt kann man das unterschiedlich lösen.
Grundvoraussetzung ist, dass es möglich ist den Status auszuwerten, das das System den Status in NEO zuweisen kann und das Du die Möglichkeit besitzt einen HTTP Request auszuwerten oder ein NEO Plugin besitzt um Werte an das System zu übergeben.
Ohne nähere Infos was das genau für ein Gerät ist und was Du eventuell zur Zeit an Gateways nutzt, kann man dazu also nichts sagen, dazu müsstest Du zunächst noch weitere Infos liefern was das für ein Gerät ist und welche Gateways du zur Zeit nutzt.
Man kann das auf alle Fälle über IP-Symcon lösen, insofern ein NEO Automation Manager vorhandenen ist, sollte sich das damit auch zurecht basteln lassen. Bei einer CCU und Homematic geht das zumindest bei einer CCU auch über den Umweg NEO Server, bei älteren CCUs habe ich keine Ahnung wie das genau einzurichten ist um einen Seitenwechsel auszulösen.
Egal was Du letztlich nutzt, was auch davon abhängt um was für ein Gerät es ich handelt, Du brauchst dazu ein NEO Plugin mit dem Du den Status einer Variable einer NEO Seite zuweisen kannst.
Zum Ausprobieren ist für so was der Testmodus in NEO geeignet, da kannst Du solche Dinge in aller Ruhe testen.
Bei weitergehenden Informationen von Dir zum Gerät und dem verwendeten Gateway kann man da auch eine genauere Aussagen machen.
Von
Ja, das habe ich natürlich dummerweise nicht gesagt, was ja auch nicht nötig gewesen wäre, wenn es ein bedingtes Popup geben würde.
Homematic CCU3 mit NEO Server, Thermostat HmIP-eTRV-2
Von
Dann kannst Du probieren das analog auf der CCU3 zu lösen. Du setzt dazu eine Systemvariable aus NEO von der Ursprungsseite auf der CCU mit dem Index.
Sobald die Systemvariable aktualisiert wurde, nutzt Du das als Auslöser im NEO Server. Dann prüfst Du auf den Modus und setzt eine weitere Systemvariable, die als Trigger für die duplizierte Seite dient. Diese Systemvariable muss der duplizierten Seite als Status zugewiesen werden und dann das passende Popup als Aktion öffnen. In dem Task führst Du dann einen Seitenwechsel auf die duplizierte Seite durch, danach wir die Systemvariable im Task wieder auf false gesetzt.
Von
Da habe ich ja jetzt eine schöne Hausaufgabe. Hoffentlich komme ich damit besser zurecht, als mit denen meines Enkels.
Neuen Kommentar hinzufügen