Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

Begonnen von viegener, 20 Juni 2015, 18:59:41

Vorheriges Thema - Nächstes Thema

satprofi

#2865
Hallo.
Habe neue Erkenntnis, wenn ich
fhem("set Telegram message \@$msgChat Markdown Philharmoniker *[Goldpreis:unze]* \n1g *[Goldpreis:gramm]* \n/Gold")
verwende wird es in fetter Schrift gesendet. Aber wenn das reading *text* ist, und folgend definiert wird ist die Schrift normal
fhem("set Telegram message \@$msgChat Markdown Philharmoniker [Goldpreis:unze] 1g [Goldpreis:gramm] \n/Gold")
bei dieser definition kommt nie fetter text , egal welcher der 2 beispiele
fhem("set Telegram message \@$msgChat Markdown Lidl_Himberg DC [Lidl_Himberg:text
wie schaffe ich es jetzt die readings je nach status fett oder durchgestrichen darzustellen ?


[edit]
habe den Übeltäter, die underlines sind nicht kompatibel.  warum ? auch klappen die ~ nicht, nur * klappen bestens, auch wenn in den readings
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TomLee

Zitat[edit]
habe den Übeltäter, die underlines sind nicht kompatibel.  warum ? auch klappen die ~ nicht, nur * klappen bestens, auch wenn in den readings

__underline__ und ~strikethrough~ ist MarkdownV2 style und in dem Modul nicht eingebaut?

Im Markdown style gibts keinen durchgestrichenen oder unterstrichenen Text?

Aber im HTML style werden sie unterstützt mit: <u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>





satprofi

#2867
Zitat von: TomLee am 03 Mai 2026, 09:33:58
Zitat[edit]
habe den Übeltäter, die underlines sind nicht kompatibel.  warum ? auch klappen die ~ nicht, nur * klappen bestens, auch wenn in den readings

__underline__ und ~strikethrough~ ist MarkdownV2 style und in dem Modul nicht eingebaut?

keine Ahnung ?

Im Markdown style gibts keinen durchgestrichenen oder unterstrichenen Text?

Zitat von: TomLee am 03 Mai 2026, 09:33:58Aber im HTML style werden sie unterstützt mit:
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>





das klappt bei mir alles nicht.Markdown akzeptiert nur die *text* . Habe es aber jetzt anders gelöst:

Esrtmal text in entsprechenden Readings umgewandelt:
attr Smatrics_Station userReadings text:port_0.*  {      \
                       my$a = ReadingsVal("Smatrics_Station","port_0","");;\
                       my $ret;;\
                  if($a eq "OCCUPIED"){\
                 $ret=("🔴");;\
                 }\
                 elsif($a eq "AVAILABLE"){\
                $ret=("🟢");;\
                }\
                 elsif($a eq "BLOCKED"){\
                $ret=("⚫️");;\
                }   },\
text2:port_0.*  {      \
                       my$a = ReadingsVal("Smatrics_Station","port_1","");;\
                       my $ret;;\
                  if($a eq "OCCUPIED"){\
                 $ret=("🔴");;\
                 }\
                 elsif($a eq "AVAILABLE"){\
                $ret=("🟢");;\
                }\
                 elsif($a eq "BLOCKED"){\
                $ret=("⚫️");;\
                }   }

dies versende ich dann per sub über telegram

sub sendMessage{
      my $msgChat=ReadingsVal("Telegram","msgPeerId","");
      my $msgText=ReadingsVal("Telegram","msgText","");
     
      if ( $msgText eq "/status" ){

         fhem("set Smatrics_Station reread");
         sleep(3);
         fhem("set Telegram message \@$msgChat Markdown Smatrics-DC1  [Smatrics_Station:text] \nSmatrics-DC2  [Smatrics_Station:text2]  \n/status");
    }

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

Da werden tatsächlich die roten und grünen Knuddel in Telegram angezeigt?  :o

Ich staune. Screenshot bitte?

Welche Codesequenz schreibt das sprintf denn da genau hinein?

LG

pah

satprofi

#2869
Hallo.
Die Symbole hab ich einfach mit copy/paste eingefügt. Wundere mich auch das kein code zu finden ist. fhem.cfg zeigt mir auch färbige Punkte ;-)

Warum bei mir bei Markdown nur "*" angenommen wird weiss ich auch nicht. Das Modul sollte angeblich MarkdownV2 unterstützen.

ps. es klappt auch ohne sprintf
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Raven

Ich hab mir schon einen Wolf gesucht, aber leider keinen Hinweis gefunden.

Ich möchte Nachrichten von zwei unterschiedlichen FHEM-Instanzen (PROD und UAT) an denselben Telegram-Bot senden. Da nur ein Telegram-Device "pollen" kann, arbeite ich mit dem entsprechenden Attribut von der 1.Seite:
Das Attribut pollingTimeout muss auf einen Wert > 0 gesetzt sein, sonst wird nichts empfangen
Mein Versuch: Das Telegram-Device auf FHEM-PROD läuft unter "Polling" und das Device unter FHEM-UAT läuft unter "Static", aber ich bekomme die Fehlermeldung:
Callback returned error :Conflict: terminated by other getUpdates request; make sure that only one bot instance is running:
Interessanterweise, wenn ich zwei Telegram-Devices unter EINER gemeinsamen FHEM-Instanz laufen lasse, kann ich über beide Telegram-Devices Nachrichten versenden, ohne daß die o.g. Fehlermeldung bzgl. "Conflict..." erhalten. Ich hatte hier zunächst ein Telegram-Device definiert und konfiguriert, dann pollingTimeout auf 0 gesetzt, und dann das zweite Telegram-Device definiert und konfiguriert. Abschließend habe ich das erste Device wieder zum senden/empfangenden Device "gemacht" und das zweite Device nur auf "Static" gesetzt. Bin mir nicht sicher, ob dies nur ein "glücklicher" Zufall ist, dass es nun funktioniert oder aber an der Tatsache liegt, daß beide FEHM-Telegram-Devices auf einer FHEM-Instanz laufen.

Lange Rede: Wie schaffe ich, daß ich von zwei verschiedenen FHEM-Instanzen Nachrichten an den gleichen Telegram-Bot senden kann? Unter FHEM-Prod soll/kann das Telegram-Device Nachrichten senden/empfangen.
Muss ich in worst-case für die FHEM-UAT Instanz mir eine eigene Routine (99_myUtils.pm) schreiben und via Perl-Aufruf (curl...https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage...) die Nachricht versenden?  ;D

Danke vorab.

Proxmox-Prod/Dev: Homematic i.V.m. VCCU (HMLan, HM-MOD-RPI-PCB), Philips Hue, Viessmann (optolink)
Fritzbox 7590

Prof. Dr. Peter Henning

Warum so kompliziert?

1. Nur ein TelegramBot-Device installieren, auf FHEM Nr. 1
2. Auf dem anderen FHEM Nr. 2 mit FHEM2FHEM ein Sendekommando absetzen, das auf Instanz Nr. 1 ausgeführt wird.

Dafür kann man auch eine Routine installieren, die _beliebige_ Kommandos auf der anderen Kiste ausführt.

LG

pah