<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Horiba</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Horiba"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Horiba"/>
	<updated>2026-04-23T03:35:23Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=TelegramBot&amp;diff=15022</id>
		<title>TelegramBot</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=TelegramBot&amp;diff=15022"/>
		<updated>2016-04-08T09:40:45Z</updated>

		<summary type="html">&lt;p&gt;Horiba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden und Empfangen von Nachrichten (Text und Fotos) mit dem freien Messagingdienst Telegram&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModFTopic=38328&lt;br /&gt;
|ModTechName=[https://github.com/viegener/Telegram-fhem/blob/master/50_TelegramBot.pm 50_TelegramBot.pm]&lt;br /&gt;
|ModOwner=[[Benutzer:Viegener|Viegener]] ({{Link2FU|12772|Forum}} / [[Benutzer Diskussion:Viegener|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[TelegramBot]]-Modul ermöglicht das Senden und Empfangen von Nachrichten über den Telegram-instant messaging Dienst (https://telegram.org/). &lt;br /&gt;
Es entsteht eine Möglichkeit Benachrichtungen aus Fhem zu versenden, zum Beispiel Alarmmeldungen.&lt;br /&gt;
Ausserdem können auch Kommandos über Telegram an Fhem gesendet werden um Steuerungsbefehle in Fhem auszulösen.&lt;br /&gt;
&lt;br /&gt;
Das TelegramBot-Modul benötigt keine Zusatzsoftware auf dem Fhem-Server (anders als die Variante [[Telegram]]), sondern verwendet das [https://core.telegram.org/bots/api TelegramBot-API] über https-Aufrufe. Es muss jedoch das perl JSON modul installiert sein. &lt;br /&gt;
&lt;br /&gt;
== Über Telegram Instant Messaging ==&lt;br /&gt;
Telegram-IDs und Versand/Empfang von Nachrichten sind kostenfrei. &lt;br /&gt;
Clients sind für gängige Smartphonesysteme erhältlich (iOS iPhone und Tablet, Android, Windows Phone) und &lt;br /&gt;
können auch aus dem WebBrowser verwendet werden. &lt;br /&gt;
Es gibt auch einen Kommandozeilen-Client für Linux, der die Grundlage dieses Moduls darstellt. &lt;br /&gt;
Mehrfachanmeldungen, auch parallel mit verschiedenen Geräten (z.B. Tablet und Smartphone), sind möglich.&lt;br /&gt;
Gruppenchats und Chats mit End-2-End-Verschlüsselung werden ebenfalls unterstützt.&lt;br /&gt;
&lt;br /&gt;
Für die Unterstützung von &#039;&#039;WhatsApp&#039;&#039; siehe Modul [[yowsup]].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
&lt;br /&gt;
* Versand von Textnachrichten &lt;br /&gt;
* Versand und Empfang von Bildern/Audio/etc &lt;br /&gt;
* Empfang von Textnachrichten von beliebigen Kontakten&lt;br /&gt;
* Kommandos in Fhem über Telegram-Nachrichten von aussen auslösen&lt;br /&gt;
* Ergebnisse der Kommandos zusenden lassen&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Beschreibung des Moduls ist im Fhem Forum und in der (englischen) Dokumentation zum Modul in der Commandref diesem  {{Link2Forum|Topic=38328|LinkText=Diskussionsthread}} zu finden. Seit Oktober 2015 wird das Modul offiziell über Fhem-Update verteilt.&lt;br /&gt;
&lt;br /&gt;
Die jeweils aktuellste Entwicklungs-Version des Moduls ist in Github [https://github.com/viegener/Telegram-fhem/blob/master/50_TelegramBot.pm 50_TelegramBot.pm] verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem ==&lt;br /&gt;
{{Randnotiz|RNTyp=Warn|RNText=Achtung: Dieses Authtoken ist die einzige Authentifizierung für den Bot und sollte deshalb nicht aus der Hand gegeben werden. Die verwendeten Urls sind deshalb auch in den Log-Files nicht enthalten, da diese das Authtoken in Klartext enthalten. Auch im Forum sollte dieses Token nicht aufgenommen werden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Für die Anlage eines TelegramBot Devices in Fhem ist ein Authtoken erforderlich. Dieses Token wird über Anlegen eines neuen Bots im [https://core.telegram.org/bots#botfather BotFather] erzeugt. Dort mit dem Telegram-Befehl &amp;lt;code&amp;gt;/newbot&amp;lt;/code&amp;gt; einen neuen Bot anlegen und mit einem Namen versehen. Hinweis: Die Namen für Bots müssen auf &amp;quot;Bot&amp;quot; enden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Anlegen eines TelegramBot devices erfolgt durch die Angabe dieses Tokens:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; TelegramBot  &amp;amp;lt;token&amp;amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;define teleBot TelegramBot 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Empfangen von Nachrichten (polling) erfordert die Einstellung des Attributes&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;pollingTimeout&amp;lt;/code&amp;gt; &#039;&#039;&#039;auf einen Wert der grösser als Null ist. Beim Wert 0 oder ohne Setzen des Attributes findet kein Polling und damit auch kein Empfang statt.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der TelegramBot kann erst dann Nachrichten an einen telegram user schicken, wenn dieser zuerst an den telegram bot eine Nachricht gesendet hat.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=Warn|RNText=TelegramBot setzt eine aktuelle Version von FHEM voraus, insbesondere Versionen weit vor der Umstellung auf 5.7 (also vor Herbst 2015) können mit einem TelegramBot-Modul nicht funktionieren, da insbesondere das HTTPSRV-Modul dann veraltet ist. Am besten auch den TelegramBot über den offiziellen Update mit dem Rest von FHEM installieren/aktualisieren.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Registrierung eines neuen Bot ==&lt;br /&gt;
Zur Registrierung wird ein funktionierender Telegram-Client (egal ob Web, App oder Programm)benötigt. Hier wird ein Chat zum BotFather gestartet und der Befehl /newbot gesendet. Nun fragt der BotFather die benötigten Angaben ab und liefert am Ende des Dialogs die Informationen für den neuen Bot.&lt;br /&gt;
Hier ein Beispiel, wie so ein Chat aussehen könnte:&lt;br /&gt;
&amp;lt;pre&amp;gt;Client: &lt;br /&gt;
/newbot&lt;br /&gt;
----------------&lt;br /&gt;
BotFather:&lt;br /&gt;
Alright, a new bot. How are we going to call it? Please choose a name for your bot. &lt;br /&gt;
----------------&lt;br /&gt;
Client: &lt;br /&gt;
Mein Name &lt;br /&gt;
----------------&lt;br /&gt;
BotFather: &lt;br /&gt;
Good. Now let&#039;s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.&lt;br /&gt;
----------------&lt;br /&gt;
Client: &lt;br /&gt;
fhem_bot&lt;br /&gt;
----------------&lt;br /&gt;
BotFather: &lt;br /&gt;
Sorry, this username is already taken. Think of something different.&lt;br /&gt;
----------------&lt;br /&gt;
Client: &lt;br /&gt;
fhem1234_bot&lt;br /&gt;
----------------&lt;br /&gt;
BotFather: &lt;br /&gt;
Done! Congratulations on your new bot.&lt;br /&gt;
You will find it at telegram.me/fhem1234_bot.&lt;br /&gt;
You can now add a description, about section and profile picture for your bot, see /help for a list of commands.&lt;br /&gt;
----------------&lt;br /&gt;
Use this token to access the HTTP API:&lt;br /&gt;
1234567890:AbCdefgHIJklmnOPQRst-uvwxyz &lt;br /&gt;
&lt;br /&gt;
For a description of the Bot API, see this page: https://core.telegram.org/bots/api &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
=== Privacyeinstellungen ===&lt;br /&gt;
&lt;br /&gt;
Damit der TelegramBot auch Meldungen in Gruppen sieht, müssen über den BotFather die Privacy-Einstellungen geändert werden.&amp;lt;br&amp;gt;Beispielchat:&amp;lt;pre&amp;gt;Client:&lt;br /&gt;
/setprivacy&lt;br /&gt;
----------------&lt;br /&gt;
BotFather:&lt;br /&gt;
Choose a bot to change group messages settings.&lt;br /&gt;
----------------&lt;br /&gt;
Client:&lt;br /&gt;
@fhem1234_bot&lt;br /&gt;
----------------&lt;br /&gt;
BotFather:&lt;br /&gt;
&#039;Enable&#039; - your bot will only receive messages that either start with the &#039;/&#039; symbol or mention the bot by username.&lt;br /&gt;
&#039;Disable&#039; - your bot will receive all messages that people send to groups.&lt;br /&gt;
Current status is: ENABLED&lt;br /&gt;
----------------&lt;br /&gt;
Client:&lt;br /&gt;
Disable&lt;br /&gt;
----------------&lt;br /&gt;
BotFather:&lt;br /&gt;
Success! The new status is: DISABLED. /help&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kontakte ===&lt;br /&gt;
&lt;br /&gt;
Der Bot merkt sich die bereits bekannten Kontakte im Reading &amp;lt;code&amp;gt;Contacts&amp;lt;/code&amp;gt;. Dabei werden die einzelnen Kontakte jeweils als 3-teilige Einträge bestehend aus UserID, Vor- und Nachname des Benutzers (mit _ verbunden) und dem Username (mit vorangestelltem @). &lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;code&amp;gt;123456:Ralf_Mustermann:@ralf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verschiedene Einträge werden durch Leerzeichen getrennt.&lt;br /&gt;
&lt;br /&gt;
Man kann die Kontakte auch manuell überschreiben (z.B. wenn das Reading fehlerhaft oder verloren sein sollte). Dazu gibt es den Set-Befehl &amp;lt;code&amp;gt;replaceContacts&amp;lt;/code&amp;gt;. Dieser nimmt die Kontakte ebenfalls in der gleichen Form wie oben beschrieben entgegen.&lt;br /&gt;
&lt;br /&gt;
Die Kontaktliste wird ansonsten nur durch den Empfang von Nachrichten erweitert, da es im TelegramBot-API keine Möglichkeit gibt Kontaktdaten von Telegram abzufragen (siehe auch pollingTimeout)&lt;br /&gt;
&lt;br /&gt;
=== Reset ===&lt;br /&gt;
&lt;br /&gt;
Es ist möglich den Bot im laufenden Betrieb zurückzusetzen (Set-Befehl &amp;lt;code&amp;gt;reset&amp;lt;/code&amp;gt;). Dabei werden noch nicht abgeschlossene Übetragungen entfernt und die internen Zustände des Devices zurückgesetzt. &lt;br /&gt;
&lt;br /&gt;
=== Gruppen ===&lt;br /&gt;
&lt;br /&gt;
Um eine Nachricht von FHEM an eine Gruppe zu senden, muss der BOT in die Gruppe aufgenommen werden. Nach dem Senden einer Nachricht an die Gruppe kann im Modul die Gruppen-ID ermittelt werden und zum Senden von Nachrichten verwendet werden. Wenn die Privacy-Einstellungen nicht auf &#039;Disabled&#039; gesetzt wurden, muss die Nachricht mit einem Slash (/) beginnen.&lt;br /&gt;
&lt;br /&gt;
==== Supergroups / Supergruppen ====&lt;br /&gt;
&lt;br /&gt;
Auch die neuen Supergruppen werden mit dem Bot unterstützt, es ist allerdings zu beachten, dass bei der Umwandlung einer Gruppe in eine Supergruppe eine neue ID in den Kontakten von Telegram vergeben wird. Wenn man also wie empfohlen IDs zur Identifikation von Benutzern einsetzt, muss entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Beispielszenarien ==&lt;br /&gt;
&lt;br /&gt;
=== Benachrichtigungen über Ereignisse ===&lt;br /&gt;
&lt;br /&gt;
Das einfachste Szenario für die Integration von Messaging-Diensten mit Fhem ist zur Benachrichtigung über Ereignisse. Diese Funktion kann zum Beispiel verwendet werden, um über einen erfolgten Neustart von Fhem zu informieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define notify_fhem_reload notify global:INITIALIZED set telebotdevice message fhem newly started - just now !&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird der Nachrichtentext &amp;quot;fhem newly started - just now !&amp;quot; an den als default eingestellten Kontakt (Attribut: defaultPeer) gesendet, sobald Fhem neu gestartet wurde. Natürlich kann man auch beliebige andere Benachrichtigungen einführen.&lt;br /&gt;
&lt;br /&gt;
=== Versand von Bildern ===&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich Bilder auf dem Fhem-Server, die zum Beispiel von einer Kamera oder einem Wettermodul stammen über Telegram zu versenden. So wäre es z.B. möglich jeweils morgens die aktuelle Wetterkarte zu erhalten.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: TelegramBot verwendet das HTTPUtils-Modul zur Kommunikation mit dem TelegramBot-API. Erst mit der Version, die seit 22.10.2015 &lt;br /&gt;
([r9576] HttpUtils.pm: Async write for POST Requests {{Link2Forum|Topic=41583|LinkText=Fhem-Forum}}) verteilt wird, erlaubt auch den Transfer grösserer Bilder. Die Grenze liegt ansonsten bei ca. 14kb auf Raspberries (Plattformspezifische Grenze).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define notify_fhem_reload notify wetter:report set telebotdevice sendPhoto /opt/fhem/wetter.jpg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei Erreichen des entsprechenden Status am Wetter-Modul wird ein Image über Telegram versendet. Hier sind lokale Pfade (relativ zu fhem) oder absolute Pfade wie oben möglich. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Empfang von Bildern oder ähnlichem ===&lt;br /&gt;
&lt;br /&gt;
Beim Empfang von Bildern wird zuerst nur eine ID vom Telegram-Server empfangen, diese befindet sich im Reading &amp;lt;code&amp;gt;msgFileId&amp;lt;/code&amp;gt; angelegt (&amp;lt;code&amp;gt;123456:xxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxx&amp;lt;/code&amp;gt;) und im Reading &amp;lt;code&amp;gt;msgText&amp;lt;/code&amp;gt; steht dann so etwas wie&lt;br /&gt;
&amp;lt;code&amp;gt;received photo # Size: 107701&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Über das Get-Kommando &amp;lt;code&amp;gt;urlForFile&amp;lt;/code&amp;gt; mit der ID aus dem msgFileId Reading lässt sich dann daraus ein URL ableiten, der dann zur eigentlichen Datei führt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://api.telegram.org/file/bot123456:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/photo/file_25.jpg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versand von Emojis (Smileys) ===&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich Emojis mit den (Text-)Nachrichten zu versenden. Die entsprechenden (Unicode-)Zeichen werden einfach direkt mit in den Text der Nachricht aufgenommen. Um das zu vereinfachen kann man das einfach per Copy und Paste von dieser Seite &lt;br /&gt;
&lt;br /&gt;
http://apps.timwhitlock.info/emoji/tables/unicode (Spalte &amp;quot;Native&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
übernehmen und mit der Nachricht verschicken. &lt;br /&gt;
&lt;br /&gt;
Die Emojis können auch empfangen werden und werden so auch in FHEM / FHEMWeb angezeigt. Plattformspezifische (z.B. von iOS oder Android) Emojis werden dabei nicht unterstützt (gerade mit iOS sind viele neue farbige Emojis hinzugekommen, die wohl leider nur auf Apple-devices funktionieren).&lt;br /&gt;
&lt;br /&gt;
=== Kommandos auslösen ===&lt;br /&gt;
&lt;br /&gt;
Ein wichtiges Szenario ist die Möglichkeit Kommandos in Fhem ausführen zu können, ohne einen Zugang durch die Firewall einrichten zu müssen. Dazu ist die Definition eines Schlüsselwortes (Attribut: &amp;quot;cmdKeyword&amp;quot;)erforderlich, mit dem man die Nachrichten beginnen muss, damit der TelegramBot die Kommandos erkennt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr telebotdevice cmdKeyword doit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somit kann man dann durch Nachrichten die mit &amp;quot;doit&amp;quot; beginnen Kommandos an Fhem senden, die ähnlich wie im Kommandoeingabefeld von Fhemweb dann von Fhem ausgeführt werden. Das Ergebnis der Ausführung wird zurück an den Sender (und an den definierten defaultPeer) geschickt.&lt;br /&gt;
&lt;br /&gt;
Somit können nicht nur Aktionen angestossen werden, sondern auch Infos abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiele&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doit set schalter on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doit list telegrambot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=Warn|RNText=Achtung: Bei den Kommandos sollten man unbedingt das Attribut &amp;quot;cmdRestrictedPeer&amp;quot; setzen, damit nicht jeder Kommandos auf dem Fhem-Server ausführen kann. Dazu sollten die BenutzerIDs der erlaubten Benutzer (durch Leerzeichen getrennt angeben). Da Benutzernamen selber vergeben werden und nicht unbedingt eindeutig sind, sollten hier auch NUR BenutzerIDs verwendet werden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Favoriten für Kommandos anlegen ===&lt;br /&gt;
&lt;br /&gt;
Grundidee bei den Favoriten ist, dass man lange Befehle, die man häufig braucht auf &amp;quot;Kurzwahl&amp;quot; legt.&lt;br /&gt;
&lt;br /&gt;
Beispiel-Kommandos wie z.B. &amp;lt;code&amp;gt;set TYPE=ROLLADEN pos 100&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;set TYPE=ROLLADEN pos 0&amp;lt;/code&amp;gt;, die man immer wieder braucht. Um nicht jedes mal dieses Kommando eintippen zu müssen auf dem Smartphone, kann man auch dafür Favoriten anlegen.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt man erst mal die beiden Kommandos getrennt durch Semikolon im Attribut favorites an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr telegrambotdevice favorites set TYPE=ROLLADEN pos 100;set TYPE=ROLLADEN pos 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Favorites jetzt ausführen zu können braucht man noch ein Schlüsselwort dafür.&lt;br /&gt;
Nehmen wir mal an man möchte die Favoriten mit &amp;lt;code&amp;gt;/short&amp;lt;/code&amp;gt; ausführen können. Dazu muss dann das Attribut &amp;quot;cmdFavorites&amp;quot; setzen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;attr telegrambotdevice cmdFavorites /short&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man nun im Telegram Client &lt;br /&gt;
&amp;lt;code&amp;gt;/short 1&amp;lt;/code&amp;gt; an den Bot schickt führt der Bot den ersten Favoriten aus und das Ergebnis der Ausführung wird zurückgeschickt.&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann man im Telegram Client &lt;br /&gt;
&amp;lt;code&amp;gt;/short&amp;lt;/code&amp;gt; an den Bot schicken, dann antwortet der Bot mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Favorites&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
set TYPE=ROLLADEN pos 100&lt;br /&gt;
2&lt;br /&gt;
set TYPE=ROLLADEN pos 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Github Repository für die Telegram-Fhem Entwicklung: https://github.com/viegener/Telegram-fhem&lt;br /&gt;
* Infos zum Telegram BotFather: https://core.telegram.org/bots#botfather&lt;br /&gt;
&lt;br /&gt;
* Source code für das 50_TelegramBot.pm-Modul: https://github.com/viegener/Telegram-fhem/blob/master/50_TelegramBot.pm&lt;br /&gt;
* Source code für das modifizierte HTTPUtils-Modul zur Übertragung grosser Bilder: https://github.com/viegener/Telegram-fhem/blob/master/HttpUtils.pm&lt;br /&gt;
&lt;br /&gt;
* Forum-Thread in dem das Modul vorgestellt wurde {{Link2Forum|Topic=38328|LinkText=Fhem-Forum}}&lt;br /&gt;
* Telegram messaging system https://telegram.org/&lt;br /&gt;
* TelegramBot API https://core.telegram.org/bots/api&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Viegener|Viegener]] ([[Benutzer Diskussion:Viegener|Diskussion]]) 22:49, 11. Okt. 2015 (CEST)&lt;/div&gt;</summary>
		<author><name>Horiba</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Telegram_-_old_API_method&amp;diff=11947</id>
		<title>Telegram - old API method</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Telegram_-_old_API_method&amp;diff=11947"/>
		<updated>2015-08-10T20:33:56Z</updated>

		<summary type="html">&lt;p&gt;Horiba: /* Hinweise zum Betrieb mit Fhem */  Einrichtungsanleitung angefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Senden und Empfangen von Nachrichten (Text und Fotos) mit dem freien Messagingdienst Telegram&lt;br /&gt;
|ModType=x&lt;br /&gt;
|ModForumArea=Unterstützende Dienste&lt;br /&gt;
|ModFTopic=38328&lt;br /&gt;
|ModTechName=[https://github.com/viegener/Telegram-fhem/blob/master/70_Telegram.pm 70_Telegram.pm]&lt;br /&gt;
|ModOwner=[[Benutzer:Viegener|Viegener]] ({{Link2FU|12772|Forum}} / [[Benutzer Diskussion:Viegener|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
Das [[Telegram]]-Modul ermöglicht das Senden und Empfangen von Nachrichten über den Telegram-instant messaging Dienst (https://telegram.org/). &lt;br /&gt;
Es entsteht eine Möglichkeit Benachrichtungen aus Fhem zu versenden, zum Beispiel Alarmmeldungen.&lt;br /&gt;
Ausserdem können auch Kommandos über Telegram an Fhem gesendet werden um Steuerungsbefehle in Fhem auszulösen.&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb des Telegram Moduls ist eine funktionsfähige Installation des inoffiziellen telegram command-line clients für Linux, &#039;&#039;telegram-cli&#039;&#039; (https://github.com/vysheng/tg), erforderlich.&lt;br /&gt;
&lt;br /&gt;
Für die Unterstützung von &#039;&#039;WhatsApp&#039;&#039; siehe Modul [[yowsup]].&lt;br /&gt;
&lt;br /&gt;
== Über Telegram Instant Messaging ==&lt;br /&gt;
Telegram-IDs und Versand/Empfang von Nachrichten sind kostenfrei. &lt;br /&gt;
Clients sind für gängige Smartphonesysteme erhältlich (iOS iPhone und Tablet, Android, Windows Phone) und &lt;br /&gt;
können auch aus dem WebBrowser verwendet werden. &lt;br /&gt;
Es gibt auch einen Kommandozeilen-Client für Linux, der die Grundlage dieses Moduls darstellt. &lt;br /&gt;
Mehrfachanmeldungen, auch parallel mit verschiedenen Geräten (z.B. Tablet und Smartphone), sind möglich.&lt;br /&gt;
Gruppenchats und Chats mit End-2-End-Verschlüsselung werden ebenfalls unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Unterstützt werden:&lt;br /&gt;
&lt;br /&gt;
* Versand von Textnachrichten an einen vordefinierten Kontakt (default peer)&lt;br /&gt;
* Versand von Textnachrichten an einen vordefinierten Kontakt als verschlüsselter Chat (secret chat)&lt;br /&gt;
* Versand von Bildern &lt;br /&gt;
* Empfang von Textnachrichten von beliebigen Kontakten&lt;br /&gt;
* Direkte Befehle an den telegram-client&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Beschreibung des Moduls ist im Fhem Forum in diesem  {{Link2Forum|Topic=38328|LinkText=Diskussionsthread}} zu finden, die jeweils aktuelle Version des Moduls ist im ersten Beitrag als Anhang verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem ==&lt;br /&gt;
{{Randnotiz|RNTyp=Warn|RNText=Achtung: telegram-cli wird momentan NICHT aus Fhem heraus gestartet, sondern muss separat gestartet werden. Ausserdem muss telegram-cli bereits angemeldet sein und entsprechende Kontakte müssen eingerichtet werden. Generell ist auch die Verwendung einer existierenden telegram, empfohlen wird aber die Verwendung einer getrennten ID, zum Beispiel für die eigene Festnetznummer.&lt;br /&gt;
&lt;br /&gt;
telegram-cli kann generell auch auf einem anderen Host betrieben werden, da die Kommunikation mit telegram-cli über Netzwerkprotokolle erfolgt.&lt;br /&gt;
}}&lt;br /&gt;
Das Telegram-Modul basiert auf einem im Hintergrund laufenden telegram-cli (https://github.com/vysheng/tg).&lt;br /&gt;
&lt;br /&gt;
Informationen zu Einrichtung und Betrieb von telegram-cli finden sich im Readme in obigem Repository.&lt;br /&gt;
Weitere Informationen finden sich auch im Wiki des github Repositories: https://github.com/vysheng/tg/wiki&lt;br /&gt;
&lt;br /&gt;
Hinweise zum Start von telegram-cli mit fhem finden sich in der Commandref / Doku zum Modul.&lt;br /&gt;
&lt;br /&gt;
Hier eine Kurzanleitung zur Installation und zum Ausführen auf einem RaspberryPI:&lt;br /&gt;
# Notwendige Pakete installieren mittels &#039;&#039;&amp;lt;nowiki&amp;gt;sudo apt-get install libreadline-dev libconfig-dev libssl-dev libjansson-dev python-dev lua5.2 liblua5.2-dev libevent-dev lua-lgi&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
# telegram-cli vom Repository laden: &#039;&#039;git clone --recursive https://github.com/vysheng/tg.git &amp;amp;&amp;amp; cd tg&#039;&#039;&lt;br /&gt;
# Konfigurieren mittels &#039;&#039;./configure&#039;&#039; und anschließend mit &#039;&#039;make&#039;&#039; erstellen. Das dauert ggf ziemlich lange &amp;gt;&amp;gt;20min&lt;br /&gt;
# zum Einrichten einmal Telegram starten: &#039;&#039;bin/telegram-cli -k tg-server.pub&#039;&#039; . Dabei wird die eigene Telefonnummer im Format +49301234567 verlangt. Der Bestätigungscode muss eingegeben werden und evtl der eigene Name. Eventuell mal mit &#039;&#039;msg &amp;lt;Emfänger&amp;gt; &amp;lt;Nachrichttext&amp;gt;&#039;&#039; testen ob alles funktioniert. Telegram beenden.&lt;br /&gt;
# telegram im Hintergrund starten: &#039;&#039;bin/telegram-cli -k tg-server.pub -W -C -d -P &amp;lt;portnummer&amp;gt; -l 20 -N &amp;amp; &#039;&#039; dabei beliebige freie Portnummer vergeben&lt;br /&gt;
# Neuestes FHEM Modul in den /opt/fhem/FHEM Ordner kopieren und mit den nötigen Rechten versehen, FHEM neu starten&lt;br /&gt;
# Telegram in FHEM definieren: define myTelegram Telegram &amp;lt;portnummer&amp;gt;&lt;br /&gt;
# das Attribut defaultPeer setzten damit Messages verschickt werden können (über den set msg Befehl)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Source code für das 70_Telegram.pm-Modul: https://github.com/viegener/Telegram-fhem&lt;br /&gt;
* Forum-Thread in dem das Modul vorgestellt wurde {{Link2Forum|Topic=38328|LinkText=Fhem-Forum}}&lt;br /&gt;
* Repository mit telegram-cli https://github.com/vysheng/tg&lt;br /&gt;
* Telegram messaging system https://telegram.org/&lt;/div&gt;</summary>
		<author><name>Horiba</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-SEC-SC_T%C3%BCr-Fensterkontakt&amp;diff=11930</id>
		<title>HM-SEC-SC Tür-Fensterkontakt</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-SEC-SC_T%C3%BCr-Fensterkontakt&amp;diff=11930"/>
		<updated>2015-08-08T16:44:34Z</updated>

		<summary type="html">&lt;p&gt;Horiba: /* Batteriestatus aktivieren */  Rechtschreibung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic Funk-Tür-Fensterkontakt&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
Aktuelle Firmware: 2.1&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Überwachung einer Tür oder eines Fensters zur Sicherheit oder um automatisch, bei vorhandenem [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]], die Heizung herunter zu regeln, sobald ein Fenster oder eine Tür geöffnet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
===Pairing===&lt;br /&gt;
Das Pairing sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden. Der Sensor muss hierfür geöffnet und die versenkte Anlerntaste mit einem spitzen Gegenstand betätigt werden. Bei erfolgreichem Pairing blinkt die LED grün.&lt;br /&gt;
&lt;br /&gt;
===Nutzung mit Wandthermostat===&lt;br /&gt;
Bei Einsatz mit [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]] und Zentrale erst alle Tür-/Fensterkontakte mit dem HM-CC-TC verbinden (anlernen). Alternativ geht das auch nachträglich über entsprechende &#039;&#039;set&#039;&#039;-Befehle von Fhem aus. Dafür müssen der HM-CC-TC und der HM-Sec-SC aber vorher mit Fhem gepairt worden sein.&lt;br /&gt;
&lt;br /&gt;
Wenn ein bereits erfolgreich gepairter SC ein &#039;&#039;set &amp;lt;HM-Sec-SC-Name&amp;gt; getConfig&#039;&#039; beim anschließenden Drücken der Anlerntaste am SC mit einem lang andauernden Blinken der LED in orange mit anschließendem Leuchten der LED in rot (ca. 1 Sekunde) beantwortet wird, hilft meist ein &#039;&#039;set &amp;lt;HM-Sec-SC-Name&amp;gt; clear readings&#039;&#039;, Anlernknopf drücken, nun wieder &#039;&#039;set &amp;lt;HM-Sec-SC-Name&amp;gt; getConfig&#039;&#039; und Anlernknopf drücken. &lt;br /&gt;
&lt;br /&gt;
Dies sollte nun mit einem kurzen LED-Signal in orange mit anschließendem längeren Flackern der LED in grün beantwortet werden und nach einem Refresh der Browser-Seite sollten alle aktuellen Daten zum SC verfügbar sein.&lt;br /&gt;
&lt;br /&gt;
===Batteriestatus aktivieren===&lt;br /&gt;
Der HM-SEC-SC sendet nur dann Batteriestatus, wenn der Sensor selber geöffnet wird (Batteriefach), nicht jedoch wenn er schaltet, noch in wiederkehrenden Abständen. Um dies zu ändern muss das Register cyclicInfoMsg auf on gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Dazu wie folgt vorgehen:&lt;br /&gt;
in Fhem (Telnet oder Webfrontend)&lt;br /&gt;
 get NameMeines_HM-SEC-SC reg all&lt;br /&gt;
 set NameMeines_HM-SEC-SC regSet cyclicInfoMsg on&lt;br /&gt;
eingeben. Danach siehst man beim Device, dass mindestens ein Kommando pendig ist und in den Readings, dass das cyclicInfoMsg Register geschrieben werden soll. &lt;br /&gt;
Danach Fhem in den pairing modus versetzten, z.B. mit:&lt;br /&gt;
 set HMLAN1 hmPairForSec 30&lt;br /&gt;
und den Knopf im Batteriefach des HM-SEC-SC drücken (Büroklammer). &lt;br /&gt;
Danach noch mal  &lt;br /&gt;
 get NameMeines_HM-SEC-SC reg all&lt;br /&gt;
in Fhem (Telnet oder WEbfrontend).&lt;br /&gt;
Jetzt sollten keine pendig commands mehr zu sehen sein und in den readings genau&lt;br /&gt;
 R-cyclicInfoMsg on&lt;br /&gt;
stehen. &lt;br /&gt;
&lt;br /&gt;
Danach bekommt man regelmäßig (etwa alle 24 Stunden) eine Batteriestatusmeldung, wenn der HM-SEC-SC Tür-Fensterkontakt etwa 24 Stunden lang &#039;&#039;&#039;nicht&#039;&#039;&#039; betätigt wurde.&lt;br /&gt;
(wenn er betätigt wurde erfolgt keine Meldung, da die erfolgreiche Betätigungsmeldung zeigt, das die Batterie noch in Ordnung ist).&lt;br /&gt;
Ohne diese Aktivierung kann auch der ActionDetector für dieses Geräte möglicherweise nicht verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Achtung: Hierdurch steigt der Batterieverbrauch etwas an, besonders wenn der HM-SEC-SC Tür-Fensterkontakt normalerweise sehr selten betätigt wird. Erfahrungswerte liegen hier zu aber nicht vor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vergleiche auch [[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
 define TuerKeller CUL_HM 1638AC&lt;br /&gt;
 attr TuerKeller devInfo 810101&lt;br /&gt;
 attr TuerKeller firmware 2.0&lt;br /&gt;
 attr TuerKeller hmClass sender&lt;br /&gt;
 attr TuerKeller model HM-SEC-SC&lt;br /&gt;
 attr TuerKeller room Keller&lt;br /&gt;
 attr TuerKeller serialNr IEQ0xxxxxx&lt;br /&gt;
 attr TuerKeller subType threeStateSensor&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Peeren mit HM-CC-TC ==&lt;br /&gt;
* Nur wenn der HM-Sec-SC mit einem [[HM-CC-TC_Funk-Wandthermostat|HM-CC-TC]] direkt gep&#039;&#039;&#039;ee&#039;&#039;&#039;rt wurde, steuert letzterer die Absenkung der Temperatur an den [[HM-CC-VD]]-Ventilen. Ansonsten muss diese Steuerung von FHEM erfolgen.&lt;br /&gt;
* Das P&#039;&#039;&#039;ee&#039;&#039;&#039;ren des SC mit einem CC &amp;lt;ins&amp;gt;mittels Anlerntaste&amp;lt;/ins&amp;gt; muss vor dem P&#039;&#039;&#039;ai&#039;&#039;&#039;ren des TC mit FHEM/HMLAN erfolgen, sonst geht das Peeren nur noch über FHEM-Befehle.&lt;br /&gt;
&lt;br /&gt;
* In der Anleitung des HM-Sec-SC steht:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Um den Tür-Fensterkontakt in den Anlernmodus zu bringen, drücken Sie mit einem spitzen Gegenstand auf die Anlerntaste.&lt;br /&gt;
 Die Geräte-LED blinkt orange. (Abbruch durch kurze Betätigung der Anlerntaste, die Geräte-LED leuchtet dann rot auf.)&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls die LED nicht orange, sondern nach dem ersten Drücken rot blinkt, Knopf erneut drücken. Zumindest bei manchen Geräten lässt sich nur so ein Pairen mit den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]] durchgeführen (Geräte-LED blinkt orange)&lt;br /&gt;
&lt;br /&gt;
=== Problembehebung ===&lt;br /&gt;
Falls trotz korrekt gepeertem Fensterkontakt mit einem HM-CC-RT-DN oder HM-TC-IT-WM-W-EU die LED einen Fehler meldet (rot leuchtet). Überprüft im Fensterkontakt ob das Register &amp;quot;PeerNeedsBurst&amp;quot; gesetzt ist und im Wandthermostat bzw. Heizkörperregler das Attribut BurstAccess auf Auto.&lt;br /&gt;
&lt;br /&gt;
PeerNeedsBurst kann mit folgendem Befehl gesetzt werden:&lt;br /&gt;
 set &amp;lt;HM-SEC-SC&amp;gt; regSet peerNeedsBurst on &amp;lt;RT_oder_TC&amp;gt;_WindowRec&lt;br /&gt;
&lt;br /&gt;
Danach muss entweder der Kontakt geschaltet werden (HM-SEC-SC-2) oder der Anlernknopf gedrückt werden (HM-SEC-SC)&lt;br /&gt;
&lt;br /&gt;
== Mögliche Zustände ==&lt;br /&gt;
Der Sensor hat folgende Schaltzustände:&lt;br /&gt;
&lt;br /&gt;
 closed -&amp;gt; Der Sensor zeigt einen geschlossenen Zustand an&lt;br /&gt;
 open   -&amp;gt; Der Sensor zeigt einen geöffneten Zustand an&lt;br /&gt;
 sabotageError: open   -&amp;gt; Das Gehäuse des Sensors wurde geöffnet&lt;br /&gt;
 sabotageError: closed -&amp;gt; Das Gehäuse des Sensors wurde geschlossen&lt;br /&gt;
 alive: yes -&amp;gt; Wenn der SC über 24 Std. keine Statusänderung hatte, sendet er ein &amp;quot;Lebenszeichen&amp;quot; an Fhem&lt;br /&gt;
&lt;br /&gt;
Die Änderungen der Zustände werden unmittelbar nach Statusänderung an Fhem / die Zentrale bzw. die gepeerten HM-CC-TC gemeldet.&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszüge ===&lt;br /&gt;
In FHEM sind folgende Zustände des HM-SEC-SC im Log zu sehen:&lt;br /&gt;
&lt;br /&gt;
 2012-02-13_21:52:02 TuerKeller cover: open&lt;br /&gt;
 2012-02-13_21:52:02 TuerKeller sabotage&lt;br /&gt;
 2012-02-13_21:55:23 TuerKeller cover: closed&lt;br /&gt;
 2012-02-13_21:55:23 TuerKeller alive: yes&lt;br /&gt;
 2012-02-13_21:55:52 TuerKeller closed (to broadcast)&lt;br /&gt;
 2012-02-13_21:55:53 TuerKeller open (to broadcast)&lt;br /&gt;
&lt;br /&gt;
Wenn der HM-SEC-SC mit einem HM-CC-TC gepeert ist, sehen die Meldungen auch so aus:&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ contact: open (to HMLAN1)&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ open&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ contact: open (to CUL_HM_thermostat_ZYXZYX)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ contact: closed (to HMLAN1)&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ closed&lt;br /&gt;
 YYYY-MM-TT_HH:mm:ss CUL_HM_threeStateSensor_XYZXYZ contact: closed (to CUL_HM_thermostat_ZYXZYX)&lt;br /&gt;
&lt;br /&gt;
wobei hier für den SC und TC noch keine Aliase vergeben wurden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich, wenn die Knopfzellen (2 Stück, Typ LR44, Sollspannung 1,5 V) nachlassen:&lt;br /&gt;
&lt;br /&gt;
 2012-02-13_21:55:53 TuerKeller battery: low&lt;br /&gt;
&lt;br /&gt;
was ansonsten so aussieht:&lt;br /&gt;
&lt;br /&gt;
 2012-02-13_21:55:53 TuerKeller battery: ok&lt;br /&gt;
&lt;br /&gt;
== Batterien ==&lt;br /&gt;
Es werden 2 Stück Knopfzellen vom Typ LR44 (je nach Hersteller auch L1154, AG13, V13GA, A76 oder GPA76 genannt) benötigt. Diese sind Bestandteil der Lieferung, jedoch sollte man vor Installation / Inbetriebnahme die Spannung der Knopfzellen überprüfen. Diese sollte über 1,5 V liegen. Da Batterien eine begrenzte Lagerfähigkeit haben, kann es durchaus vorkommen, dass diese schon überlagert sind, also nicht mehr die für einen längeren Betrieb erforderliche Spannung haben bzw. halten können oder bereits nach ein paar Tagen leer (low) sind.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[HomeMatic]]&lt;br /&gt;
* Anleitung [http://www.elv-downloads.de/service/manuals/76788_HM_Sec_SC_GE_V1_0_UM.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;/div&gt;</summary>
		<author><name>Horiba</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=11891</id>
		<title>Spritpreismonitor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Spritpreismonitor&amp;diff=11891"/>
		<updated>2015-08-04T14:16:20Z</updated>

		<summary type="html">&lt;p&gt;Horiba: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die hier vorgestellten Fragmente ermöglichen es, mit Hilfe von [[HTTPMOD]] bei [http://www.clever-tanken.de clever-tanken.de] von Wunschtankstellen  die Spritpreise zu protokollieren. Die Credits dafür gehen an Forum-Benutzer {{Link2FU|1774|Phil__}}. Die Original Diskussion im Forum ist {{Link2Forum|Topic=22554|Message=210795|LinkText=hier}}.&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
Im folgenden wird mit Hilfe des Moduls HTTPMOD der Spritpreis von ausgewählten Tankstellen abgerufen. Die Daten werden gespeichert und als Diagramm aufbereitet.&lt;br /&gt;
&lt;br /&gt;
Zum Nachbau ist es erforderlich, &amp;quot;seine&amp;quot; Wunschtankstellen bei Clever-Tanken zu suchen. Jede Tankstelle hat eine eigene Nummer:&lt;br /&gt;
:&amp;lt;code&amp;gt;/tankstelle_details/0815&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;600&#039;&#039; in den Beispielen gibt das Abrufintervall in Sekunden an.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Die erforderlichen Definitionen in der Fhem [[Konfiguration]] bestehen aus mehreren Teilen. Zunächst die erforderlichen Einstellungen, um die Daten der gewünschten Tankstellen abzuholen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/4871 600&lt;br /&gt;
attr Shell group Spritpreise&lt;br /&gt;
attr Shell icon tanken&lt;br /&gt;
attr Shell readingsName_Diesel Diesel&lt;br /&gt;
attr Shell readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Shell readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Shell readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Shell room Spritpreise&lt;br /&gt;
attr Shell stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Shell timeout 5&lt;br /&gt;
&lt;br /&gt;
define Total HTTPMOD http://www.clever-tanken.de/tankstelle_details/4870 600&lt;br /&gt;
attr Total group Spritpreise&lt;br /&gt;
attr Total icon tanken&lt;br /&gt;
attr Total readingsName_Diesel Diesel&lt;br /&gt;
attr Total readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Total readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Total readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Total room Spritpreise&lt;br /&gt;
attr Total stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Total timeout 5&lt;br /&gt;
&lt;br /&gt;
define Aral HTTPMOD http://www.clever-tanken.de/tankstelle_details/4869 600&lt;br /&gt;
attr Aral group Spritpreise&lt;br /&gt;
attr Aral icon tanken&lt;br /&gt;
attr Aral readingsName_Diesel Diesel&lt;br /&gt;
attr Aral readingsName_SuperE5 SuperE5&lt;br /&gt;
attr Aral readingsRegex_Diesel &amp;lt;span&amp;gt;Diesel&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Aral readingsRegex_SuperE5 &amp;lt;span&amp;gt;Super E5&amp;lt;/span&amp;gt;[^0-9]+([0-9\.]+)&lt;br /&gt;
attr Aral room Spritpreise&lt;br /&gt;
attr Aral stateFormat Liter_Diesel: Diesel&lt;br /&gt;
attr Aral timeout 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu kommen noch die Definitionen für das [[FileLog]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define FileLog_Spritpreise FileLog /media/usblog/fhem/log/spritpreise-langen-%Y-%m.log (Shell|Total|Aral):(SuperE5|Diesel).*&lt;br /&gt;
attr FileLog_Spritpreise alias Log Spritpreise&lt;br /&gt;
attr FileLog_Spritpreise group Logfile&lt;br /&gt;
attr FileLog_Spritpreise logtype text&lt;br /&gt;
attr FileLog_Spritpreise room Spritpreise&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sowie eine passende [[readingsGroup]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Spritpreise readingsGroup (Shell|Total|Aral):(SuperE5|Diesel).*&lt;br /&gt;
attr Spritpreise group Spritpreisuebersicht&lt;br /&gt;
attr Spritpreise notime 1&lt;br /&gt;
attr Spritpreise room Spritpreise&lt;br /&gt;
attr Spritpreise style style=&amp;quot;font-size:16px&amp;quot;&lt;br /&gt;
attr Spritpreise valueFormat {&#039;%.2f €&#039;}&lt;br /&gt;
attr Spritpreise valueStyle {Werte($READING,$VALUE)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und eine [[SVG|Plotdefinition]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define SVG_FileLog_Spritpreise_1 SVG FileLog_Spritpreise:SVG_FileLog_Spritpreise_1:CURRENT&lt;br /&gt;
attr SVG_FileLog_Spritpreise_1 group Spritpreisverlauf&lt;br /&gt;
attr SVG_FileLog_Spritpreise_1 room Spritpreise&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Farbliche Hervorhebung ==&lt;br /&gt;
Folgender Code gehört in 99_myUtils.pm; Die Werte könen natürlich entsprechend angepasst werden&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###################################################&lt;br /&gt;
###     Spritpreisübersicht - Farbsortierung    ###&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
sub Werte($$) {&lt;br /&gt;
  my ($name, $wert) = @_;&lt;br /&gt;
# Log(3,&amp;quot;$name $wert&amp;quot;);&lt;br /&gt;
  if ($name eq &amp;quot;Diesel&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:red&amp;quot;&#039; if($wert &amp;gt;= 1.39); &lt;br /&gt;
    return &#039;style=&amp;quot;color:blue&amp;quot;&#039; if(($wert &amp;gt;= 1.33) &amp;amp;&amp;amp; ($wert &amp;lt; 1.39));&lt;br /&gt;
    return &#039;style=&amp;quot;color:green;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt;= 1.32);&lt;br /&gt;
  }elsif ($name eq &amp;quot;SuperE10&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:crimson&amp;quot;&#039; if($wert &amp;gt;= 1.70); &lt;br /&gt;
    return &#039;style=&amp;quot;color:yellow&amp;quot;&#039; if(($wert &amp;gt;= 1.55) &amp;amp;&amp;amp; ($wert &amp;lt; 1.70));&lt;br /&gt;
    return &#039;style=&amp;quot;color:lightgreen;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt; 1.55);&lt;br /&gt;
  }elsif ($name eq &amp;quot;SuperE5&amp;quot;) {&lt;br /&gt;
    return &#039;style=&amp;quot;color:red&amp;quot;&#039; if($wert &amp;gt;= 1.59); &lt;br /&gt;
    return &#039;style=&amp;quot;color:blue&amp;quot;&#039; if(($wert &amp;gt;= 1.49) &amp;amp;&amp;amp; ($wert &amp;lt; 1.59));&lt;br /&gt;
    return &#039;style=&amp;quot;color:green;;font-weight:bold&amp;quot;&#039; if($wert &amp;lt;= 1.48);&lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Die zugehörige .gplot Datei ===&lt;br /&gt;
SVG_FileLog_Spritpreise_1.gplot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Created by FHEM/98_SVG.pm, 2014-10-22 12:57:34&lt;br /&gt;
set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set title &#039;Spritpreise&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid&lt;br /&gt;
set ylabel &amp;quot;Preise (€/Liter)&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Preise (€/Liter)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:Aral.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Shell.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Total.Diesel\x3a:1:&lt;br /&gt;
#FileLog 4:Aral.SuperE5\x3a:1:&lt;br /&gt;
#FileLog 4:Shell.SuperE5\x3a:1:&lt;br /&gt;
#FileLog 4:Total.SuperE5\x3a:1:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Aral Diesel&#039; ls l2 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Shell Diesel&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Total Diesel&#039; ls l0 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Aral Super&#039; ls l3 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Shell Super&#039; ls l4 lw 1 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Total Super&#039; ls l5 lw 1 with lines&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tricks für HTTPMOD ==&lt;br /&gt;
Je nach Internetverbindung und Geschwindigkeit des Fhem Rechners kann das Modul manchmal Probleme haben, die Daten schnell genug zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Eine Lösung dazu wäre, die Daten vorher mit wget auf einem eigenen Webserver zu speichern (z.B. ein lokaler Apache), und HTTPMOD auf diesen zugreifen zu lassen. &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Vorstellung und Diskussion im {{Link2Forum|Topic=22554|LinkText=Fhem Forum}}&lt;br /&gt;
* [http://www.clever-tanken.de/ Clever Tanken]&lt;br /&gt;
* Eine Anleitung, wie man das mit wget macht, gibt es {{Link2Forum|Topic=28123|Message=216228|LinkText=hier}} (ist aber noch nicht ganz fertig)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Horiba</name></author>
	</entry>
</feed>