Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Werte per Telegram an iobroker senden

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Werte per Telegram an iobroker senden

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
10 Beiträge 3 Kommentatoren 858 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • jmeister79J Offline
    jmeister79J Offline
    jmeister79
    schrieb am zuletzt editiert von
    #1

    Guten Tag,
    ich baue gerade ein Script das den taschengeldkontostand meiner Kids visualisiert, damit sie nicht ständig überall ihr Taschengeld im Haus rumfliegen haben.
    Dieser Wert wird im Panel dargestellt. Wöchentlich wird eine paremetrierbare Summe inkrementiert.
    Ich brauche Allerdings noch eine Möglichkeit außer der Reihe Geld einzuzahlen, wenn sie beispielsweise Rasen mähen oder Geld abzuheben.
    Aufgrund der kriminellen Energie möchte ich dies aber nicht in einer VIS machen sondern via Telegram Bot. Bisher nutze ich textcommand schon intensiv mit zahlreichen Funktionen, hier aber immer nur mit Schlüsselworten.

    Gibt es eine Möglichkeit, ein Schlüsselwort gefolgt von einem variabel eisntellbaren Wert zu senden, der dann in ein Objekt geschrieben wird? Auf dieses Objekt schaut ein Trigger der dann aufaddiert und zurücksetzt.

    LG
    Nils

    bahnuhrB 1 Antwort Letzte Antwort
    0
    • jmeister79J jmeister79

      Guten Tag,
      ich baue gerade ein Script das den taschengeldkontostand meiner Kids visualisiert, damit sie nicht ständig überall ihr Taschengeld im Haus rumfliegen haben.
      Dieser Wert wird im Panel dargestellt. Wöchentlich wird eine paremetrierbare Summe inkrementiert.
      Ich brauche Allerdings noch eine Möglichkeit außer der Reihe Geld einzuzahlen, wenn sie beispielsweise Rasen mähen oder Geld abzuheben.
      Aufgrund der kriminellen Energie möchte ich dies aber nicht in einer VIS machen sondern via Telegram Bot. Bisher nutze ich textcommand schon intensiv mit zahlreichen Funktionen, hier aber immer nur mit Schlüsselworten.

      Gibt es eine Möglichkeit, ein Schlüsselwort gefolgt von einem variabel eisntellbaren Wert zu senden, der dann in ein Objekt geschrieben wird? Auf dieses Objekt schaut ein Trigger der dann aufaddiert und zurücksetzt.

      LG
      Nils

      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @jmeister79

      Wenn du am Handy in telegram etwas eingibst, dann erscheint dies in einem DP in iob.
      Und diesen DP kannst du doch dann auswerten.


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      jmeister79J 1 Antwort Letzte Antwort
      1
      • bahnuhrB bahnuhr

        @jmeister79

        Wenn du am Handy in telegram etwas eingibst, dann erscheint dies in einem DP in iob.
        Und diesen DP kannst du doch dann auswerten.

        jmeister79J Offline
        jmeister79J Offline
        jmeister79
        schrieb am zuletzt editiert von
        #3

        Hi,
        mit
        Schreibe Text in zustand
        geht es. Aber er erkennt kein - zeichen. da muss ich mal n bisschen rumprobieren.

        bahnuhrB 1 Antwort Letzte Antwort
        0
        • jmeister79J jmeister79

          Hi,
          mit
          Schreibe Text in zustand
          geht es. Aber er erkennt kein - zeichen. da muss ich mal n bisschen rumprobieren.

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @jmeister79

          habe eben ein bisschen gespielt:

              var vEingabe = getState("telegram.0.communicate.request").val;
              var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));
              log (vUser);
              var text = vEingabe.substring(vEingabe.indexOf("]")+1, vEingabe.length );
              log (text);
          
              var arr = text.split(",");
              log (arr[0]);
              var wert = parseFloat(arr[1])
              log (typeof wert)
          

          Schau dir mal das Script an.
          Wenn du in telegram z.B. eingibst: rasen,10
          dann hat die Variable vUser den Namen der gesendet hat.
          Und in arr0 bekommst du rasen
          und in wert den Wert.

          Musst halt noch umwandeln und ein paar if einbauen je nachdem was du machen willst.


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          1
          • jmeister79J Offline
            jmeister79J Offline
            jmeister79
            schrieb am zuletzt editiert von jmeister79
            #5

            Hi, ich habs jetzt so gelöst.

            Danke dir Bahnuhr:

            on({id: 'telegram.0.communicate.request', change: "any"}, async function (obj) {
            
                var vEingabe = getState("telegram.0.communicate.request").val;
                var text = vEingabe.substring(vEingabe.indexOf("]")+1, vEingabe.length );
            
                var arr = text.split(",");
                var wert = parseFloat(arr[1])
                if (arr[0] == 'Lieblingskind' || arr[0] == 'Schwarzschaf'){
                    var newvalue = getState('javascript.0.Taschengeld.'+arr[0]+'Abs').val + wert; 
                    setState('javascript.0.Taschengeld.'+arr[0]+'Abs', (parseFloat(newvalue)));	//neue summe übertragen  
                    text = 'Es wurden '+wert+'€ zu '+arr[0]+' addiert.'
                    sendTo("telegram", "send", {
                        text: text});       
                }
            });
            
            B 1 Antwort Letzte Antwort
            1
            • jmeister79J jmeister79

              Hi, ich habs jetzt so gelöst.

              Danke dir Bahnuhr:

              on({id: 'telegram.0.communicate.request', change: "any"}, async function (obj) {
              
                  var vEingabe = getState("telegram.0.communicate.request").val;
                  var text = vEingabe.substring(vEingabe.indexOf("]")+1, vEingabe.length );
              
                  var arr = text.split(",");
                  var wert = parseFloat(arr[1])
                  if (arr[0] == 'Lieblingskind' || arr[0] == 'Schwarzschaf'){
                      var newvalue = getState('javascript.0.Taschengeld.'+arr[0]+'Abs').val + wert; 
                      setState('javascript.0.Taschengeld.'+arr[0]+'Abs', (parseFloat(newvalue)));	//neue summe übertragen  
                      text = 'Es wurden '+wert+'€ zu '+arr[0]+' addiert.'
                      sendTo("telegram", "send", {
                          text: text});       
                  }
              });
              
              B Offline
              B Offline
              booleeny
              schrieb am zuletzt editiert von
              #6

              @jmeister79 Bist du hier noch aktiv im Forum? Könntest du das "Taschengeld"-Script veröffentlichen? Oder auch gerne jemand anderes, ich bin bestimmt nicht der einzige der danach sucht oder so etwas realisieren möchte.

              bahnuhrB 1 Antwort Letzte Antwort
              0
              • B booleeny

                @jmeister79 Bist du hier noch aktiv im Forum? Könntest du das "Taschengeld"-Script veröffentlichen? Oder auch gerne jemand anderes, ich bin bestimmt nicht der einzige der danach sucht oder so etwas realisieren möchte.

                bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                @booleeny sagte in Werte per Telegram an iobroker senden:

                Könntest du das "Taschengeld"-Script veröffentlichen?

                He ??

                Steht doch 1 Beitrag über deinem.


                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                Danke.
                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                ScreenToGif :https://www.screentogif.com/downloads.html

                B 1 Antwort Letzte Antwort
                0
                • bahnuhrB bahnuhr

                  @booleeny sagte in Werte per Telegram an iobroker senden:

                  Könntest du das "Taschengeld"-Script veröffentlichen?

                  He ??

                  Steht doch 1 Beitrag über deinem.

                  B Offline
                  B Offline
                  booleeny
                  schrieb am zuletzt editiert von
                  #8

                  @bahnuhr Das is doch nur der "Telegram" Part. Ich dachte es gibt noch ein größeres Skript um das mit den Kontoständen zu realisieren. Ok vielleicht habe ich auch zu kompliziert gedacht. Wenn es nur ein Wert ist, der sich per Telegram editieren lässt hast du recht. Durch die zwei genannten Kinder und die Aktivitäten, dachte ich es gibt auch ein Log. Naja ich habe es nun soweit hingebastelt, dass Kontostände in der Vis angezeigt werden, Beträge abgehoben und eingezahlt werden können und es ein Log dazu gibt. Wenn das läuft und hübsch ist poste ich das.

                  1 Antwort Letzte Antwort
                  0
                  • jmeister79J Offline
                    jmeister79J Offline
                    jmeister79
                    schrieb am zuletzt editiert von jmeister79
                    #9

                    @booleeny bin hier nicht mehr aktiv, da ich anfang des Jahres auf ein anderes System migriert bin. Ich habe leider den ioBriker auch auf irgend einem Image liegen, sber eigentlich ist die snzeige und die wöchentliche inkrementation um einen parametrierbaren wert trivial.
                    Ich hab das hoer im HA auch genau so realisiert.

                    Du brauchst n Script dass an einem bestimmten termin per crontab einfach die summe nimmt und dann den Taschengeldwert aufaddiert.

                    Das einstellen in vis o.ä. ist dann dort vorzunehmen. Sind leider viele verzweigte scripte...

                    1 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      booleeny
                      schrieb am zuletzt editiert von
                      #10

                      Falls es jemanden interessiert ist hier ein Taschengeld Script:

                      Javascript:

                      // Taschengeld-Verwaltung mit wöchentlicher Gutschrift + VIS-Steuerung
                      // Stand: November 2025
                      // Anpassungen: 24h-Zeit ohne Sekunden + HTML-Log-Tabelle + nur 20 letzte Einträge
                      
                      const kinder = {
                          Alrik: {
                              konto: '0_userdata.0.Taschengeld.Alrik.Konto',
                              einzahlung: '0_userdata.0.Taschengeld.Alrik.Einzahlung',
                              auszahlen: '0_userdata.0.Taschengeld.Alrik.Auszahlung',
                              btn_einzahlen: '0_userdata.0.Taschengeld.Alrik.Einzahlen',
                              btn_auszahlen: '0_userdata.0.Taschengeld.Alrik.Auszahlen',
                              woechentlich: '0_userdata.0.Taschengeld.Alrik.Woechentlich',
                              log: '0_userdata.0.Taschengeld.Alrik.Log'
                          },
                          Theda: {
                              konto: '0_userdata.0.Taschengeld.Theda.Konto',
                              einzahlung: '0_userdata.0.Taschengeld.Theda.Einzahlung',
                              auszahlen: '0_userdata.0.Taschengeld.Theda.Auszahlung',
                              btn_einzahlen: '0_userdata.0.Taschengeld.Theda.Einzahlen',
                              btn_auszahlen: '0_userdata.0.Taschengeld.Theda.Auszahlen',
                              woechentlich: '0_userdata.0.Taschengeld.Theda.Woechentlich',
                              log: '0_userdata.0.Taschengeld.Theda.Log'
                          }
                      };
                      
                      // 🧾 Logik: Eintrag im Log speichern (HTML-Tabelle, 24h-Zeit, max. 20 Einträge)
                      function logEintrag(kind, betrag, art) {
                          const datum = new Date().toLocaleString('de-DE', {
                              year: 'numeric',
                              month: '2-digit',
                              day: '2-digit',
                              hour: '2-digit',
                              minute: '2-digit',
                              hour12: false
                          });
                      
                          const logPfad = kinder[kind].log;
                          let aktuellesLog = getState(logPfad).val || '';
                      
                          // Wenn noch keine Tabelle existiert → Grundstruktur erzeugen
                          if (!aktuellesLog.includes('<table')) {
                              aktuellesLog = `
                              <table style="width:100%; border-collapse:collapse; font-family:Arial; font-size:12px;" border="1">
                                  <thead style="background:#ddd;">
                                      <tr>
                                          <th style="padding:4px;">Datum</th>
                                          <th style="padding:4px;">Art</th>
                                          <th style="padding:4px;">Betrag</th>
                                      </tr>
                                  </thead>
                                  <tbody></tbody>
                              </table>`;
                          }
                      
                          // Neue Tabellenzeile (neueste Einträge oben)
                          const neueZeile = `
                              <tr>
                                  <td style="padding:4px;">${datum}</td>
                                  <td style="padding:4px;">${art}</td>
                                  <td style="padding:4px; text-align:right;">${betrag.toFixed(2)} €</td>
                              </tr>`;
                      
                          // Neue Zeile am Anfang des Tabellenkörpers einfügen
                          aktuellesLog = aktuellesLog.replace(/(<tbody>)/, `$1${neueZeile}`);
                      
                          // Nur die letzten 20 Einträge behalten
                          const tbodyInhalt = aktuellesLog.match(/<tbody>([\s\S]*?)<\/tbody>/);
                          if (tbodyInhalt) {
                              const alleZeilen = tbodyInhalt[1].match(/<tr>[\s\S]*?<\/tr>/g) || [];
                              const begrenzteZeilen = alleZeilen.slice(0, 20); // Nur die ersten 20 behalten (neueste zuerst)
                              const neuerTbody = "<tbody>" + begrenzteZeilen.join("") + "</tbody>";
                              aktuellesLog = aktuellesLog.replace(/<tbody>[\s\S]*?<\/tbody>/, neuerTbody);
                          }
                      
                          setState(logPfad, aktuellesLog);
                      }
                      
                      // 🕗 Wöchentliche Auszahlung (Sonntag 08:00 Uhr)
                      schedule("0 8 * * 0", () => {
                          for (const kind in kinder) {
                              const kontoPfad = kinder[kind].konto;
                              const betragPfad = kinder[kind].woechentlich;
                              const betrag = parseFloat(getState(betragPfad).val) || 0;
                              const standAlt = parseFloat(getState(kontoPfad).val) || 0;
                              const standNeu = standAlt + betrag;
                      
                              setState(kontoPfad, standNeu);
                              logEintrag(kind, betrag, "Wöchentliche Gutschrift");
                          }
                      });
                      
                      // 💰 Einzahlung per Button
                      for (const kind in kinder) {
                          on({ id: kinder[kind].btn_einzahlen, change: 'ne' }, () => {
                              const betrag = parseFloat(getState(kinder[kind].einzahlung).val);
                              if (isNaN(betrag) || betrag <= 0) return;
                      
                              const konto = kinder[kind].konto;
                              const stand = parseFloat(getState(konto).val) || 0;
                      
                              setState(konto, stand + betrag);
                              logEintrag(kind, betrag, "Manuelle Einzahlung");
                      
                              // Reset
                              setState(kinder[kind].einzahlung, 0);
                              setState(kinder[kind].btn_einzahlen, false);
                          });
                      }
                      
                      // 💸 Auszahlung per Button
                      for (const kind in kinder) {
                          on({ id: kinder[kind].btn_auszahlen, change: 'ne' }, (obj) => {
                              const btnStatus = obj.state.val;
                              if (btnStatus !== true) return; // Nur reagieren, wenn Button gedrückt (true)
                      
                              const betrag = parseFloat(getState(kinder[kind].auszahlen).val);
                              const konto = kinder[kind].konto;
                              const stand = parseFloat(getState(konto).val) || 0;
                      
                              if (isNaN(betrag) || betrag <= 0 || betrag > stand) {
                                  console.warn(`[Taschengeld] Ungültiger Auszahlungsbetrag für ${kind}: ${betrag}`);
                                  setState(kinder[kind].btn_auszahlen, false);
                                  return;
                              }
                      
                              setState(konto, stand - betrag);
                              logEintrag(kind, betrag, "Auszahlung");
                      
                              // Reset
                              setState(kinder[kind].auszahlen, 0);
                              setState(kinder[kind].btn_auszahlen, false);
                          });
                      }
                      

                      Objekte unter 0_userdata 0 anlegen:
                      2025-11-02 21_17_02-Clipboard.png

                      Hier eine vis-2:
                      2025-11-02 21_20_28-Clipboard.png

                      1 Antwort Letzte Antwort
                      1
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      863

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe