NEWS
[gelöst] Temperaturen-Skript für Telegram via text2command-Adapter
-
Hallo zusammen,
ich bin gerade dabei (Versuche bisher gescheitert) als Java-Skript-Neuling das vorhandene Skript von dslraser (glaub ist von ihm) aus dem Thread https://forum.iobroker.net/viewtopic.php?t=7477 umzubauen.
Ziel ist es, dass das Skript nicht das Objekt "telegram.0.communicate.request" überwacht, sondern dass ich das Skript und dessen Ausgabe über text2command steuern kann und via einem Button, den ich für das Keyboad in ein separates Skript einfügen werde, starten kann.
Ich nutze schon eine Tastatur und 2-3 Befehle. Das hab ich gerade gelernt und werde das Wissen dann auch für den neuen Custom-Skill nutzen wollen….
Habe schon versucht, einfach die ersten 4 Zeilen im code zu löschen, aber das führt zu Fehlern im Javaskript
Also, ich möchte in Telegram
-
"Temperatur" anklicken können (Button ersstellen kann ich via Skript, schon welche vorhanden)
-
dann soll es im folgenden Skript weitergehen mit "text: 'Für welchen Raum möchtest du die Temperatur abfragen?'"
Wie bekomme ich das hin? Ist doch bestimmt eigentlich easy und ich kapiere es nur noch nicht? Finde es spannend, mehrere Objekte ausgeben zu lassen und nicht immer nur eins...sowas hab ich bei mir noch nie ausprobiert (array sagt man?) aber möchte es gern zum Laufen bekommen.
Im Code habe ich Raumnamen und Temp-Sensoren schon ausgetauscht. HM raus, Xiaomi und HUE-Sensoren rein...
! ````
//https://forum.iobroker.net/viewtopic.php?t=7477
! on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben
var benutzer = stateval.substring(1,stateval.indexOf("]")); // Benutzer aus Statevalue extrahieren
var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length); // Befehl/Text aus Statevalue extrahieren
! if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b)).+/ig) != -1) {
sendTo('telegram', {
user: benutzer,
text: 'Für welchen Raum möchtest du die Temperatur abfragen?',
reply_markup: {
inline_keyboard: [
[{ text: 'alle Räume', callback_data: '%Tempalle'}],
[{ text: 'Flur', callback_data: '%TempFlur'}],
[{ text: 'Wohnzimmer', callback_data: '%TempWohnzimmer'}],
[{ text: 'Küche', callback_data: '%TempKueche'}],
[{ text: 'Kinderzimmer', callback_data: '%TempKinderzimmer'}],
[{ text: 'Schlafzimmer', callback_data: '%TempSchlafzimmer'}],
]
}
});
}// Auswahl alle Räume oder einzeln.
else if (befehl === "%Tempalle") {
sendTo('telegram', {
user: benutzer,
text: "Temperatur alle Räume angefragt",
answerCallbackQuery: {
text: 'Flur ' + getState("javascript.0.hueSensors.Huetemperaturesensor1.temperature").val + '°C\nWohnzimmer ' + getState("zwave.0.NODE12.SENSOR_MULTILEVEL.Temperature_1").val + '°C\nKüche ' + getState("zwave.0.NODE16.SENSOR_MULTILEVEL.Temperature_1").val + '°C\nKinderzimmer ' + getState("mihome.0.devices.sensor_ht_158d000221a753.temperature").val + '°C\nSchlafzimmer ' + getState("mihome.0.devices.sensor_ht_158d000149c2cc.temperature").val + '°C',
showAlert: true
}
});
}
else if (befehl === "%TempFlur") {
sendTo('telegram', {
user: benutzer,
text: "Flurtemperatur angefragt",
answerCallbackQuery: {
text: 'Die Temperatur im im Flur beträgt ' + getState("javascript.0.hueSensors.Huetemperaturesensor1.temperature").val + '°C',
showAlert: true
}
});
}
else if (befehl === "%TempSchlafzimmer") {
sendTo('telegram', {
user: benutzer,
text: "Schlafzimmertemperatur angefragt",
answerCallbackQuery: {
text: 'Die Temperatur im Schlafzimmer beträgt ' + getState("mihome.0.devices.sensor_ht_158d000149c2cc.temperature").val + '°C',
showAlert: true
}
});
}
else if (befehl === "%TempKinderzimmer") {
sendTo('telegram', {
user: benutzer,
text: "Kinderzimmertemperatur angefragt",
answerCallbackQuery: {
text: 'Die Temperatur im Gästezimmer beträgt ' + getState("mihome.0.devices.sensor_ht_158d000221a753.temperature").val + '°C',
showAlert: true
}
});
}
else if (befehl === "%TempWohnzimmer") {
sendTo('telegram', {
user: benutzer,
text: "Wohnzimmertemperatur angefragt",
answerCallbackQuery: {
text: 'Die Temperatur im Wohnzimmer beträgt ' + getState("zwave.0.NODE12.SENSOR_MULTILEVEL.Temperature_1").val + '°C',
showAlert: true
}
});
}
else if (befehl === "%TempKueche") {
sendTo('telegram', {
user: benutzer,
text: "Küchentemperatur angefragt",
answerCallbackQuery: {
text: 'Die Temperatur im Badezimmer beträgt ' + getState("zwave.0.NODE16.SENSOR_MULTILEVEL.Temperature_1").val + '°C',
showAlert: true
}
});
}
});Danke euch und Grüße, Thorsten PS: Wenn man für die Lösung mehr Input benötigt…liefere ich den natürlich ;)
-
-
Hab jetzt die Lösung gefunden. Ich mache es einfach über Blockly. Anbei meine Skripte für "Alle Räume", Obergeschoss und Untergeschoss:
Alle Räume (Blockly Export):
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="telegram" id="RHk7j2gF+QT.akn6LjVF" x="-338" y="-88"><field name="INSTANCE">.0</field><value name="MESSAGE"><shadow type="text" id="m)tP(}!!Q,Vm%1Bla~Rc"><field name="TEXT">text</field></shadow> <block type="text_join" id="lR%GD2,d-6P);Lt2W=s6"><mutation items="23"></mutation> <value name="ADD0"><block type="text" id="HT[kRT0r{HwPed)h;Q-q"><field name="TEXT">Flur:</field></block></value> <value name="ADD1"><block type="get_value" id="M77o6^mb.8n~8#@}9O?H"><field name="ATTR">val</field> <field name="OID">javascript.0.hueSensors.Huetemperaturesensor1.temperature</field></block></value> <value name="ADD2"><block type="text" id="kYuN-~D?QDkdI5N9DJtj"><field name="TEXT"> °C</field></block></value> <value name="ADD3"><block type="time_get" id=")^4j6dL^OL1s)x%ZalC."><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD4"><block type="text" id="uOKcI*6G1gI~!}[f9PhQ"><field name="TEXT">Wohnzimmer:</field></block></value> <value name="ADD5"><block type="get_value" id="Jh3:qTium+i*zT]]Ir^3"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE12.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD6"><block type="text" id="gfnWxp%phEmoPidop!/e"><field name="TEXT"> °C</field></block></value> <value name="ADD7"><block type="time_get" id="=7NA-/?2:qL|ijp+)cgs"><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD8"><block type="text" id="x:zrOwRzX4`FesyVAut0"><field name="TEXT">Küche:</field></block></value> <value name="ADD9"><block type="get_value" id="m+ycKA8=/YHW.DhyuG]]"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE16.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD10"><block type="text" id="yF)Ce;v]Wy4;y`rNs+R%"><field name="TEXT"> °C</field></block></value> <value name="ADD11"><block type="time_get" id="|Z2P~fwHslvcN~n-xt{p"><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD12"><block type="text" id="`618+Tc-l32Je:%=Thj|"><field name="TEXT">Büro:</field></block></value> <value name="ADD13"><block type="get_value" id="HEFfhNSpxr6iD!i?Z]b["><field name="ATTR">val</field> <field name="OID">zwave.0.NODE11.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD14"><block type="text" id=",]JF_cJ(2mc*^,%E=q])"><field name="TEXT"> °C</field></block></value> <value name="ADD15"><block type="time_get" id="/nh*hp4CYlIf^-Frj6w("><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD16"><block type="text" id="@#f!QBl`EgmUO}s)da^O"><field name="TEXT">Schlafzimmer:</field></block></value> <value name="ADD17"><block type="get_value" id="#uV0bV_~(,^H%+9|tz.T"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d000149c2cc.temperature</field></block></value> <value name="ADD18"><block type="text" id="GZahuXpm|7/l4LKdxKxD"><field name="TEXT"> °C</field></block></value> <value name="ADD19"><block type="time_get" id="diQ.^B#uC#6T/WWXhS|("><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD20"><block type="text" id="Bg5rmb!@N?1i:lXsU=Dg"><field name="TEXT">Kinderzimmer:</field></block></value> <value name="ADD21"><block type="get_value" id="b*3cLc|Tf*8MU+Rd1Jq1"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d000221a753.temperature</field></block></value> <value name="ADD22"><block type="text" id="92xu}}EyMwIg@Fz(=81V"><field name="TEXT"> °C</field></block></value></block></value></block></xml>
Räume OG: >! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="telegram" id="RHk7j2gF+QT.akn6LjVF" x="-338" y="-88"><field name="INSTANCE">.0</field> <value name="MESSAGE"><shadow type="text" id="m)tP(}!!Q,Vm%1Bla~Rc"><field name="TEXT">text</field></shadow> <block type="text_join" id="lR%GD2,d-6P);Lt2W=s6"><mutation items="16"></mutation> <value name="ADD0"><block type="text" id="HT[kRT0r{HwPed)h;Q-q"><field name="TEXT">Flur:</field></block></value> <value name="ADD1"><block type="get_value" id="M77o6^mb.8n~8#@}9O?H"><field name="ATTR">val</field> <field name="OID">javascript.0.hueSensors.Huetemperaturesensor1.temperature</field></block></value> <value name="ADD2"><block type="text" id="kYuN-~D?QDkdI5N9DJtj"><field name="TEXT"> °C</field></block></value> <value name="ADD3"><block type="time_get" id=")^4j6dL^OL1s)x%ZalC."><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD4"><block type="text" id="uOKcI*6G1gI~!}[f9PhQ"><field name="TEXT">Wohnzimmer:</field></block></value> <value name="ADD5"><block type="get_value" id="Jh3:qTium+i*zT]]Ir^3"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE12.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD6"><block type="text" id="gfnWxp%phEmoPidop!/e"><field name="TEXT"> °C</field></block></value> <value name="ADD7"><block type="time_get" id="=7NA-/?2:qL|ijp+)cgs"><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD8"><block type="text" id="x:zrOwRzX4`FesyVAut0"><field name="TEXT">Küche:</field></block></value> <value name="ADD9"><block type="get_value" id="m+ycKA8=/YHW.DhyuG]]"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE16.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD10"><block type="text" id="yF)Ce;v]Wy4;y`rNs+R%"><field name="TEXT"> °C</field></block></value> <value name="ADD11"><block type="time_get" id="|Z2P~fwHslvcN~n-xt{p"><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD12"><block type="text" id="`618+Tc-l32Je:%=Thj|"><field name="TEXT">Büro:</field></block></value> <value name="ADD13"><block type="get_value" id="HEFfhNSpxr6iD!i?Z]b["><field name="ATTR">val</field> <field name="OID">zwave.0.NODE11.SENSOR_MULTILEVEL.Temperature_1</field></block></value> <value name="ADD14"><block type="text" id=",]JF_cJ(2mc*^,%E=q])"><field name="TEXT"> °C</field></block></value> <value name="ADD15"><block type="time_get" id="/nh*hp4CYlIf^-Frj6w("><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value></block></value></block></xml>
Räume Untergeschoss:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="telegram" id="RHk7j2gF+QT.akn6LjVF" x="-338" y="-88"><field name="INSTANCE">.0</field><value name="MESSAGE"><shadow type="text" id="m)tP(}!!Q,Vm%1Bla~Rc"><field name="TEXT">text</field></shadow> <block type="text_join" id="lR%GD2,d-6P);Lt2W=s6"><mutation items="7"></mutation> <value name="ADD0"><block type="text" id="HT[kRT0r{HwPed)h;Q-q"><field name="TEXT">Schlafzimmer:</field></block></value> <value name="ADD1"><block type="get_value" id="M77o6^mb.8n~8#@}9O?H"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d000149c2cc.temperature</field></block></value> <value name="ADD2"><block type="text" id="kYuN-~D?QDkdI5N9DJtj"><field name="TEXT"> °C</field></block></value> <value name="ADD3"><block type="time_get" id=")^4j6dL^OL1s)x%ZalC."><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field></block></value> <value name="ADD4"><block type="text" id="uOKcI*6G1gI~!}[f9PhQ"><field name="TEXT">Kinderzimmer:</field></block></value> <value name="ADD5"><block type="get_value" id="Jh3:qTium+i*zT]]Ir^3"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d000221a753.temperature</field></block></value> <value name="ADD6"><block type="text" id="gfnWxp%phEmoPidop!/e"><field name="TEXT"> °C</field></block></value></block></value></block></xml>
![2700_temp_ug.png](/assets/uploads/files/2700_temp_ug.png) Das ganze steuere ich mit Text2Command und Buttons. Java-Skript für Telegram-Buttons: >! ```` sendTo('telegram.0', { text: 'Bitte wähle ein Button', reply_markup: { keyboard: [ ['Übersicht'], ['alle Räume'], ['RäumeOG', 'RäumeUG'], ], resize_keyboard: true, one_time_keyboard: true } });
Das Java-Skript für die Buttons (damit diese bei Telegram angezeigt werden) starte ich mit folgendem Text2Command-"Übersetzer":
Ich hoffe, ich kann jemandem hiermit weiterhelfen.
VG Thorsten