NEWS
Pushover + Command = Telegram
-
Schön, dass es geklappt hat!
Bei mir kommt auch nur die Antwort zurück, die ich erfrage, also ohne zusätzliche Bestätigungen.
Tipp:
Setzte ein / vor den Befehlen in den Antworten, dann sind sie direkt in Telegram anklickbar und man muss sie nicht per Hand eintippen. Bei deinem letzten Screenshot steht nur "ug" statt "/ug".
In die Antworten setze ich immer auch unten eine Liste der möglichen Kommandos, so kann man immer per einfachen Klick abfragen. `
Danke.War nur ein erster Test. Das mache ich noch schön. [emoji6]
Gruß
-
Ich habe es aber selber gefunden. :oops: Ich hatte im Javascript Adapter den Haken bei Debug drin. Damit wird das SetState nicht ausgeführt. Wenn man das rausnimmt, kommt kein "Ich verstehe nicht…" mehr, sondern das "ok". Mit "setState("javascript.0.textProcessor", ' ', true);" (also einfach auf einleerzeichen setzen) kann man sogar das unterdrücken, so das nur die gewünschte Antwort zurückkommt (dtp, solltest du auch bei dir ausprobieren) `
Danke für den Tipp. Das werde ich mir heute Abend mal anschauen.
EDIT: Bei mir war leider kein Haken für das Debuggen gesetzt. Aber ich hatte ja auch nur "Probleme" mit setState in Verbindung mit dem Keyboard. Ansonsten läuft's eigentlich.
Gruß,
Thorsten
-
Hallo,
ich bin nach wie vor begeistert von den Tasten. Damit macht es richtig Spaß.
Skript:
! ````
! var chatname = '[GEHEIM]'; // geheim
var idTelegramRequest = "telegram.1.communicate.request";
! function beantworteAnfrage(befehl,taste1,taste2,taste3,taste4) {
sendTo('telegram.1', {
text: befehl,
reply_markup: {
keyboard: [[taste1,taste2],[taste3,taste4]],
resize_keyboard: true,
one_time_keyboard: true
}
});
}
! on(idTelegramRequest, function (obj) {
// ++++++++++ Fenster
if (obj.state.val == chatname + "Fenster" || obj.state.val == chatname + "/fenster") {
var idStatusFenster = "javascript.0.zählen_Fenster.textFensteraufAnsage"/zählen_Fenster.textFensteraufAnsage/;
var fenster_status = getState(idStatusFenster).val;
beantworteAnfrage(fenster_status.replace(/<.*br>/g, '\n'),'Licht','Webcam','Fenster','TV');
}// ++++++++++++++ TV var idTV = "hm-rpc.0.HEQ0150124.1.STATE"/*TV Wohnzimmer.STATE*/; var tv_status = (getState(idTV).val) ? 'Der Fernseher ist eingeschaltet' : 'Der Fernseher ist ausgeschaltet'; if (obj.state.val == chatname + "TV" || obj.state.val == chatname + "/tv") { beantworteAnfrage(tv_status,'TV ein','TV aus','Status',''); } if (obj.state.val == chatname + "TVeinschalten" || obj.state.val == chatname + "/tveinschalten" || obj.state.val == chatname + "TV ein") { setState(idTV, true); beantworteAnfrage('Fernseher wurde eingeschaltet.','Licht','Webcam','Fenster','TV aus'); } if (obj.state.val == chatname + "TVausschalten" || obj.state.val == chatname + "/tvausschalten" || obj.state.val == chatname + "TV aus") { setState(idTV, false); beantworteAnfrage('Fernseher wurde ausgeschaltet.','Licht','Webcam','Fenster','TV ein'); } // /licht var idLichtAus = "scene.0.licht_alles_aus"/*0.licht_alles_aus*/, idLichtAnzahl = "javascript.0.zählen_Lichter.anzahlLichterAn"/*zählen_Lichter.anzahlLichterAn*/, idLichtStatus = "javascript.0.zählen_Lichter.textLichterAn"/*zählen_Lichter.textLichterAn*/; var lichtanbefehle = 'Alle Lichter in der Wohnung ausgeschaltet\n\n' + 'Flur Licht ein? /flurlichtein\n' + 'Küche Licht ein? /kuechelichtein\n'; // to be continued var lichtausbefehle = 'Folgende Lichter in der Wohnung eingeschaltet:\n\n' + getState(idLichtStatus).val + '\n\n' + 'Alle Lichter aus? /allelichteraus\n' + ( (getState("scene.0.licht_flur_alles_aus"/*0.licht_flur_alles_aus*/).val) ? 'Flur Licht ein? /flurlichtein\n' : 'Flur Licht aus? /flurlichtaus\n' ) + ( (getState("scene.0.licht_kueche_alles_aus"/*0.licht_kueche_alles_aus*/).val) ? 'Küche Licht ein? /kuechelichtein\n' : 'Küche Licht aus? /kuechelichtaus\n' ); //tbc var licht_status = (getState(idLichtAnzahl).val === 0) ? lichtanbefehle : lichtausbefehle; if (obj.state.val == chatname + "Licht" || obj.state.val == chatname + "Lichter" || obj.state.val == chatname + "/licht" || obj.state.val == chatname + "/lichter") { beantworteAnfrage(licht_status.replace(/<.*br>/g, '\n'),'Licht','alle Lichter aus','Status',''); } // Alle Lichter if (obj.state.val == chatname + "allelichteraus" || obj.state.val == chatname + "/allelichteraus" || obj.state.val == chatname + "alle Lichter aus") { setState("scene.0.licht_alles_aus"/*0.licht_alles_aus*/, true); // Alle Lichter aus beantworteAnfrage('Alle Lichter in der Wohnung wurden ausgeschaltet.','Licht','Webcam','Fenster','TV'); } // Flur if (obj.state.val == chatname + "flurlichtein" || obj.state.val == chatname + "/flurlichtein") { setState("hm-rpc.0.FEQ0069673.1.LEVEL"/*Lampe Flur Regal.LEVEL*/, 100); // Flur Lampe ein sendTo('telegram.1', "Flur Licht wurde eingeschaltet."); } if (obj.state.val == chatname + "flurlichtaus" || obj.state.val == chatname + "/flurlichtaus") { setState("hm-rpc.0.FEQ0069673.1.LEVEL"/*Lampe Flur Regal.LEVEL*/, 0); // Flur Lampe aus sendTo('telegram.1', "Flur Licht wurde ausgeschaltet."); } // Küche if (obj.state.val == chatname + "kuechelichtein" || obj.state.val == chatname + "/kuechelichtein") { setState("hm-rpc.0.JEQ0734088.1.LEVEL"/*Licht Küche Kochzeile.LEVEL*/, 100); // Küche Kochzeile ein setState("hm-rpc.0.LEQ0269105.1.LEVEL"/*Licht Küche Eckschrank.LEVEL*/, 100); // Küche Eckschrank ein sendTo('telegram.1', "Das Licht in der Küche wurde eingeschaltet."); } if (obj.state.val == chatname + "kuechelichtaus" || obj.state.val == chatname + "/kuechelichtaus") { setState("scene.0.licht_kueche_alles_aus"/*0.licht_kueche_alles_aus*/, true); // Küche alles aus sendTo('telegram.1', "In der Küche wurde alles ausgeschaltet."); } // ++++++++++++ Webcam var idScriptWebcam = "javascript.2.scriptEnabled.Test.TextKommandos.Bild_speichern_telegram_senden"/*scriptEnabled.Test.TextKommandos.Bild_speichern_telegram_senden*/; if (obj.state.val == chatname + "Kamera" || obj.state.val == chatname + "Webcam"|| obj.state.val == chatname + "/webcam") { beantworteAnfrage('Es wird ein Foto gesendet...','Licht','Webcam','Fenster','TV'); setState(idScriptWebcam, true); // Senden des Fotos starten } // ++++++++++ Status var zustand = ['aus','in Betrieb','fertig']; var idWama = "javascript.0.Status.Waschmaschine"/*Status Waschmaschine*/, idSpuema = "javascript.0.Status.Spuelmaschine"/*Status Spuelmaschine*/; var status = ((getState(idWama).val > 0) ? 'Waschmaschine ist ' + zustand[getState(idWama).val] : 'Waschmaschine ist aus.') + '\n' + ((getState(idSpuema).val > 0) ? 'Spülmaschine ist ' + zustand[getState(idSpuema).val] : 'Spülmaschine ist aus.') + '\n' + 'Aussen: ' + getState("hm-rpc.0.HEQ0237599.1.TEMPERATURE"/*Temperatur Feuchte Sensoren Balkon.TEMPERATURE*/).val + '°C | ' + getState("hm-rpc.0.HEQ0237599.1.HUMIDITY"/*Temperatur Feuchte Sensoren Balkon.HUMIDITY*/).val + '%'; // weitere Ausgabe von Daten geplant // Anwesenheit // 1\. Person Status // 2\. Person Status // Hunde Status // Alarmanlage /*log(getState(idWama).val); log(getState(idSpuema).val); log(status); */ if (obj.state.val == chatname + "Status" || obj.state.val == chatname + "/status") { beantworteAnfrage(status,'Licht','Webcam','Fenster','TV'); } // folgende Zeile nicht löschen! setState(idTelegramRequest,"leer");
});
! ````
Gruß
Pix
-
Hi Pix,
sehr schöne Lösung.
Verwendest Du parallel auch noch text2command für Telegram? Falls ja, kannst Du entweder die Antwort über "text" oder "setState" unterdrücken, um Mehrfachantworten zu vermeiden?
Gruß,
Thorsten
-
Hallo Thorsten,
ich verwende für diesen Chat eine zweite Instanz von telegram, die nicht mit text2command verbunden ist.
Gruß
Pix
-
Servus, ich hab mich jetzt auch mit dem Push + command = Telegram beschäftigt und mir die Script angepasst, bekomme aber zurzeit diese Fehler Meldung im log:
der textProcessor erkennt in Objekte was ich in Telegram als Anfrage schicke?!
Ach du scheiße, danke für den Hinweis!!!!!!
-
Kann zum Problem nichts sagen, aber deine private iCal-URL würde ich rauslöschen :lol:
-
Mal ne kurze Frage in eine etwas andere Richtung. Bekomme hoffentlich bald meine Apple Watch Series 2. Kann man da auch mit dem Keyboard der Telelgram-App arbeiten, oder geht das wegen des kleinen Screens nicht?
Gruß,
Thorsten
-
Servus,
also nach stundenlangen probieren und selber eine Lösung zu finden muss ich mich doch an euch wenden weil ich es einfach nicht hin bekomme, wie kann ich das keyboard in mein script integrieren?
createState("textProcessor", '', function () { on({id: "javascript.0.textProcessor", ack: false, change: 'any'}, function (obj) { var task = JSON.parse(obj.state.val); log (task.command); if (task.command === "System" || "/System") { var media_pi_memory = "rpi.0.memory.memory_free"/*rpi.0.memory.memory_free*/; var media_pi_temp = "rpi.0.temperature.soc_temp"/*rpi.0.temperature.soc_temp*/; var media_pi_ping = "ping.0.RaspberryPi.192_168_178_23"/*RaspberryPi*/; var magic_mirror_memory = "rpi.1.memory.memory_free"/*rpi.1.memory.memory_free*/; var magic_mirror_temp = "rpi.1.temperature.soc_temp"/*rpi.1.temperature.soc_temp*/; var magic_mirror_ping = "ping.0.RaspberryPi.192_168_178_24"/*Magic-Mirror*/; var radio_garage_memory = "rpi.2.memory.memory_free"/*rpi.2.memory.memory_free*/; var radio_garage_temp = "rpi.2.temperature.soc_temp"/*rpi.2.temperature.soc_temp*/; var radio_garage_ping = "ping.0.RaspberryPi.192_168_178_32"/*Radio-Garage*/; var mediapimemory = getState(media_pi_memory).val; var mediapitemp = getState(media_pi_temp).val; var mediapiping = getState(media_pi_ping).val; var magicmirrormemory = getState(magic_mirror_memory).val; var magicmirrortemp = getState(magic_mirror_temp).val; var magicmirrorping = getState(magic_mirror_ping).val; var radiogaragememory = getState(radio_garage_memory).val; var radiogaragetemp = getState(radio_garage_temp).val; var radiogarageping = getState(radio_garage_ping).val; if(mediapiping) mediapiping = "Online"; else mediapiping = "Offline"; if(magicmirrorping) magicmirrorping = "Online"; else magicmirrorping = "Offline"; if(radiogarageping) radiogarageping = "Online"; else radiogarageping = "Offline"; sendTo('telegram.0', '\n' + 'Media-Pi: ' + ' Memory ' + mediapimemory + ' MB / ' + ' Temperatur ' + mediapitemp + ' °C / ' + mediapiping + '\n' + 'Magic-Mirror: ' + ' Memory ' + magicmirrormemory + ' MB / ' + ' Temperatur ' + magicmirrortemp + ' °C / ' + magicmirrorping + '\n' + 'Radio-Garage: ' + ' Memory ' + radiogaragememory + ' MB / ' + ' Temperatur ' + radiogaragetemp + ' °C / ' + radiogarageping ); setState("javascript.0.textProcessor", ' ', true); } else { // let it process with predefined rules setState("javascript.0.textProcessor", '', true); } }); });
beziehungsweise wie kann ich es "sicher" machen? (nur meine chatid)
kann mir jemand helfen???
danke euch!
-
@Thorsten alias dtp:
Du hast auf Seite 3 folgendes geschrieben:
` > …
Ich nutze Telegram auf meiner CCU2, um mir in Abhängigkeit von einer definierten Priorität unterschiedliche Push-Nachrichten zusenden zu lassen. Dafür habe ich drei verschiedene Bots ("HomeMatic Info", "HomeMatic Warnung" und "HomeMatic Alarm") eingerichtet und in der Gruppe "HomeMatic" zusammengefasst.
... `
Nun zu meiner Frage: Wie hast Du den diese 3 Bots zu einer Gruppe hinzufügen können. Irgendwie bekomme ich das nicht hin.
Wenn ich bei Telegram eine Gruppe erstellen möchte, dann kann ich nur von meinen Kontakten jemanden auswählen und eine Gruppe erstellen.
Anschließend ist es möglich die Bots der erstellten Gruppe hinzuzufügen, aber ich möchte nur eine Gruppe mit den Bots.
Eine Gruppe nur mit Bots kann ich aber irgendwie nicht erstellen.
Ich möchte noch erwähnen, dass ich ein Android System einsetze.
Für eine kurze Antwort wäre ich dankbar.
Ich wünsche dann noch einen schönen Samstag Abend und verbleibe mit
Freundlichen Grüßen
nobob
-
Halloi fischi87,
@fischi87:Servus,
also nach stundenlangen probieren und selber eine Lösung zu finden muss ich mich doch an euch wenden weil ich es einfach nicht hin bekomme, wie kann ich das keyboard in mein script integrieren? `
hast du http://forum.iobroker.net/viewtopic.php?f=23&t=2285&start=100#p35292 mal in den Spoiler gesehen? Da ist die Definition des Keyboards innerhalb von sendTo verwendet worden. Das fehlt bei dir ja ganz.Gruß
Pix
-
Nun zu meiner Frage: Wie hast Du den diese 3 Bots zu einer Gruppe hinzufügen können. Irgendwie bekomme ich das nicht hin. `
Du warst schon auf dem richtigen Weg. In der Tat ist es bisher nicht möglich, eine nur aus Bots bestehende Gruppe in Telegram anzulegen. Daher legst Du zunächst eine Gruppe aus einem realen Account und einem Bot an, fügst dann die anderen Bots hinzu und löscht den realen Account abschließend wieder aus der Gruppe heraus. That's it.
Gruß,
Thorsten
-
@pix:Halloi fischi87,
@fischi87:Servus,
also nach stundenlangen probieren und selber eine Lösung zu finden muss ich mich doch an euch wenden weil ich es einfach nicht hin bekomme, wie kann ich das keyboard in mein script integrieren? `
hast du http://forum.iobroker.net/viewtopic.php?f=23&t=2285&start=100#p35292 mal in den Spoiler gesehen? Da ist die Definition des Keyboards innerhalb von sendTo verwendet worden. Das fehlt bei dir ja ganz.Gruß
Pix `
danke für deine Antwort aber ich habe es nun hin bekommen…war etwas blind
trotzdem danke für Antwort.
bin echt begeistert was man alles anstellen kann, ist ja Wahnsinn
-
>
> nobob hat geschrieben:Nun zu meiner Frage: Wie hast Du den diese 3 Bots zu einer Gruppe hinzufügen können. Irgendwie bekomme ich das nicht hin. `
Du warst schon auf dem richtigen Weg. In der Tat ist es bisher nicht möglich, eine nur aus Bots bestehende Gruppe in Telegram anzulegen. Daher legst Du zunächst eine Gruppe aus einem realen Account und einem Bot an, fügst dann die anderen Bots hinzu und löscht den realen Account abschließend wieder aus der Gruppe heraus. That's it.
Gruß,
Thorsten `
Hallo Thorsten,
vielen Dank für Deine Antwort. Hat funktioniert ;).
Gruß nobob
-
Hallo zusammen,
ich spiele zur Zeit auch sehr intensiv mit Telegramm.
Kann mir jemand mal den Hintergrund der Chat ID verraten ?
Wofür wird diese benötigt? Was kann ich damit machen ?
Gruß
Michael
-
hallo,
hat hier jemand ein Script am laufen für Fenster offen , Türen offen oder Licht eingeschaltet?
Und würde es auch hier teilen?
gruss
-
Hallo, ich habe folgendes Script laufen.
! // Trigger
! var idSayVar = "hm-rega.0.7913"/SV_Info/;
! // Quellen
! var idTuereBalkon = "hm-rpc.0.MEQ1139487.1.STATE"/G_Balkontuere:1.STATE/;
! var idFensterKueche1 = "hm-rpc.0.MEQ1596310.1.STATE"/G_Kueche 1:1.STATE/;
! var idFensterKueche2 = "hm-rpc.0.MEQ1595960.1.STATE"/G_Kueche 2:1.STATE/;
! var idFensterSchlaf1 = "hm-rpc.0.MEQ1596000.1.STATE"/G_Schlafzimmer 1:1.STATE/;
! var idFensterSchlaf2 = "hm-rpc.0.MEQ1596291.1.STATE"/G_Schlafzimmer 2:1.STATE/;
! var idFensterBad = "hm-rpc.0.MEQ1137510.1.STATE"/G_Badezimmer:1.STATE/;
! var idFensterGReich = "hm-rpc.0.MEQ1596053.1.STATE"/G_Guenthers Reich:1.STATE/;
! var idTuereEingang = "hm-rpc.0.MEQ1596051.1.STATE"/G_Eingang:1.STATE/;
! //Definitionen Ausgabe
! var InfoTextBalkon = "";
! var InfoTextKueche = "";
! var InfoTextSchlaf = "";
! var InfoTextBad = "";
! var InfoTextGReich = "";
! var InfoTextEingang = "";
! function ermitteleAnsagedatum () {
! //Wochentag ermitteln
! var d = new Date ();
! var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
! var wochentag = w[d.getDay()];
! //Tagesdatum ermitteln
! var tag = d.getDate();
! //Monat ermitteln
! var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
! var monat = month[d.getMonth()];
! //Jahr ermitteln
! var jahr = d.getFullYear();
! //Stunde ermitteln
! var stunde = d.getHours();
! //Minute ermitteln
! var minute = d.getMinutes();
! return { // zurückgeben
! 'Jahr' : jahr,
! 'Monat' : monat,
! 'Tag' : tag,
! 'Wochentag' : wochentag,
! 'Stunde' : stunde,
! 'Minute' : minute
! };
! }
! // ###################################
! // Trigger für Ansage
! on(idSayVar, function (data) {
! setState(idSayVar , false);
! if (getState(idTuereBalkon).val === true) {
! InfoTextBalkon = "Balkontüre: geöffnet"; }
! else if (getState(idTuereBalkon).val === false) {
! InfoTextBalkon = "Balkontüre: geschlossen"; }
! if (getState(idFensterKueche1).val === true || getState(idFensterKueche2).val === true) {
! InfoTextKueche = "Küchenfenster: geöffnet"; }
! else if (getState(idFensterKueche1).val === false || getState(idFensterKueche2).val === false) {
! InfoTextKueche = "Küchenfenster: geschlossen"; }
! if (getState(idFensterSchlaf1).val === true || getState(idFensterSchlaf2).val === true) {
! InfoTextSchlaf = "Schlafzimmerfenster: geöffnet"; }
! else if (getState(idFensterSchlaf1).val === false || getState(idFensterSchlaf2).val === false) {
! InfoTextSchlaf = "Schlafzimmerfenster: geschlossen"; }
! if (getState(idFensterBad).val === true) {
! InfoTextBad = "Badezimmerfenster: " + "geöffnet"; }
! else if (getState(idFensterBad).val === false) {
! InfoTextBad = "Badezimmerfenster: " + "geschlossen"; }
! if (getState(idFensterGReich).val === true) {
! InfoTextGReich = "Fenster Günthers Reich: " + "geöffnet"; }
! else if (getState(idFensterGReich).val === false) {
! InfoTextGReich = "Fenster Günthers Reich: " + "geschlossen"; }
! if (getState(idTuereEingang).val === true) {
! InfoTextEingang = "Eingangstüre: " + "geöffnet"; }
! else if (getState(idTuereEingang).val === false) {
! InfoTextEingang = "Eingangstüre " + "geschlossen"; }
! var ansagetext = "Heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr
! + ". Es ist " + ermitteleAnsagedatum().Stunde + " Uhr und " + ermitteleAnsagedatum().Minute + " Minuten. ";
! log('Trigger: ' + data.state.val);
! if (data.state.val === true) {
! sendTo('telegram', ansagetext + "\n" + InfoTextBalkon + "\n" + InfoTextKueche + "\n" + InfoTextSchlaf + "\n" + InfoTextBad
! + "\n" + InfoTextGReich + "\n" + InfoTextEingang);
! }
! });Immer wenn ich über Telegram die Info anfordere kommt sofort die Antwort (Datum und Uhrzeit + der Status der Fenster)
Lg
Günther
-
und mit welchem Begriff rufst du die Info ab?
Wie kann ich diese Zeile verstehen oder was muss ich da angeben?
var idSayVar = "hm-rega.0.7913"/SV_Info/;
-
Hallo,
SV_Info ist eine boolsche Systemvariable auf der CCU.
Wenn ich nun das Schlüsselwort "Info" von meinem Handy aus mittels Telegramm an IOBroker sende wird mit dem Text2Command Adapter diese Variable umgestellt. Das gepostete Script horcht auf Änderung dieser Variable und legt los.
Lg
Günther
-
ich habe mal versucht dein Script für mich anzupassen. Leider bekomme ich diese Meldung.
Was ist denn nicht ok?
1024_bildschirmfoto_2017-01-16_um_04.36.04.png