KNX: Wie Rückmeldeadresse richtig auswerten

Hallo,

noch einmal eine Rückfrage zur Statusaktualisierung nach Server Neustart.

Bei einer Instanz ‚KNX/EIB Gerät‘ als reiner Schalter gebe ich eine Gruppenadresse für das Schalten an. Zusätzlich verknüpfe ich die Rückmeldeadresse unter ‚Mehr‘. Bei aktivierter ‚Lesen‘ Funktion wird jetzt die Schalten Gruppenadresse gelesen.

Für den korrekten Status müsste aber die Rückmeldeadresse gelesen werden.

Bei einigen Tastsensoren gibt es ein Kommunikationsobjekt für ‚Schalten‘, und eines für ‚Wert für Umschaltung‘. Auf das letzte KO wird die Rückmeldeadresse des Schaltaktors gelegt. Die sog. ‚Mithöradresse‘ bei Zentralbefehlen etc. entfällt im KO Schalten hierbei. Das KO Schalten kann also ungleich dem tatsächlichen Ausgang sein.
Genauso verhält es sich, wenn ein Aktorkanal eine zusätzliche Sperrfunktion hat. Ist der Kanal gesperrt, kann auf dem Schalten KO eine 1 liegen, der Aktorkanal ist aber trotzdem nicht aktiv. Auch hier gibt es den aktuellen Status nur über die Rückmeldeadresse.

Gibt es hier eine Lösung?

Oder muss bzw. kann das ganze wie folgt gelöst werden:

  • ‚Schalten‘ ist eine eigene Instanz OHNE Option ‚Lesen‘
  • ‚Rückmeldung‘ ist eine eigene Instanz MIT Option ‚Lesen‘
  • Bei Änderung von ‚Rückmeldung‘ wird die Variable in der Instanz ‚Schalten‘ aktualisiert

Wie müsste ein Skript hierfür aussehen?

Ich hoffe Ihr versteht das Problem. Wie habt Ihr das gelöst?

Ich würde wie du vorgeschlagen hast, die Rückmelde GAs als Instanzen erstellen und dann in einem Skript komplett abfragen. Dann werden sich alle normalen Instanzen entsprechend aktualisieren, da diese auf die Abfrage der Rückmelde GA hören.

paresy

So, ich habe testweise eine Instanz als Rückmeldung angelegt und das ‚Lesen‘ aktiviert. In der eigentlichen Instanz stehen die Schalt GA und unter ‚Mehr‘ die Rückmelde GA eingetragen ohne die Option ‚Lesen‘. Nach einem Neustart wird der Status richtig dargestellt.

Danke paresy!

Funktioniert leider doch noch nicht.

  • Instanz ‚Beleuchtung‘ hat als Gruppenadresse 1/1/6 und als Rückmeldeadresse unter ‚Mehr‘ 13/3/6 ohne Option Lesen
  • Instanz ‚Rückmeldung‘ hat als Gruppenadresse 13/3/6 mit Option Lesen

Beim Neustart sehe ich die Leseanforderung im Gruppenmonitor der ETS, auch das Senden des aktuellen Wertes (13/3/6 - EIN).

In der Konsole im Objektbaum wird die Instanz Rückmeldung auch auf EIN aktualisiert. Die Instanz Beleuchtung bleibt aber AUS.

Fehlt noch eine Verbindung zwischen ‚Rückmeldung‘ und ‚Beleuchtung‘?

Ich habe jetzt mit der ETS auf die Gruppenadresse 13/3/6 (Rückmeldung) EIN und AUS gesendet. Hier werden im Objektbaum beide Instanzen aktualisiert. So wie es sein sollte.

Scheint beim Neustart nicht zu funktionieren. Braucht es evtl. eine Startverzögerung für die Abfrage?

Hallo,
hast du in ETS für 13/3/6 das Lesen aktiviert?

Hallo Jürgen,

der Rückmeldekanal des Schaltaktors hat das Lesen Flag. Die Instanz Rückmeldung fragt auch den Status richtig ab. Was fehlt, ist die Weitergabe an die Instanz Schalten.

Ich habe paresy so verstanden, dass sich der Status von Schalten über die unter Mehr eingetragene Gruppenadresse 13/3/6 automatisch aktualisiert. Also die Antwort der Leseanfrage von Instanz Rückmeldung mitbekommt.

Das ist auch so. Alle Adressen unter „Mehr“ aktuasieren die GA der Instanz. Warum das bei Dir nicht funktioniert kann ich leider nicht sagen. Ich habe damit keine Probleme,

Was IPS nicht macht ist, die GA’s bei einem Neustart selbsttätig abzufragen ( lesen ). Das müßtest mit einem Skript machen.

Grüße,
Peter

Hallo Peter,

das Script zum Abfragen habe ich (Du hast es in einem anderen Post von mir eingestellt). Es funktioniert auch, die Instanz Rückmeldung bekommt beim Start den richtigen Status zugewiesen.

Die Instanz Schalten darf die Lesen Option aber nicht gesetzt haben, oder?! Hier würde nur die GA 1/1/6 gelesen aber nicht 13/3/6.

Hier noch das Start Script:


<?
 $ids = IPS_GetInstanceListByModuleID('{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}');
 foreach($ids as $id)
 {
  if(in_array(1, EIB_GetGroupCapabilities($id)))
  {
    EIB_RequestStatus($id);
    IPS_Sleep(10);
  }
 }
?>

PS: Wenn ich an die 13/3/6 mit der ETS ‚Ein‘ / ‚Aus‘ sende, funktioniert das Aktualisieren beider Instanzen.
PPS: Ich habe gerade die Leseanforderung der 13/3/6 per ETS gesendet, Im Objektbaum wurde nur die Rückmelde Instanz aktualisiert. Deshalb noch mal die Frage muss in der Schalten Instanz auch die Lese Option gesetzt sein?!

Nein… muss nicht aktiviert sein.

Wie kannst Du mit der ETS die Leseanforderung der 13/3/6 senden?
Ich verstehe irgendwie das ganze Problem nicht mehr so ganz.
Du sagt, das Skript beim Systemstart funktioniert. Also bekommst den richtigen Status.
Wenn Du auf der 13/3/6 EIN/AUS sendest, wird die GA die unter „Mehr“ die 13/3/6 hat aktualisiert!
Was funktioniert denn nicht?

In dem ich im Gruppenmonitor die Adresse 13/3/6 eingebe und auf Lesen klicke. Der Aktor sendet auf der GA seinen Status z.B. 1. Die Rückmeldung aktualisiert sich, Schalten bekommt aber keine Änderung mit. Passiert nur beim Neustart des Servers. Im normalen Betrieb (schalten über Webfront) funktioniert der Status ganz normal.

Wird eine Leseanforderung gesendet, egal ob vom IPS Skript beim Neustart oder der ETS, reagiert der Aktor mit einem Telegramm ‚Antwort‘ auf die Rückmeldeadresse. Wird geschaltet, egal ob über das Webfront oder Tastsensor, reagiert der Aktor mit einem Telegramm ‚Schreiben‘ auf die Rückmeldeadresse. Im Gruppenmonitor der ETS unter Typ zu sehen.

Instanzen, die die Option ‚Lesen‘ nicht gesetzt haben, reagieren zwar auf das Telegramm Schreiben der Rückmeldeadresse von normalen Schalthandlungen, aber nicht auf Antwort Telegramme wenn der Status ausgelesen wird. Somit aktualisiert sich die Schalten Instanz (in der Lesen nicht gesetzt ist) auch nicht, wenn die Rückmeldung einen neuen Status per Antwort Telegramm bekommt.

Tritt also nur nach einem Neustart auf, nicht während des normalen Betriebs.

Ich habe noch einen anderen Thread gefunden in dem es um das gleiche Problem geht, leider auch hier keine Lösung:
https://www.symcon.de/forum/threads/24353-Lese-Telegramm-auf-Gruppenadresse-senden

Ich werde das später mal bei nachstellen. Wenn das Verhalten so sein sollte ist es ein Bug oder wir reden hier aneinander vorbei.
Gruß,
Peter

So… gerade mal getestet und ich kann das von Dir beschriebene Verhalten NICHT bestätigen.

Ich habe auf die unter „Mehr“ hinterlegten Gruppenadresse (6/0/13) mit der ETS4 „Lesen“ gesendet und vom Aktor die Antwort erhalten.
Diese hat auch meine IPS-Instanz aktualisiert.
Also so wie es sein soll.

Welche IPS-Version nutzt Du?

Ich habe gestern Abend IPS komplett neu installiert. Nur 2 Instanzen angelegt Test / RM_Test und das Skript Test.

Kernel Version: 3.40 - Basic
Live Update Version: 14.09.15, #3778

KNX Schnittstelle: MDT SCN-IP000.01

Die Konfiguration ist im Anhang.

Beim Lesen mit der ETS ist es genau so:

Gibt es noch eine Möglichkeit, durch Log Files etc. das Problem zu lösen? Wonach müsste ich Suchen? Ich bin über jeden Ratschlag dankbar.

Kann es evtl. an der KNX-IP Schnittstelle liegen? Welche Schnittstellen habt ihr in Betrieb?

In der Log Datei sind mir folgende Einträge aufgefallen:


>Erweiterung php_ldap.dll nicht geladen. Fehlende Abhängigkeit: libsasl.dll
>Erweiterung php_openssl.dll nicht geladen. Nicht nutzbar in Verbindung mit OpenSSL 1.0.1
>Erweiterung php_pdo_firebird.dll nicht geladen. Fehlende Abhängigkeit: fbclient.dll
>Erweiterung php_pdo_oci.dll nicht geladen. Fehlende Abhängigkeit: OCI.dll
>Erweiterung php_snmp.dll nicht geladen. Nicht nutzbar in Verbindung mit OpenSSL 1.0.1

Können die was mit dem Problem zu tun haben?

Ich habe gerade eine andere IP Schnittstelle ausprobiert, das Problem bleibt leider gleich.

Getestete Schnittstelle war die empfohlene ABB IPS/S 2.1.

Es scheint also nicht an der Schnittstelle zu liegen.

Hat noch jemand eine Idee?

Auch mit der aktuellen Beta Version 4 (IP-Symcon 4.00, 30.10.2015, 5c107a6e43ce) bleibt das Problem. :confused: