curl Aufruf klappt nicht

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

curl Aufruf klappt nicht

Beitrag von duffy6 » 27.11.2020, 00:33

Hallo zusammen,

Ich habe ein Skript mit dem ich vom ccu-historian mittels 3 curl Aufrufen Werte abholen! Das klappt wunderbar.
Mit dem vierten Aufruf sollen diese Werte per Telegram gesendet werden. Doch dieser Aufruf klappt leider nicht.
Mit der gleichen Befehlszeile sende ich auch in anderen Skripten erfolgreich Nachrichten.

Wie kriege ich es hin, dass ich die Telegramm Nachricht schicken kann?

Code: Alles auswählen

string avg;
string max;
string min;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=min'", &min);
WriteLine(min.ToFloat());
string cuxd = "CUxD.CUX2801001:1"; !CUxD Exec Device
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=max'", &max);
WriteLine(max.ToFloat());
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=avg'", &avg);
WriteLine(avg.ToFloat());
string message1 = "Außentemp Max: "#max.ToString(2)#" °C / "   # " Min: " #min.ToString(2)# " °C / Mittel: "#avg.Trim().ToString(1)#" °C";
message1 = message1.Replace("\n","");
string message2 = message1.Replace(".", ",");
                                        
string chatid = "xxx"; ! chat_id des Empfängers
string botAPI = "xxxxxxxx "; ! API des eingerichteten Bots 
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message2#"' -d chat_id="#chatid);
Zuletzt geändert von alchy am 27.11.2020, 14:42, insgesamt 1-mal geändert.
Grund: verschoben
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: curl Aufruf klappt nicht

Beitrag von Black » 27.11.2020, 09:40

sich das das so richtig ist ?

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message2#"' -d chat_id="#chatid);
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Re: curl Aufruf klappt nicht

Beitrag von duffy6 » 27.11.2020, 11:14

Ich habs gefunden! Es lag an den Sonderzeichen im Message-Text der Telegram Nachrift.

Mit #message2.ToUTF8()# klappts:

Code: Alles auswählen

string chatid = "XXXX"; ! chat_id des Empfängers
string botAPI = "CCCCCCCCCCCCC"; ! API des eingerichteten Bots 
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message2.ToUTF8()#"' -d chat_id="#chatid);
! Wichtig ist in obiger Zeile die Konvertierung zu UTF, da sonst aufgrund der SOnderzeichen (? und °)  die Nachricht gar nicht gesendet wird!
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: curl Aufruf klappt nicht

Beitrag von jp112sdl » 27.11.2020, 11:20

Trotzdem solltest du die Pfadangabe mal korrigieren, falls curl mal aus dem Unterpfad "extras" rausfliegt

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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

Re: curl Aufruf klappt nicht

Beitrag von Baxxy » 27.11.2020, 13:58

duffy6 hat geschrieben:
27.11.2020, 00:33
Ich habe ein Skript mit dem ich vom ccu-historian mittels 3 curl Aufrufen Werte abholen! Das klappt wunderbar.
Sieht aber furchtbar aus... :shock:
Die Tipps aus dem anderen Thread haben wohl nicht so recht gefruchtet?

Min, Max und Avg eines Datenpunktes lassen sich doch mit einem! curl Abruf holen. Siehe Historian Wiki. Die Werte dann noch sauber mittels .Trim() extrahieren erspart das .Replace("\n","").

Code: Alles auswählen

string hist_rueckgabe; string min_temp; string max_temp; string avg_temp; string message;

system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=min&ag=max&ag=avg'", &hist_rueckgabe);
min_temp = hist_rueckgabe.StrValueByIndex("\t", 0).Trim().ToString(1);
max_temp = hist_rueckgabe.StrValueByIndex("\t", 1).Trim().ToString(1);
avg_temp = hist_rueckgabe.StrValueByIndex("\t", 2).Trim().ToString(1);
message = "Außentemp Max: "# max_temp #"°C / Min: "# min_temp #"°C / Mittel: "# avg_temp #"°C";
WriteLine("Nachricht: "# message);
message = message.Replace(".", ",").ToUTF8();
WriteLine("UTF8 Nachricht: "# message);
Ausgabe vor der Aufbereitung für den Versand:

Code: Alles auswählen

Nachricht: Außentemp Max: 19.9°C / Min: 19.2°C / Mittel: 19.5°C
Und nein ich wohne nicht im warmen Süden sondern habe nur den falschen Datenpunkt im Historian abgefragt. :wink:

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“