Nachricht per Telegram, URL kombinieren

  • Hallo,

    ich möchte folgendes tun:

    Wenn die Temperatur in der Garage unter einem bestimmten Wert fällt, will ich eine Telegramm Nachricht erhalten.

    Das habe ich hinbekommen und funktioniert.

    Allerdings möchte ich die Nachricht erweitern, dass ich hier die aktuelle Temperatur mit ausgebe, das schaffe noch irgendwie aber ich möchte auch das "° C" dabei haben. Das bekomme ich nicht hin.

    Ich habe es schon versucht mit "Text kombinieren" und dann "Inhalt von kombinierten Text abrufen" aber es klappt nicht.

    Ich würde mit als Ergebnis eine Telegram Nachricht wie:

    "Die Garagentemperatur ist unter dem Schwellwert von 3 °C gefallen, die aktuelle Temperatur beträgt 2,9 °C bitte auf Frostschutz achten."

    Anbei ein Screenshot eines Kurzbefehls, der teilweise funktioniert.

  • Ich habe es schon versucht mit "Text kombinieren" und dann "Inhalt von kombinierten Text abrufen" aber es klappt nicht.

    Hast du das auch richtig kodiert? In einer URL dürfen keine Leerzeichen stehen und "º C" enthält nun mal eins. Das Leerzeichen musst du ersetzen durch %20, also eigentlich "º%20C". Aber das Grad-Zeichen darf da auch nicht stehen und muss ersetzt werden durch %B0. Ergebnis: "%B0%20C", hach, wie leserlich.

  • Code
    url -s -X POST "https://api.telegram.org/botTToken/sendMessage" --data "disable_notification=true" -d chat_id="TChat_ID" -d "parse_mode=html" -d "text=<b>Nachricht von $HOSTNAME:</b>%0Aweiterer Text"

    als Beispiel, TChat_ID und Token ersetzen

    $HOSTNAME ist eine Variable, da wird deren Inhalt eingetragen

  • Hm, da komme ich nicht weiter.

    Hast du das auch richtig kodiert? In einer URL dürfen keine Leerzeichen stehen und "º C" enthält nun mal eins. Das Leerzeichen musst du ersetzen durch %20, also eigentlich "º%20C". Aber das Grad-Zeichen darf da auch nicht stehen und muss ersetzt werden durch %B0. Ergebnis: "%B0%20C", hach, wie leserlich.

    soweit komme ich ja gar nicht. Die Variable "Aktuelle Temperatur" beinhaltet nur den Wert, ich weiß ja nicht, wie ich das ° C anfügen soll.


    Code
    url -s -X POST "https://api.telegram.org/botTToken/sendMessage" --data "disable_notification=true" -d chat_id="TChat_ID" -d "parse_mode=html" -d "text=<b>Nachricht von $HOSTNAME:</b>%0Aweiterer Text"

    als Beispiel, TChat_ID und Token ersetzen

    $HOSTNAME ist eine Variable, da wird deren Inhalt eingetragen

    Hm, wo soll ich den code einsetzen, sorry, ich bin da noch Anfänger. Das mit der Chat_ID und Token ist mir klar, das habe ich bei mir auch.

    Einmal editiert, zuletzt von gandalf () aus folgendem Grund: Ein Beitrag von gandalf mit diesem Beitrag zusammengefügt.

  • Zitat von gandalf

    Ich habe es schon versucht mit "Text kombinieren" und dann "Inhalt von kombinierten Text abrufen" aber es klappt nicht.

    Und was genau klappt nicht?

  • Und was genau klappt nicht?

    Mit dem 1. Kurzbefehl "Inhalte von URL abrufen" bekomme ich als Ergebnis

    Die Garagentemperatur beträgt: 8,4


    Mit dem 2. Erweiterten Kurzbefehl, bei dem ich den Text kombiniere und Inhalte von "Kombinierter Text" abrufe, erhalte ich nur noch das Ergebnis:

    Die Garagentemperatur beträgt:

    den Text habe ich jeweils richtig kodiert.

    Erwarten würde ich folgendes:

    Die Garagentemperatur beträgt: 8,4 ° C


    Die entsprechenden Screenshots habe ich angefügt.


    • Hilfreich

    Also, ich hab das jetzt mal versucht, nachzustellen. Dabei ist schon mal eine Erkenntnis ganz deutlich geworden:

    Kurzbefehle ist die komplizierteste Art, umständlich zu programmieren.


    Für meinen Versuch habe ich keine Wetterdaten abgefragt, sondern irgendwas, was gerade im Haus war. Alles was ich wollte, war irgendeine Antwort von einem Server, um dahinter "º C" zu schreiben. Daher zeigt mein Beispiel einen Wust von komischen Zahlen, die mit einer Temperatur nur wenig gemein haben. Mir ging es darum, einfach nur "º C" anzuhängen.



    Was tue ich genau?

    1. Ich rufe von einem Server eine Antwort ab.
    2. Die Antwort hänge ich an eine Variable namens MeineVariable an. Diese Variable hat zunächst keinen Inhalt, aber nachdem ich dort etwas angehängt habe, steht nun die Antwort des Servers in der Variable MeineVariable.
    3. Ich definiere einen Text mit dem Inhalt º C.
    4. Ich füge diesen Text ebenfalls an die Variable MeineVariable an.
    5. Ich gebe den die Variable in einem Text aus.

    Was kommt raus?

    Wie erwartet steht da nun der Wust von Zahlen, den der Server geliefert hat, und dahinter steht "º C".


    Gibt's sonst noch Probleme?

    Ja. Der String "º C" steht in einer eigenen Zeile und nicht direkt hinter dem Wust von Zahlen. Das kommt möglicherweise daher, dass der Server nach dem Wust noch ein Return-Zeichen gesendet hat. Das müsste erst abgeschnitten werden, bevor der Text mit dem Inhalt "º C" an die Serverantwort angehängt wird. Bitte frage mich nicht, wie das gemacht wird. Ich will's auch gar nicht wissen.


    Klärt das deine Frage?

  • Jetzt habe ich zwar keine Lösung, aber die Ursache gefunden, warum es nicht geht.

    Ich rufe ja die Aktuelle Temperatur ab, diese beinhaltet ja schon das ° C das habe ich vorher gar nicht bemerkt. Ich Ich habe ja den Wert an die telegram URL angefügt, aber dafür ist das ja falsch codiert und geht deswegen verloren.

    Statt °C brauchte ich ja %20%C2%B0C aber bei dem Leerzeichen zwischen dem Wert und dem °C ist alles danach weg. Da muss ich mir eine andere Lösung suchen.