NEWS
Übersetzung true/false
-
Hallo zusammen,
ich bastele mir gerade eine Telegram Benachrichting zusammen, welche soweit funktioiert es auch besten.
Jetzt möchte ich gerne meine Statusabfrage erweitern indem ich die Zustände true und false umschreibe auf "geöffnet" bzw "geschlossen"
Leider fehlem mir hierzu die Grundlagen um dieses erfolgreich umzusetzen.
Hier mein jetziger Code:
// ########################### // Systeminformation sammeln var chatname = '[xxxx]'; var codemsg = "test"; on("telegram.0.communicate.request", function (obj) { if (obj.newState.val == chatname + codemsg || obj.newState.val == chatname + "/" + codemsg) { // Rückmeldung Garagentor groß var rggid = "hm-rpc.0.LEQ0757490.1.STATE"/*Rückmeldung Garagentor groß.STATE*/; var rgg = getState(rggid).val; sendTo('telegram', 'Garage groß ' + rgg ); setState("telegram.0.communicate.request","leer"); } });
Wie kann ich es am einfachsten umsetzen das ich geschlossen / geöffnet bekomme?
Als Erweiterung würden dann noch weiter Zustandsabfragen hinzukommen, welche in der gleichen Nachricht gesendet werden sollen.
Danke + gruß
-
Hallo,
// ########################### // Systeminformation sammeln var chatname = '[xxxx]'; var codemsg = "test"; var zustand = ['geschlossen', 'geöffnet']; // Array mit Zuständen (möglicherweise umgekehrt) on("telegram.0.communicate.request", function(obj) { if (obj.newState.val == chatname + codemsg || obj.newState.val == chatname + "/" + codemsg) { // Rückmeldung Garagentor groß var rggid = "hm-rpc.0.LEQ0757490.1.STATE" /*Rückmeldung Garagentor groß.STATE*/ ; var rgg = (getState(rggid).val ? 1 : 0); // Kurzschreibweise, wenn getState... true, dann 1, sonst 0 // alternativ zur Zeile darüber geht auch: var rgg = Number(getState(rggid).val); // wandelt true in 1 und false in 0 sendTo('telegram', 'Garage groß ' + zustand[rgg]); // Array-Position aufrufen: Position 0 (also false) "geschlossen", Pos 1 (true) "offen" setState("telegram.0.communicate.request", "leer"); } });
Wie im Code kommentiert.
Du baust ein Array mit den Zuständen. Dann wandelst du mit einer IF-Abfrage (hier in Kurzform) true in 1 und false in 0 um. Kann auch andersherum sein.
Hierzu gibt es alternativ auch den Befehl http://www.w3schools.com/jsref/jsref_number.asp. Er macht aus true eine 1 und aus false eine 0.
Die Zahlen geben anschließend die Array Position an, an deren Stelle der passende Text für die Nachricht steht.
Gruß
Pix
-
Hallo,
Hab ich schon gemacht mit Telegram.
Ging ganz einfach mit replace.
Z.B.
vText = 'mustertest= ' + getState('abcdfd').val. // kommt "mustertest= false"
vText = vText.replace(false, 'auf'). // false wird geändert in auf
War für mich einfacher.
Mit freundlichen Grüßen
Dieter
-
Vielen Dank für eure Hilfe, Script funktioniert wunderbar
Jetzt weiß ich auch wie das mit den Arrays klappt.
Werde mich wahrscheinlich für die Variante "Number" entscheiden, ist für mich am besten nachzuvollziehen.
-
Hauptsache es funktioniert.
Mfg
-
Wenn man die Zustandstexte im Datenpunkt hat (common.states) kann man sie mittels einer http://forum.iobroker.net/viewtopic.php?f=21&t=4199&p=41973s#p41973 erhalten und verwenden.
-
Frage am Rande….
macht es Sinn auch noch die Chat_ID mit einzubringen? Würde es das ganze etwas sicherer machen?
Und wie müsste dann der Code aussehen?
Probiere schon
sendTo('telegram.0', {text: 'Message to chat', chatId: 'SOME-CHAT-ID-123');
einzubauen, klappt aber nicht so ganz
-
durch Zufall gefunden :
http://forum.iobroker.net/viewtopic.php … it=chat_ID
sendTo('telegram.0', { text: 'Testnachricht empfangen.', chatId: '227174xxx', });
gruß