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

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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 »

Du hast ja nicht nur zwei Prozentzeichen, sondern auch zwei Zeilenumbrüche...
Ich hatte die Items etwas nachlässig konfiguriert, ich müsste den Test also eigentlich noch mal wiederholen, allerdings, wenn das Prozentzeichen mit dem Wert mit kommt (und so sollte es eh sein), dann lass einfach bei den Anweisungen strMeldung.append(...) das " %\n" weg, oder lass nur den Teil Leerzeichen und Prozentzeichen weg, so dass nur der Zeilenumbruch eingefügt wird (aber vielleicht ist der sogar auch unnötig). Sobald der String im StringBuilder korrekt ist, kannst Du den über telegram auch raus hauen (mit strMeldung.toString, denn das StringBuilder Objekt ist eine Liste, kein einfacher String)
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

2023-12-20 17:11:02.144 [INFO ] [g.openhab.core.model.script.telegram] - Meldung: Keller Durchnittsfeuchte 59.4 % Vorratskeller 59 % Waschkeller 57 % FlurKeller 57 % Hobbyraum 63 % Gaestezimmer 61 % 

2023-12-20 17:11:02.146 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'FeuchteTelegram-1' failed: Conversion = 'V' in FeuchteTelegram
Jetzt kommt das als Fehler

Das ist 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(" " + i.name.split("_").get(1) + " " + i.state.toString)
    ]
    strMeldung.append(" ")
    logInfo("telegram","Meldung: {}",strMeldung.toString)
    telegramAction.sendTelegram(strMeldung.toString)
end
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 »

Hallo Udo,
hast Du noch eine Idee woran die rule scheitert?
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 »

Oh. Ich hatte eine Antwort geschrieben, aber anscheinend nicht abgeschickt...

Ja, nachdem ich die Doku des Telegram Bindings geöffnet habe, springt es mich an...
sendTelegram(String message) Sends a message.
sendTelegram(String format, Object... args) Sends a formatted message (See https://docs.oracle.com/javase/8/docs/a ... atter.html
(opens new window) for more information).
Und wenn Du dem Link folgst, kannst Du sehen, dass % ein Zeichen ist, welches zur Formatierung verwendet wird.
Erster Versuch: escape das %:

Code: Alles auswählen

telegramAction.sendTelegram(strMeldung.toString.replace("%","\%"))
Jedes % im Text wird mit einem \% ersetzt.

Eventuell musst Du auch statt \% ein %% einfügen, oder vielleicht findest Du mit dem Hinweis die Lösung. Vielleicht besteht sie sogar darin, die ursprüngliche Variante zu nutzen - also mit strMeldung.append(" %\n") - und dort lediglich das vorangestellte Leerzeichen zu entfernen (denke daran, dass es zwei Stellen gibt, an denen das " %\n" ergänzt wurde und nun nicht mehr eingebaut ist).
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,
vielen Dank und schöne Feiertage.
Diese Version funktioniert nun:

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.label.split(" ").get(1) + " " + i.state.toString)
    ]
    strMeldung.append("%\n")
    telegramAction.sendTelegram(strMeldung.toString)
end
Openhabian 4.0.4

Antworten