NEWS
js- Abfrage von Status an Ausgängen per Telegram
js- Abfrage von Status an Ausgängen per Telegram
-
@pix sagte in js- Abfrage von Status an Ausgängen per Telegram:
@fastfoot Sehr gute Idee, eine Variable zu verwenden. Das kann aber bei vielen Tastern schnell unübersichtlich werden.
ich dachte dabei an diese eine Variable, die allerdings bei jedem setState() gesetzt würde. Das sollte im Ein-Mann-Betrieb kein Problem sein, sollte aber die Frau gleichzeitig das Licht im Wohnzimmer schalten(durch Telegram), funktioniert das nicht mehr. Allerdings gibt es dann auch Probleme mit dem benutzer, denke ich
Was das from: angeht, Danke für den Tipp! Allerdings sagt mir mein Bauchgefühl, dass ein Adapter auf den Taster reagiert und dann entsprechend das Licht schaltet, da wäre dann beim manuellen Drücken kein Unterschied, der Trigger würde immer vom Adapter gefeuert.
Bin gespannt, was @maerzpa sagt, das from: wäre schon viel cooler
@fastfoot Könntest du mir noch bei einer weiteren Frage helfen:
Ich möchte alle Statuse auf einen Blick als Popup (answercallbackquery) sehen. Doch leider gehen max 8 Zeilen als Ausgabe. Wenn ich also nur 8 Abfragen habe--> dann geht es. Sobald es nur eine mehr ist--> passiert nichts.else if (befehl === "%Status_Licht") {
sendTo('telegram', {
user: benutzer,
answerCallbackQuery: {
text: "Status_Licht:" +
'\n++++++++++++++++++++++++++++++++++++++++++++'+
'\nLicht Wohnzimmer: ' + getState('modbus.0.coils.562_WZ_Licht').val +
'\nLicht Wohnzimmer LED: ' + getState('modbus.0.coils.566_WZ_LichtLED').val +
'\nLicht Wohnzimmer Essbereich1: ' + getState('modbus.0.coils.561_WZ_LichtEssb').val +
'\nLicht Wohnzimmer Essbereich2: ' + getState('modbus.0.coils.563_WZ_LichtEssbZus').val +
'\nLicht HWR: ' + getState('modbus.0.coils.572_HWR_Licht').val +
'\nLicht WC: ' + getState('modbus.0.coils.573_WC_Licht').val +
'\nLicht WC Spiegel: ' + getState('modbus.0.coils.534_WC_LichtSpiegel_').val +
'\nLicht Kueche: ' + getState('modbus.0.coils.568_Ku_Licht').val +
'\nLicht Kueche Arbeitsplatte: ' + getState('modbus.0.coils.569_Ku_Aplatte1').val +
'\nLicht Flur EG: ' + getState('modbus.0.coils.574_FEG_Licht2').val +
'\nLicht Abstellraum: ' + getState('modbus.0.coils.571_ARaum_Licht').val +
'\nLicht Flur OG: ' + getState('modbus.0.coils.579_FOG_Licht').val +
'\nLicht Badezimmer: ' + getState('modbus.0.coils.581_BAD_Licht').val +
'\nLicht Schlafzimmer: ' + getState('modbus.0.coils.576_SZ_Licht').val +
'\nLicht Kinderzimmer1: ' + getState('modbus.0.coils.577_KZ1_Licht').val +
'\nLicht Kinderzimmer2: ' + getState('modbus.0.coils.578_KZ2_Licht').val +
'\nLicht Dachgeschoss: ' + getState('modbus.0.coils.584_DG_Licht1u2').val +
'\nLicht Terrasse: ' + getState('modbus.0.coils.589_Ter_Licht').val +
'\nLicht Garage1: ' + getState('modbus.0.coils.558_Gar_Licht1_').val +
'\nLicht Garage2: ' + getState('modbus.0.coils.559_Gar_Licht2_').val +
'\nLicht Gartenhaus: ' + getState('modbus.0.coils.586_GartenhLicht').val,
showAlert: true
}
});
}
}); -
@fastfoot Könntest du mir noch bei einer weiteren Frage helfen:
Ich möchte alle Statuse auf einen Blick als Popup (answercallbackquery) sehen. Doch leider gehen max 8 Zeilen als Ausgabe. Wenn ich also nur 8 Abfragen habe--> dann geht es. Sobald es nur eine mehr ist--> passiert nichts.else if (befehl === "%Status_Licht") {
sendTo('telegram', {
user: benutzer,
answerCallbackQuery: {
text: "Status_Licht:" +
'\n++++++++++++++++++++++++++++++++++++++++++++'+
'\nLicht Wohnzimmer: ' + getState('modbus.0.coils.562_WZ_Licht').val +
'\nLicht Wohnzimmer LED: ' + getState('modbus.0.coils.566_WZ_LichtLED').val +
'\nLicht Wohnzimmer Essbereich1: ' + getState('modbus.0.coils.561_WZ_LichtEssb').val +
'\nLicht Wohnzimmer Essbereich2: ' + getState('modbus.0.coils.563_WZ_LichtEssbZus').val +
'\nLicht HWR: ' + getState('modbus.0.coils.572_HWR_Licht').val +
'\nLicht WC: ' + getState('modbus.0.coils.573_WC_Licht').val +
'\nLicht WC Spiegel: ' + getState('modbus.0.coils.534_WC_LichtSpiegel_').val +
'\nLicht Kueche: ' + getState('modbus.0.coils.568_Ku_Licht').val +
'\nLicht Kueche Arbeitsplatte: ' + getState('modbus.0.coils.569_Ku_Aplatte1').val +
'\nLicht Flur EG: ' + getState('modbus.0.coils.574_FEG_Licht2').val +
'\nLicht Abstellraum: ' + getState('modbus.0.coils.571_ARaum_Licht').val +
'\nLicht Flur OG: ' + getState('modbus.0.coils.579_FOG_Licht').val +
'\nLicht Badezimmer: ' + getState('modbus.0.coils.581_BAD_Licht').val +
'\nLicht Schlafzimmer: ' + getState('modbus.0.coils.576_SZ_Licht').val +
'\nLicht Kinderzimmer1: ' + getState('modbus.0.coils.577_KZ1_Licht').val +
'\nLicht Kinderzimmer2: ' + getState('modbus.0.coils.578_KZ2_Licht').val +
'\nLicht Dachgeschoss: ' + getState('modbus.0.coils.584_DG_Licht1u2').val +
'\nLicht Terrasse: ' + getState('modbus.0.coils.589_Ter_Licht').val +
'\nLicht Garage1: ' + getState('modbus.0.coils.558_Gar_Licht1_').val +
'\nLicht Garage2: ' + getState('modbus.0.coils.559_Gar_Licht2_').val +
'\nLicht Gartenhaus: ' + getState('modbus.0.coils.586_GartenhLicht').val,
showAlert: true
}
});
}
}); -
@maerzpa der Text ist schlicht zu lang. Du kannst es so probieren:
sendTo('telegram', { user: benutzer, text: "Status_Licht:" + '\n++++++++++++++++++++++++++++++++++++++++++++'+ '\nLicht Wohnzimmer: ' + getState('modbus.0.coils.562_WZ_Licht').val + '\nLicht Wohnzimmer LED: ' + getState('modbus.0.coils.566_WZ_LichtLED').val + '\nLicht Wohnzimmer Essbereich1: ' + getState('modbus.0.coils.561_WZ_LichtEssb').val + '\nLicht Wohnzimmer Essbereich2: ' + getState('modbus.0.coils.563_WZ_LichtEssbZus').val + '\nLicht HWR: ' + getState('modbus.0.coils.572_HWR_Licht').val + '\nLicht WC: ' + getState('modbus.0.coils.573_WC_Licht').val + '\nLicht WC Spiegel: ' + getState('modbus.0.coils.534_WC_LichtSpiegel_').val + '\nLicht Kueche: ' + getState('modbus.0.coils.568_Ku_Licht').val + '\nLicht Kueche Arbeitsplatte: ' + getState('modbus.0.coils.569_Ku_Aplatte1').val + '\nLicht Flur EG: ' + getState('modbus.0.coils.574_FEG_Licht2').val + '\nLicht Abstellraum: ' + getState('modbus.0.coils.571_ARaum_Licht').val + '\nLicht Flur OG: ' + getState('modbus.0.coils.579_FOG_Licht').val + '\nLicht Badezimmer: ' + getState('modbus.0.coils.581_BAD_Licht').val + '\nLicht Schlafzimmer: ' + getState('modbus.0.coils.576_SZ_Licht').val + '\nLicht Kinderzimmer1: ' + getState('modbus.0.coils.577_KZ1_Licht').val + '\nLicht Kinderzimmer2: ' + getState('modbus.0.coils.578_KZ2_Licht').val + '\nLicht Dachgeschoss: ' + getState('modbus.0.coils.584_DG_Licht1u2').val + '\nLicht Terrasse: ' + getState('modbus.0.coils.589_Ter_Licht').val + '\nLicht Garage1: ' + getState('modbus.0.coils.558_Gar_Licht1_').val + '\nLicht Garage2: ' + getState('modbus.0.coils.559_Gar_Licht2_').val + '\nLicht Gartenhaus: ' + getState('modbus.0.coils.586_GartenhLicht').val, parse_mode: "HTML" }); -
@maerzpa der Text ist schlicht zu lang. Du kannst es so probieren:
sendTo('telegram', { user: benutzer, text: "Status_Licht:" + '\n++++++++++++++++++++++++++++++++++++++++++++'+ '\nLicht Wohnzimmer: ' + getState('modbus.0.coils.562_WZ_Licht').val + '\nLicht Wohnzimmer LED: ' + getState('modbus.0.coils.566_WZ_LichtLED').val + '\nLicht Wohnzimmer Essbereich1: ' + getState('modbus.0.coils.561_WZ_LichtEssb').val + '\nLicht Wohnzimmer Essbereich2: ' + getState('modbus.0.coils.563_WZ_LichtEssbZus').val + '\nLicht HWR: ' + getState('modbus.0.coils.572_HWR_Licht').val + '\nLicht WC: ' + getState('modbus.0.coils.573_WC_Licht').val + '\nLicht WC Spiegel: ' + getState('modbus.0.coils.534_WC_LichtSpiegel_').val + '\nLicht Kueche: ' + getState('modbus.0.coils.568_Ku_Licht').val + '\nLicht Kueche Arbeitsplatte: ' + getState('modbus.0.coils.569_Ku_Aplatte1').val + '\nLicht Flur EG: ' + getState('modbus.0.coils.574_FEG_Licht2').val + '\nLicht Abstellraum: ' + getState('modbus.0.coils.571_ARaum_Licht').val + '\nLicht Flur OG: ' + getState('modbus.0.coils.579_FOG_Licht').val + '\nLicht Badezimmer: ' + getState('modbus.0.coils.581_BAD_Licht').val + '\nLicht Schlafzimmer: ' + getState('modbus.0.coils.576_SZ_Licht').val + '\nLicht Kinderzimmer1: ' + getState('modbus.0.coils.577_KZ1_Licht').val + '\nLicht Kinderzimmer2: ' + getState('modbus.0.coils.578_KZ2_Licht').val + '\nLicht Dachgeschoss: ' + getState('modbus.0.coils.584_DG_Licht1u2').val + '\nLicht Terrasse: ' + getState('modbus.0.coils.589_Ter_Licht').val + '\nLicht Garage1: ' + getState('modbus.0.coils.558_Gar_Licht1_').val + '\nLicht Garage2: ' + getState('modbus.0.coils.559_Gar_Licht2_').val + '\nLicht Gartenhaus: ' + getState('modbus.0.coils.586_GartenhLicht').val, parse_mode: "HTML" }); -
@maerzpa der Text ist schlicht zu lang. Du kannst es so probieren:
sendTo('telegram', { user: benutzer, text: "Status_Licht:" + '\n++++++++++++++++++++++++++++++++++++++++++++'+ '\nLicht Wohnzimmer: ' + getState('modbus.0.coils.562_WZ_Licht').val + '\nLicht Wohnzimmer LED: ' + getState('modbus.0.coils.566_WZ_LichtLED').val + '\nLicht Wohnzimmer Essbereich1: ' + getState('modbus.0.coils.561_WZ_LichtEssb').val + '\nLicht Wohnzimmer Essbereich2: ' + getState('modbus.0.coils.563_WZ_LichtEssbZus').val + '\nLicht HWR: ' + getState('modbus.0.coils.572_HWR_Licht').val + '\nLicht WC: ' + getState('modbus.0.coils.573_WC_Licht').val + '\nLicht WC Spiegel: ' + getState('modbus.0.coils.534_WC_LichtSpiegel_').val + '\nLicht Kueche: ' + getState('modbus.0.coils.568_Ku_Licht').val + '\nLicht Kueche Arbeitsplatte: ' + getState('modbus.0.coils.569_Ku_Aplatte1').val + '\nLicht Flur EG: ' + getState('modbus.0.coils.574_FEG_Licht2').val + '\nLicht Abstellraum: ' + getState('modbus.0.coils.571_ARaum_Licht').val + '\nLicht Flur OG: ' + getState('modbus.0.coils.579_FOG_Licht').val + '\nLicht Badezimmer: ' + getState('modbus.0.coils.581_BAD_Licht').val + '\nLicht Schlafzimmer: ' + getState('modbus.0.coils.576_SZ_Licht').val + '\nLicht Kinderzimmer1: ' + getState('modbus.0.coils.577_KZ1_Licht').val + '\nLicht Kinderzimmer2: ' + getState('modbus.0.coils.578_KZ2_Licht').val + '\nLicht Dachgeschoss: ' + getState('modbus.0.coils.584_DG_Licht1u2').val + '\nLicht Terrasse: ' + getState('modbus.0.coils.589_Ter_Licht').val + '\nLicht Garage1: ' + getState('modbus.0.coils.558_Gar_Licht1_').val + '\nLicht Garage2: ' + getState('modbus.0.coils.559_Gar_Licht2_').val + '\nLicht Gartenhaus: ' + getState('modbus.0.coils.586_GartenhLicht').val, parse_mode: "HTML" });@fastfoot Hallo, noch eine Frage:
Ich möchte den Status einer IST-Temperatur durch 10 teilen und raus geben. Leider wird diese mit jedem weiteren Abruf von Telegram durch 10 geteilt.
'\nEingang Temperatur: ' + (getState('modbus.0.inputRegisters.11_Eingang_Temp_').val /=10) + ' °C ' +
Wiesst du wie ich das lösen könnte?
-
@fastfoot Hallo, noch eine Frage:
Ich möchte den Status einer IST-Temperatur durch 10 teilen und raus geben. Leider wird diese mit jedem weiteren Abruf von Telegram durch 10 geteilt.
'\nEingang Temperatur: ' + (getState('modbus.0.inputRegisters.11_Eingang_Temp_').val /=10) + ' °C ' +
Wiesst du wie ich das lösen könnte?
-
@maerzpa Das Gleichheitszeichen(/=) hat da nichts zu suchen. Ehrlich gesagt weiss ich aber nicht weshalb es zu diesem Effekt kommt, da der Wert ja immer wieder neu geholt wird und keine Variable ist
-
@maerzpa Das Gleichheitszeichen(/=) hat da nichts zu suchen. Ehrlich gesagt weiss ich aber nicht weshalb es zu diesem Effekt kommt, da der Wert ja immer wieder neu geholt wird und keine Variable ist
-
@fastfoot Ich hätte noch eine Frage (Sorry).
Mit der folgenden Abfrage schaffe ich es das Fenster zu überwachen.
Das Problem: Ich bekomme eine Durchsage obwohl ich das Fenster nur kurz geöffnet und wieder geschlossen habe. Der Timer wurde also nicht zurückgesetzt + gestoppt. -
@fastfoot Ich hätte noch eine Frage (Sorry).
Mit der folgenden Abfrage schaffe ich es das Fenster zu überwachen.
Das Problem: Ich bekomme eine Durchsage obwohl ich das Fenster nur kurz geöffnet und wieder geschlossen habe. Der Timer wurde also nicht zurückgesetzt + gestoppt. -
Hallo, Sorry habe es nicht mitbekommen.
var timeon, timeon2;
on({id: "modbus.0.discreteInputs.0_WZ_Kon1", change: 'lt'}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeon2 = setTimeout(function () {
setStateDelayed('modbus.0.coils.12389_M031N_fhem', true, false, parseInt(0, 10), false);
setStateDelayed('modbus.0.coils.12389_M031N_fhem', false, false, parseInt(10000, 10), false);
setState("sayit.0.tts.text", "de;" + 'Das Fenster im Wohnzimmer ist offen. ');
}, 30000);
});
on({id: "modbus.0.discreteInputs.1_WZ_Kon2", change: 'lt'}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeon = setTimeout(function () {
setStateDelayed('modbus.0.coils.12389_M031N_fhem', true, false, parseInt(0, 10), false);
setStateDelayed('modbus.0.coils.12389_M031N_fhem', false, false, parseInt(10000, 10), false);
setState("sayit.0.tts.text", "de;" + 'Die Tuer im Wohnzimmer ist offen. ');
}, 30000);
}); -
Hallo, Sorry habe es nicht mitbekommen.
var timeon, timeon2;
on({id: "modbus.0.discreteInputs.0_WZ_Kon1", change: 'lt'}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeon2 = setTimeout(function () {
setStateDelayed('modbus.0.coils.12389_M031N_fhem', true, false, parseInt(0, 10), false);
setStateDelayed('modbus.0.coils.12389_M031N_fhem', false, false, parseInt(10000, 10), false);
setState("sayit.0.tts.text", "de;" + 'Das Fenster im Wohnzimmer ist offen. ');
}, 30000);
});
on({id: "modbus.0.discreteInputs.1_WZ_Kon2", change: 'lt'}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeon = setTimeout(function () {
setStateDelayed('modbus.0.coils.12389_M031N_fhem', true, false, parseInt(0, 10), false);
setStateDelayed('modbus.0.coils.12389_M031N_fhem', false, false, parseInt(10000, 10), false);
setState("sayit.0.tts.text", "de;" + 'Die Tuer im Wohnzimmer ist offen. ');
}, 30000);
}); -
@maerzpa ist das von einem Blockly?
der Timeout wird nicht zurückgesetzt, deshalb immer die Ansagen -
@maerzpa sagte in js- Abfrage von Status an Ausgängen per Telegram:
@fastfoot ja von einem Blockly. Ich bin Anfänger was Javascript angeht.
ich würde empfehlen, hierfür einen neuen Thread aufzumachen. Davon abgesehen hatte ich gefragt weil ich nicht sicher war ob du die Antwort in Blockly oder JS willst. Ich würde dir raten noch etwas im Blockly zu bleiben, dann kannst du leicht sehen wie sich der code ändert.
-
@maerzpa sagte in js- Abfrage von Status an Ausgängen per Telegram:
@fastfoot ja von einem Blockly. Ich bin Anfänger was Javascript angeht.
ich würde empfehlen, hierfür einen neuen Thread aufzumachen. Davon abgesehen hatte ich gefragt weil ich nicht sicher war ob du die Antwort in Blockly oder JS willst. Ich würde dir raten noch etwas im Blockly zu bleiben, dann kannst du leicht sehen wie sich der code ändert.
