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)
Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
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
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
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
Hallo Udo,
hast Du noch eine Idee woran die rule scheitert?
hast Du noch eine Idee woran die rule scheitert?
Openhabian 4.0.4
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
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...
Erster Versuch: escape das %:
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).
Ja, nachdem ich die Doku des Telegram Bindings geöffnet habe, springt es mich an...
Und wenn Du dem Link folgst, kannst Du sehen, dass % ein Zeichen ist, welches zur Formatierung verwendet wird.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).
Erster Versuch: escape das %:
Code: Alles auswählen
telegramAction.sendTelegram(strMeldung.toString.replace("%","\%"))
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
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Warnung per Telegram funktioniert nach Update von 3 auf 4 nicht mehr
Hallo Udo,
vielen Dank und schöne Feiertage.
Diese Version funktioniert nun:
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