In Rule eine Variable ändern innerhalb von (if)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
sonic
Beiträge: 74
Registriert: 19. Jan 2020 10:39
Answers: 0

In Rule eine Variable ändern innerhalb von (if)

Beitrag von sonic »

Hallo Community,

vielleicht verzettel ich mich aktuell. Ich möchte gerne eine bereits gefüllte Variable innerhalb eine IF Abfrage ändern.

Der Plan:
Es kommt ein Anruf an auf folgender Nummer 00001, dann soll diese Nummer durch einen String ersetzt werden.

Code: Alles auswählen

rule "Anruf Notification"
when
    Item M_Tel_Status changed to RINGING
then

    var incCall = M_Tel_EingehendAnruf.state as StringListType
    val callerNumber = incCall.getValue(1)
    var calledNumber = incCall.getValue(0)

    
    if (calledNumber === "00001") {
        var calledNumber = "Praxistelefon"
    }
    
    if (calledNumber === "00002") {
        var calledNumber = "Privattelefon"
    }
    

    var msg = "Anruf von " + callerNumber + " fuer " + calledNumber

    M_Persist_Notify.postUpdate(msg)
    sendBroadcastNotification(msg)
 
end
Die Regel funktioniert grundsätzlich, nur wird die Nummer angezeigt und nicht durch den String "Praxistelefon" oder "Privattelefon" ersetzt.

Ich freue mich auf Eure Hilfe und schonmal besten Dank
Grüße
Bernhard
---------------------------------
OpenHAB 3 auf Dell ThinClient unter Debian Bullseye und ConBee II
RaspberryPi 4b 2GB in Din Rail Gehäuse mit PiVCCU3
Allerlei Sonoff, Shelly, NodeMCU, Sensoren, Aqara Krams und und und.

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

Re: In Rule eine Variable ändern innerhalb von (if)

Beitrag von peter-pan »

Hast du den Vergleich mal mit zwei == versucht

Code: Alles auswählen

if (calledNumber == "00001") {
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

sonic
Beiträge: 74
Registriert: 19. Jan 2020 10:39
Answers: 0

Re: In Rule eine Variable ändern innerhalb von (if)

Beitrag von sonic »

Ja habe ich. Die 3 = waren eher Verzweifelunt :-)
---------------------------------
OpenHAB 3 auf Dell ThinClient unter Debian Bullseye und ConBee II
RaspberryPi 4b 2GB in Din Rail Gehäuse mit PiVCCU3
Allerlei Sonoff, Shelly, NodeMCU, Sensoren, Aqara Krams und und und.

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: In Rule eine Variable ändern innerhalb von (if)

Beitrag von udo1toni »

Punkt 1: Du darfst nicht das Schlüsselwort var voranstellen, das legt eine neue lokale Variable an, die allerdings nur innerhalb des if-Blocks gilt, also außerhalb schon wieder verworfen wird. Ich könnte mir gut vorstellen, dass hier ein Override stattfindet, das darf natürlich nicht sein.
Punkt 2: Bist Du sicher, dass es sich wirklich um einen String handelt? Um das tatsächlich sicherzustellen, wäre die Rule so sinnvoller:

Code: Alles auswählen

rule "Anruf Notification"
when
    Item M_Tel_Status changed to RINGING
then
    val incCall = M_Tel_EingehendAnruf.state as StringListType
    val callerNumber = incCall.getValue(1)
    var calledNumber = incCall.getValue(0).toString // String erzwingen

    switch(calledNumber) {
        case "00001" : calledNumber = "Praxistelefon"
        case "00002" : calledNumber = "Privattelefon"
    }
    val msg = "Anruf von " + callerNumber + " für " + calledNumber

    M_Persist_Notify.postUpdate(msg)
    sendBroadcastNotification(msg)
end
Das switch-Konstrukt spart hier nur wenig Code, ist aber etwas effizienter als die if-Anweisungen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

sonic
Beiträge: 74
Registriert: 19. Jan 2020 10:39
Answers: 0

Re: In Rule eine Variable ändern innerhalb von (if)

Beitrag von sonic »

Guten Morgen.
DANKE udo1toni,

es funktioniert nicht nur, ich habe auch wieder was dazu gelernt. TOP.

Allen einen schönen Tag!
---------------------------------
OpenHAB 3 auf Dell ThinClient unter Debian Bullseye und ConBee II
RaspberryPi 4b 2GB in Din Rail Gehäuse mit PiVCCU3
Allerlei Sonoff, Shelly, NodeMCU, Sensoren, Aqara Krams und und und.

Antworten