NEWS
Werte per Telegram an iobroker senden
-
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 -
Wenn du am Handy in telegram etwas eingibst, dann erscheint dies in einem DP in iob.
Und diesen DP kannst du doch dann auswerten. -
Hi,
mit
Schreibe Text in zustand
geht es. Aber er erkennt kein - zeichen. da muss ich mal n bisschen rumprobieren. -
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.
-
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}); } });