Seite 3 von 4

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 5. Jul 2020 16:02
von udo1toni
Sähe dann so aus... :)

Code: Alles auswählen

// globale Variablen werden zu Beginn der Datei definiert!
var nLights = 0
var nOnLights = 0

rule "Telegramm Status Lampen anfordern"
when
    Item Telegram_Last_Text received update "Status Lampen"
then
    val StringBuilder sb = new StringBuilder
    nLights = GR_Lichtdr.members.size
    nOnLights = GR_Lichtdr.members.filter[ i | i.state == ON].size
    if(nOnLights == 0) {
        sb.append("Alle Lichter sind ausgeschaltet")
    } else if(nLights == nOnLights) {
        sb.append("Alle Lichter sind eingeschaltet")
    } else {
        GR_Lichtdr.members.filter[ i | i.state == ON].forEach[j,k | 
            if (k > 0) {
                if(k < nOnLights - 1)
                    sb.append(", ")
                else
                    sb.append(" und ")
            }
            sb.append(j.name) 
        ]
        sb.append((if(nOnLights > 1)" sind" else " ist") + " eingeschaltet")
        GR_Lichtdr.members.filter[ i | i.state == OFF].forEach[j,k | 
            if (k > 0) {
                if(k < nLights - 1 - nOnLights)
                    sb.append(", ")
                else
                    sb.append(" und ")
            }
            sb.append(j.name) 
        ]
        sb.append((if(nLights - nOnLights > 1)" sind" else " ist") + " ausgeschaltet")
    }
    sb.append(".")
    logInfo("logger","sb hat den Wert {}",sb)
    val telegramAction = getActions("telegram","telegram:telegramBot:bot1")
    telegramAction.sendTelegram(sb.toString)
end

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 6. Jul 2020 18:09
von djuscha
Ach Udo bu bist ja richtig Klasse !!! Die Herausforderungen geben dir ja keine Ruhe ;) !!Muss ich testen wenn ich zu Hause bin.Vielen Dank!

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 7. Jul 2020 11:09
von djuscha
So hab jetzt getestet, Wenn alle Lampen au oder an sind ist alle ok.Es kommt die Meldung Alle Lichter an oder alle Lichter aus. Das ist schon mal Super.
Erste Abfrage dauert fast eine Minute ? danach geht schneller .wenn nicht alle Lampen an sind dann kommt Meldung

Code: Alles auswählen

sb hat den Wert Gosund1Light3_Toggle, FDSwitch8 sind eingeschaltetLight4_ToggleLight6_Toggle, Light8_Toggle sind ausgeschaltet.
Gosund1 ist bei mir

Code: Alles auswählen

Switch	Gosund1						"Steckdose LED Tor"	
kann man das irgentwie ändern das nicht der Ithemname sondern Bezeichnung angezeigt wird?
Wie gesagt mit Schalter geht das schon muss noch mit Dimmer ausprobieren
Und hinter dem ersten Ithemname ist keine Komma?

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 7. Jul 2020 11:45
von peter-pan
...ohne Gewähr ;) :
j.name -> j.label

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 11:22
von djuscha
peter-pan hat geschrieben: 7. Jul 2020 11:45 ...ohne Gewähr ;) :
j.name -> j.label
Jaaa das war das .VielenDank @peter-pan !
das mit keine Komma nach dem ersten Ithem verstehe ich noch nicht

Code: Alles auswählen

 sb hat den Wert Steckdose LED TorBlumenlicht1 , Lichtvorne3 sind  eingeschaltet .Lichtvorne1 Lichtvorne2 , Licht Tannen sind  ausgeschaltet .

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 12:06
von peter-pan
djuscha hat geschrieben: 8. Jul 2020 11:22 das mit keine Komma nach dem ersten Ithem verstehe ich noch nicht
Wenn ich das richtig verstehe kommt das Komma erst ab "2", da "> 1" abgefragt wird. Ich weiss aber nicht, ob ">=" schon reicht, das weiss Udo sicherlich besser.

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 12:23
von djuscha
peter-pan hat geschrieben: 8. Jul 2020 12:06
djuscha hat geschrieben: 8. Jul 2020 11:22 das mit keine Komma nach dem ersten Ithem verstehe ich noch nicht
Wenn ich das richtig verstehe kommt das Komma erst ab "2", da "> 1" abgefragt wird. Ich weiss aber nicht, ob ">=" schon reicht, das weiss Udo sicherlich besser.
geht nicht Syntax Fehler :(

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 12:31
von peter-pan
djuscha hat geschrieben: 8. Jul 2020 12:23 geht nicht Syntax Fehler
??? ich meinte natürlich ">= 1". Aber wenn ich mir die Regel so anschaue wird das noch nicht ganz reichen (Vielleicht für einen ersten Versuch), aber ich meine, da müsste die Variable "nOnLights" noch ins Spiel (Vergleich) gebracht werden. Leider verstehe ich die Regel (noch) nicht ganz.

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 12:55
von djuscha
peter-pan hat geschrieben: 8. Jul 2020 12:31
djuscha hat geschrieben: 8. Jul 2020 12:23 geht nicht Syntax Fehler
??? ich meinte natürlich ">= 1". Aber wenn ich mir die Regel so anschaue wird das noch nicht ganz reichen (Vielleicht für einen ersten Versuch), aber ich meine, da müsste die Variable "nOnLights" noch ins Spiel (Vergleich) gebracht werden. Leider verstehe ich die Regel (noch) nicht ganz.
Top das geht !!
Vielen Dank!

Re: Möglichkeit der Abfrage welche Lampen eingeschaltet sind per Telegramm

Verfasst: 8. Jul 2020 12:58
von peter-pan
...Aber Achtung, wenn tatsächlich nur 1 Licht an oder aus ist, gibt's wahrscheinlich auch ein Komma!!