Antworten
Dez 01, 2019 - 11:50
Mit dem Vorgänger von NEO waren Push Aktualisierungen von einzelnen Werten möglich, dieses wichtige Feature wurde leider mit dem Wechsel auf NEO abgeschafft und bis heute auch kein adäquater Ersatz geschaffen.
Eine Statusaktualisierung erfolgt also in NEO zur Zeit immer auf eine von zwei Arten. Die erste ist wenn direkt in NEO ein Gerät geschaltet wird, dann wird auch sofort der Status aktualisiert. Die zweite ist wenn die NEO Remote Seite neu geladen wird, dann wird auch der Status aller Geräte auf der Seite aktualisiert. Ein Aktualisieren eines einzelnen Status eines Geräts, ist zur Zeit im Gegensatz zum Vorgänger von NEO, nicht möglich, es muss immer die komplette Seite neu geladen werden.
Wenn also ein Gerät nicht in NEO geschaltet wird, aktualisiert von sich aus NEO nicht den Status. Es gibt also nur zwei Möglichkeiten eine Statusänderung zeitnah in NEO darzustellen. Die erste ist es ein Aktualisierungsintervall (Autorefresh) einzustellen, in dem die Seite den Status aktualisiert. Das kürzeste Intervall wäre 1 Sekunde, dies wird aber mit einem Hinweis von Mediola quittiert, dass dies nicht empfohlen wird. Empfohlen ist von Mediola ein Intervall von 10 Sekunden oder mehr.
Die bessere Möglichkeit, was die Netzwerkbelastung angelangt, ist das Aktualisierungsintervall auf --- (aus) zu stellen und die Seite über ein Automationssystem von extern anzuweisen sich zu aktualisieren. Dies hat den Vorteil, dass die Seite nur dann neu geladen wird, wenn wirklich eine Statusänderung erfolgt ist und weiterhin das die Statusänderung in NEO unmittelbar erfolgt, also ohne die Verzögerung, die bei einem festen Intervall vorgegeben ist.
Der Nachteil der besseren Methode zur Statusaktualisierung ist, dass ein System benötigt wird, dass bei einer Änderung des Status eines Geräts die NEO Seite anweist neu zu laden, dies geht also nicht mit NEO alleine.
Dazu gibt es mehrere Möglichkeiten, eine wäre auf einer CCU3 das NEO Plugin Automation Manager zu nutzten und bei einer Änderung des Status eines Geräts einen Seitenwechsel auf der passenden Seite auszulösen. Dann kann der Autorefresh auf aus stehen.
Die zweite Möglichkeit nutzte ich selber. Ich habe ebenfalls das Autorefresh Intervall auf --- (aus) stehen.
Die Statusaktualisierung des HMIP-PSM erfolgt bei mir augenblicklich in IP-Symcon.
In IP-Symcon liegt ein Ereignis auf dem Status des HMIP-PSM, sobald sich dieser ändert wird die zugehörige Seite in NEO neu geladen.
So aktualisiert sich der Status eines Geräts sofort auch wenn dies auf anderem Weg geschaltet wird außer durch NEO direkt.
Das Skript sieht so aus
<?php
includeScript(14105);
function includeScript($scriptID)
{
$s = IPS_GetScript($scriptID);
include($s['ScriptFile']);
}
$remote = "Acer Iconia";
$page = "Homematic";
MEDIOLA_PUSH_Sitechange($remote, $page);
Das eigentliche Skript (14105), dass den Seitenwechsel in NEO auslöst, sieht so aus
<?php
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
$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);
}
So kann das Intervall auf aus stehen, der Status wird dennoch sofort in NEO aktualisiert, sobald ein Gerät eine Statusänderung erfährt.
Wünschenswert wäre es wenn NEO grundsätzlich die gleiche Funktionalität hätte wie der Vorgänger von NEO, das man gezielt einen einzelnen Status auf einer NEO Remote Seite aktualisieren kann ohne die komplette Seite neu laden zu müssen.
Wenn Du auf der CCU3 nicht das NEO Plugin NEO Automation Manager nutzten willst und auch nicht externe Systeme wie IP-Symcon nutzt, ist es das einfachste für Dich das Seitenaktualisierungsintervall (Autorefresh) auf 1 s zustellen. Das ist vielleicht nicht ideal, sollte aber im Zweifelsfall auch die CCU3 nicht sofort aus der Bahn werfen. Schneller als im Intervall von 1 Sekunde bekommst Du aber auf die Art keinen aktuellen Status angezeigt, die Frage ist aber auch in welchen Fällen es wirklich notwendig ist unmittelbar ein Statusupdate in einer NEO Remoteseite zu sehen.
Dez 01, 2019 - 13:54
Dass der Status einzelner Geräte in der NEO App nur bei Refresh aktuallisiert, ist mir bewusst.
Seltsam ist nur, dass der Status nicht wechselt, wenn ich die HM-IP direkt aus der NEO App schalte.
Bei den normalen HM Funksteckdosen tut er das. Daher dachte ich, dass es ein HM-IP "Problem" ist.
Für mich geht es darum, dass ich kurz sehen möchte, ob das Signal auch bei der Steckdose angekommen ist, da manche Steckdosen manchmal nicht erreichbar sind.
Ich denke, Autorefresh ist da für mich der richtige Weg.
Dazu noch 2 kurze Fragen:
1. Werden die Seiten auch Aktuallisiert, wenn ich mich nicht auf ihnen befinde?
Sprich, wenn ich auf der Seite "Index" bin, wird dann z.B. die Seite "Wohnzimmer" ebenfalls im Hintergrund laufend aktuallisiert, sofern es auf dieser Seite eingestellt ist?
2. Wenn ich die APP schließe, sie aber im Hintergrund läuft, findet dann der Refresh weiterhin automatisiert statt, wenn ich als letztes auf einer Seite war, bei der dies eingestellt ist? (Ich nutze Android)
Neuen Kommentar hinzufügen