IPS5,KNX DPT X devices, Lese-Anfrage analog EIB_RequestStatus

Hallo zusammen,

bisher habe ich zur Abfrage des Status von KNX Devices, z.B. bei Neustart von IPS, die Funktion EIB_RequestStatus benutzt. Dazu habe ich ein kleines Startup Skript geschrieben, welches abfragt, ob ein EIB/KNX Device das „Lesen“ Flag gesetzt hat. Ist dies so, so wird über EIB_RequestStatus der aktuelle Status vom Bus abgefragt.

Das funktioniert super und so hat IPS immer den aktuellen Status der KNX devices, wenn IPS einmal neu gestartet wird.

Die neuen KNX DPT x devices kennen einen solchen Befehl nicht (ich habe nur KNX_Write…) Befehle gefunden.

Wie kann man den Status der neuen KNX DPTx devices vom Bus auslesen (eine Leseanfrage an den Bus, analog EIB_RequestStatus)?

Danke und Gruß,
Georg

Je nach Themengebiet dauert eine „gute“ Antwort manchmal länger. Ich vermute die neuen Instanzen können es noch nicht.
Wir kümmern uns drum.

paresy

Danke ! und sorry, ich wollte nicht drängen sondern war mir nachträglich nicht sicher, ob es in den KNX oder IPS5 Bereich gehört…

Gruß
Georg

Dann kann man bitte auch bis zum nächsten Werktag warten.
Ich keine Selbstverständlichkeit das Paresy hier auch am WE antwortet :wink:
Michael

Moin,

in dem Zusammenhang eine Frage: liest die Instanz eigentlich bei gesetzter „Lesen“-Eigenschaft den Wert automatisch beim Neustart vom Bus oder ist das nur eine Fähigkeit, bei der man das Auslesen per Code selbst veranlassen muß?

Viele Grüße
Volker

Nach meinen Tests reicht es nicht, nur das „Lesen“ Flag zu setzen. Nach einem Reboot initiiert IPS kein automatisches aktualisieren der Instanz, wenn das „Lesen“ Flag gesetzt ist.
Ich gehe hin und hole die Instanzen mit gesetztem „Lesen“ Flag und sende dann ein EIB_RequestStatus an diese Instanz.

Gruß
Georg

Gesendet von iPhone mit Tapatalk

Danke Georg! Das hätte ich anders erwartet, wenn’s dafür einen Schalter im GUI der Instanz gibt. Bug oder Feature?

Ich interpretiere den Schalter so: Der Instanz wird erlaubt Werte vom Bus abzufragen. Das bedeutet aber nicht, dass IPS das automatisch macht.

Ich gehe hin und habe für die meisten KNX Geräte auch Instanzen der Status-Rückmeldeadresse angelegt (beispielsweise Status eines Schaltaktors für eine Lampe). Normalerweise ist ja KNX seitig nur für die Rückmeldeadresse das KNX-Flag „Lesen“ gesetzt (siehe ETS).

In IPS setze ich dann für diese Instanz ebenfalls das IPS-Flag „Lesen“ und kann den Status wie beschrieben auslesen.

Vielleicht geht es auch einfacher, aber bisher hat es nur so funktioniert.

Gruß
Georg

Korrekt.

Feature :slight_smile:
Wer z.b. bei KNX oder auch Homematic den aktuellen Status beim Starten von IPS einlesen will, muss dies über das Start-Skript selber umsetzen.
Michael

Ich weiß, daß IPS immer etwas umständlich tickt. Die Automatisierungssoftware, wo nix automatisch ist und der Anwender sich bitte um alles selbst kümmern muß. :stuck_out_tongue:

In KNX-üblich wäre es, so eine Abfrage einzustellen und dann wird sie ausgeführt oder nicht, je nach Einstellung. Den Nutzen, das einstellen zu können und dann muß der Anwender sich doch selbst drum kümmern, diesen Nutzen sehe ich noch nicht.

wertlesen2.PNG

Die KNX_RequestStatus Funktion kommt für die DPTs zum nächsten Update.

Ich habe mal ein Skript erstellt, welches dann die GAs über die jeweiligen Instanzen abfragt. Dies kann man dann per Start-Skript auch automatisch machen lassen.


<?

$gatewayIDs = IPS_GetInstanceListByModuleID("{1C902193-B044-43B8-9433-419F09C641B8}");
$instanceIDs = IPS_GetInstanceList(); 
foreach($gatewayIDs as $gatewayID) {
    foreach($instanceIDs as $instanceID) {
        $i = IPS_GetInstance($instanceID);
        if($i['ConnectionID'] == $gatewayID) {
            switch($i['ModuleInfo']['ModuleID']) {
                case "{24A9D68D-7B98-4D74-9BAE-3645D435A9EF}": //Shutter
                case "81F54858-72B1-4C2C-8CE3-7E00A3168378":   //RGB (Legacy until IP-Symcon 5.0)
                case "{81F54858-72B1-4C2C-8CE3-7E00A3168378}": //RGB (IP-Symcon 5.1+)
                case "4D7F7548-0979-4ABD-9BB3-81F9477C0903":   //RGBW (Legacy until IP-Symcon 5.0)
                case "{4D7F7548-0979-4ABD-9BB3-81F9477C0903}": //RGBW (IP-Symcon 5.1+)
                    EIB_RequestStatus($instanceID);
                    break;
                case "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //Group
                    if(IPS_GetProperty($instanceID, "GroupCapabilityRead")) {
                        EIB_RequestStatus($instanceID);
                    }
                    break;                
                default:
                    //DPTs
                    if(strpos($i['ModuleInfo']['ModuleName'], "DPT") !== false) {
                        if(IPS_GetProperty($instanceID, "CapabilityRead")) {
                            KNX_RequestStatus($instanceID);
                        }
                    }                    
                    break;
            }
        }
    }
}

paresy

PS: Das landet demnächst auch in der Doku zum schnellen Copy&Paste

Vielen Dank! Funktioniert bestens :slight_smile:

Gruß,
Georg

Das wäre mal ein Feature Request wert, paresy!

Das ein Haken in der Instanz gesetzt werden kann, wenn das lesen-Flag aktiv ist, wodurch bei einem Neustart die GA abgefragt wird.
Dann muss man wirklich nicht für jeden „Kleinkram“ selbst ein Skript triggern.

Gruss,
Peter

Gesendet von iPhone mit Tapatalk

Ja, finde ich gut. Und eigentlich würde ich im Gateway gerne ebenfalls die Zeit-Synchronisation haben :smiley:

paresy

Schade das HM da vom Aufbau so doof ist, sonst hätte ich es mir dort auch gewünscht (als sep. Eigenschaft, wie lese Status bei Verbindungsaufbau).
Michael

Ja, leider kann man kein Flag setzen, dass die Werte dort nur von der CCU synchronisiert werden sollen :frowning:

paresy

Nur zu… [emoji12]

Gesendet von iPhone mit Tapatalk