Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

Begonnen von viegener, 20 Juni 2015, 18:59:41

Vorheriges Thema - Nächstes Thema

Marlen

Was bedeutet das ...queryInline

attr teleBotT favorites /[Buttons]=set teleBotT queryInline..................

Esjay

Zitat von: Marlen am 27 Juni 2017, 12:08:21
Was bedeutet das ...queryInline

attr teleBotT favorites /[Buttons]=set teleBotT queryInline..................

Damit kannst du dir eigene Bedienfelder zuschicken lassen. Schau mal hier, unter dem Punkt 4.2  https://wiki.fhem.de/wiki/Modul_PostMe

Gruß



wthiess

Ich steuere damit das ganze Haus. Hier z.B. meine Temperaturüberwachung! Ich kann mir dann auf Knopfdruck die Temperaturen oder Plot senden lassen.

#Telegram Temperatur
define teleBotT TelegramBot
attr teleBotT allowUnknownContacts 0
attr teleBotT cmdFavorites /s
attr teleBotT cmdKeyword d
attr teleBotT cmdRestrictedPeer 999999999
attr teleBotT cmdReturnEmptyResult 0
attr teleBotT defaultPeer 999999999
attr teleBotT favorites /[Buttons]=set teleBotT queryInline @999999999 (T_W|T_WZ|T_L|T_VR) (T_Aus|T_Pool|T_SK) (Temperaturkurve:Temp) Temperaturen
attr teleBotT pollingTimeout 120
attr teleBotT room Telegram

define teleBotT1 notify teleBotT:queryData.*Temp set svgsend on

define teleBotT2 notify teleBotT:queryData.*T_VR set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Vorraum {( return sprintf("%.1f C°", ReadingsVal("DS18B20_C29AB2070000","temperature",0))  )}

define teleBotT3 notify teleBotT:queryData.*T_SK set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Sommerküche {( return sprintf("%.1f C°", ReadingsVal("Hideki_30_5","temperature",0))  )}

define teleBotT4 notify teleBotT:queryData.*T_Pool set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Pool {( return sprintf("%.1f C°", ReadingsVal("DS18B20_FF532A361604","temperature",0))  )}

define teleBotT5 notify teleBotT:queryData.*T_W set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Wolfgang {( return sprintf("%.1f C°", ReadingsVal("DS18B20_7F48B3070000","temperature",0))  )}

define teleBotT6 notify teleBotT:queryData.*T_WZ set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Wohnzimmer {( return sprintf("%.1f C°", ReadingsVal("Temp_WZ","Temperatur",0))  )}

define teleBotT7 notify teleBotT:queryData.*T_L set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Lina {( return sprintf("%.1f C°", ReadingsVal("DS18S20_7D7319030800","temperature",0))  )}

define teleBotT8 notify teleBotT:queryData.*T_Aus set teleBotT message @{( return sprintf("%.0f", ReadingsVal("teleBotxx1","state",0))  )} Temp Aussen {( return sprintf("%.1f C°", ReadingsVal("DS18B20_FFB804361603","temperature",0))  )}


lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Marlen

Hmm....naja, schön ist das schon!

Ich hab mir jetzt ein paar Buttons angelegt, die auch im Telegram erscheinen wenn ich "F" sende. Dann erscheint auch das Symbol in der Eingabezeile, wo ich umschalten kann zwischen Tastaur und den Buttons. ....aber irgendwann ist das auch plötzlich wieder weg! Warum???? Dann muss ich wieder ein F senden.

Kann man auch irgendwie die Ergebnis-Antwort ausschalten, die bei jeden Button betätigen kommt?

Ich hab mein Bedien-Menü bis jetzt so aufgebaut!

}elsif ( $EVENT eq 'msgText: /GARAGENTOR' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++

Garagentor aktuell: ".Value("Garage_dummy") . "

/Garagentor_ZU
/Garagentor_AUF

++++++++++++++++++++++++++++";;

############################################### INFO #####################################################
}elsif ( $EVENT eq 'msgText: /INFO' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++
/PV_Info
/Kamera
/Waschmaschine_Info
/Wasser_Gas_Info
/Strom_Info
/System_Satistik
/Personen_Status
/Warmwasser_Info

/Wasser_messen
++++++++++++++++++++++++++++";;
############################################### HAUSTUER #####################################################
}elsif ( $EVENT eq 'msgText: /HAUSTUER' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++
/Tueroeffner_freischalten (10 Min.)

/Klingel_AN
/Klingel_AUS

/Urlaubmodus_AN
/Urlaubmodus_AUS
++++++++++++++++++++++++++++";;
############################################### HEIZUNG #####################################################
}elsif ( $EVENT eq 'msgText: /HEIZUNG' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++

Warmwassertemp. = ".round(ReadingsVal("WarmWasser","temperature",""),1)."°C

/Warmwasser_Info
/Warmwasser_auf_44
/Warmwasser_Nachladen (nur im WLAN)
++++++++++++++++++++++++++++";;
############################################### TEST #####################################################
}elsif ( $EVENT eq 'msgText: /TEST' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++
/Sensor_Test (Scharf_Test)

/Sirene_DG (1Sek.)
/Sirene_EG (1Sek.)
/Sirene_KG (1Sek.)

/Aussensirene (1Sek.)

/Rauchmelder_Team (1Sek.)
++++++++++++++++++++++++++++";;
############################################### EINSTELLUNGEN #####################################################
}elsif ( $EVENT eq 'msgText: /EINSTELLUNGEN' ) {
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
++++++++++ Untermenü +++++++++
/Anlage_AN
/Anlage_AUS

/bis_6_Uhr_scharf

/Innensirene_aktiv
/Innensirene_inaktiv

/Aussensirene_aktiv
/Aussensirene_inaktiv

/Klingel_AN
/Klingel_AUS

/Urlaubmodus_AN
/Urlaubmodus_AUS

/Wasseruhr_setzen
/Gaszaehler_setzen
/Stromzaehler_setzen

/Anwesenheitssimulation_AN
/Anwesenheitssimulation_AUS

/RasPi_Neustarten

/RasPi_Herunterfahren

/Fernzugriff
++++++++++++++++++++++++++++";;
##################################### Befehl nicht verstanden ############################################
} else {
Hauptmenue:
fhem "set teleBot message @" . ReadingsVal("teleBot","msgPeerId","") . "
+++++++++ Hauptmenü +++++++++
/Info_Alarmanlage

/INFO
/HAUSTUER
/GARAGENTOR
/TEST
/HEIZUNG
/EINSTELLUNGEN

/Spritpreise
++++++++++++++++++++++++++++";;
}


Das kann ich sicher nicht alles in Buttons machen, aber vielleicht wirklich nur ein paar Favoriten!

LG
  Marlen

M.Piet

Hallo Zusammen,

kurze Frage zum senden:

Ein Text verschicke ich mit "set TelegramBot message @xxxxxx Dies ist der Text
Ein Bild verschicke ich mit  "set TelegramBot sendPhoto @xxxxxxx /opt/fhem/bilder/blumen.jpg"

Ist es möglich mit einem Befehl Text und Bild gleichzeitig zu senden?

Xguide

Hallo Piet,

ja das geht.
Zitat
CmdRef:
sendImage|image [ @<peer1> ... @<peerN>] <file> [<caption>]
Sends a photo to the given peer(s) or if ommitted to the default peer. File is specifying a filename and path to the image file to be send. Local paths should be given local to the root directory of fhem (the directory of fhem.pl e.g. /opt/fhem). Filenames with special characters (especially spaces) need to be given with url escaping (i.e. spaces need to be replaced by %20). Rules for specifying peers are the same as for messages. Multiple peers are to be separated by space. Captions can also contain multiple words and do not need to be quoted.

Caption ist also dein Text Parameter.

Sieht dann ungefähr so aus:

Ungetestet:
Zitat
fhem "set TelegramBot sendImage @xxxxx /opt/fhem/bilder/blumen.jpg Blumengruß von Piet.";

BTW: gibt es sendPhoto überhaupt?
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

M.Piet

ZitatBTW: gibt es sendPhoto überhaupt?
Laut Wiki ja:
https://wiki.fhem.de/wiki/TelegramBot#Versand_von_Bildern


Wie du im Anhang siehst, hat es funktioniert. :) Vielen Dank.

Xguide

Sehr gerne :-)

sendPhoto ist in der commandref nicht dokumentiert, war mir aber auch schon mal aufgefallen das es augenscheinlich mehrere Möglichkeiten gibt.

Ein Blick ins Modul verrät das sowohl sendImage, sendPhoto als auch image gehen würden....

    if ( ($cmd eq 'sendPhoto') || ($cmd eq 'sendImage') || ($cmd eq 'image') ) {
      $sendType = 1;
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Kummer

Hallo,

ich hab nach ner Möglichkeit gesucht ein InlineKeyboardButton von Typ URL zu versenden und hab es folgendermaßen realisiert.
Die Zeile if ( $keytext =~ /^\s*(.*):([^:]+)\s*$/ ) { durch if ( $keytext =~ /^\s*([^:]+):(.*)\s*$/ ) { und die Zeile my %oneKey = ( "text" => $keytext, "callback_data" => $keydata );
durch
my %oneKey;
if ( $keydata =~ /^http[s:]\/\/.*$/ ) {
  %oneKey = ( "text" => $keytext, "url" => $keydata );
} else {
  %oneKey = ( "text" => $keytext, "callback_data" => $keydata );
}

ersetzt.

Nun kann man via queryInline (ButtonMitURL:http://forum.fhem.de) Nachricht ein URL Button erstellen.

Vielleicht kann man es ja (gerne auch in Abgeänderter Form) übernehmen.

Lieben Gruß und vielen Dank für das tolle Modul.
Jan

Carsten

Dumme Frage: Was kann ein URL-Button? Macht der einfach die Webseite im Browser auf, wenn man drauf klickt?

viegener

@Carsten: Im prinzip schon, er zeigt aber auch eine Vorscau der Webseite an (wenn das nicht deaktiviert ist)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

hokascha

Im Prinzip müssten sich mit einem URL-Button zumindest unter Android auch andere Apps steuern lassen. Jede App kann ja eigene Protokolle im System registrieren.

wbini

Hallo,

gibt es eine Möglichkeit an die Geodaten (longitude und latitude) des Users zu kommen ala GetLocation(...) ohne dem User einen Button anzubieten ?

Gruß,
wbini

Esjay

Zitat von: wbini am 08 August 2017, 15:52:56
Hallo,

gibt es eine Möglichkeit an die Geodaten (longitude und latitude) des Users zu kommen ala GetLocation(...) ohne dem User einen Button anzubieten ?

Gruß,
wbini
Also Überwachung?

wbini

Zitat von: Esjay am 08 August 2017, 16:04:05
Also Überwachung?

Ja, würde mich gerne selbst überwachen, also stündlich meine Geodaten abfragen und speichern.