Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Heathcliff mein Telegram Bot

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Heathcliff mein Telegram Bot

Heathcliff mein Telegram Bot

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
7 Posts 2 Posters 941 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    ignis-draco
    wrote on last edited by
    #1

    Ich wollte euch mal meine Telegram Bot vorstellen.

    Übersicht:

    uebersicht.gif

    Heitzung:

    heitzung.gif
    Verwendete Adapter : MaxCul, ZigBee

    Wetter:

    wetter.gif
    Verwendete Adapter : DasWetter.com

    Tanken:

    tanken.gif
    Verwendete Adapter : Tankerkönig, Flot, Screenshop Phantom, History

    Licht:

    licht.gif
    Verwendete Adapter : ZigBee

    Saugroboter:

    sauger.gif
    Verwendete Adapter : Xiaomi/Roborock

    Einkausliste:

    einkaufen.gif
    Verwendete Adapter : Bring

    Musik:

    Musik.gif
    Verwendete Adapter :Logitech Squeezebox Adapter

    Schichtplan:

    schichtplan.gif
    Verwendete Adapter : -
    Benötigt: Nextcloud Kalender

    Aufbau

    Für jede Funktion gibt es eine Javascipt Datei so ist es leichter einzelne Funktionen zu entfernen oder hinzu zufügen.
    Neben der Auswahl über die Tastatur können die meisten Funktionen auch über Wörter gestartet werden (z.b. "Musik").
    Die Skripte sind zustandslos geschrieben somit kann man immer zwischen den Funktionen wechseln ohne das man was beachten muss.

    Bei Interesse kann ich auch Quellecode online stelllen jedoch ist der leider überhaupt nicht Dokumentiert noch
    verständlich geschrieben. Also muss ich den zumindest aufräumen damit der Überhaupt nachvollzogen werden kann.

    Proxmox [DMAF5] = LXC [Debian 12]
    ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

    XenonX 1 Reply Last reply
    0
    • I ignis-draco

      Ich wollte euch mal meine Telegram Bot vorstellen.

      Übersicht:

      uebersicht.gif

      Heitzung:

      heitzung.gif
      Verwendete Adapter : MaxCul, ZigBee

      Wetter:

      wetter.gif
      Verwendete Adapter : DasWetter.com

      Tanken:

      tanken.gif
      Verwendete Adapter : Tankerkönig, Flot, Screenshop Phantom, History

      Licht:

      licht.gif
      Verwendete Adapter : ZigBee

      Saugroboter:

      sauger.gif
      Verwendete Adapter : Xiaomi/Roborock

      Einkausliste:

      einkaufen.gif
      Verwendete Adapter : Bring

      Musik:

      Musik.gif
      Verwendete Adapter :Logitech Squeezebox Adapter

      Schichtplan:

      schichtplan.gif
      Verwendete Adapter : -
      Benötigt: Nextcloud Kalender

      Aufbau

      Für jede Funktion gibt es eine Javascipt Datei so ist es leichter einzelne Funktionen zu entfernen oder hinzu zufügen.
      Neben der Auswahl über die Tastatur können die meisten Funktionen auch über Wörter gestartet werden (z.b. "Musik").
      Die Skripte sind zustandslos geschrieben somit kann man immer zwischen den Funktionen wechseln ohne das man was beachten muss.

      Bei Interesse kann ich auch Quellecode online stelllen jedoch ist der leider überhaupt nicht Dokumentiert noch
      verständlich geschrieben. Also muss ich den zumindest aufräumen damit der Überhaupt nachvollzogen werden kann.

      XenonX Offline
      XenonX Offline
      Xenon
      Forum Testing Developer
      wrote on last edited by Xenon
      #2

      @ignis-draco ich hab meinen T2C in Klassen geschrieben. So bleibt das ganze extrem übersichtlich und man mit minimalem Aufwand neue Funktionen implementieren.

      
      // Garage
      class garageClass {
          constructor() {
      
              this._name = 'Garage';
      
              this._action = async (/** @type {string} */ cmd) => setStateAsync('0_userdata.0.Garage.Aktion.Garagentor_fahren', cmd, true);
      
              this.oeffnen = () => this._action('auf');
              this.schliessen = () => this._action('zu');
              this.paket = () => this._action('paket');
              this.zustand = () => {
                  const id = getState(arrPath[1]).val;
                  const objMsg = {
                      msg: getState('0_userdata.0.Garage.Zustand.Zustand_Garage').val,
                      id: `${id}`,
                      user: objRequest[id].firstName
                  };
                  setState(telegram_msg, objMsg, true);
              };
          };
      };
      
      // Lichtsteuerung
      class lichterClass {
          constructor() {
              this._name = 'Licht';
      
              this._action = async (/** @type {string} */ path, /** @type {boolean} */ cmd, /** @type {boolean} */ ack) => setStateAsync(path, cmd, ack);
      
              this.aus = () => this._action('0_userdata.0.switches.main_Switch_Lights', true, true);
          };
      };
      
      // Sonstige Funktionen
      class sonstigesClass {
          constructor() {
              this._name = 'Sonstiges';
      
              this._action = async (/** @type {string} */ path, /** @type {boolean} */ cmd, /** @type {boolean} */ ack) => setStateAsync(path, cmd, ack);
      
              this.spritpreise = () => this._action('0_userdata.0.message.trigger.telegram_Spritpreise', true, true);
              
          };
      };
      
      // klassen erstellen
      let objClass = {
          garage: new garageClass(),
          lueftung: new lueftungClass(),
          licht : new lichterClass(),
          sonstiges : new sonstigesClass()
      };
      

      Jede Klasse ist ein eigenes Menu, jeder attribut ohne "_" am Anfang ein Button. Man braucht also auch keinen switch case oder sonst was bauen, einfach nur die Klasse mit den Funktionen einfügen und das wars

      übersicht.png

      danach öffnet sich das entsprechende Menu:

      garage.png

      Ich nutze das Wort vor dem ":" als keyword, das Wort nach dem ":" als command

              // Aktion ausfuehren
              objClass[keyword][cmd]();
      

      wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

      1 Reply Last reply
      0
      • I Offline
        I Offline
        ignis-draco
        wrote on last edited by
        #3

        @Xenon

        Das ist eine sehr interessante und auch elegante Möglichkeit wenn es jetzt noch möglich wäre die Classen in einzelne Dateien zu packen dann würde ich es sofort umstellen. Und diese ganzen Classen in global zu machen ist auch nicht wirklich sauber.

        Proxmox [DMAF5] = LXC [Debian 12]
        ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

        XenonX 1 Reply Last reply
        0
        • I ignis-draco

          @Xenon

          Das ist eine sehr interessante und auch elegante Möglichkeit wenn es jetzt noch möglich wäre die Classen in einzelne Dateien zu packen dann würde ich es sofort umstellen. Und diese ganzen Classen in global zu machen ist auch nicht wirklich sauber.

          XenonX Offline
          XenonX Offline
          Xenon
          Forum Testing Developer
          wrote on last edited by
          #4

          @ignis-draco du könntest dir ein eigenes node Modul erstellen, ich denke das wird mein nächster Schritt sein

          wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

          1 Reply Last reply
          0
          • I Offline
            I Offline
            ignis-draco
            wrote on last edited by ignis-draco
            #5

            @Xenon

            node Modul ?
            Meinst du damit NodeRed oder gibt es was neben Adapter und Skript das ich noch nicht kenne.

            Proxmox [DMAF5] = LXC [Debian 12]
            ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

            XenonX 1 Reply Last reply
            0
            • I ignis-draco

              @Xenon

              node Modul ?
              Meinst du damit NodeRed oder gibt es was neben Adapter und Skript das ich noch nicht kenne.

              XenonX Offline
              XenonX Offline
              Xenon
              Forum Testing Developer
              wrote on last edited by
              #6

              @ignis-draco du kannst ja ein node Modul erstellen und es dann in den js Adapter importieren. Ein Adapter ist ja auch nichts anderes als ein node Modul

              wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

              1 Reply Last reply
              0
              • I Offline
                I Offline
                ignis-draco
                wrote on last edited by
                #7

                @Xenon

                Oh stimmt daran habe ich noch gar nicht gedacht. Werde mich mal schlau machen wie so etwas geht und was die Vor und Nachteile sind. Mir fehlt nämlich häufiger die Möglichkeit zur Kapselung und Aufteilung in Dateien.

                Proxmox [DMAF5] = LXC [Debian 12]
                ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                100

                Online

                32.4k

                Users

                81.3k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe