switch-case Funktion mit Blockly

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Tallman
Beiträge: 13
Registriert: 13. Jan 2025 20:16
Answers: 0

switch-case Funktion mit Blockly

Beitrag von Tallman »

Hallo,
ich möchte einen Hue-Taster auswerten und switch-case ist übersichtlicher als es mit verschachtelten If zu machen.
Die KI meinte es gibt die Funktion auch in Blockly, aber ich finde es nicht. Kann mir da mal jemand auf die Sprünge helfen :D

Danke Talli
Openhab 5.1.1 auf Debian (alles Text Dateien)

Harka
Beiträge: 610
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: switch-case Funktion mit Blockly

Beitrag von Harka »

Moin,
nein. Ist mir zumindestens bei OH noch nicht über den Weg gelaufen. Ich löse das bei unserem Doppeltaster über If-Else-If-Else
Screenshot 2026-05-25 203552.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Tallman
Beiträge: 13
Registriert: 13. Jan 2025 20:16
Answers: 0

Re: switch-case Funktion mit Blockly

Beitrag von Tallman »

Danke Harka, da hat die KI mich mal wieder angelogen :(
Openhab 5.1.1 auf Debian (alles Text Dateien)

Harka
Beiträge: 610
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: switch-case Funktion mit Blockly

Beitrag von Harka »

Gern. Sei mit solchen Aussagen aber vorsichtig. "Mutter" vergisst nichts und hat ja hier auch nicht ganz unrecht.
Beim ioBroker hat man einen solchen Block ergänzt. Vermisst habe ich es bisher nicht und eine Bibliothek mit dieser Funktion selber bauen wird imho auch nicht gehen (Zahnrad?).

Benutzeravatar
peter-pan
Beiträge: 2875
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: switch-case Funktion mit Blockly

Beitrag von peter-pan »

Du schreibst, dass du alles in Textdateien hast.
Hier noch ein Beipiel einer State Machine mittels DSL-Rule:

Code: Alles auswählen

rule "miniswitch_snzb01_01"
  when
   Channel 'mqtt:topic:danny:snzb0101:click' triggered   //eckig
  then
    var  GenericItem itZiel
    val strReceivedEvent = String::format("%1$-6s", receivedEvent)
     switch(receivedEvent) {
        case "single" : itZiel = LidlLedLamp_01
        case "double" : itZiel = Be2709w_01
        case "long"   : itZiel = zbminil2_01_state
        default : {
            logWarn("miniswitch_snzb01_01","Da ist was schief gegangen! Unbekanntes Event {} empfangen!", strReceivedEvent)
            return;
        }
    }
    var strLocation = getLocation(itZiel).label                      // Location Label ermitteln
    val strOnOff    = if(itZiel.state != ON) "ein" else "aus"        // künftiger Zustand
    val strItLabel  = String::format("%1$-17s", itZiel.label)
    logInfo("miniswitch_snzb01_01", "{} - {} {}geschaltet: {}", strReceivedEvent, strItLabel, String::format("%1$3s",  strOnOff ), strLocation)
    itZiel.sendCommand(if(itZiel.state != ON) ON else OFF)
end
Der "Log" könnte dann so aussehen:

Code: Alles auswählen

2026-05-26 20:47:11.439 [INFO ] [re.model.script.miniswitch_snzb01_01] - single - Birne Lidl LED 01 eingeschaltet: Zimmer York
2026-05-26 20:48:38.925 [INFO ] [re.model.script.miniswitch_snzb01_01] - single - Birne Lidl LED 01 ausgeschaltet: Zimmer York
Pi5/8GB(PiOS Lite 64-bit(trixie)/SSD 120GB - OH5.1.4 openhabian
(Test openHAB 5.2.0-SNAPSHOT - Build #5309 - RPi 5/8 / M.2 SSD)

Antworten