Lesen (Erlaubt der Instanz den aktuellen Wert vom Bus abzufragen) Warum kein Standard

Hallo zusammen,

Warum ist bei KNX Instanzen Lesen (Erlaubt der Instanz den aktuellen Wert vom Bus abzufragen) nicht Standard ?

Wie kann ich alle meine Instanzen dazu bekommen den Wert abzufragen ohne jede Instanz von Hand zu überarbeiten ?

Gruß Mv

Du schreibst ein Skript, in welchem Du alle Instanzen einliest und dann den entsprechenden Parameter für jede Instanz setzt bzw. änderst. Das Einlesen lässt sich wahrscheinlich in diesem Fall gut über die ModuleID lösen.

Um das noch etwas zu konkretisieren hier eine nützliche Methoden:

  • IPS_GetInstanceListByModuleID (zeige alle Instanzen vom Typ KNX DPTxy)
  • IPS_GetModuleList (finde überhaupt heraus, welche GUID die KNX Instanz DPTxy hat)
  • IPS_GetConfiguration (herausfinden wie der Konfigurationspunkt heißt)
  • IPS_SetProperty (Eigenschaft xy auf abc setzen)
  • IPS_ApplyChanges (Änderungen auch speichern)

Wenn du diese Befehle in die Suche oben rechts auf dieser Webseite eingibst, erhälst du zu allen eine genauere Beschreibung.

Anhaltspunkte:

print_r(IPS_GetModuleList());
print_r(IPS_GetConfiguration(beliebige, aber selbst im Objektbaum ausgesuchte Instanz ID von KNX DPTxy));

$instanzen = IPS_GetModuleList(GUID);
foreach($instanzen as $instanz){
- IPS_SetProperty ($instanz, "eigenschaft", "wert");
- IPS_ApplyChanges ($instanz)
}

Super vielen Dank Jungs!

Warum die Option aber Standardmäßig
nicht angehackt sollte ja bestimmt auch einen Grund haben oder?

Gesendet von iPhone mit Tapatalk Pro

Ausser beim Start von IPS sehe ich keinen Grund, Werte vom Bus abzufragen. Und selbst da brauche ich nicht alles zu aktualisieren. Ich persönlich aktualisiere nur die Rollläden.

Übrigens gibt es ein fertiges Skript dafür hier: EIB/KNX — IP-Symcon :: Automatisierungssoftware

paresy

Kann es sein, dass das Script ein paar { und } bei den GUIDs zu wenig hat?

Nein. Da waren leider früher ein paar IP-Symcon Versionen fehlerhaft und haben die GUIDs nicht korrekt validiert und somit waren da falsche GUIDs drin. Dieses Skript ist deshalb etwas komisch aber dadurch für alle Versionen von IP-Symcon kompatibel :slight_smile:

paresy

Super Vielen Dank! Macht die Sache nun viel Einfacher :slight_smile:

Gruß MV

Ich habe nun dieses Script wie folgt verwendet bekomme aber trotzdem noch einen „Zeitüberschreitungsfehler.“

Wer kann helfen ?

Warning:  Zeitüberschreitung beim Warten auf Antwort in /mnt/data/symcon/scripts/56880.ips.php on line 31

Line 31 ist: = KNX_RequestStatus($instanceID);

<?php
// set_time_limit (300);    // maximale PHP-Ausführungszeit in Sekunden


set_time_limit(1200);


$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;
            }
        }
    }
}

Hat die entsprechende Gruppenadresse (ggf. mal immer eine Zeile vorher die Instanz ID ausgeben) denn genau ein Gerät, das die Leseanfrage beantwortet?

nein leider nicht nur 10x Warning: Zeitüberschreitung beim Warten auf Antwort in /mnt/data/symcon/scripts/56880.ips.php on line 31

Wenn es kein Gerät gibt, dass antwortet… Dann ist es doch klar, dass es eine Zeitüberschreitung gibt.
Bau doch mal eine Zeile weiter oben ein

print "
 instanceID: ".$instanceID;

Dann kannst du wenigstens prüfen, ob das zusammenhängt.

Das ist übrigens auch der Grund, warum Lesen nicht by Default aktiv ist. Im Export ist nicht bekannt, ob es exakt ein Gerät gibt, welches auf der GA überhaupt eine Antwort liefern kann.

paresy