Mehrere Variablen mit Zeilenumbruch ausgeben

HMIP lokale Installation

Moderator: Co-Administratoren

Antworten
basta25
Beiträge: 38
Registriert: 03.07.2019, 17:05
Hat sich bedankt: 17 Mal
Danksagung erhalten: 1 Mal

Mehrere Variablen mit Zeilenumbruch ausgeben

Beitrag von basta25 » 05.03.2023, 15:40

Hallo,

Ich brauche mal eure Hilfe.

Ich habe mir zum Senden von Nachrichten einen Telegram Bot eingerichtet und mithilfe des Nachfolgenen Skripts (von digitaldad.de) ein Programm erstellt das mir die aktuelle Temperatur (SystemVAR) senden kann. Dies funktioniert soweit einwandfrei.

Code: Alles auswählen

string msg = 
"Temperatur: "#dom.GetObject(ID_SYSTEM_VARIABLES).Get("TempAussen").Value().ToString(1)#" Grad - 
Luftdruck: "#dom.GetObject(ID_SYSTEM_VARIABLES).Get("Luftdruck").Value().ToString(0)#" hPa";
string TOKEN = "61409XXXXXXXXXXXXXXXXXX";
string CHATID = "57XXXXXXXX";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&text='"#MESSAGE);
Das Problem ist nun folgendes: Der Luftdruck wird nicht angezeigt (hat aber schon funktioniert). Ich denke ich habe irgend etwas im Skript gelöscht sodass es nicht mehr geht.

Im Telegram Messenger kommt nur folgendes an "Temperatur: 2.5 Grad -" nach dem "-" ist schluss. Was mache ich falsch?

Ausserdem wäre ich froh über einen Tipp wie man einen Zeilenumbruch zwischen die Werte bekommt. Mit "\n" hab ich es nicht hinbekommen.

Danke
CCU3 - 1x DRAP - 2x DRI32 - 2x DRD3 - 3xDRBL4 - 5x DRS8 - 10x eTRV 2 - 5x HmIP-SMI - 1x HmIPW-SMI55 - 1x HmIPW-WRC6 - div. HmIP Wandthermostate - 1x HmIP-SWO-PR - div. Aqara Fensterkontakte, Thermometer, Wassersensoren über nodeRed eingebunden - ca. 180 Kabel im ganzen Haus und ein Schaltschrank der aussieht wie in einem Rechenzentrum :lol: ...

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: Mehrere Variablen mit Zeilenumbruch ausgeben

Beitrag von Tyfys » 05.03.2023, 16:47

Telegram kommt wohl mit dem internen Zeilenumbruch der CCU nicht klar.

Ich verwende %0A als Zeilenumbruch bei Telegram


Versuchs mal so:

Code: Alles auswählen

string msg = 'Temperatur: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_Test_Num").Value().ToString(1)#' Grad -%0A';
msg = msg #'Luftdruck: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_Test_Num").Value().ToString(0)#' hPa';
WriteLine(msg);
string TOKEN = "61409XXXXXXXXXXXXXXXXXX";
string CHATID = "57XXXXXXXX";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&text='"#MESSAGE);
Gruß
Harry

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Mehrere Variablen mit Zeilenumbruch ausgeben

Beitrag von Baxxy » 05.03.2023, 17:32

parse_mode=html

Code: Alles auswählen

real TempAussen = 10.7;
real Luftdruck = 1016.1;

string msg =
"Temperatur: "#TempAussen.ToString(1)#"°C
Luftdruck: "#Luftdruck.ToString(0)#" hPa";
string TOKEN = "61409XXXXXXXXXXXXXXXXXX";
string CHATID = "57XXXXXXXX";
string MESSAGE = msg.ToUTF8().Replace(".", ",");
system.Exec("/usr/bin/timeout 2 /usr/bin/wget -T 2 -q -O /dev/null 'https://api.telegram.org/bot"#TOKEN#"/sendMessage?chat_id="#CHATID#"&parse_mode=html&text="#MESSAGE#"\' &");

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: Mehrere Variablen mit Zeilenumbruch ausgeben

Beitrag von Tyfys » 05.03.2023, 18:06

Baxxy hat geschrieben:
05.03.2023, 17:32
parse_mode=html
Interessant, dass das mit dem optionalen Parameter parse_mode=html so klappt.
In einem DOCTYPE html wird ja <br> für neue Zeile gefordert.

Ich nehme übrigens parse_mode=markdownv2
Gruß
Harry

basta25
Beiträge: 38
Registriert: 03.07.2019, 17:05
Hat sich bedankt: 17 Mal
Danksagung erhalten: 1 Mal

Re: Mehrere Variablen mit Zeilenumbruch ausgeben

Beitrag von basta25 » 28.03.2023, 15:03

Tyfys hat geschrieben:
05.03.2023, 16:47
Telegram kommt wohl mit dem internen Zeilenumbruch der CCU nicht klar.

Ich verwende %0A als Zeilenumbruch bei Telegram


Versuchs mal so:

Code: Alles auswählen

string msg = 'Temperatur: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_Test_Num").Value().ToString(1)#' Grad -%0A';
msg = msg #'Luftdruck: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_Test_Num").Value().ToString(0)#' hPa';
WriteLine(msg);
string TOKEN = "61409XXXXXXXXXXXXXXXXXX";
string CHATID = "57XXXXXXXX";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&text='"#MESSAGE);
Etwas verspätet aber Danke erst mal für die Hilfe. Es hat funktioniert. Im Moment sieht es bei mir folgendermaßen aus.

Code: Alles auswählen

string msg = "WETTERDATEN %0A %0A";

msg = msg #'Temperatur: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("TempAussen").Value().ToString(1)#' Grad %0A';
msg = msg #'Temperatur Max: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("TempAussenMax").Value().ToString(1)#' Grad %0A';
msg = msg #'Temperatur Min: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("TempAussenMin").Value().ToString(1)#' Grad %0A';
msg = msg #'Regenmenge heute: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("Regenmenge_heute").Value().ToString(1)#' Liter/qm %0A';
msg = msg #'Wind Max: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("WindMax").Value().ToString(1)#' km/h ';
msg = msg #'um: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("WindMax.Zeit").Value()#'%0A';
msg = msg #'Luftdruck: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("Luftdruck").Value().ToString(0)#' hPa %0A';
msg = msg #'Luftfeuchtigkeit: '#dom.GetObject('HmIP-RF.00185BE9A580C9:1.HUMIDITY').Value().ToString(0)#' % rf %0A %0A';


msg = msg #'Regenmenge gestern: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("Regenmenge_gestern").Value().ToString(1)#' Liter/qm %0A';
msg = msg #'Wind Max gestern: '#dom.GetObject(ID_SYSTEM_VARIABLES).Get("WindMax_gestern").Value().ToString(1)#' km/h %0A';

WriteLine(msg);
string TOKEN = "614094xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string CHATID = "574xxxxxxxx";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&text='"#MESSAGE);
Damit erhalte ich über den Telegram Messenger folgende ausgabe.
Screenshot_20230328-144448.png
Tyfys hat geschrieben:
05.03.2023, 16:47
CCU3 - 1x DRAP - 2x DRI32 - 2x DRD3 - 3xDRBL4 - 5x DRS8 - 10x eTRV 2 - 5x HmIP-SMI - 1x HmIPW-SMI55 - 1x HmIPW-WRC6 - div. HmIP Wandthermostate - 1x HmIP-SWO-PR - div. Aqara Fensterkontakte, Thermometer, Wassersensoren über nodeRed eingebunden - ca. 180 Kabel im ganzen Haus und ein Schaltschrank der aussieht wie in einem Rechenzentrum :lol: ...

Antworten

Zurück zu „HomeMatic IP mit CCU“