Ankündigung

Einklappen
Keine Ankündigung bisher.

Telegram, Alternative zu WhatsApp

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • yachti
    antwortet
    Sieht die yaml Formatierung im Item wirklich so aus wie gepostet?

    Einen Kommentar schreiben:


  • z1marco
    antwortet
    Keine Benachrichtigung mehr in Telegram.

    Ich bin vom 1.7.1 Image auf 1.8.2 umgestiegen und leider funktioniert das Plugin wohl nicht mehr ganz richtig.

    Habt Ihr eine Idee was ich falsch mache. Hat sich an der Konfig was geändert? Mit der Dokumentation bin ich leider auch nicht weitergekommen. Ich hab die Konfiguration vom alten Image übertragen. Beim starten von Smarthomeng erhalte ich in Telegram auch die Meldung "SmarthomeNG Telegram Plugin is up and running". Also scheint das Token ja richtig zu sein.

    Leider werden keine Item Änderungen gemeldet:

    In der plugin.yaml habe ich folgende Konfiguration:

    telegram:
    plugin_name: telegram
    token: meinToken
    telegram_chat_ids: 'meineChatId'

    Folgende Item Definition hab ich übernommen:

    Telegram:
    Chat_Ids:
    type: dict
    telegram_chat_ids: True
    cache: 'True'
    value: '{meineChatId: 1}'



    Hier habe ich im 1.7.1 Image immer Meldungen versendet:

    telegram_message: Haustuer geoffnet
    telegram_value_match_regex: 'True'
    Zuletzt geändert von z1marco; 06.11.2021, 11:37.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Ah, super.
    Das hatte ich noch nicht mitbekommen.

    Nach der Eingabe von Hello world! am Telegram wird das Item telegram_message auf <Benutzername des chat Partners>: Chat-ID: Hello world! gesetzt. Ein John Doe ergäbe also John Doe: Hello world!
    Sollte heißen:
    Nach der Eingabe von Hello world! am Telegram wird das Item telegram_message auf <Benutzername des chat Partners>: Chat-ID: Hello world! gesetzt. Ein John Doe ergäbe also John Doe: 1234567: Hello world!
    Oder?

    Code:
    sh_minversion: 1.3 # minimum shNG version to use this plugin
    Das stimmt weiterhin?

    Die Doku ist übrigens super - und die neuen Features auch!

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo
    Wie gesagt, habe ich die Erweiterung des Plugins fast fertig. Es fehlen noch ein paar Kleinigkeiten. Die kommen nächste Woche und dann gibt es den PR.
    Einen Ausblick gibt es hier https://github.com/sisamiwe/shng-telegram-plugin
    Die User Doku ist bereits auf Stand.
    Beste Grüße

    Ach ja, die Logik für Infos bzw Keyboard ist auch in der Doku.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo grisu911


    Zitat von grisu911 Beitrag anzeigen

    eine kleine Anregung:
    Ich habe in dem Bereich was erweitert:
    PHP-Code:
    def mHandler(selfbotupdate):
    """
    write the content (text) of the message in an SH-item
    """
    if self.has_write_access_rightupdate.message.chat_id ):
    text update.message.from_user.name ":" # add username
    text += update.message.text ":" # add the message.text
    text += str(update.message.chat_id)
    for 
    item in self._items_text_message:
    self.logger.debug("write item: {0} value: {1}".format(item.id(), text))
    item(textcaller=self.get_fullname()) # write text to SH-item 
    und zwar die Zeile um text += str(update.message.chat_id) hier noch die ChatID mit ins Item zu bekommen.
    Das Item wird zerteilt in seine Bestandteile User, Text und ChatID.
    Hat das irgendwelche negativen effekte? Ansonsten würde ich mich anbieten das als PR einzustellen.

    Ich habe mir dann eine Logik gebaut mit der ich per Button bestimmte Aktionen ausführen kann.

    Hier mal mein Logik in Auszügen:
    PHP-Code:

    if sh.Info.Chat_ID() == '-xxxxxxxxxx':
    custom_keyboard_ubersicht = [['Wetter''Status'],['Location''Tanken'], ['Tore''Schalten']]
    custom_keyboard_wetter = [['zurück'], ['aktuell''historisch'], ['Diagramme']]
    custom_keyboard_diagramm = [['zurück'], ['Wetter'], ['Temperatur''Luftdruck'], ['Luftfeuchte']]
    custom_keyboard_location = [['zurück'], ['xxxx''xxxx''xxxxx'], ['xxxxx-Info''xxxxx-Info''xxxx-Info']]
    custom_keyboard_tanken = [['zurück'], ['Preise''Günstigste']]
    custom_keyboard_tore = [['zurück'], ['Gehtür''Fahrtor'], ['Garage-J''Garage-N'], ['Garage-W']]
    custom_keyboard_schalten = [['zurück'], ['NAS']]

    chat_id sh.Info.Chat_ID()

    #Keyboard
    if sh.Info.Message() == 'Übersicht' or sh.Info.Message() == "zurück":
    bot.send_message(chat_id=chat_idtext='Bitte auswählen:'reply_markup=telegram.ReplyKeyboardMarkup(custom_keyboard_ubersichtresize_keyboard=True)) 
    Dazu habe ich noch Fragen:
    Was ist sh.Info? Würdest du die Item-Definition teilen?
    Wodurch wird sh.Info.Chat_ID aktualisiert?
    Wo reagierst du auf das Kommando das Garage-J geöffnet werden soll, oder das NAS angeschaltet? Und: Da müsste doch noch eine Abfrage für An oder Aus hinzukommen, oder?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    in deinem ersten Beispiel ist es aber so, dass immer an den Chat 1234567 gesendet wird.
    Wenn ich aber mal an mich (1234567) und mal an meine Frau (345678) schicken will geht das aber so nicht.

    Oder verstehe ich etwas falsch?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • yachti
    antwortet
    Zitat von henfri Beitrag anzeigen
    Nochmal gemacht, klappt aber nicht. Gleiches Ergebnis.
    schon komisch und kann ich nicht navhvollziehen

    Ist es möglich hier auch die Nachricht an eine chat_id zu beschränken
    In dem Beispiel wird es doch an eine ChatID gesendet

    ChatID:
    Code:
    service:
        telegram:
            Chat_Ids:
                type: dict
                telegram_chat_ids: 'True'
                enforce_updates: 'true'
                cache: 'True'
                value: "{1234567: 1 }"
            senden:
                type: str
                enforce_updates: 'true'
                telegram_message: '[VALUE]'
    ChatGruppe:
    Code:
            telegram_message: Es klingelt an der Tür
            telegram_value_match_regex: (true|True|1)  # nur Nachricht senden wenn 1
            info:
                type: bool
                enforce_updates: 'true'
                eval_trigger: haustuer.klingel
                eval: sh.telegram.photo_broadcast("http://10.1.1.1/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=USER&password=GEHEIM","Türkamera",-1001111111) if sh.haustuer.klingel() == 1 else None

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Das wird es bald geben.
    Ich mache kommende Woche einen PR, dann gibt es das.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Danke für die genaue Beschreibung.

    Nochmal gemacht, klappt aber nicht. Gleiches Ergebnis.

    Wie auch immer: Es hat zwischendurch einmal geklappt und die Verbindung zu smarthomeng steht jetzt.

    Eine Frage hab ich noch. Ich nutze aus deinem Beispiel in einem Item:
    Code:
    telegram_message: '[VALUE]'
    Ist es möglich hier auch die Nachricht an eine chat_id zu beschränken, statt an alle zu senden?
    Aus der Doku:
    telegram_message


    Send (broadcast) message on item change to registered chats. It is possible to use placeholder tags in the message string, to use a template based communication.

    Available tags:
    • [ID]
    • [NAME]
    • [VALUE]
    • [CALLER]
    • [SOURCE]
    • [DEST]
    Aber leider gibt es da kein Beispiel für.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • yachti
    antwortet
    Zitat von henfri Beitrag anzeigen
    Wie genau meinst du das?
    In Telegram Botfather Chatfenster
    -> /mybots und den entsprechenden Bot auswählen
    Screenshot 2021-11-02 235356.png
    ->API Token nochmal kopieren
    und den Link zu ->Here is the token for bot ... benutzen

    in dem Chatfenster
    --> Hallo schreiben

    und nochmal die URL mit dem kopierten Token abfragen.
    Kontrollieren dass kein Leerzeichen im Link ist.

    Damit ist sichergestellt, dass der Token zu den Bot passt.

    Gruß
    Michael

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    ich bin einen Schritt weiter. Der Grund, weshalb es nicht funktioniert hat, wenn ich die Chat_id nicht explizit angegeben habe (dann wird sie ja aus dem Item genommen):
    Wenn man mit notepad++ eine YAML Datei speichert, ist die Default-Endung .yml. SmarthomeNG sucht aber nur nach .yaml.


    Zitat von yachti Beitrag anzeigen
    Ich kann die ChatID über den von mir beschrieben Weg jederzeit wieder abrufen.
    Ja, das ist komisch.

    Ruf doch den Bot mal direkt aus dem Botfather aus und nimm den Token direkt aus dem Botfather.
    Wie genau meinst du das?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • yachti
    antwortet
    Zitat von henfri Beitrag anzeigen
    Wenn der Token nicht stimmen würde, dann würde es ja auch unter Angabe der chat_id nicht funktionieren, oder?
    ja das stimmt.

    Ich weiß halt nicht, wie ich die chat_id reproduzierbar ermitteln kann.
    Ich meinte jetzt den Token beim ermitteln der ChatID. Hab da nicht zitiert, sorry.
    Ich kann die ChatID über den von mir beschrieben Weg jederzeit wieder abrufen.

    Gruß
    Michael

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    du hast mich falsch verstanden:
    Mein Punkt ist: Es funktioniert ja prinzipiell. Aber halt nur wenn ich die chat_id angebe. Nicht aber wenn ich die chat_id nicht angebe.

    Wenn der Token nicht stimmen würde, dann würde es ja auch unter Angabe der chat_id nicht funktionieren, oder?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • yachti
    antwortet
    Du hast einen zweiten Parameter: Code:

    sh.telegram.msg_broadcast("Test",-100112345678)
    und gibst die chat_id direkt an.
    Das ist die GruppenchatID .
    Ist schon zu lange her aber hatte damit glaube auch Probleme.

    und keine chat_id?
    Vielleicht stimmt der Token nicht. Ruf doch den Bot mal direkt aus dem Botfather aus und nimm den Token direkt aus dem Botfather. Sonst habe ich auch leider keine Idee

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    danke, das hat geholfen.
    Ich habe mein Beispiel aus https://smarthomeng.de/user/plugins/...m/README.html:
    # send a Hello world! message to all your trusted chat ids
    msg = "Hello world!"
    sh.telegram.msg_broadcast(msg)
    Das funktioniert bei mir nicht.

    Du hast einen zweiten Parameter:
    Code:
    sh.telegram.msg_broadcast("Test",-100112345678)
    und gibst die chat_id direkt an.

    So funktioniert es bei mir!

    Jetzt stelle ich mir zwei Fragen:
    1) Warum bekomme ich z.B. jetzt aktuell wieder
    {"ok":true,"result":[]}
    und keine chat_id?
    Ich weiß halt nicht, wie ich die chat_id reproduzierbar ermitteln kann. Mal geht es für einen Moment, meistens nicht. Und meinen Bot muss ich ja wieder löschen, denn ich habe hier ja den Key gepostet.
    2) Warum funktioniert es nicht ohne den zweiten Parameter bei mir?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:

Lädt...
X