Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Hallo,
ich lasse mir Warnungen via Telegram schicken, wenn es Zeit wird den Keller zu lüften. Das hat mit OH3 auch gut geklappt. Nach dem Update auf 4.0.4 habe ich ein paar Probleme. Die selbstständige Warnung funktioniert nur noch so, dass die % Angaben fehlen und stattdessen der Dezimalwert ausgegeben wird. Das kann ich noch verschmerzen, aber es gibt dafür sicher eine Lösung. Außerdem konnte ich per Telegram Befehl die aktuelle Durchschnittsfeuchte und die einzelnen Räume abfragen, das klappt gar nicht mehr. FM:

Code: Alles auswählen

Script execution of rule with UID 'FeuchteTelegram-1' failed: Conversion = '
Rule Feuchtewarnung

Code: Alles auswählen

rule "Feuchtewarnung"
when
    Item gAlleFeuchtigkeitssensorenKeller changed        // Gruppenstatus geändert
then 
    val Alarmgrenze = 0.5                                 // Ab hier Alarmmeldung
    val Abweichung = 0.01
    val fFeuchteNeu = (newState as Number).floatValue    // aktueller Wert
    
    if(AlleFeuchtigkeitssensorenKellerAlt.state == NULL){
        AlleFeuchtigkeitssensorenKellerAlt.postUpdate(fFeuchteNeu) 
    }

    var fFeuchteAlt = (AlleFeuchtigkeitssensorenKellerAlt.state as Number).floatValue   // Wert aus extra Item

    if(fFeuchteNeu < Alarmgrenze) {                      // neuer Wert unter Alarmgrenze?
        AlleFeuchtigkeitssensorenKellerAlt.postUpdate(fFeuchteNeu)                // Dann extra Item aktualisieren
        return;                                          // und Abbruch
    }
    // ab hier Alarmgrenze überschritten

    if(Math.abs(fFeuchteAlt - fFeuchteNeu) < Abweichung)          // Falls Abweichung neu zu alt kleiner 1
        return;                                          // Abbruch (OHNE Update des alten Werts!)
    // Ab hier Abweichung über 1 %

    AlleFeuchtigkeitssensorenKellerAlt.postUpdate(fFeuchteNeu)                    // Extra Item updaten und Alarm geben
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    telegramAction.sendTelegram("Bitte Keller lüften! Durchnittsfeuchte " + fFeuchteNeu.toString)
end 
Ausgabe Telegram

Code: Alles auswählen

Bitte Keller lüften! Durchnittsfeuchte 0.534
Rule Telegram

Code: Alles auswählen

rule "Kellerfeuchte Telegram"

when
    Item telegramMessage received update "Kellerfeuchte"

then 
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    telegramAction.sendTelegram("Keller Durchnittsfeuchte " + gAlleFeuchtigkeitssensorenKeller.state.toString + " " + "%%\n" + "Keller Flur " + Feuchtigkeit_FlurKeller.state.toString + "%\n" + "Waschkeller " + Feuchtigkeit_Waschkeller.state.toString + "%\n" + "Vorratskeller " + Feuchtigkeit_Vorratskeller.state.toString + "%\n" + "Gästezimmer " + Feuchtigkeit_Gaestezimmer.state.toString + "%\n" + "Hobbyraum " + Feuchtigkeit_Hobbyraum.state.toString + "%")

end 
Group Item

Code: Alles auswählen

Group:Number:AVG                      gAlleFeuchtigkeitssensorenKeller      "Alle Feuchtigkeitssensoren Keller [%.1f %%]"        <humidity>          (gSonstiges)                                              ["Equipment"]
Openhabian 4.0.4

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

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von udo1toni »

Da Du explizit den Dezimalwert verwendest (val fFeuchteNeu = (newState as Number).floatValue und fFeuchteNeu.toString) hast Du an dieser Stelle niemals Prozentwerte bekommen (also das Prozent-Zeichen).

Wenn Du den Wert selbst meinst, dann schlägt eine Änderung zwischen openHAB3 und openHAB4 zu - die aber nur zum Tragen kommt, weil Du vermutlich unter openHAB3 das Item schon ungünstig definiert hattest...

openHAB bietet seit den späten OH2 Versionen UoM (Units of Measurement), und Feuchte wird in Prozent gemessen, es wäre also wichtig, als Itemtyp Number:Dimensionless zu wählen. Außerdem muss unter openHAB4 zwingend ein Parameter Unit bei allen UoM Items gesetzt werden, logischerweise passend zum Untertyp (also % bei Dimensionless). Unit bestimmt, wie das Item persistiert wird und wie der Wert als FloatValue dargestellt wird, hat also Einfluss auf Deine Rule.

Die zweite Rule wäre in etwas anderer Form eleganter ;)

Code: Alles auswählen

rule "Kellerfeuchte Telegram"
when
    Item telegramMessage received update "Kellerfeuchte"
then 
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    val Stringbuilder strMeldung = new Stringbuilder
    strMeldung.append("Keller Durchnittsfeuchte " + gAlleFeuchtigkeitssensorenKeller.state.toString)
    gAlleFeuchtigkeitssensorenKeller.members.forEach[i|
        strMeldung.append(" %\n" + i.name.split("_").get(1) + " " + i.state.toString)
    ]
    strMeldung.append(" %\n")
    telegramAction.sendTelegram(strMeldung.toString)
end
Natürlich mit der Einschränkung, dass der Itemname gewissen Einschränkungen unterliegt :) aber irgendwas ist ja immer. Unter der Voraussetzung, dass im Label ein besserer Text zur Verfügung steht könnte man auch das Label verwenden :) i.label liefert innerhalb der Schleife (members.forEach[]) das Label.
die Meldung enthält für jeden Member der Gruppe eine Zeile und zusätzlich eine Zeile für den Wert der Gruppe selbst.
Wichtig ist halt, dass alle Items als Number:Dimensionless definiert sind und die Gruppe als Group:Number:Dimensionless:AVG:

Code: Alles auswählen

Group:Number:Dimensionless:AVG gFeuchteAlle "Feuchtesensoren" ["Measurement","Humidity"] {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless Feuchte1 "Feuchte 1" (gFeuchteAlle) ["Measurement","Humidity"] {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless Feuchte2 "Feuchte 2" (gFeuchteAlle) ["Measurement","Humidity"] {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless Feuchte3 "Feuchte 3" (gFeuchteAlle) ["Measurement","Humidity"] {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless Feuchte4 "Feuchte 4" (gFeuchteAlle) ["Measurement","Humidity"] {unit="%", stateDescription=""[pattern="%.1f %%"]}
Mitsamt notwendigem Tagging für das Semantic Model, Unit und Pattern für die Anzeige (Ausschnitt aus Sitemap):

Code: Alles auswählen

    Frame label="Feuchtesensoren" {
        Text item=gFeuchteAlle
        Text item=Feuchte1
        Text item=Feuchte2
        Text item=Feuchte3
        Text item=Feuchte4
    }
Screenshot 2023-12-07 171642.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Vielen Dank für die ausführliche Antwort. Es gibt jedoch noch ein paar Problemchen.
Die Rule Kellerfeuchte Telegram stört sich an dem Stringbuilder.

Code: Alles auswählen

2023-12-07 21:39:15.717 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'FeuchteTelegram-1' failed: An error occurred during the script execution: Cannot invoke "org.eclipse.xtext.common.types.JvmType.eIsProxy()" because "type" is null in FeuchteTelegram
Außerdem habe ich mal expemplarisch das Item eines Feuchte Sensors geändert und die Gruppe angepasst. Jetzt zeigt er mir in den Widgets keinen Wert mehr an. Das Widget sieht so aus.

Code: Alles auswählen

uid: Card_Room_Popup+Motion
tags:
  - motion
props:
  parameters:
    - label: Header
      name: text_header
      required: false
      type: TEXT
    - description: icon name without ".png", located in static/icons/ folder
      label: Icon
      name: iconimage
      required: false
      type: TEXT
    - description: HEX or rgba
      label: Backgroundcolor
      name: bgcolor
      required: false
      type: TEXT
    - description: Page which will be opened as popup
      label: Page ID
      name: page
      required: false
    - context: item
      description: select group for status lights
      label: Item
      name: status
      required: false
      type: TEXT
    - context: item
      description: select item for heating
      label: Item
      name: heating
      required: false
      type: TEXT
    - context: item
      description: select item for temperature
      label: Item
      name: temp
      required: false
      type: TEXT
    - context: item
      description: select item for set temperature
      label: Item
      name: settemp
      required: false
      type: TEXT
    - context: item
      description: select item for humidity
      label: Item
      name: humidity
      required: false
      type: TEXT
    - context: item
      description: select item for illuminance
      label: Item
      name: illuminance
      required: false
      type: TEXT
    - context: item
      description: select item for motion state(s)
      label: Item
      name: motion
      required: false
      type: TEXT
    - context: item
      description: select item for door lock(s)
      label: Item
      name: door_lock
      required: false
      type: TEXT
    - context: item
      description: select item for blinds group (SUM)
      label: Item
      name: blinds_closed
      required: false
      type: TEXT
    - context: item
      description: select item for speaker(s)
      label: Item
      name: speakers
      required: false
      type: TEXT
    - context: item
      description: select item for windows(s)
      label: Item
      name: windows
      required: false
      type: TEXT
    - context: item
      description: select item for numbers of windows
      label: Item
      name: windows_numbers
      required: false
      type: TEXT
    - context: item
      description: select item for boiler temp
      label: Item
      name: boiler_temp
      required: false
      type: TEXT
timestamp: Dec 14, 2021, 11:53:35 AM
component: f7-card
config:
  style:
    background-color: "=props.bgcolor ? props.bgcolor : ''"
    border-radius: var(--f7-card-expandable-border-radius)
    box-shadow: '=(items[props.status].state === "ON") ? "3px 3px 10px 0px rgba(255,255,255,255)" : "var(--f7-card-expandable-box-shadow)"'
    class:
      - padding: 0px
    height: 125px
    margin-left: 5px
    margin-right: 5px
    noShadow: false
slots:
  content:
    - component: f7-block
      config:
        style:
          left: 50px
          position: absolute
          top: -5px
      slots:
        default:
          - component: Label
            config:
              style:
                font-size: 17px
                font-weight: 600
                margin-left: 0px
                margin-top: 0px
              text: "=props.text_header ? props.text_header : 'Set Props'"
    - component: f7-block
      config:
        style:
          bottom: -37px
          left: 16px
          position: absolute
      slots:
        default:
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: "=(items[props.status].state === 'ON') ? 'lightbulb' : 'lightbulb_slash'"
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=(items[props.status].state === 'ON') ? items[props.status].state : ''"
              visible: "=props.status ? true : false"
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: flame
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=items[props.heating].state === 'ON' ? '' : ''"
              visible: =items[props.heating].state === 'ON'
          - component: f7-chip
            config:
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=items[props.motion].state === 'ON' ? '' : ''"
              visible: "=props.motion ? true : false"
            slots:
              media:
                - component: oh-icon
                  config:
                    icon: "=items[props.motion].state === 'ON' ? 'motion' : ''"
                    style:
                      filter: "='brightness(' + (themeOptions.dark === 'dark' ? '1' : '0.4') + ')'"
                      height: 18px
          - component: f7-chip
            config:
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=items[props.windows_numbers].state > 0 ? items[props.windows_numbers].state : ''"
              visible: "=items[props.windows].state === 'OPEN' ? true : false"
            slots:
              media:
                - component: oh-icon
                  config:
                    icon: window-open
                    style:
                      filter: "='brightness(' + (themeOptions.dark === 'dark' ? '1' : '0.4') + ')'"
                      height: 18px
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: "=items[props.door_lock].state === 'ON' ? 'lock_open' : 'lock'"
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=items[props.door_lock].state === 'ON' ? '' : ''"
              visible: "=props.door_lock ? true : false"
          - component: f7-chip
            config:
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=(Number(items[props.blinds_closed].state) === 0) ? '' : Math.floor(items[props.blinds_closed].state) + '%'"
              visible: "=(Number(Math.floor(items[props.blinds_closed].state)) > 0) ? true : false"
            slots:
              media:
                - component: oh-icon
                  config:
                    icon: "=(Number(items[props.blinds_closed].state) === 0) ? 'cinemascreen-30' : 'cinemascreen-100'"
                    style:
                      filter: "='brightness(' + (themeOptions.dark === 'dark' ? '100' : '0.3') + ')'"
                      height: 18px
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: "=items[props.speakers].state === 'PLAY' ? 'speaker_2' : 'speaker'"
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              visible: "=items[props.speakers].state === 'PLAY' ? true : false"
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: sun_min
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: =items[props.illuminance].displayState
              visible: "=props.illuminance ? true : false"
    - component: f7-block
      config:
        style:
          bottom: -65px
          left: 16px
          position: absolute
      slots:
        default:
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: thermometer
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: "=(items[props.temp].displayState  ? items[props.temp].displayState : items[props.temp].state) +  (props.settemp ? ' (' + items[props.settemp].state + ')' : '')"
              visible: "=props.temp ? true : false"
          - component: f7-chip
            config:
              iconColor: "=themeOptions.dark === 'dark' ? 'white' : 'black'"
              iconF7: drop
              iconSize: 18
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: =items[props.humidity].displayState
              visible: "=props.humidity ? true : false"
          - component: f7-chip
            config:
              style:
                --f7-chip-bg-color: rgba(255, 255, 255, 0)
              text: =items[props.boiler_temp].state
              visible: "=props.boiler_temp ? true : false"
            slots:
              media:
                - component: oh-icon
                  config:
                    icon: waterheater2
                    style:
                      filter: "='invert(' + (themeOptions.dark === 'dark' ? '1' : '0') + ')'"
                      height: 18px
    - component: oh-image
      config:
        style:
          height: 25px
          left: 16px
          opacity: 0.7
          position: absolute
          top: 10px
        url: ='/static/icons/' + props.iconimage + '.png'
        visible: "=props.iconimage ? true : false"
    - component: oh-link
      config:
        action: popup
        actionModal: ='page:' + props.page
        style:
          height: 110px
          left: 0px
          position: absolute
          top: 0px
          width: 100%
Die Feuchte Sensoren sind HmIP-BWTH und HmIP-STHD
Openhabian 4.0.4

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

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von udo1toni »

tommesd hat geschrieben: 7. Dez 2023 21:47Die Rule Kellerfeuchte Telegram stört sich an dem Stringbuilder.
Ja, Tippfehler oben...
Es muss natürlich StringBuilder heißen...

Was das Widget betrifft: Bist Du sicher, dass Du alles korrekt gesetzt hast? Das Widget sollte sich nicht an der Einheit stören, es wird über .displayState einfach der Status angezeigt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Die Anzeige im Widget funktioniert nun, ich hatte die Channel vergessen einzutragen.
Aber die rule wirft noch immer einen Fehler.

Code: Alles auswählen

2023-12-13 07:55:02.484 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'FeuchteTelegram-1' failed: Flags = ' ' in FeuchteTelegram
Hier nochmal die aktuelle Konfiguration:

Code: Alles auswählen

Group:Number:Dimensionless:AVG        gAlleFeuchtigkeitssensorenKeller      "Alle Feuchtigkeitssensoren Keller"                         <humidity>          (gSonstiges)                                              ["Measurement","Humidity"]    {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Hobbyraum                        "Feuchtigkeit Hobbyraum"                       <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89B1EADA:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Gaestezimmer                     "Feuchtigkeit Gästezimmer"                     <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89AF6DA5:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_FlurKeller                       "Feuchtigkeit Flur Keller"                     <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89B1E825:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Vorratskeller                    "Feuchtigkeit Vorratskeller"                   <humidity>       (gThermostat_Vorratskeller,gAlleFeuchtigkeitssensorenKeller)    ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000E9D8993AF16:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Waschkeller                      "Feuchtigkeit Waschkeller"                     <humidity>       (gThermostat_Waschkeller,gAlleFeuchtigkeitssensorenKeller)      ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000E9D8993AFAD:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Und die rule

Code: Alles auswählen

rule "Kellerfeuchte Telegram"
when
    Item telegramMessage received update "Kellerfeuchte"
then 
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    val StringBuilder strMeldung = new StringBuilder
    strMeldung.append("Keller Durchnittsfeuchte " + gAlleFeuchtigkeitssensorenKeller.state.toString)
    gAlleFeuchtigkeitssensorenKeller.members.forEach[i|
        strMeldung.append(" %\n" + i.name.split("_").get(1) + " " + i.state.toString)
    ]
    strMeldung.append(" %\n")
    telegramAction.sendTelegram(strMeldung.toString)
end
Openhabian 4.0.4

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

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von udo1toni »

Ist das die einzige Rule in der Datei? Falls ja: Kannst Du bitte mal das komplette File zeigen? Falls nein: Flags kommt in der Rule gar nicht vor, ich vermute also ein andere Rule als Bösewicht :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Code: Alles auswählen

rule "Kellerfeuchte Telegram"

when
    Item telegramMessage received update "Kellerfeuchte"
then 
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    val StringBuilder strMeldung = new StringBuilder
    strMeldung.append("Keller Durchnittsfeuchte " + gAlleFeuchtigkeitssensorenKeller.state.toString)
    gAlleFeuchtigkeitssensorenKeller.members.forEach[i|
        strMeldung.append(" %\n" + i.name.split("_").get(1) + " " + i.state.toString)
    ]
    strMeldung.append(" %\n")
    telegramAction.sendTelegram(strMeldung.toString)
end
Das ist das komplette File
Openhabian 4.0.4

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Wonach muss ich denn sonst suchen bzw was ist mit der Fehlermeldung gemeint?
Openhabian 4.0.4

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

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von udo1toni »

Ich habe das Ganze mal bei mir nachgebaut, bei mir gibt es keine Fehlermeldung. Allerdings habe ich kein Telegram, ich habe also den String lediglich geloggt:

Code: Alles auswählen

rule "Kellerfeuchte Telegram"
when
    Item telegramMessage received update "Kellerfeuchte"
then 
//    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    val StringBuilder strMeldung = new StringBuilder
    strMeldung.append("Keller Durchnittsfeuchte " + gAlleFeuchtigkeitssensorenKeller.state.toString)
    gAlleFeuchtigkeitssensorenKeller.members.forEach[i|
        strMeldung.append(" %\n" + i.name.split("_").get(1) + " " + i.state.toString)
    ]
    strMeldung.append(" %\n")
    logInfo("telegram","Meldung: {}",strMeldung.toString)
//    telegramAction.sendTelegram(strMeldung.toString)
end
Items:

Code: Alles auswählen

String telegramMessage "Befehl"
Group:Number:Dimensionless:AVG gAlleFeuchtigkeitssensorenKeller "Sensorgruppe"
Number:Dimensionless Feuchtigkeit_RaumEins "Feuchtigkeit Raum eins" (gAlleFeuchtigkeitssensorenKeller)
Number:Dimensionless Feuchtigkeit_RaumZwei "Feuchtigkeit Raum zwei" (gAlleFeuchtigkeitssensorenKeller)
Number:Dimensionless Feuchtigkeit_RaumDrei "Feuchtigkeit Raum drei" (gAlleFeuchtigkeitssensorenKeller)
Number:Dimensionless Feuchtigkeit_RaumVier "Feuchtigkeit Raum vier" (gAlleFeuchtigkeitssensorenKeller)
Eingabe in der Karaf Konsole:

Code: Alles auswählen

openhab> openhab:update Feuchtigkeit_RaumEins 45
Update has been sent successfully.
openhab> openhab:update Feuchtigkeit_RaumZwei 35                                                                                                                                                                                                                     
Update has been sent successfully.
openhab> openhab:update Feuchtigkeit_RaumDrei 75                                                                                                                                                                                                                     
Update has been sent successfully.
openhab> openhab:update Feuchtigkeit_RaumVier 20
Update has been sent successfully.
openhab> openhab:update telegramMessage Kellerfeuchte
Update has been sent successfully.
openhab>                                                                                                                                                                                                                                                             
Ausgabe im Log:

Code: Alles auswählen

2023-12-14 14:41:19.481 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'my.items'
2023-12-14 14:42:19.740 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'my.rules'

==> /var/log/openhab/events.log <==
2023-12-14 14:43:23.317 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Feuchtigkeit_RaumEins' changed from NULL to 45
2023-12-14 14:43:23.318 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gAlleFeuchtigkeitssensorenKeller' changed from NULL to 45 through Feuchtigkeit_RaumEins
2023-12-14 14:43:40.531 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Feuchtigkeit_RaumZwei' changed from NULL to 35
2023-12-14 14:43:40.534 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gAlleFeuchtigkeitssensorenKeller' changed from 45 to 40 through Feuchtigkeit_RaumZwei
2023-12-14 14:43:48.340 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Feuchtigkeit_RaumDrei' changed from NULL to 75
2023-12-14 14:43:48.340 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gAlleFeuchtigkeitssensorenKeller' changed from 40 to 51.66666666666666666666666666666667 through Feuchtigkeit_RaumDrei
2023-12-14 14:43:55.828 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Feuchtigkeit_RaumVier' changed from NULL to 20
2023-12-14 14:43:55.829 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gAlleFeuchtigkeitssensorenKeller' changed from 51.66666666666666666666666666666667 to 43.75 through Feuchtigkeit_RaumVier
2023-12-14 14:44:25.239 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'telegramMessage' changed from NULL to Kellerfeuchte

==> /var/log/openhab/openhab.log <==
2023-12-14 14:44:25.273 [INFO ] [g.openhab.core.model.script.telegram] - Meldung: Keller Durchnittsfeuchte 43.75 %
RaumEins 45 %
RaumZwei 35 %
RaumDrei 75 %
RaumVier 20 %
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr

Beitrag von tommesd »

Hallo Udo,
ich habe jetzt mal Deine Rule getestet und bei mir kommen in der Log-Ausgabe Doppel-% Werte. Kannes vielleicht daran liegen?
Die Group und die Items sind so konfiguriert:

Code: Alles auswählen

Group:Number:Dimensionless:AVG        gAlleFeuchtigkeitssensorenKeller      "Alle Feuchtigkeitssensoren Keller"                         <humidity>          (gSonstiges)                                              ["Measurement","Humidity"]    {unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Hobbyraum                        "Feuchtigkeit Hobbyraum"                       <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89B1EADA:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Gaestezimmer                     "Feuchtigkeit Gästezimmer"                     <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89AF6DA5:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_FlurKeller                       "Feuchtigkeit Flur Keller"                     <humidity>       (gAlleFeuchtigkeitssensorenKeller)                              ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000C9D89B1E825:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Vorratskeller                    "Feuchtigkeit Vorratskeller"                   <humidity>       (gThermostat_Vorratskeller,gAlleFeuchtigkeitssensorenKeller)    ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000E9D8993AF16:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Number:Dimensionless        Feuchtigkeit_Waschkeller                      "Feuchtigkeit Waschkeller"                     <humidity>       (gThermostat_Waschkeller,gAlleFeuchtigkeitssensorenKeller)      ["Measurement","Humidity"]    {channel="homematic:HmIP-BWTH:HomematicBridge:000E9D8993AFAD:1#HUMIDITY", alexa="CurrentHumidity", unit="%", stateDescription=""[pattern="%.1f %%"]}
Logausgabe

Code: Alles auswählen

2023-12-20 10:31:39.924 [INFO ] [g.openhab.core.model.script.telegram] - Meldung: Keller Durchnittsfeuchte 59.6 % %

Vorratskeller 59 % %

Waschkeller 58 % %

FlurKeller 58 % %

Hobbyraum 63 % %

Gaestezimmer 60 % %
Openhabian 4.0.4

Antworten