Link ID finden

Moin Moin,
ich würde gerne zur besseren Sichtbarkeit in der mobilen App einige Namen dynamisch anpassen.
Mit

$ID=(IPS_GetParent($_IPS['SELF']));
$state=GetValue($ID);
if ($state==0)
 IPS_SetName($ID ,("MRS Radio"));
#...

geht das gut, wenn ich das Skript immer unter die betroffene Variable lege.
Nun arbeiten wir im WebFront aber mit Links …
Wie kann ich denn die (tw. mehrfachen) Links zum Objekt (im Skript) „finden“ und auch deren Namen dann gleich ‚automatisch‘ mit ändern?

Ein Wald und viele Bäume … :o
Grüße, Uwe

Hallo Uwe,

das funktioniert aktuell, indem du über alle Links gehst (IPS_GetLinkList) und prüfst, ob sie dein Objekt verlinken.

Wunderbar, Niels. Ich habe es auf derzeit 341 Bäume reduziert :smiley:
Hilf einem (immer noch) PHP-Dummy auf die Sprünge … wie prüfe ich das? Die Auswertung von arrays ist nicht wirklich mein Fachgebiet :confused:

Grüße, Uwe

Uwe: Ruf … mich … an … !

Kein Problem:



$objectID = 12345; // ID des Objekts zu dem du die Links finden möchtest

// Gehe über alle Links
foreach (IPS_GetLinkList() as $linkID) {
  // Hol dir die Daten zum Link
  $link = IPS_GetLink($linkID);
  // Zeigt der Link auf $objectID?
  if ($link['TargetID'] == $objectID) {
    // Bearbeite den Link, ganz so wie du es möchtest
  }
}


Ich muss hier noch mal danke sagen :loveips:
Mit etwas Hilfe von Christoph konnte ich sogar noch mehr raus holen - der Code von Niels hat mir aber sehr zum Verständnis geholfen.

Daraus geworden ist dann dieses (hilft ja vielleicht auch anderen)


// das Skript muss unterhalb der TargetID liegen, dann werden die passenden ID automatisch geholt, das Skript "versteckt" sich nach dem ersten ausführen
# Texte anpassen
$TextON = "... ist an";
$TextOFF= "... ist aus";
#####
$ID = IPS_GetParent($_IPS['SELF']);
IPS_SetHidden(($_IPS['SELF']), TRUE);
$state = GetValue($ID);

foreach (IPS_GetLinkList() as $linkID){
  $link = IPS_GetLink($linkID);
  if (($link['TargetID'] == $ID)and($state==0)) {
    IPS_SetName($link['LinkID'] ,($TextOFF));
  }
  if (($link['TargetID'] == $ID)and($state==1)) {
    IPS_SetName($link['LinkID'] ,($TextON));
  }
}  

Grüße, Uwe