Integer Variable mit Switch verbinden

Hallo zusammen,

wie kann ich eine Bool Variable mit einer Integer Variable „verknüpfen“?

Ich möchte, dass die Bool Variable True wird, wenn ich die Integer Variable auf 1 setze und False bei 1. Genauso umgekehrt.

Hintergrund ist, dass ich des Status aus dem PHPSonos Modul mit einem Schalter verknüpfen möchte, den ich dann wiederum über das HomeBridge Modul zugänglich mache. So kann ich einen Sonos Lautsprecher schnell über das iPhone ein. und ausschalten.

Ich habe das mal über eine Bool Variable mit drei Ereignis Skripten gelöst, das scheint mir aber recht umständlich. Wenn ich über das Management UI die Bool Variable ändere, geht der Speaker auch an- und aus, wenn ich ihn über die HomeBridge verfügbar mache, geht es nicht.

Geht das aber nicht grundsätzlich einfacher?

SG

Diese Frage ist für mich unverständlich (Typo ?):mad:

Vielleicht meinst Du das so:

<?

$Int = 1;
$Bool = (bool) $Int;
var_dump ($Bool);

$Int = 0;
$Bool = (bool) $Int;
var_dump ($Bool);

?>

Ergebnis:

bool(true)
bool(false)

Oder so:

$bool = ($int == 1);

Moin!

Ich verwende gerne >> PHP FILTER_VALIDATE_BOOLEAN Filter

Viele Grüße,
Chris

Danke für die Antworten. Grundsätzlich ist mir die Konvertierung zwischen Int und Bool in PHP schon klar.

Mein konkreter Fall ist folgender:

im PHPSonos Moul gibt es eine Int Variable Status mit u.a. den 1 = Play(ing), 3 = Stop(ped)

Jetzt möchte ich im UI einen Schalter implementieren, der natürlich mit einer Bool Variable (PoweredOn) verknüpft sein muss.

Diese Bool Variable kann ich erstellen, muss sie aber mit der Int Variable synchronisieren. Das mache ich jetzt über drei Event Scripts.

Script 1 prüft auf Variable Status=1 und Setzt dann PoweredOn=true
Script 2 prüft auf Variable Status=3 und Setzt dann PoweredOn=false
Script 3 prüft Variable PoweredOn auf Veränderung und ruft dann abhängig vom Wert SNS_Play(…) oder SNS_Stop(…) auf.

Das erscheint mir aber recht umständlich. Geht das nicht einfacher? Ja, Script 1 und 2 könnte ich noch zusammenfassen…

SG

Du kannst bei beiden Variablen ausgelöste Ereignisse anhängen, die die jeweils andere Variable aktualisieren. Pass nur auf, dass du hier keine Endlosschleife baust. Die einfachste Variante ist wohl, im Ereignis auf Variablenveränderung zu reagieren.

edit: Ich war zu langsam, das ist ja schon deine Lösung

So ganz klar ist mir das immer noch nicht :banghead:

Ist die „Variable Status“ ein Objekt im IPS-Baum ?

Ich denke, Du kommst in diesem Fall um ein(einziges) Eventskript nicht herum; solche Wertezuweisungen mache ich meist mit einer Entscheidungsmatrix, die allerdings in Deinem Fall sehr trivial ausfällt:

<?

$OblID_PoweredOn = XXXXX;           // von IPS festgelegt

$Status = $_IPS['VALUE'];                           // Analoger Wert der Variablen: 22.3

$Matrix = array (
    0 => '',
    1 => true,
    2 => '',
    3 => false,
);

$PoweredOn = (bool) $Matrix[$Status];

SetValueBoolean ($OblID_PoweredOn, $PoweredOn);

?>

(Skript ist nicht von mir getestet, bei Anwendung empfehle ich Abfragen, ob der Wertebereich eingehalten wird).

Die „Variable Status“ löst das obige Skript aus, das den von IPS übergebenen Wert entsprechend Deinen Regeln in Boolean umwandelt und in das noch von Dir zu erzeugende boolsche Variablen-Objekt „PoweredOn“ schreibt.
Diesem Objekt kannst Du ja das Profil „Switch“ zuweisen und über einen Link auch visualisieren.

Dein Skript 3 wird dann als als Event-Skript definiert, das bei Änderung des Boolschen Objektes „PoweredOn“ gestartet wird.

Oder aber der direkte Weg:
Du fügst den obigen Ablauf des Skriptes in Dein Skript 3 und definierst es als Event-Skript für die „Variable Status“

Viele Grüsse
Harald

Ja, Status ist eine (Integer) Variable im IPS Baum. Sie gehört zum PHPSonos Modul.

Ich verwende jetzt zwei Skripte, da ich die Variable in beide Richtungen Synchronisieren muss. Die Variable PoweredOn soll ja automatisch gesetzt werden, wenn der Sonos Status von irgendeiner anderen Seite geändert wird und soll gleichzeitig Schalter dienen, den ich mit Homekit verknüpfen kann.

Hätte halt gehofft, dass es einfacher geht. Z.B. ein Link zwischen Variablen mit Translation, wäre dann evtl. was für einen Feature Request.

Danke für die Unterstützung.
Bernd