Mehrfachschalter Anzeige was gedrückt ist

Hallo,

ich habe ein Schalter im Webfront mit dem ich die Rollläden auf bestimmte Werte fahren kann zur Beschattung das funktioniert. Nur wie bekomme, dass der Schalter auch anzeigt auf was gedrückt wurde. Ich habe ein Integer Variable angelegt mit drei Zustände und ein Skript.

<?
switch ($_IPS['VALUE']) 
    { 
        case 0: 
            
            HM_WriteValueFloat(55470, "LEVEL", 1.0);
            IPS_Sleep(250); 
            HM_WriteValueFloat(33556, "LEVEL", 1.0); 
            break;
        case 2: 
           
            HM_WriteValueFloat(55470, "LEVEL", 0.5);
            IPS_Sleep(250); 
            HM_WriteValueFloat(33556, "LEVEL", 0.5);
            break; 
        case 1: 
            
            HM_WriteValueFloat(55470, "LEVEL", 0.8);
            IPS_Sleep(250); 
            HM_WriteValueFloat(33556, "LEVEL", 0.8);
            break; 
    }
?>

ich habe im Forum gesucht und die Doku gelesen und bin auf das Skript gestoßen

<?php
      if ( $_IPS['SENDER'] == 'WebFront') 
    {         
        SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);     
    
    }    
?>

Kann mir jemand ein Tipp geben wie ich dass alles zusammen bekomme?

Gruss Michael

Du kannst das einfach untendrunter kopieren. Die dann entstehende Kobination „?><?php“ kannst du dann entfernen.

Danke, das war es schon !! ich habe mal wieder zu impliziert gedacht.

Kann mir jemand sagen, was genau „Case:0, Case:1 und Case:2“ bedeutet?

Ist es case:0 = Integer Wert 0, case:1 = Integer Wert 1 und case:2 = Integer Wert 2 ?

Dann geht diese case Anweisung aber nur mit Integer-Werten oder?

Also boolean dürfte dann ja nicht gehen (true/false) oder wie definiert man dann den das case?

https://www.php.net/manual/de/control-structures.switch.php

Schau mal, ob da was für Dich dabei ist.

Vielen Dank für den Link!

Ich habe es mir mal durchgelesen und die Beispiele angeschaut, aber verstehen tue ich das dennoch leider gar nicht.
Für mich erschliesst sich irgendwie die Funktionsweise überhaupt nicht.

Was bedeutet denn switch($i) ? Habe das Skript mal 1:1 übernommen und bekomme dort nur undefinierte Variable für „$i“. Wobei ich mich frage, was sich wieder hinter dem „$i“ verbirgt.

Du hast eine Variable, wo Dinge drinstehen, nehmen wir als Beispiel Zahlen. Wenn die Zahl 1 ist möchtest Du x ausführen, wenn die Zahl 2 ist möchtest Du y ausführen und wenn die Zahl 3 ist möchtest Du z ausführen.

Könnte man machen mit

$Zahl = GetValue(12345);

if ($Zahl == 1){
    // mache x
}

if ($Zahl == 2){
    // mache y
}

if ($Zahl == 3){
    // mache z
}

Kann man aber auch machen mit:

$Zahl = GetValue(12345);

switch ($Zahl){
    case 1:
        // mache x
        break;

    case 2:
        // mache y
        break;

    case 3:
        // mache z
        break;
}

Man kann zum Beispiel auch die breaks weglassen. Wenn das der Fall ist, werden im Falle von 1 die Befehle x, y und z ausgeführt und im Falle von 2 nur y und z.

In vielen Fällen macht es Sinn, switch zu verwenden, aber nicht in allen.

Ah, vielen Dank!
Jetzt wird das Ganze schon schlüssiger! :slight_smile: