Nach Serverneustart automatisch Status auslesen

Hallo,

ich arbeite mich gerade in das IPS System ein.

Ich habe eine KNX Installation, die ich mit IPS (Basic) visualisieren möchte. Bei den Instanzen habe ich das Auslesen erlaubt, nach einem Serverneustart werden die aber scheinbar nicht aktualisiert. Inzwischen ausgeschaltete Lampen werden noch als eingeschaltet angezeigt.

Habe ich was übersehen? Danke für Eure Hilfe.

Moin… das passiert nicht automatisch! Das müsstest dir als Skript schreiben und dieses dann bei IPS-Start ausführen.
Dazu gab es mal ein cooles im Forum.
Ich schau mal ob ich es finde.
Peter

So… da ist es. Hatte es noch…
Das Skript schaut in alle KNX-Instanzen ob diese eine Lese-Berechtigung haben und sendet dann den Request.
Denk dran… das ist ne große Buslast wenn Du viele von denen hast.
Kannst IPS_Sleep sonst bissel hoch setzten.

Unter Kern Instanzen findest ne Instanz die heißt Event oder Event Handler.
Dort kannst Du ein Skript angeben, welches bei Start oder Stop von IPS ausgeführt wird.

Gruß,
Peter


<?
 $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);
    print_r ($id);
  }
 }

?>

Hallo Peter,

danke für die schnelle Hilfe.

Ich habe das Script angelegt, wenn ich auf Ausführen klicke funktioniert es auch. Aber wie bekomme ich es beim Systemstart ausgeführt?

PS: Welche Bedeutung hat der Ausdruck: ‚{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}‘

Edit: Funktioniert!

‚{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}‘ ist eine IPS-Interne Bezeichnung für eine KNX-Modul-Instanz.

Freut mich das es geklappt hat.

Peter

Ich nutze IPS 4.0. Dort bekomme ich die Meldung, dass die Funktion EIB_GetGroupCapabilities nicht bekannt ist.

Geht das noch nicht mit 4.0?

Abend!

Der Befehl wurde ersetzt :wink: Also entweder die Kompatibilitätsgeschichte einschalten, oder einfach „IPS_GetPropery“ verwenden…was in meinen Augen der „bessere“ Weg wäre :slight_smile:

So sieht der „Weg“ in der „__compatibility.inc.php“ aus:

if (!function_exists('EIB_GetGroupCapabilities'))
{
	function EIB_GetGroupCapabilities($InstanceID)
 	{
		$array = Array();
		if(IPS_GetProperty($InstanceID, 'GroupCapabilityReceive'))
			$array[] = 0;
		if(IPS_GetProperty($InstanceID, 'GroupCapabilityRead'))
			$array[] = 1;
		if(IPS_GetProperty($InstanceID, 'GroupCapabilityTransmit'))
			$array[] = 2;
		if(IPS_GetProperty($InstanceID, 'GroupCapabilityWrite'))
			$array[] = 3;
		return $array;
	}
}

Grüße,
Chris

Eher umgekehrt.
Der Befehl ist vermutlich veraltet.
Dafür gibt es schon länger:
IPS_GetProperty — IP-Symcon :: Automatisierungssoftware
Und
IPS_SetProperty — IP-Symcon :: Automatisierungssoftware

Alternativ einfach die Kompatibilitätsfunktionen einschalten, die sind auf dem RPi ab Werk deaktiviert. (Resourcen sparen)
Michael

Hä? Wie? Was? :smiley: …wieso umgekehrt? Das was du geschrieben hast ist doch genau das was ich geschrieben habe!? :confused: :smiley: Nur hast du das Wort „ersetzt“ durch das Wort „veraltet“ ersetzt :smiley:

Den „__compatibility.inc.php“ Teil hab ich eingebaut, damit man sieht wie „IPS_GetProperty“ zu verwenden ist.

Egal, doppelt hält besser :smiley:

Grüße,
Chris

Bezog sich nicht auf deinen Post, sondern auf den Post davor.
Als ich getippt habe, war deine Antwort noch nicht da :wink:
Und leider lädt Tap-A-Talk nicht das Thema neu, nach dem Antworten, so dass man nicht sieht wenn einer zwischenzeitlich was geschrieben hat :frowning:
Michael

Oh, ok :smiley: Die Woche war einfach zu lang schnarch :rolleyes:
Gute Nacht! :smiley:
-Chris-

Da ich mich mit PHP (noch) nicht wirklich auskenne, kann evtl. jemand das angepasste Skript für V4 einmal komplett reinstellen?! Danke.

Moin!

Wenn du es lernen willst, dann probier doch einfach mal ein wenig. Mit IPS_GetProperty kannst du nichts kaputt machen, ist ja nur ein lesen und kein schreiben :slight_smile:

Und wenn du mit IPS irgendwann mal weiterkommen möchtest, dann kommst du nicht darum dich ein wenig mit PHP zu befassen und was zu lernen. Man muss für IPS nur einen Bruchteil von PHP können. Also einfach mal ein wenig basteln und dann versteht man ziemlich schnell wie wo was funktioniert. Es muss nur der Wille da sein :wink:

Grüße,
Chris

Um nochmal auf das Skript zurückzukommen:

Bei z.B. einem einfachen Switch Element habe ich eine Gruppenadresse zum Schalten, unter ‚Mehr‘ habe ich die Rückmelde-Adresse des Aktors eingetragen. Starte ich jetzt das Skript, wird die Schalten GA ausgelesen. Um den richtigen Status zu bekommen müsste aber die Rückmelde GA ausgelesen werden?!

Gibt es dafür auch eine Möglichkeit?