Probleme mit Rückmelde-Zeiten bei Homematic IP

Hallo zusammen,
mein Problem betrifft im Grunde schon programmtechnische Abläufe über Skripte, da ich festgestellt habe, das die Rückmeldungen von Homematic IP Aktoren zum Teil recht verzögert in Symcon ankommen bzw registriert werden.

Ich habe zB ein Skript, welches durch Änderung von ‚STATE‘ eines Aktors angetriggert wird. In diesem Skript wird dann der Status von ‚STATE‘ abgefragt. Wenn true, dann dieses, sonst jenes…

In meinem o.g. Beispiel ist es so, das es sich um einen Homematic IP UP-Aktor mit Tastwippen handelt. Zwischen den Wippen und dem integrierten Aktor besteht über eine CCU3 eine Direktverknüpfung.

Drücke ich nun die Wippe, dann wird der Aktor über die Direktverknüpfung angesteuert (Wechsel von false auf true, Änderung von ‚STATE‘).
Daraufhin wird das Symcon-Skript angetriggert, läuft aber über das Skript in den else-Zweig, also false. Obwohl der Aktor auf true steht.
Nun ist es so, das zwischen der Betätigung der Wippe und Änderung von ‚STATE‘ laut Symcon 4 Sekunden liegen.
Also laut Symcon zB
Betätigung der Wippe ‚Press Short‘ um 12:00:00 Uhr, Änderung von ‚STATE‘ um 12:00:04 Uhr.

Ich vermute nun folgendes:
Symcon registriert eine Änderung von ‚STATE‘ (ohne den genauen Zustand zu kennen). Dann läuft das Skript und obwohl der ‚STATE‘ des Aktors true ist, hat Symcon die Rückmeldung noch nicht und das Skript läuft in den else-Zweig…

Setze ich ‚STATE‘ des Aktors jedoch über die CCU3 (Aktor über CCU3-Webui schalten), läuft das Skript richtig durch, Symcon bekommt den Zustand anscheinend schneller übermittelt, was sich mir logisch nicht so ganz erschliesst… denn es dürfte keinen Unterschied machen ob ich den Aktor über die Tasterwippe schalte oder den Aktor über das Webui der CCU3.

Hast du evtl. in der Instanz „Status Emulieren“ aktiviert? Dann würde dies erklären, warum der Zustand sofort da ist.

Trotzdem sind 4 Sekunden sehr viel. Hast du dies mal mit der WebUI der CCU verglichen? Wann wird dort der Wert angezeigt?

paresy

Problem bei mir gleich, Übertragung
CCU->IPS: Bruchteil einer sekunde
HmIP-BSM->CCU: 3 sekunden
also kein IPS-Prob

Habe das Problem mit einem HmIP-BSL (beleuchtete Tasterwippen).

Aktor über CCU geschaltet um 10:28:39 Uhr
CCU-Zeitstempel: 10:28:39 Uhr
Symcon-Zeitstempel: 10:28:43 Uhr (4 Sekunden verzögert).

Also anscheinend doch ein Symcon-Problem…

Die o.g. Zeitstempel beziehen sich auf den Aktor (Schaltzeitpunkt)

Bei mir ist es mit HmIP weniger als eine Sekunde.
Sind eure CCUs eventuell etwas überlastet?
Michael

@Nall-chan

von überlastet kann hier keine Rede sein…

Lege mal bitte in Symcon eine Variable mit Action Skript an, über welches Du einen Aktor ein- / ausschaltest.
Dann schalte über diese Variable im Webfront mal den Aktor und schau Dir einmal die Zeit in der CCU an und einmal die Zeit im Objektbaum von Symcon (beides mal die Zeiten, wann der Aktor geschaltet hat). Dann wirst Du einen nicht unerheblichen Unterschied zwischen den Zeiten feststellen.

Warum sollte ich das machen?
Ich schalte den Aktor direkt mit der Standardaktion aus dem WebFront.
Änderung in der Konsole kommt quasi sofort, und Status emulieren ist natürlich aus.
Michael

@Nall-Chan:

Selbst wenn ich den „STATE“ des Aktors direkt über das WF schalte, dann kommt die Rückmeldung des Status in Symcon um 4 Sekunden versetzt zur CCU. CCU bekommt die Rückmeldung sofort, Symcon 4 Sekunden später.
Status emulieren kann ich bei mir weder ein- noch ausschalten. Diesen Menüpunkt habe ich nicht. Zumindest nicht auf dem „STATE“ des Aktors.

Wie gesagt, bei mir halt nicht.
Michael

Ok… jedenfalls bin ich nicht der einzige, der dieses Problem hat.
Somit schliesse ich erstmal ein Problem mit meinem System aus.

Wieviel Gerät hast du denn insgesamt an der CCU dran? Hast du mal im Debug des HomeMatic Sockets geschaut wie viele Daten bei dir reinkommen? Sind das evtl. zu viele?

paresy

33 Geräte sind an der CCU3 angemeldet

Welchen Kanal verwendest Du denn zur Statusabfrage in dem Skript? Statusmeldung Schaltausgang?

@Kronos:

Nein, den Statusausgang verwende ich nicht, dieser eilt ja generell nach (selbst in der Webui der CCU).
Ich frage den Wert der Variable ‚STATE‘ ab, also dem eigentlichen Aktor-Schaltausgang.

In Anhang mal 2 Bilder, hier sieht man die Abweichung von Kanal 4…

Komischerweise stimmt der Zeitstempel von Kanal 4 in Symcon mit dem Zeitstempel des Kanal 3 in der CCU überein… (??)

Korrigiere im Setup von dem Aktor auf der CCU doch mal die Event-Latenzzeiten für den Statuskanal.

@Kronos
Wie funktioniert das denn?
Und was genau bewirkt das? Den Kanal 3 frage ich ja in keinem Skript ab…

Was mich nur wundert: Wieso stimmt der Zeitstempel in Symcon (Kanal 4) mit dem Zeitstempel der CCU (Kanal 3) überein?
Nicht das hier der Fehler liegt, das der Symcon Kanal4-Zeitstempel in Wirklichkeit der CCU-Kanal3-Zeitstempel ist (was ich nämlich gerade vermute)

Wie funktioniert das denn?

Auf der CCU unter „Geräte“ den Aktor suchen und in die „Einstellungen“ gehen. Die Default Latenz (3 Sekunden) + die Zufallsverzögerung (1 Sekunde) entspricht in etwa der von Euch festgestellten Verzögerung. Daher mein Verdacht.

@kronos
Habe sowohl die Event- als auch die Zufallszeit auf „inaktiv“ gesetzt.
Beim Versuch auf 2 Schaltaktoren mit den oben genannten Einstellungen zeitgleich ein RequestAction auf den „STATE“ Kanal 4 abzusetzen, schmiert der Homematic Socket ab…

Ich denke irgendwas läuft da verdammt schief :frowning:

Aber wie gehe ich nun mit dem Problem um? Gibt es hier eine Lösung / Lösungsweg?

Ich schalte per Direktverknüpfung (Taster -> Aktor 1, Taster -> Aktor 2) also über einen Taster 2 Schaltaktoren ein/aus

Per Skript frage ich den Zustand der Aktoren ab, angetriggert wird dieses Skript über Zustandsänderung von beiden Aktoren.

Über das Skript wird dann je nach Zustand der Aktoren die beleuchtete Wippe ein/ausgeschaltet.
Beide Aktoren ein = grün, 50% Helligkeit
Einer von beiden Aktoren ein = blau, 50% Helligkeit
Sonst = Aus, 0% Helligkeit

Das Problem sind eigentlich nun 2 Probleme:

  1. Anscheinend werden die Aktoren minimal verzögert über die Direktverknüpfung angesteuert (meinetwegen Millisekunden-Bereich)
  2. Demzufolge wird das Skript nicht ordentlich abgearbeitet.

Ich stelle es mir das Prozedere so vor (um es mal etwas aufzudröseln:

  1. Druck auf den Taster
  2. Aktor 1 ändert den Zustand, das Skript wird angetriggert
  3. Über Skript werden die Zustände von Aktor 1 und Aktor 2 abgefragt
  4. Symcon erkennt, das Aktor 1 und Aktor 2 AUS sind (Aktor 1 ist zwar AN, hat jedoch den Status noch nicht übermittelt)
  5. Das Skript läuft in den ELSE-Zweig = Tasterwippe nicht beleuchtet
  6. Ein paar Millisekunden nach Punkt 2 ändert Aktor 2 seinen Zustand
  7. Das Skript wird erneut angetriggert
  8. Da Aktor 1 mittlerweile seinen Zustand übermittelt hat (AN), Aktor 2 jedoch nicht…
  9. Das Skript fragt die Zustände von Aktor 1 und Aktor 2 ab
  10. Aktor 1 wird als AN erkannt, Aktor 2 als AUS (obwohl er an ist)
  11. Die Tasterwippe leuchtet blau (würde bedeutet nur 1 Aktor ist an), in Wirklichkeit sind aber beide an.

Die o.g. Punkte laufen natürlich im Bruchteil einer Sekunde ab, ich habe es mal versucht so aufzudröseln, damit ihr das Problem nachvollziehen könnt.