drapple
1
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
paresy
3
Michael hat Recht, die entfällt auch. Pio wird die Doku mal updaten
Lösung wie gesagt: IPS_GetInstance($id)[‚ConnectionID‘]
paresy
drapple
4
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
Genau das selbe passiert bei IPS_SetProperty($instanzid1, „ReadOnly“, „0“);
Er verändert es einfach nicht
Unter IPS 3.4 geht beides !
dfhome
5
Ein „IPS_ApplyChanges()“ probiert?
Und wenn der Rückgabewert „0“ ist, musst Du für eine saubere Anzeige vorher nach int() casten.
drapple
6
Ja habe ich, aber ließt mir ja nicht mal diesen Wert aus !
ralf
7
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
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
ralf
9
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 ');
}
drapple
10
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
Boolean TRUE wird zur 1 wenn es als String konvertiert wird.
Und FALSE zu nix.
Michael
drapple
12
? Warum ist es unter IPS richtig das er kein Wert ausspuckt oder setzt ?
Das ist PHP-Grundlage und hat nix mit IPS zu tun.
Echo ist nicht typensicher, sondern wandelt alles nach String um.
Michael
drapple
14
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…
paresy
15
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
Mach mal unter der 3.4 das ReadOnly aus, dann sieht du auch unter 3.4 das Problem.
paresy
drapple
16
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!
ralf
17
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
drapple
19
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