Bug: IPS_GetInstanceParentID gibt es nicht

Hi ich musste eben feststellen, das der Befehl „IPS_GetInstanceParentID“ nicht unter der Rasb. Pi 2 Version existiert :mad:

Ich bekomme folgende Meldung;

Fatal error:  Call to undefined function IPS_GetInstanceParentID() in /usr/share/symcon/scripts/20300.ips.php on line 19

und hier die Zeile 19:

[PHP$clientsockel=IPS_GetInstanceParentID($modbusgateway);]



Gibt es den Befehl unter 4.x nicht mehr ? Oder gibt es einen Ersatz dafür ?

Imho ist da die Doku veraltet.
Nimm IPS_GetInstance — IP-Symcon :: Automatisierungssoftware
Der Index ConnectionID ist der Parent.
Michael

Michael hat Recht, die entfällt auch. Pio wird die Doku mal updaten :wink:

Lösung wie gesagt: IPS_GetInstance($id)[‚ConnectionID‘]

paresy

Danke, du hast ein " ’ " vergessen :

Lösung wie gesagt: IPS_GetInstance($id)[‚ConnectionID‘];

Habe aber ein neues Problem :

echo IPS_GetProperty(47758 /[Pokeys\Dunkelheitswer]/,„ReadOnly“);

Dann spuckt er einfach gar nichts aus, egal ob der Wert 0 oder 1 sein sollte :frowning:

Genau das selbe passiert bei IPS_SetProperty($instanzid1, „ReadOnly“, „0“);

Er verändert es einfach nicht :frowning:

Unter IPS 3.4 geht beides !

Ein „IPS_ApplyChanges()“ probiert?
Und wenn der Rückgabewert „0“ ist, musst Du für eine saubere Anzeige vorher nach int() casten.

Ja habe ich, aber ließt mir ja nicht mal diesen Wert aus !

Aufgrund des „Pokeys“ vermute ich mal, dass du per Modbus koppelst, dort gäbe es den „ReadOnly“ Parameter sogar. Laut Doku gibt es den nicht so oft:
IPS_SetProperty — IP-Symcon :: Automatisierungssoftware

Echo bringt nix :smiley:
Nimm mal var_dump.
Dann siehst du das es, wie auch in der Doku beschrieben, ein boolean ist.

Also musst du auch true und false und nicht 1 und 0 bei SetProperty nutzen.
Michael

da hatter natürlich recht, aber die „1“ müsste er sehen :).

Oder gleich eine Funktion für solche Infos mit einbinden:

function boolStringEinAus($bValue = false) {                      // returns string
  return ($bValue ? 'ein  ' : 'aus  ');
}

Ne Ihr versteht das falsch !

Schau mal so sieht es in IPS 3.4 auf

Und so unter IPS 4.x (die aktuelle !)

Und hier unter IPS 4 mit var_dump:

Alles richtig so :smiley:
Boolean TRUE wird zur 1 wenn es als String konvertiert wird.
Und FALSE zu nix.
Michael

? Warum ist es unter IPS richtig das er kein Wert ausspuckt oder setzt :confused: ?

Das ist PHP-Grundlage und hat nix mit IPS zu tun.
Echo ist nicht typensicher, sondern wandelt alles nach String um.
Michael

auch mit print spuckt er unter ips 4 nix aus !

Warum macht er es unter IPS 3.4 richtig ?

Tut mir leid, ich verstehe nicht, warum es richtig ist, wenn etwas unter IPS 4 nicht funktioniert und unter 3.4 funktioniert…:confused:

Unter 3.4 ist dein Wert nämlich TRUE und unter 4.0 ist dein Wert FALSE. Du darfst eben nicht Äpfel mit Birnen vergleichen :slight_smile:

Mach mal unter der 3.4 das ReadOnly aus, dann sieht du auch unter 3.4 das Problem.

paresy

Das erklärt aber nicht warum ich den Wert nicht setzten kann ! Und unter Ips 3.4 spuckt egal ob true oder false etwas aus!

Sicher nicht ;).

Nimm eine Variable, setze sie auf false und mach ein echo.

Klar kannst du ihn setzen. Aber nicht mit 1 und 0 sondern mit true und false.
Michael

Habe es auch mit true und false versucht unter IPS 4 keine Chance ! Es geht nicht versucht es doch selber mal !!!

Unter IPS 3.4 geht es egal ob mit 0 oder 1 / true oder false !!!

$instanzid1=31782  /*[Zeug\Pokeys56E\Büro]*/;


IPS_SetProperty($instanzid1, "ReadOnly", "true");
IPS_ApplyChanges($instanzid1); //Neue Konfiguration übernehmen

„true“ ist ein string
true ist ein boolean…
und es geht

Aber da du ja mir scheinbar nicht glaubst :rolleyes:

Michael
PS: Bitte etwas weniger " ! " Danke :slight_smile: