<?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=Fiedel</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=Fiedel"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Fiedel"/>
	<updated>2026-04-12T16:12:39Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Browsersteuerung,_Seiten_per_JS_autom._aufrufen&amp;diff=9370</id>
		<title>Browsersteuerung, Seiten per JS autom. aufrufen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Browsersteuerung,_Seiten_per_JS_autom._aufrufen&amp;diff=9370"/>
		<updated>2015-01-15T08:35:28Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Browsersteuerung, Seiten per Javascript automatisch aufrufen &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Post: [http://forum.fhem.de/index.php/topic,19378.msg131637.html#msg131637]&amp;lt;br&amp;gt;   &lt;br /&gt;
Ein transparentes Icon für den Dummy: [http://www.fhemwiki.de/wiki/Datei:Transparent.png]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Auf einem Tablet mit Floorplan, Dashboard oder FHEM &amp;quot;pur&amp;quot; soll bei auflaufen eines Events (Anruf, Bewegungsmelder, Türklingel usw.) automatisch auf eine andere Webseite umgeschaltet werden. Möglich sein soll dabei das Umleiten auf andere Floorplan-, FHEM-, oder sogar externe Webseiten. Absolute, sowie relative Links sollen genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
So kann entsprechend des Events z.B. der Anrufer oder auch eine Seite mit dem Kamerabild des Besuchers angezeigt werden. Solange wir uns innerhalb von FHEM befinden, soll auch ein automatisches Zurück- oder Weiterschalten möglich sein. Dadurch kann z.B. eine &amp;quot;rotierende&amp;quot; Anzeige verschiedener FHEM- Seiten realisiert werden. Oder nach einer Idee des Forenmitglieds Rince, bei Alarm ein &amp;quot;Sperrbildschirm&amp;quot; aufgerufen werden, der das Bedienen des Tablets vorläufig unmöglich macht.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Voraussetzung ist ein aktuelles, upgedatetes FHEM. In der WEB- Instanz, mit der die Funktion genutzt werden soll, muss &amp;quot;Longpoll&amp;quot; aktiv sein. Dadurch wird erreicht, dass der Wert des Dummy sofort bei setzen des Seitenlinks aktualisiert wird. Auf Clientseite (Tablet) muss der genutzte Browser Javascript unterstützen, sowie auch aktiviert haben.&lt;br /&gt;
&lt;br /&gt;
== Lösung ==&lt;br /&gt;
Wir erstellen eine js- Datei mit dem Namen &amp;quot;fhemweb_pageswap.js&amp;quot; und kopieren sie einfach in den Ordner fhem/www/pgm2/. Dazu kann eine vorhandene js- Datei kopiert, umbenannt und der Inhalt ersetzt werden. Sie startet nach einem Refresh der Webseite oder &amp;quot;shutdown restart&amp;quot; von selbst: &lt;br /&gt;
&lt;br /&gt;
fhemweb_pageswap.js :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// Datei: fhemweb_pageswap.js&lt;br /&gt;
// Von FHEM aus initiiertes Wechseln der angezeigten Seite:&lt;br /&gt;
&lt;br /&gt;
function&lt;br /&gt;
FW_pageswapUpdateLine(d){&lt;br /&gt;
&lt;br /&gt;
 var id = d[0];                                  // id der Objekte auf der Seite&lt;br /&gt;
 var val = d[1];                                 // Wert der Objekte auf der Seite&lt;br /&gt;
&lt;br /&gt;
  if (id == &amp;quot;Dum_pageswap_D&amp;quot; &amp;amp;&amp;amp; val != &amp;quot;none&amp;quot;){&lt;br /&gt;
     window.location.href = &amp;quot;&amp;quot;+val               // wenn Dummy Wert enthaelt, wechseln zu neuer Seite&lt;br /&gt;
                                                 // Variable &amp;quot;val&amp;quot; wird nicht geprueft und muss sinnvollen Wert enthalten&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FW_widgets[&#039;pageswap&#039;] = {&lt;br /&gt;
  updateLine:FW_pageswapUpdateLine&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin legen wir in der fhem.cfg einen Dummy und ein Notify an. Zum Dummy gehört noch ein transparentes Icon, mit dessen Hilfe wir den Dummy völlig unsichtbar auf Floorplanseiten unterbringen können. Der Link zum Icon befindet sich ganz oben im  Beitrag. Es wird in den Ordner /images/default/ kopiert.&lt;br /&gt;
&lt;br /&gt;
In die cfg:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Bei Event FHEM- Seite umschalten; &lt;br /&gt;
# longpoll muss aktiv sein&lt;br /&gt;
# Benutzung: &amp;quot;set Dum_pageswap_D &amp;lt;Seitenlink&amp;gt;&amp;quot; &lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D /fhem/floorplan/mein_floorplan_1&amp;quot;&lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D http://192.168.0.1:8085/fhem/floorplan/mein_floorplan_1&amp;quot;&lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D www.google.de&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Dummy für pageswap:&lt;br /&gt;
define Dum_pageswap_D dummy&lt;br /&gt;
attr Dum_pageswap_D devStateIcon .*:Transparent&lt;br /&gt;
&lt;br /&gt;
# Notify für pageswap (die Reset- Zeit ggf. verlängern, falls Seite nicht aufgerufen wird):&lt;br /&gt;
define Func_pageswap_N notify Dum_pageswap_D { \&lt;br /&gt;
\&lt;br /&gt;
  my $ps_Val = (Value(&amp;quot;Dum_pageswap_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
   if ($ps_Val ne &amp;quot;none&amp;quot;) { \&lt;br /&gt;
      fhem(&amp;quot;define reset_pageswap at +00:00:03 set Dum_pageswap_D none&amp;quot;);;\&lt;br /&gt;
   }\&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Bei Systemstart Dummy auf &amp;quot;none&amp;quot; initialisieren:&lt;br /&gt;
define Func_Start_Init_N notify global:INITIALIZED.* { \&lt;br /&gt;
\&lt;br /&gt;
fhem(&amp;quot;set Dum_pageswap_D none&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
Die Namen aus den Beispieldateien sollten zunächst einmal nicht geändert werden, da entsprechende Abhängigkeiten bestehen. Hat man das Zusammenspiel verstanden kann umbenannt, geändert und nach Bedarf erweitert werden.&lt;br /&gt;
&lt;br /&gt;
Der Dummy muss bei Systemstart auf &amp;quot;none&amp;quot; initialisiert werden. Eine entsprechende Funktion ist im Beispiel enthalten.&lt;br /&gt;
&lt;br /&gt;
Ist alles eingerichtet, geht man auf eine FHEM- Seite, auf der der Dummy definiert wurde und setzt z.B. per FS20- Taster und einem weiteren Notify einen set- Befehl mit einem Link ab, der zu einer anderen Seite des eigenen Systems passt. Dann sollte die Seite dort hin wechseln. Auch externe Webseiten sind möglich mit der Einschränkung, dass man von dort per Hand zu FHEM zurücknavigieren muss. Innerhalb FHEM hingegen, springt man einfach zwischen verschiedenen Seiten hin und her, indem man auf jeder dieser Seiten den &amp;quot;pageswap-&amp;quot; Dummy definiert. Bei meinen Tests mit Floorplan hat es ausgereicht den Dummy auf nur einer Floorplanseite zu definieren, um zwischen allen FP.- Seiten hin und her zu springen. Scheinbar hält Floorplan im Hintergrund alle Objekte aller FP.-Seiten vor. &lt;br /&gt;
&lt;br /&gt;
Einige Beispielbefehle stehen direkt oben bei der Definition des Dummys.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
*Allgemeine Funktionsweise:&amp;lt;br&amp;gt; &lt;br /&gt;
Die js- Datei scannt beim Aufruf, Refresh, oder der Änderung eines, oder mehrerer Objekte auf der Seite, alle Objekte der Seite, bzw. des Raums. Dabei wird geprüft ob der Wert des Dummy von &amp;quot;none&amp;quot; abweicht. Trifft dies zu, wird dieser Wert an den Browser als neue Adresse für das aktuell angezeigte Fenster übergeben. Wird hier kein gültiger Link übergeben, zeigt der Browser eine leere Seite, oder eine Fehlermeldung an.&amp;lt;br&amp;gt; &lt;br /&gt;
Damit beim Aufbau der neuen Seite (sofern sie ebenfalls den Dummy enthält) der Browser nicht sofort zurück springt, oder in Endlosschleife neu läd, setzt das Notify den Dummy nach wenigen Sekunden wieder auf &amp;quot;none&amp;quot;. &#039;&#039;&#039;Falls jedoch die gewünschte Seite nicht erscheint, muss diese Reset- Zeit experimentell etwas verlängert weden. Hier hängt die korrekte Funktion von der Reaktionszeit des Browsers und der aufzurufenden Seite ab.&#039;&#039;&#039; Nachdem die Zielseite im Browser erschienen ist, kann das Spiel bei Bedarf von vorn beginnen. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Funktionsweise &amp;quot;fhemweb_xyz.js&amp;quot; und &amp;quot;UpdateLine&amp;quot;/&amp;quot;FW_widgets&amp;quot;:&amp;lt;br&amp;gt; &lt;br /&gt;
Diese Beschreibung beruht z.T. auf meinen persönlich gemachten Erfahrungen und nicht auf genauen Kenntnissen!&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Eine Datei mit Namen &amp;quot;fhemweb_xyz.js&amp;quot; (wobei &amp;quot;xyz&amp;quot; für einen frei wählbaren Namen steht) im Ordner &amp;quot;fhem/www/pgm2/&amp;quot; wird von FHEM automatisch in die Webseite eingbunden und abgearbeitet.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Funktion &amp;quot;UpdateLine&amp;quot;/&amp;quot;FW_widgets&amp;quot; besteht aus einem &amp;quot;Rahmen&amp;quot; der den darin enthaltenen Code jeweils ein Mal ausführt, bei: Aufruf und Refresh der Seite, Änderung eines, oder mehrerer Objekte auf der Seite, bzw. im Raum. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Der Rahmen braucht mindestens folgenden Code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
function&lt;br /&gt;
FW_xyzUpdateLine(d){&lt;br /&gt;
&lt;br /&gt;
// eigenen js- Code hier einfügen&lt;br /&gt;
// &amp;quot;xyz&amp;quot; steht für frei wählbare, aber einheitliche Bezeichnung&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
FW_widgets[&#039;xyz&#039;] = {&lt;br /&gt;
  updateLine:FW_xyzUpdateLine&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es werden dann jeweils ein Mal alle Objekte der Seite, bzw. des Raums abgefragt und ihre Daten (ID, Wert usw.) nacheinander im Array &amp;quot;d&amp;quot; zur Verfügung gestellt. Gesteuert wird dieses Verhalten aus der Datei &amp;quot;fhemweb.js&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9095</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9095"/>
		<updated>2014-12-29T14:16:42Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: /* Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ende ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9094</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9094"/>
		<updated>2014-12-29T14:14:40Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9093</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9093"/>
		<updated>2014-12-29T14:12:43Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9092</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9092"/>
		<updated>2014-12-29T14:09:07Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9091</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9091"/>
		<updated>2014-12-29T14:07:26Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9090</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9090"/>
		<updated>2014-12-29T14:06:34Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: /* Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Rahmen braucht mindestens folgenden Code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
function&lt;br /&gt;
FW_xyzUpdateLine(d){&lt;br /&gt;
&lt;br /&gt;
// eigenen js- Code hier einfügen&lt;br /&gt;
// &amp;quot;xyz&amp;quot; steht für frei wählbare, aber einheitliche Bezeichnung&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
FW_widgets[&#039;xyz&#039;] = {&lt;br /&gt;
  updateLine:FW_xyzUpdateLine&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9089</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9089"/>
		<updated>2014-12-29T14:05:02Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9088</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9088"/>
		<updated>2014-12-29T14:04:00Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9086</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9086"/>
		<updated>2014-12-29T14:01:43Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9085</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9085"/>
		<updated>2014-12-29T13:59:34Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; # Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9084</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9084"/>
		<updated>2014-12-29T13:58:31Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9083</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9083"/>
		<updated>2014-12-29T13:55:43Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion &amp;quot;mit Radiotext&amp;quot; produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}&lt;br /&gt;
&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9082</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9082"/>
		<updated>2014-12-29T13:49:34Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Module verwendet werden! }}&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9081</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9081"/>
		<updated>2014-12-29T13:45:52Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039; Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9080</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9080"/>
		<updated>2014-12-29T13:45:23Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9079</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9079"/>
		<updated>2014-12-29T13:44:46Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
Download Beispieldatei &amp;quot;WebStreams.txt&amp;quot;: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9078</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9078"/>
		<updated>2014-12-29T13:39:31Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9077</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9077"/>
		<updated>2014-12-29T13:38:15Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9076</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9076"/>
		<updated>2014-12-29T13:36:15Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Attribute:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport: Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice: -ao Parameter für mplayer, um das output device anzugeben&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss ein Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer und des amixer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. &lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9075</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9075"/>
		<updated>2014-12-29T13:19:16Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
Kommandos innerhalb FHEM:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Wiedergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Darin wird die Liste der Sender gespeichert in der Form &amp;quot;Sendername|URL&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo nano WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Einfach in die fhem.cfg einfügen und speichern:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusatzufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen und speichern:&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9074</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9074"/>
		<updated>2014-12-29T13:00:34Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Es muss Internetzugang eingerichtet sein.&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo apt-get install mplayer&lt;br /&gt;
user@debian:~# sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo addgroup fhem dialout &lt;br /&gt;
user@debian:~# sudo addgroup fhem mail&lt;br /&gt;
user@debian:~# sudo addgroup fhem audio&lt;br /&gt;
user@debian:~# sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Steuerbefehle ==&lt;br /&gt;
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Widergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define telnetPort telnet 7072&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei &amp;quot;WebStreams.txt&amp;quot; erstellt und gefüllt werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo nano /opt/fhem/WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit dem Inhalt:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u&lt;br /&gt;
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u&lt;br /&gt;
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u&lt;br /&gt;
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u&lt;br /&gt;
Radio Fritz|http://fritz.de/livemp3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Und der Berechtigung:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo chown fhem:root WebStreams.txt&lt;br /&gt;
user@debian:~# sudo chmod 660 WebStreams.txt&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Radio selbst wird beispielsweise so definiert (CFG):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Stream Radio:&lt;br /&gt;
define SRadio StreamRadio /opt/fhem/WebStreams.txt&lt;br /&gt;
attr SRadio telnetport 7072&lt;br /&gt;
# attr SRadio volume_command amixer cset numid=2 -- %s%%&lt;br /&gt;
attr SRadio room Radio&lt;br /&gt;
attr SRadio group Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Das attr. &amp;quot;volume_command&amp;quot; steht standartmäßig (undefiniert) auf &amp;quot;amixer cset numid=2 -- %s%%&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu bitte die Ausgabe von &amp;quot;sudo amixer controls&amp;quot; wie oben gezeigt heranziehen.&lt;br /&gt;
&lt;br /&gt;
== Zusazufunktion Volume- Slider und Bedienung per FS20- Wandtaster ==&lt;br /&gt;
Einfach in die fhem.cfg einfügen und speichern:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummy für Volume- Slider&lt;br /&gt;
define Dum_Volume_D dummy&lt;br /&gt;
attr Dum_Volume_D alias Volume&lt;br /&gt;
attr Dum_Volume_D setList state:slider,0,1,100&lt;br /&gt;
attr Dum_Volume_D webCmd state&lt;br /&gt;
attr Dum_Volume_D room Radio&lt;br /&gt;
attr Dum_Volume_D group Volume&lt;br /&gt;
&lt;br /&gt;
# Notify für Volume- Slider&lt;br /&gt;
define Func_Volume_N notify Dum_Volume_D {\&lt;br /&gt;
my $vol = Value(&amp;quot;Dum_Volume_D&amp;quot;);;\&lt;br /&gt;
fhem &amp;quot;set SRadio VOLUME $vol&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
attr Func_Volume_N room Radio&lt;br /&gt;
&lt;br /&gt;
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-&lt;br /&gt;
define Radio FS20 1111 11&lt;br /&gt;
attr Radio dummy 1&lt;br /&gt;
attr Radio group Geräte_Taster&lt;br /&gt;
attr Radio icon rc_RADIO&lt;br /&gt;
attr Radio room Radio&lt;br /&gt;
&lt;br /&gt;
# Radio ein-/ ausschalten und Lautstärke einstellen: &lt;br /&gt;
define Func_Radio_Play_N notify Radio:* { \&lt;br /&gt;
\&lt;br /&gt;
  my $R_State = (ReadingsVal(&amp;quot;Radio&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;off&amp;quot;));;\&lt;br /&gt;
  my $Vol_plus = Value(&amp;quot;Dum_Volume_D&amp;quot;) + 10;;\&lt;br /&gt;
  my $Vol_minus = Value(&amp;quot;Dum_Volume_D&amp;quot;) - 10;;\&lt;br /&gt;
\&lt;br /&gt;
  if ($R_State eq &amp;quot;on&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio PLAY Eins Live&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;off&amp;quot;) { \&lt;br /&gt;
    fhem(&amp;quot;set SRadio STOP&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;gt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 100&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;lt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D 0&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimup&amp;quot; and $Vol_plus &amp;lt;= 100) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_plus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($R_State eq &amp;quot;dimdown&amp;quot; and $Vol_minus &amp;gt;= 0) { \&lt;br /&gt;
    fhem(&amp;quot;set Dum_Volume_D $Vol_minus&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_Radio_Play_N room Radio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusazufunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==&lt;br /&gt;
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.&amp;lt;br&amp;gt;&lt;br /&gt;
Einfach in die fhem.cfg einfügen und speichern:&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,&lt;br /&gt;
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.&lt;br /&gt;
define Func_VolAut_N notify myTTS { \&lt;br /&gt;
\&lt;br /&gt;
  my $Radio = (Value(&amp;quot;SRadio&amp;quot;));;\&lt;br /&gt;
  my $Station = ReadingsVal(&amp;quot;SRadio&amp;quot;, &amp;quot;StreamURL&amp;quot;, &amp;quot;&amp;quot;);;\&lt;br /&gt;
  my $Old_Vol = (OldValue(&amp;quot;Dum_Volume_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
  if ($Radio eq &amp;quot;playing&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set SRadio STOP ;; set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
        fhem(&amp;quot;define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
  if ($Radio eq &amp;quot;stopped&amp;quot;) { \&lt;br /&gt;
        fhem(&amp;quot;set Dum_Volume_D 99&amp;quot;);;\&lt;br /&gt;
    	fhem(&amp;quot;define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol&amp;quot;);;\&lt;br /&gt;
  } \&lt;br /&gt;
}&lt;br /&gt;
attr Func_VolAut_N room Radio&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9071</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9071"/>
		<updated>2014-12-29T11:43:02Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&lt;br /&gt;
sudo apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo addgroup fhem dialout &lt;br /&gt;
sudo addgroup fhem mail&lt;br /&gt;
sudo addgroup fhem audio&lt;br /&gt;
sudo addgroup fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;user@debian:~# sudo groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Steuerbefehle ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo mplayer -ao alsa http://fritz.de/livemp3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Lautstärke kann während der Widergabe mit &amp;quot;/&amp;quot; und &amp;quot;*&amp;quot; geändert werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese lesen wir wie folgt aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo amixer controls&lt;br /&gt;
numid=1,iface=MIXER,name=&#039;PCM Playback Switch&#039;&lt;br /&gt;
numid=2,iface=MIXER,name=&#039;PCM Playback Volume&#039;&lt;br /&gt;
numid=3,iface=MIXER,name=&#039;Mic Capture Switch&#039;&lt;br /&gt;
numid=4,iface=MIXER,name=&#039;Mic Capture Volume&#039;&lt;br /&gt;
numid=5,iface=MIXER,name=&#039;Auto Gain Control&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die Anzahl der Steuermöglichkeiten und die zugehörige &amp;quot;numid&amp;quot; variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls &amp;quot;PCM Playback Volume&amp;quot;(2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo amixer cset numid=1 -- 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es wird der &amp;quot;PCM Playback Switch&amp;quot; von 0 auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9070</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9070"/>
		<updated>2014-12-29T11:09:09Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&lt;br /&gt;
apt-get install alsa-utils&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root@debian:~# groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Steuerbefehle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9069</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9069"/>
		<updated>2014-12-29T10:55:25Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root@debian:~# groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Steuerbefehle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9068</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9068"/>
		<updated>2014-12-29T10:54:34Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Überprüfen kann man die Zuordnung mit:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;root@debian:~# groups fhem&lt;br /&gt;
fhem : dialout mail sudo audio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testen des mplayer und auslesen der Steuerbefehle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9067</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9067"/>
		<updated>2014-12-29T09:52:49Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9066</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9066"/>
		<updated>2014-12-29T09:52:18Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9064</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9064"/>
		<updated>2014-12-29T09:51:02Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get install mplayer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9063</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9063"/>
		<updated>2014-12-29T09:50:15Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install mplayer&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;visudo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;fhem    ALL=NOPASSWD: ALL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei jetzt speichern und den Rechner neu starten.&amp;lt;br&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9062</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9062"/>
		<updated>2014-12-29T09:48:41Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install mplayer&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig,&amp;lt;br&amp;gt; &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
visudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fhem    ALL=NOPASSWD: ALL&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei nun speichern und den Rechner neu starten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9061</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9061"/>
		<updated>2014-12-29T09:45:42Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install mplayer&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, &lt;br /&gt;
wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
visudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fhem    ALL=NOPASSWD: ALL&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei nun speichern und den Rechner neu starten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9059</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9059"/>
		<updated>2014-12-29T09:43:47Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]&amp;lt;br&amp;gt;   &lt;br /&gt;
StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]&amp;lt;br&amp;gt; &lt;br /&gt;
StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Was kann das Modul? ==&lt;br /&gt;
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.&lt;br /&gt;
Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.&lt;br /&gt;
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.&lt;br /&gt;
Siehe Screenshots :-)&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen Betriebssystem ==&lt;br /&gt;
Installation des mplayer, falls nicht bereits vorhanden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install mplayer&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Berechtigungen für Benutzer fhem unter Linux vorbereiten.&lt;br /&gt;
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll: &lt;br /&gt;
&lt;br /&gt;
Benutzer fhem zu den Gruppen &amp;quot;dialout&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;mail&amp;quot; und &amp;quot;sudoers&amp;quot; hinzufügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
addgroup fhem dialout &lt;br /&gt;
addgroup fhem mail&lt;br /&gt;
addgroup fhem audio&lt;br /&gt;
gpasswd -a fhem sudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten der sudo- Konfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
visudo&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fhem    ALL=NOPASSWD: ALL&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Datei nun speichern und den Rechner neu starten.&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition unter FHEM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Temporär: Bearbeitungsquellen aus Thread ==&lt;br /&gt;
* Das angehängte Script &amp;quot;74_StreamRadio&amp;quot; ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM&lt;br /&gt;
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von &amp;quot;|&amp;quot; und dann die URL enthalten.&lt;br /&gt;
   also z.B.&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
testradio|http://bla.com/34.m3u&lt;br /&gt;
&lt;br /&gt;
. Eine Sample Datei ist ebenfalls dabei&lt;br /&gt;
&lt;br /&gt;
Define&lt;br /&gt;
Code: [Auswählen]&lt;br /&gt;
&lt;br /&gt;
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt&lt;br /&gt;
&lt;br /&gt;
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.&lt;br /&gt;
&lt;br /&gt;
Attribute&lt;br /&gt;
volume_command &amp;lt;= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. &amp;quot;amixer cset numid=1 -- %s%%&amp;quot;. Dies ist der Default, nach einem neuen define&lt;br /&gt;
telnetport &amp;lt;= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein&lt;br /&gt;
aodevice &amp;lt;= -ao Parameter für mplayer, um das output device anzugeben&lt;br /&gt;
&lt;br /&gt;
Commands&lt;br /&gt;
set &amp;lt;name&amp;gt; PLAY &amp;lt;StreamURL/Stationname aus Playlist&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; STOP&lt;br /&gt;
set &amp;lt;name&amp;gt; VOLUME &amp;lt;Lautstärke in %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version&lt;br /&gt;
(Update erfolgt immer hier im ersten Posting)&lt;br /&gt;
&lt;br /&gt;
V0.5&lt;br /&gt;
* Reading für &amp;quot;state&amp;quot; funktioniert wieder&lt;br /&gt;
* Die Playlist wird nach Namen sortiert angezeigt&lt;br /&gt;
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden&lt;br /&gt;
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen&lt;br /&gt;
&lt;br /&gt;
- V.04 Neues Attribut &amp;quot;aodev&amp;quot;, um das aodevice für mplayer festzulegen&lt;br /&gt;
- V0.3 Neuer Befehl &amp;quot;VOLUME&amp;quot;, Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein&lt;br /&gt;
- V0.2 Umbau auf Benutzung von BlockingCall&lt;br /&gt;
- V0.1 (initiale Version&lt;br /&gt;
&lt;br /&gt;
Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Noch offene Punkte&lt;br /&gt;
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall&lt;br /&gt;
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9056</id>
		<title>Modul StreamRadio Einrichtungshilfe</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Modul_StreamRadio_Einrichtungshilfe&amp;diff=9056"/>
		<updated>2014-12-29T09:03:22Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &amp;#039;&amp;#039;&amp;#039;  Dieser Eintrag basiert auf diesem Post: [http://forum.fhem.de/in…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Eintrag basiert auf diesem Post: [http://forum.fhem.de/index.php/topic,19378.msg131637.html#msg131637]&amp;lt;br&amp;gt;   &lt;br /&gt;
Ein transparentes Icon für den Dummy: [http://www.fhemwiki.de/wiki/Datei:Transparent.png]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufgabenstellung ==&lt;br /&gt;
Auf einem Tablet mit Floorplan, Dashboard oder FHEM &amp;quot;pur&amp;quot; soll bei auflaufen eines Events (Anruf, Bewegungsmelder, Türklingel usw.) automatisch auf eine andere Webseite umgeschaltet werden. Möglich sein soll dabei das Umleiten auf andere Floorplan-, FHEM-, oder sogar externe Webseiten. Absolute, sowie relative Links sollen genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
So kann entsprechend des Events z.B. der Anrufer oder auch eine Seite mit dem Kamerabild des Besuchers angezeigt werden. Solange wir uns innerhalb von FHEM befinden, soll auch ein automatisches Zurück- oder Weiterschalten möglich sein. Dadurch kann z.B. eine &amp;quot;rotierende&amp;quot; Anzeige verschiedener FHEM- Seiten realisiert werden. Oder nach einer Idee des Forenmitglieds Rince, bei Alarm ein &amp;quot;Sperrbildschirm&amp;quot; aufgerufen werden, der das Bedienen des Tablets vorläufig unmöglich macht.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Voraussetzung ist ein aktuelles, upgedatetes FHEM. In der WEB- Instanz, mit der die Funktion genutzt werden soll, muss &amp;quot;Longpoll&amp;quot; aktiv sein. Dadurch wird erreicht, dass der Wert des Dummy sofort bei setzen des Seitenlinks aktualisiert wird. Auf Clientseite (Tablet) muss der genutzte Browser Javascript unterstützen, sowie auch aktiviert haben.&lt;br /&gt;
&lt;br /&gt;
== Lösung ==&lt;br /&gt;
Wir erstellen eine js- Datei mit dem Namen &amp;quot;fhemweb_pageswap.js&amp;quot; und kopieren sie einfach in den Ordner fhem/www/pgm2/. Dazu kann eine vorhandene js- Datei kopiert, umbenannt und der Inhalt ersetzt werden. Sie startet nach einem Refresh der Webseite oder &amp;quot;shutdown restart&amp;quot; von selbst: &lt;br /&gt;
&lt;br /&gt;
fhemweb_pageswap.js :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// Datei: fhemweb_pageswap.js&lt;br /&gt;
// Von FHEM aus initiiertes Wechseln der angezeigten Seite:&lt;br /&gt;
&lt;br /&gt;
function&lt;br /&gt;
FW_pageswapUpdateLine(d){&lt;br /&gt;
&lt;br /&gt;
 var id = d[0];                                  // id der Objekte auf der Seite&lt;br /&gt;
 var val = d[1];                                 // Wert der Objekte auf der Seite&lt;br /&gt;
&lt;br /&gt;
  if (id == &amp;quot;Dum_pageswap_D&amp;quot; &amp;amp;&amp;amp; val != &amp;quot;none&amp;quot;){&lt;br /&gt;
     window.location.href = &amp;quot;&amp;quot;+val               // wenn Dummy Wert enthaelt, wechseln zu neuer Seite&lt;br /&gt;
                                                 // Variable &amp;quot;val&amp;quot; wird nicht geprueft und muss sinnvollen Wert enthalten&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FW_widgets[&#039;pageswap&#039;] = {&lt;br /&gt;
  updateLine:FW_pageswapUpdateLine&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin legen wir in der fhem.cfg einen Dummy und ein Notify an. Zum Dummy gehört noch ein transparentes Icon, mit dessen Hilfe wir den Dummy völlig unsichtbar auf Floorplanseiten unterbringen können. Der Link zum Icon befindet sich ganz oben im  Beitrag. Es wird in den Ordner /images/default/ kopiert.&lt;br /&gt;
&lt;br /&gt;
In die cfg:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Bei Event FHEM- Seite umschalten; &lt;br /&gt;
# longpoll muss aktiv sein&lt;br /&gt;
# Benutzung: &amp;quot;set Dum_pageswap_D &amp;lt;Seitenlink&amp;gt;&amp;quot; &lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D /fhem/floorplan/mein_floorplan_1&amp;quot;&lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D http://192.168.0.1:8085/fhem/floorplan/mein_floorplan_1&amp;quot;&lt;br /&gt;
# Beispiel: &amp;quot;set Dum_pageswap_D www.google.de&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Dummy für pageswap:&lt;br /&gt;
define Dum_pageswap_D dummy&lt;br /&gt;
attr Dum_pageswap_D devStateIcon .*:Transparent&lt;br /&gt;
&lt;br /&gt;
# Notify für pageswap:&lt;br /&gt;
define Func_pageswap_N notify Dum_pageswap_D { \&lt;br /&gt;
\&lt;br /&gt;
  my $ps_Val = (Value(&amp;quot;Dum_pageswap_D&amp;quot;));;\&lt;br /&gt;
\&lt;br /&gt;
   if ($ps_Val ne &amp;quot;none&amp;quot;) { \&lt;br /&gt;
      fhem(&amp;quot;define reset_pageswap at +00:00:01 set Dum_pageswap_D none&amp;quot;);;\&lt;br /&gt;
   }\&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Bei Systemstart Dummy auf &amp;quot;none&amp;quot; initialisieren:&lt;br /&gt;
define Func_Start_Init_N notify global:INITIALIZED.* { \&lt;br /&gt;
\&lt;br /&gt;
fhem(&amp;quot;set Dum_pageswap_D none&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
Die Namen aus den Beispieldateien sollten zunächst einmal nicht geändert werden, da entsprechende Abhängigkeiten bestehen. Hat man das Zusammenspiel verstanden kann umbenannt, geändert und nach Bedarf erweitert werden.&lt;br /&gt;
&lt;br /&gt;
Der Dummy muss bei Systemstart auf &amp;quot;none&amp;quot; initialisiert werden. Eine entsprechende Funktion ist im Beispiel enthalten.&lt;br /&gt;
&lt;br /&gt;
Ist alles eingerichtet, geht man auf eine FHEM- Seite, auf der der Dummy definiert wurde und setzt z.B. per FS20- Taster und einem weiteren Notify einen set- Befehl mit einem Link ab, der zu einer anderen Seite des eigenen Systems passt. Dann sollte die Seite dort hin wechseln. Auch externe Webseiten sind möglich mit der Einschränkung, dass man von dort per Hand zu FHEM zurücknavigieren muss. Innerhalb FHEM hingegen, springt man einfach zwischen verschiedenen Seiten hin und her, indem man auf jeder dieser Seiten den &amp;quot;pageswap-&amp;quot; Dummy definiert. Bei meinen Tests mit Floorplan hat es ausgereicht den Dummy auf nur einer Floorplanseite zu definieren, um zwischen allen FP.- Seiten hin und her zu springen. Scheinbar hält Floorplan im Hintergrund alle Objekte aller FP.-Seiten vor. &lt;br /&gt;
&lt;br /&gt;
Einige Beispielbefehle stehen direkt oben bei der Definition des Dummys.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Funktion ==&lt;br /&gt;
&lt;br /&gt;
*Allgemeine Funktionsweise:&amp;lt;br&amp;gt; &lt;br /&gt;
Die js- Datei scannt beim Aufruf, Refresh, oder der Änderung eines, oder mehrerer Objekte auf der Seite, alle Objekte der Seite, bzw. des Raums. Dabei wird geprüft ob der Wert des Dummy von &amp;quot;none&amp;quot; abweicht. Trifft dies zu, wird dieser Wert an den Browser als neue Adresse für das aktuell angezeigte Fenster übergeben. Wird hier kein gültiger Link übergeben, zeigt der Browser eine leere Seite, oder eine Fehlermeldung an.&amp;lt;br&amp;gt; &lt;br /&gt;
Damit beim Aufbau der neuen Seite (sofern sie ebenfalls den Dummy enthält) der Browser nicht sofort zurück springt, oder in Endlosschleife neu läd, setzt das Notify den Dummy nach einer Sekunde wieder auf &amp;quot;none&amp;quot;. Nun kann das Spiel auf der neuen Seite bei Bedarf von vorn beginnen.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Funktionsweise &amp;quot;fhemweb_xyz.js&amp;quot; und &amp;quot;UpdateLine&amp;quot;/&amp;quot;FW_widgets&amp;quot;:&amp;lt;br&amp;gt; &lt;br /&gt;
Diese Beschreibung beruht z.T. auf meinen persönlich gemachten Erfahrungen und nicht auf genauen Kenntnissen!&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Eine Datei mit Namen &amp;quot;fhemweb_xyz.js&amp;quot; (wobei &amp;quot;xyz&amp;quot; für einen frei wählbaren Namen steht) im Ordner &amp;quot;fhem/www/pgm2/&amp;quot; wird von FHEM automatisch in die Webseite eingbunden und abgearbeitet.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Funktion &amp;quot;UpdateLine&amp;quot;/&amp;quot;FW_widgets&amp;quot; besteht aus einem &amp;quot;Rahmen&amp;quot; der den darin enthaltenen Code jeweils ein Mal ausführt, bei: Aufruf und Refresh der Seite, Änderung eines, oder mehrerer Objekte auf der Seite, bzw. im Raum. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Der Rahmen braucht mindestens folgenden Code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
function&lt;br /&gt;
FW_xyzUpdateLine(d){&lt;br /&gt;
&lt;br /&gt;
// eigenen js- Code hier einfügen&lt;br /&gt;
// &amp;quot;xyz&amp;quot; steht für frei wählbare, aber einheitliche Bezeichnung&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
FW_widgets[&#039;xyz&#039;] = {&lt;br /&gt;
  updateLine:FW_xyzUpdateLine&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es werden dann jeweils ein Mal alle Objekte der Seite, bzw. des Raums abgefragt und ihre Daten (ID, Wert usw.) nacheinander im Array &amp;quot;d&amp;quot; zur Verfügung gestellt. Gesteuert wird dieses Verhalten aus der Datei &amp;quot;fhemweb.js&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Anleitung_Exim4_Debian_GMX.pdf&amp;diff=8361</id>
		<title>Datei:Anleitung Exim4 Debian GMX.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Anleitung_Exim4_Debian_GMX.pdf&amp;diff=8361"/>
		<updated>2014-11-05T06:59:54Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: Fiedel lud eine neue Version von „Datei:Anleitung Exim4 Debian GMX.pdf“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=8350</id>
		<title>E-Mail senden</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=8350"/>
		<updated>2014-11-04T12:27:15Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um aus FHEM heraus &#039;&#039;&#039;E-Mail senden&#039;&#039;&#039; zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Anleitung zur Einrichtung von Exim4 auf Debian mit GMX als Smarthost:[http://www.fhemwiki.de/w/images/f/f6/Anleitung_Exim4_Debian_GMX.pdf PDF]}}&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
=== FritzBox 7170 (non-chroot) oder &amp;quot;reine&amp;quot; Linuxe ===&lt;br /&gt;
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; | /usr/bin/mail send -i - -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
Darauf achten, dass der fhem-User Mails senden darf (in richtige Gruppe eintragen. Ggf. vorher einmal su fhem und probieren).&lt;br /&gt;
&lt;br /&gt;
=== Fritz!Box 7390 ===&lt;br /&gt;
Auf der [[AVM Fritz!Box|FritzBox 7390]] ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).&lt;br /&gt;
&lt;br /&gt;
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z.&amp;amp;nbsp;B. in 99_myUtils.pm) die Zeile &#039;&#039;use FritzBoxUtils;&#039;&#039; einfügen.&lt;br /&gt;
&lt;br /&gt;
Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub fb_mail {&lt;br /&gt;
 my $rcpt = $_[0];&lt;br /&gt;
 my $subject = $_[1];&lt;br /&gt;
 my $text = $_[2];&lt;br /&gt;
 system(&amp;amp;quot;/bin/echo \&amp;amp;quot;$text\&amp;amp;quot; &amp;amp;gt; /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;/sbin/mailer send -i &#039;/var/tmp/fhem_nachricht.txt&#039; -s \&amp;amp;quot;$subject\&amp;amp;quot; -t \&amp;amp;quot;$rcpt\&amp;amp;quot;&amp;amp;quot;);&lt;br /&gt;
 system(&amp;amp;quot;rm /var/tmp/fhem_nachricht.txt&amp;amp;quot;);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufruf dann mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;{ fb_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
bzw. &lt;br /&gt;
:&amp;lt;code&amp;gt;{ FB_mail(&#039;empfaenger@mail.de&#039;,&#039;Subject&#039;,&#039;text 123&#039;) }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices  ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT  ===&lt;br /&gt;
Die Anleitung wurde mit einer frühen Beta von Barrier Breaker (r391xx) mit einem TP_Lind WDR 4900 getestet. Da &amp;quot;sendEmail&amp;quot; nicht als Package vorliegt wird in dieser Anleitung &amp;quot;ssmtp&amp;quot; verwendet.&lt;br /&gt;
Die Installation erfolgt mittels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Packete libopenssl und zlib mit installiert. Damit ssmtp funktioniert müssen die Dateien /etc/ssmtp/ssmtp.conf und /etc/ssmtp/revaliases angepasst werden.&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/ssmtp.conf &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;root=arnold@gmx.net&lt;br /&gt;
mailhub=mail.gmx.net:465&lt;br /&gt;
rewriteDomain=gmx.net&lt;br /&gt;
hostname=gmx.net&lt;br /&gt;
FromLineOverride=YES&lt;br /&gt;
UseTLS=YES&lt;br /&gt;
#UseSTARTTLS=YES&lt;br /&gt;
AuthUser=arnold@gmx.net&lt;br /&gt;
AuthPass=Passwort_von_arnold@gmx.net&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root:arnold@gmx.net:mail.gmx.net:465&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen (von der RPi-Anleitung übernommen):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub &lt;br /&gt;
OpenWRTMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $sender = &amp;quot;dockstar\@heye-tammo.de&amp;quot;; &lt;br /&gt;
 Log 1, &amp;quot;sendEmail RCP: $rcpt, Subject: $subject, Text: $text&amp;quot;;&lt;br /&gt;
 $ret .= qx(echo -e &#039;to:$rcpt\n from:$sender\nsubject:$subject\n$text\n&#039; | ssmtp $rcpt);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;quot;sendEmail returned: $ret&amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab hier den entsprechenden Abschnitt unter &amp;quot;Raspberry Pi&amp;quot; lesen.&lt;br /&gt;
&lt;br /&gt;
=== Synology DiskStation ===&lt;br /&gt;
Beim DSM 3.2 gab es keinen &amp;lt;code&amp;gt;sendmail&amp;lt;/code&amp;gt;-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der &amp;lt;code&amp;gt;php-mail&amp;lt;/code&amp;gt;-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub sendmail($$$) {&lt;br /&gt;
 my($empf, $subj, $nachricht) = @_;&lt;br /&gt;
 system(&amp;amp;quot;php -r &#039;mail(\&amp;amp;quot;$empf\&amp;amp;quot;,\&amp;amp;quot;$subj\&amp;amp;quot;,\&amp;amp;quot;$nachricht\&amp;amp;quot;);&#039;&amp;amp;quot;);&lt;br /&gt;
 undef;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem [[Raspberry Pi]] noch sendEmail nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendEmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
sub &lt;br /&gt;
DebianMail &lt;br /&gt;
{ &lt;br /&gt;
 my $rcpt = shift;&lt;br /&gt;
 my $subject = shift; &lt;br /&gt;
 my $text = shift; &lt;br /&gt;
 my $ret = &amp;amp;quot;&amp;amp;quot;;&lt;br /&gt;
 my $sender = &amp;amp;quot;absender\@account.de&amp;amp;quot;; &lt;br /&gt;
 my $konto = &amp;amp;quot;kontoname\@account.de&amp;amp;quot;;&lt;br /&gt;
 my $passwrd = &amp;amp;quot;passwrd&amp;amp;quot;;&lt;br /&gt;
 my $provider = &amp;amp;quot;smtp.provider.de:25&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail RCP: $rcpt&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Subject: $subject&amp;amp;quot;;&lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail Text: $text&amp;amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $ret .= qx(sendEmail -f &#039;$sender&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=no -o message-charset=utf-8);&lt;br /&gt;
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string &lt;br /&gt;
 Log 1, &amp;amp;quot;sendEmail returned: $ret&amp;amp;quot;; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die TLS Verschlüsselung (ehem. SSL) zu nutzen, muss in der 4. letzten Zeile tls=auto verwendet werden. Sollte anschließend keine Mail verschickt werden, siehe Probleme.&lt;br /&gt;
&lt;br /&gt;
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit &amp;quot;Transferzeichen&amp;quot;, wie @ oder&amp;amp;#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.&lt;br /&gt;
&lt;br /&gt;
Siehe auch commandref:&lt;br /&gt;
* The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).&lt;br /&gt;
* The macro&amp;amp;#160;%&amp;amp;lt;parameter&amp;amp;gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\&lt;br /&gt;
 DebianMail(&#039;email@@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in allen anderen Fällen muss die Maskierung entfallen:&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Sonstiges at *01:00:00 {\&lt;br /&gt;
 DebianMail(&#039;email@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;);;\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BeagleBoard-xM ===&lt;br /&gt;
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm &#039;&#039;sendEmail&#039;&#039; wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich &#039;&#039;sendEmail&#039;&#039; als Source herunterladen. Das geht am einfachsten per &#039;&#039;wget&#039;&#039;, welches man ebenfalls erst installieren muss (aber aus einem Repository).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ zypper in wget&lt;br /&gt;
$ cd /opt&lt;br /&gt;
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz&lt;br /&gt;
$ tar xvfz sendEmail-v1.56.tar.gz&lt;br /&gt;
$ cd sendEmail-v1.56&lt;br /&gt;
$ cp sendMail /usr/local/bin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Version 1.56 von &#039;&#039;sendEmail&#039;&#039; ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
# Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile): &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;sendEmail -f absender@domain.de -u &amp;quot;%1&amp;quot; -m &amp;quot; &amp;quot; -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header=&amp;quot;X-Message-Flag: FHEM&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Beispiel fhem.cfg&lt;br /&gt;
## Mail wenn sich der Status von Heizung.* oder Hzg.* ändert &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Heizung notify Heizung.*|Hzg.* { system(&amp;quot;wmail @:%&amp;quot;)}&amp;lt;/code&amp;gt;&lt;br /&gt;
## Mail bei Signal Aussentemperatur (für dieses Beispiel wird [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate getstate] benötigt) &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define Mail_Aussentemperatur notify Aussentemperatur {\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;my ($val);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;$val = fhem &amp;quot;getstate @&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;@: $val\&amp;quot;&amp;quot;);;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
=== sendEmail ===&lt;br /&gt;
Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.&lt;br /&gt;
&lt;br /&gt;
Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ SUB-Routinen-Name(&#039;EMailAdresse@Mail.Domain&#039;,&#039;Test&#039;,&#039;Test-Text&#039;);; }&amp;lt;/code&amp;gt;&lt;br /&gt;
und ersetzt &#039;&#039;SUB-Routinen-Name&#039;&#039; durch den Namen der in 99_myUtils erzeugten Prozedur. Statt &#039;&#039;EMailAdresse@Mail.Domain&#039;&#039; trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &amp;amp;lt;Enter&amp;amp;gt; (nicht &amp;quot;save&amp;quot;). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt. &lt;br /&gt;
&lt;br /&gt;
Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z.&amp;amp;nbsp;B. via Putty) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -f &#039;fhemsystem@meinedomain.tld&#039; -t &#039;ich@meinedomain.tld&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;meinmailserver.meinedomain.de&#039; -xu &#039;fhemmailer&#039; -xp &#039;geheimespassword&#039; -o tls=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keine Mail mit TLS Verschlüsselung ===&lt;br /&gt;
Den Test über die Konsole durchführen. Erhält man folgende Fehlermeldung:&lt;br /&gt;
&#039;&#039;invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332&#039;&#039;&lt;br /&gt;
muss auf dem Raspberry folgende Datei angepasst werden: &#039;&#039;/usr/bin/sendEmail&#039;&#039;.&lt;br /&gt;
In Zeile 1907 muss&lt;br /&gt;
 if (! IO::Socket::SSL-&amp;gt;start_SSL($SERVER, SSL_version =&amp;gt; &#039;SSLv3 TLSv1&#039;)) {&lt;br /&gt;
&lt;br /&gt;
in folgendes geändert werden&lt;br /&gt;
  if (! IO::Socket::SSL-&amp;gt;start_SSL($SERVER, SSL_version =&amp;gt; &#039;SSLv23:!SSLv2&#039;)) {&lt;br /&gt;
&lt;br /&gt;
Der frühere Tipp direkt in der SSL.pm Datei zu editieren führt zu Problemen wenn man auf FHEM per HTTPS zugreifen will und ist daher nicht zu empfehlen.&lt;br /&gt;
&lt;br /&gt;
== Email laut Log gesendet aber nicht angekommen? ==&lt;br /&gt;
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter &amp;quot;System&amp;quot; -&amp;gt; &amp;quot;Push Service&amp;quot; selbiger eingerichtet und aktiviert wurde. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:FritzBox]]&lt;br /&gt;
[[Kategorie:BeagleBoard-xM]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Anleitung_Exim4_Debian_GMX.pdf&amp;diff=8349</id>
		<title>Datei:Anleitung Exim4 Debian GMX.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Anleitung_Exim4_Debian_GMX.pdf&amp;diff=8349"/>
		<updated>2014-11-04T12:25:09Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Hauptseite&amp;diff=8206</id>
		<title>Diskussion:Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Hauptseite&amp;diff=8206"/>
		<updated>2014-10-24T06:33:27Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: /* Einbindung FLOORPLAN Einrichtungsleitfaden auf Hauptseite sinnvoll? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Archivierung der &amp;quot;Sonderhinweise&amp;quot; nach Umstellung der Forums-Software ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sonderaktivitäten nach Umstellung des Fhem Forums auf eine andere Software:&#039;&#039;&lt;br /&gt;
* Links auf einen Forenthread können nach folgendem Schema korrigiert werden:&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://forum.fhem.de/index.php?t=msg&amp;amp;th=12345&amp;amp;prevloaded=1&amp;amp;rid=0&amp;amp;start=0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:wird zu&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://forum.fhem.de/index.php/topic,12345.0.html&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Die Korrektur eines Links auf einen bestimmten Beitrag ist etwas schwieriger, da beim neuen Forum die Thread-Nummer (????? im folgenden Beispiel) notwendig ist, die in den alten Links nicht zur Verfügung steht&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://forum.fhem.de/index.php?t=msg&amp;amp;goto=77777&amp;amp;rid=111 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:wird zu&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://forum.fhem.de/index.php/topic,?????.msg77777.html#msg77777&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorschläge zur Überarbeitung der Hauptseite ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge von [[Benutzer Diskussion:Krikan|Christian]] zur Überarbeitung der [[Hauptseite]] (übernommen von [[Benutzer Diskussion:Ph1959de#Inhalt Hauptseite|hier]]):&lt;br /&gt;
# &amp;lt;strike&amp;gt;Developers Corner: &amp;quot;bessere&amp;quot; Links&amp;lt;/strike&amp;gt; (erledigt)&lt;br /&gt;
# &amp;lt;strike&amp;gt;&amp;quot;Guter Startpunkt...&amp;quot; stärker betonen/hervorheben -&amp;gt; Für Grundverständnis von Fhem zwingend zu lesen / Basislektüre&amp;lt;/strike&amp;gt;(erledigt)&lt;br /&gt;
# Tipp der Woche / des Monats: beleben/aktiver pflegen oder einstellen&lt;br /&gt;
# &amp;lt;strike&amp;gt;Entfernung der Box &amp;quot;Weitere Informationen&amp;quot; auf der Hauptseite: &amp;quot;wichtige Fhem Links&amp;quot; ist veraltet/Löschkandidat und sollte daher von Hauptseite entfernt werden. Der Link zum Forum steht bereits in der Box &amp;quot;Was ist Fhem&amp;quot;. Dort könnte auch der Link zur Fhem-Seite untergebracht werden. Doppelte Nennung auf der Hauptseite ist unnötig. &amp;quot;Glossar&amp;quot; gehört zur Box &amp;quot;Wie fange ich an?&amp;quot;. Damit wäre die Box &amp;quot;Weitere Informationen&amp;quot; überflüssig und könnte gelöscht werden.&amp;lt;/strike&amp;gt; (erledigt)&lt;br /&gt;
# &amp;lt;strike&amp;gt;Multimedia (Unterhaltungselektronik) und Z-Wave unter Hardware verlinken&amp;lt;strike&amp;gt; (erledigt)&lt;br /&gt;
# &amp;lt;strike&amp;gt;Link &amp;quot;Andere Komponeten&amp;quot; zur Forumsangleichung in &amp;quot;Andere Komponenten/Sonstige Systeme&amp;quot; umbenennen (niedrige Priorität)&amp;lt;/strike&amp;gt; (erledigt)&lt;br /&gt;
# Modul-Orientierten Einstieg auf Hauptseite einbinden (durch Infobox-Vorlagen einfach möglich)&lt;br /&gt;
# Frontends auf der Haupseite einbinden&amp;lt;br /&amp;gt;&amp;lt;hr /&amp;gt;Ist, wie auch der vorherige Punkt nicht ohne &amp;quot;Risiken&amp;quot;: irgendwie (noch diffus) wäre es mir lieber, es werden auf der Hauptseite nicht &amp;quot;alle möglichen Abkürzungen&amp;quot; angeboten, sondern die &amp;quot;Leser&amp;quot; würden häufiger über Seiten wie &amp;quot;Systemübersicht&amp;quot;, &amp;quot;Phasen...&amp;quot; etc. auf die jeweiligen Unterseiten gehen müssen. Irgendwie eine Frage der Art &amp;quot;zu welcher Arbeitsweise &#039;&#039;&#039;erziehen&#039;&#039;&#039; wir die Benutzer - und wie &#039;&#039;&#039;zwingen&#039;&#039;&#039; wir sie, die Konzepte und Grundlagen gelesen und verstanden zu haben, bevor sie in Details gehen&amp;quot;. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 08:50, 3. Sep. 2014 (UTC) &amp;lt;hr /&amp;gt; Ja, aber dann müssten die Seiten &amp;quot;Systemübersicht&amp;quot;, &amp;quot;Phasen...&amp;quot; etc. auch gut gepflegt sein, momentan machen die eher einen unfertigen (sorry) Eindruck auf mich. Und dann sind wir bei der Frage: Ist das Wiki ein Lehr- oder Nachschlagewerk? Oder wollen wir beides erreichen. Frontends finde ich wichtig, da das Wiki nach meinem Eindruck dort schmal besetzt ist und die Benutzer (ich auch) immer wieder Probleme beim WebFrontend haben. Da sind wir auch bei meiner hier irgendwo hinterlassenen Frage: Wo schreibe ich etwas über devstateIcon, webcmd usw.? Allein durch Deine heutige Umstellung der Hauptseite &amp;quot;Wo fange ich an&amp;quot;, sollte bereits einiges erreicht sein. Die, die nicht lesen wollen, werden nicht lesen.--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:25, 3. Sep. 2014 (UTC)&amp;lt;hr /&amp;gt;[[Systemübersicht]] sollte eigentlich relativ &amp;quot;in Ordnung&amp;quot; sein. Ansonsten (bei [[Planung]], etc.) ist das ein bisschen ein Henne/Ei Problem. Ich hatte gehofft, dass die lieben Leser &amp;quot;diese Wege&amp;quot; gehen und gleichzeitig aktiv mithelfen, sie &amp;quot;auszubauen&amp;quot;. [[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 11:12, 3. Sep. 2014 (UTC) &amp;lt;br /&amp;gt;&amp;lt;hr /&amp;gt;&lt;br /&gt;
::* 1.: Developers Corner: geändert, da keine (Gegen-)meinungen --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 14:29, 28. Aug. 2014 (UTC)&lt;br /&gt;
::* 5. teilweise: Unterhaltungselektronik verlinkt --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 08:38, 29. Aug. 2014 (UTC)&lt;br /&gt;
::* 2.: UliMs Einsteiger-PDF stärker betont--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 06:43, 3. Sep. 2014 (UTC)&lt;br /&gt;
::* 4.: Wenn es keine begründeten Gegenmeinung zur Löschung Box &amp;quot;Weitere Informationen&amp;quot; entsprechend obiger Erläuterung gibt, wird dies in den nächsten Tagen umgesetzt--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:48, 24. Sep. 2014 (UTC)&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
Hallo Peter! Mit Deiner letzten Änderung auf der Hauptseite wurde -wenn ich das richtig verstehe- die rechte Spalte verbreitert. War das Absicht? Eigentlich finde ich links deutlich wichtiger. Gruß, Christian --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 08:38, 29. Aug. 2014 (UTC)&lt;br /&gt;
:Jein - ich habe von einer fixen Spaltenbreite (550px, was bei mir deutlich breiter war, als aktuell) auf 45%/55%-Aufteilung geändert. Damit sind auf jeden Fall die Spaltenlängen mal deutlich ausgewogener geworden und sind auf jeden Fall nicht mehr so stark abhängig von der Bildschirmauflösung der einzelnen Benutzer.&lt;br /&gt;
:Kann aber gern nochmal geändert werden - nur bitte nicht auf Fixbreite einer Spalte.&lt;br /&gt;
::Änderung halte ich (noch) nicht für zwingend.--[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 08:32, 3. Sep. 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Einbindung FLOORPLAN Einrichtungsleitfaden auf Hauptseite sinnvoll? ==&lt;br /&gt;
&lt;br /&gt;
Die Einbindung des FLOORPLAN Einrichtungsleitfadens auf der Hauptseite passt meiner Meinung nach nicht in das Konzept der Hauptseite. Beim Einrichtungsleitfaden handelt es sich um ein &#039;&#039;&#039;modulspezifisches&#039;&#039;&#039; und kein übergreifendes Dokument. Zudem ist das Dokument bereits auf der FLOORPLAN-Wiki-Seite, UliMs Einsteiger-PDF und in der Commandref zu FLOORPLAN verlinkt. Wer das Dokument über diese Wege nicht gefunden/gelesen hat, wird es auch durch Aufnahme auf die Hauptseite nicht finden/lesen. Welche modulspezifischen Dokumente müssten dann nicht auch noch auf der Hauptseite verlinkt werden, weil sie in irgendeiner Form wichtig und gut sind? Ich würde daher die Einbindung wieder zurücknehmen. --[[Benutzer:Krikan|Krikan]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 18:43, 17. Okt. 2014 (UTC)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Hallo Christian, ich stimme Dir zu und bin auch für &amp;quot;wieder entfernen&amp;quot;. Ich schreibe aber [[Benutzer Diskussion:Fiedel|Fiedel]] noch mal direkt an - möglicherweise bekommt er die Diskussion hier gar nicht mit. --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 05:25, 22. Okt. 2014 (UTC)&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
:Hallo ihr Beiden, das wäre kein Problem für mich. Zu dem Schritt habe ich mich entschieden weil Floorplan mittlerweile viel mehr ist als nur ein beliebiges FHEM- Modul. Er ist quasi fester Bestandteil des Frontends geworden und wird entsprechend genutzt. Als langjähriges Forenmitlglied sehe ich immer häufiger Fragen die darauf hindeuten, das die Benutzer das FP- Manual nicht gelesen und vor Allem nicht gefunden haben. Meine Hoffnung war, das Forum von solchen Fragen zu entlasten. Außerdem sind das Einsteiger-PDF und das FP-PDF die einzigen beiden &amp;quot;kompletten Bücher&amp;quot;, die es zu FHEM gibt. Eine Idee wäre noch beide zu vereinen... Soviel zu meiner Motivation. Ihr hattet übrigens Recht - ich hätte ohne die Nachricht nie etwas von dieser Diskussion mitbekommen. Bin im Wiki noch nicht so fit, dass ich alle &amp;quot;Ecken&amp;quot; dort kenne. Viele Grüße --[[Benutzer:Fiedel|Fiedel]] ([[Benutzer Diskussion:Fiedel|Fiedel]]) 08:27, 24. Okt. 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FLOORPLAN&amp;diff=8162</id>
		<title>FLOORPLAN</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FLOORPLAN&amp;diff=8162"/>
		<updated>2014-10-17T11:53:09Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: /* Anwendungsbeispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Darstellung von Fhem-Objekten auf einem Hintergrundbild&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModCmdRef= --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModContact=Frontends ** Forenbereich für Diskussion, Fehlerberichte, ... ** --&amp;gt;&lt;br /&gt;
|ModTechName=95_FLOORPLAN.pm&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=86 ulimaass]}}&lt;br /&gt;
&lt;br /&gt;
[[FLOORPLAN]] ist eine Erweiterung, mit deren Hilfe Geräte bzw. deren mögliche Aktionen und Attribute auf einem selbsterstellten Hintergrundbild dargestellt werden können. Die Einbindung von FLOORPLAN erzeugt den zusätzlichen Menüeintrag &#039;&#039;Floorplans&#039;&#039;. Wird dieser Menüpunkt ausgewählt, wird in der Menüleiste links nur noch eine Liste der verfügbaren Floorplans und die &amp;quot;Rückkehrmöglichkeit&amp;quot; zum Standard-Fhem Menü angezeigt.&lt;br /&gt;
&lt;br /&gt;
Eine vom Modul-Autor verfasste ausführliche Schritt-für-Schritt Anleitung ist in einer [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw deutschen] und einer [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide.pdf?format=raw englischen] Version verfügbar.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Bevor sinnvoll mit der Floorplan- Einrichtung begonnen werden kann, sollten zumindest die [[Systemübersicht]], das [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Einsteigerdokument] und das [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw Floorplan- Manual] gelesen und verstanden worden sein!}}&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; FLOORPLAN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
:&amp;lt;code&amp;gt;userattr fp_&amp;lt;name&amp;gt; &amp;lt;top&amp;gt;,&amp;lt;left&amp;gt;[,&amp;lt;style&amp;gt;[,&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
wird automatisch für den FLOORPLAN angelegt, sofern es noch nicht existiert...&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
* Aktuelle Uhrzeit auf einem FLOORPLAN anzeigen: {{Link2Forum|Topic=23629|Message=169082}}&lt;br /&gt;
* Animierte SVG-Icons für responsiven Floorplan: {{Link2Forum|Topic=26673|Message=196337}}&lt;br /&gt;
* [[Floorplan FHT Temperatur]]&lt;br /&gt;
* [[Remotecontrol]]&lt;br /&gt;
* [[Browsersteuerung, Seiten per JS autom. aufrufen]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Detaillierte Beispiele bitte als eigenen Abschnitt (=== Überschrift ===) einfügen --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw Schritt-für-Schritt-Anleitung] ([http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide.pdf?format=raw Englische Version])&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,25778.0.html Diskussion] im Forum über die Verwendung von [http://www.sweethome3d.com/de/ Sweet Home 3D] zur Erstellung von Hintergrundbildern für FLOORPLAN &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FLOORPLAN&amp;diff=8161</id>
		<title>FLOORPLAN</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FLOORPLAN&amp;diff=8161"/>
		<updated>2014-10-17T11:45:01Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Darstellung von Fhem-Objekten auf einem Hintergrundbild&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCategory= (noch?) nicht verwendet --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModCmdRef= --&amp;gt;&lt;br /&gt;
&amp;lt;!-- |ModContact=Frontends ** Forenbereich für Diskussion, Fehlerberichte, ... ** --&amp;gt;&lt;br /&gt;
|ModTechName=95_FLOORPLAN.pm&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=86 ulimaass]}}&lt;br /&gt;
&lt;br /&gt;
[[FLOORPLAN]] ist eine Erweiterung, mit deren Hilfe Geräte bzw. deren mögliche Aktionen und Attribute auf einem selbsterstellten Hintergrundbild dargestellt werden können. Die Einbindung von FLOORPLAN erzeugt den zusätzlichen Menüeintrag &#039;&#039;Floorplans&#039;&#039;. Wird dieser Menüpunkt ausgewählt, wird in der Menüleiste links nur noch eine Liste der verfügbaren Floorplans und die &amp;quot;Rückkehrmöglichkeit&amp;quot; zum Standard-Fhem Menü angezeigt.&lt;br /&gt;
&lt;br /&gt;
Eine vom Modul-Autor verfasste ausführliche Schritt-für-Schritt Anleitung ist in einer [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw deutschen] und einer [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide.pdf?format=raw englischen] Version verfügbar.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Bevor sinnvoll mit der Floorplan- Einrichtung begonnen werden kann, sollten zumindest die [[Systemübersicht]], das [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Einsteigerdokument] und das [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw Floorplan- Manual] gelesen und verstanden worden sein!}}&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
=== Define ===&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; FLOORPLAN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
:&amp;lt;code&amp;gt;userattr fp_&amp;lt;name&amp;gt; &amp;lt;top&amp;gt;,&amp;lt;left&amp;gt;[,&amp;lt;style&amp;gt;[,&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
wird automatisch für den FLOORPLAN angelegt, sofern es noch nicht existiert...&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiele ==&lt;br /&gt;
* Aktuelle Uhrzeit auf einem FLOORPLAN anzeigen: {{Link2Forum|Topic=23629|Message=169082}}&lt;br /&gt;
* Animierte SVG-Icons für responsiven Floorplan: {{Link2Forum|Topic=26673|Message=196337}}&lt;br /&gt;
* [[Floorplan FHT Temperatur]]&lt;br /&gt;
* [[Remotecontrol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Detaillierte Beispiele bitte als eigenen Abschnitt (=== Überschrift ===) einfügen --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw Schritt-für-Schritt-Anleitung] ([http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide.pdf?format=raw Englische Version])&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,25778.0.html Diskussion] im Forum über die Verwendung von [http://www.sweethome3d.com/de/ Sweet Home 3D] zur Erstellung von Hintergrundbildern für FLOORPLAN &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=8160</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=8160"/>
		<updated>2014-10-17T10:42:38Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:FHEMWiki - Informationsportal zum FHEM Hausautomationsserver}}&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0 1em 1em 1em; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
http://banner.fhemwiki.de/fhemwiki_logo_200x80.png&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ist ein Hausautomations-Server von Rudolf Koenig et al. in Perl geschrieben, um diverse per Funk und Kabel angebundene [[:Kategorie:Hardware|Komponenten]] aus dem Bereich der Hausautomation zu steuern. Er ist lizensiert unter der GPL v2. Das FHEMWiki stellt neben dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de Fhem] Seite die zentrale Informationsquelle rund um FHEM dar.&lt;br /&gt;
&lt;br /&gt;
{{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).&lt;br /&gt;
&lt;br /&gt;
Bitte [[FHEMWiki:Support | unterstütze uns]] und hilf, [[:Kategorie:NeedsEditing| das Wiki zu erweitern]]. Vielen Dank!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[FHEMWiki:Über_FHEMWiki|über FHEMWiki]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#efefef;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wie fange ich an?&#039;&#039;&#039;&lt;br /&gt;
* [[Datei:Info_green.png|20px]][http://fhem.de/Heimautomatisierung-mit-fhem.pdf FHEM-Übersicht für Anfänger][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DER Startpunkt. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Datei:Info_green.png|20px]][http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf?format=raw Floorplan Einrichtungshandbuch][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;Floorplan- Anwender: &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Systemübersicht]]&lt;br /&gt;
* Phasen eines Fhem-Projekts:&lt;br /&gt;
** [[Planung]]&lt;br /&gt;
** [[Umsetzung]] (Implementierung)&lt;br /&gt;
** [[Betrieb]] (&amp;quot;Produktion&amp;quot;)&lt;br /&gt;
* [[:Kategorie:Glossary|Glossar]] (Erklärung für bestimmte Begriffe)&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[:Kategorie:HOWTOS|Verschiedene HowTos]]&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[:Kategorie:FAQ|Frequently asked Questions - Häufig gestellte Fragen mit Antworten]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Verlinkte Wiki-Seite für Anfänger ist leer, darum auskommentiert&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[Help:Reading|How to read FHEMWiki]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0 1em 1em 1em; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 Komponenten]]&lt;br /&gt;
* [[:Kategorie:HMS Components|HMS Komponenten]]&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS Komponenten]]&lt;br /&gt;
* [[:Kategorie:FHT Components|FHT Komponenten]]&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:EnOcean Components|EnOcean Komponenten]]&lt;br /&gt;
* [[:Kategorie:HomeMatic Components|HomeMatic Komponenten]]&lt;br /&gt;
* [[:Kategorie:MAX|MAX! Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:Other Components|Andere Komponenten / Sonstige Systeme]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:Hardware|Alle Hardware-Kategorien]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ideen und Lösungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Code_Snippets|Verschiedene kommentierte Lösungen und Code-Schnippsel]]&lt;br /&gt;
* [[:Kategorie:Examples|Beispielanwendungen - Hardwarelösungen - Fremdsystemanbindungen]]&lt;br /&gt;
* [[Anwendungsszenarien]]&lt;br /&gt;
* [[Trick der Woche|Tipp der Woche]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:FHEM|Fhem-Haupt-Kategorien]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- dieser Abschnitt ist überflüssig und wird in Kürze gelöscht (Details:Diskussionsseite)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#dfefdf;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Weitere Informationen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die [http://www.fhem.de Fhem] Seite&lt;br /&gt;
* [[:Kategorie:Glossary|Glossar]] (Erklärung für bestimmte Begriffe)&lt;br /&gt;
* [http://forum.fhem.de Forum] (Das FHEM-Forum)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
* [[:DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:Development|Alle Artikel zu Development]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;55%&amp;quot; style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;  border:1px solid #888888; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#d7ffff;height:14em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEMWiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:small;height:10em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;{{FHEMWiki_News}}&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[FHEMWiki:News|News]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Letzte Änderungen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:small;color:black;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;{{Special:Recentchanges/5}}&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[Special:Recentchanges|Änderungen]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vorbereitung für &amp;quot;letzte 5 neuen Seiten&amp;quot; ... --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#FFFFAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die letzten fünf neuen Seiten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;small&amp;gt;{{Special:NewPages/5}}&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[Special:NewPages|Neue Seiten]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von &amp;quot;Vorbereitung für ...&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#DDD68F;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Administratives zum Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Allgemeine Aktivitäten:&#039;&#039;&lt;br /&gt;
* Registrierung zur Mitarbeit: wende Dich bitte an einen [[FHEMWiki:Administratoren|Administrator]]&lt;br /&gt;
* Basiswissen über die Mitarbeit an einem Wiki erarbeiten ([http://de.wikipedia.org/wiki/Wikipedia:Beteiligen z.B. Wikipedia])&lt;br /&gt;
* Erweiterung und Korrektur von Artikeln, wo immer nötig&lt;br /&gt;
* Ein(ig)e der [[Spezial:Gewünschte Seiten|gewünschten Seiten]] erstellen &lt;br /&gt;
* Ideen aus dem [http://forum.fhem.de Forum] in bestehende oder neue Artikel einarbeiten&lt;br /&gt;
* [[Datei:Info_red.png|20px]] &#039;&#039;&#039;Tips / Regeln / Hinweise auf &amp;quot;[[FHEMWiki:Über FHEMWiki|Über FHEMWiki]]&amp;quot; beachten!&#039;&#039;&#039; [[Datei:Info_red.png|20px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- dieser Abschnitt sollte jetzt (hoffentlich) nicht mehr erforderlich sein&lt;br /&gt;
&#039;&#039;Sonderaktivitäten nach dem Festplattencrash auf dem Wiki-Server:&#039;&#039;&lt;br /&gt;
* Bereinigung von [[Spezial:Unbenutzte_Dateien|verwaisten Dateien]]; oft läßt schon der Dateiname Rückschlüsse auf die Seite zu, die diese Datei / dieses Bild verwenden sollte&lt;br /&gt;
* Überarbeiten von [[:Kategorie:Seiten mit defekten Dateilinks|Seiten mit defekten Dateilinks]]&lt;br /&gt;
* generell: aufmerksames Lesen der Artikel, da manche Dinge bei der automatisierten Datenrettung nicht vollständig wieder hergestellt werden konnten&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Aktivitäten für Administratoren:&#039;&#039;&lt;br /&gt;
* Sichten / Löschen von [[:Kategorie:Löschkandidaten|Löschkandidaten]]&lt;br /&gt;
* Vorschlag: Einrichten einer Seite, auf der Anfragen an Benutzer mit Admin-Rechten eingetragen werden können&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sonstiges:&#039;&#039;&lt;br /&gt;
* Zum Ausprobieren bitte die [[FHEMWiki:Sandbox]] benutzen&lt;br /&gt;
* [//meta.wikimedia.org/wiki/Help:Contents Wiki Benutzerhandbuch].&lt;br /&gt;
* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Wiki-Konfigurationsvariablen]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=8159</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=8159"/>
		<updated>2014-10-17T10:36:35Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:FHEMWiki - Informationsportal zum FHEM Hausautomationsserver}}&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0 1em 1em 1em; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
http://banner.fhemwiki.de/fhemwiki_logo_200x80.png&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ist ein Hausautomations-Server von Rudolf Koenig et al. in Perl geschrieben, um diverse per Funk und Kabel angebundene [[:Kategorie:Hardware|Komponenten]] aus dem Bereich der Hausautomation zu steuern. Er ist lizensiert unter der GPL v2. Das FHEMWiki stellt neben dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de Fhem] Seite die zentrale Informationsquelle rund um FHEM dar.&lt;br /&gt;
&lt;br /&gt;
{{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).&lt;br /&gt;
&lt;br /&gt;
Bitte [[FHEMWiki:Support | unterstütze uns]] und hilf, [[:Kategorie:NeedsEditing| das Wiki zu erweitern]]. Vielen Dank!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[FHEMWiki:Über_FHEMWiki|über FHEMWiki]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#efefef;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wie fange ich an?&#039;&#039;&#039;&lt;br /&gt;
* [[Datei:Info_green.png|20px]][http://fhem.de/Heimautomatisierung-mit-fhem.pdf FHEM-Übersicht für Anfänger][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DER Startpunkt. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Datei:Info_green.png|20px]][http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/docs/fhem-floorplan-installation-guide_de.pdf Floorplan Einrichtungshandbuch][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;Floorplan- Anwender: &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Systemübersicht]]&lt;br /&gt;
* Phasen eines Fhem-Projekts:&lt;br /&gt;
** [[Planung]]&lt;br /&gt;
** [[Umsetzung]] (Implementierung)&lt;br /&gt;
** [[Betrieb]] (&amp;quot;Produktion&amp;quot;)&lt;br /&gt;
* [[:Kategorie:Glossary|Glossar]] (Erklärung für bestimmte Begriffe)&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[:Kategorie:HOWTOS|Verschiedene HowTos]]&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[:Kategorie:FAQ|Frequently asked Questions - Häufig gestellte Fragen mit Antworten]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Verlinkte Wiki-Seite für Anfänger ist leer, darum auskommentiert&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[Help:Reading|How to read FHEMWiki]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-top:10px; margin-right:10px; border: 1px solid #dfdfdf; border-radius: 8px; padding: 0 1em 1em 1em; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 Komponenten]]&lt;br /&gt;
* [[:Kategorie:HMS Components|HMS Komponenten]]&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS Komponenten]]&lt;br /&gt;
* [[:Kategorie:FHT Components|FHT Komponenten]]&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:EnOcean Components|EnOcean Komponenten]]&lt;br /&gt;
* [[:Kategorie:HomeMatic Components|HomeMatic Komponenten]]&lt;br /&gt;
* [[:Kategorie:MAX|MAX! Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:Other Components|Andere Komponenten / Sonstige Systeme]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:Hardware|Alle Hardware-Kategorien]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ideen und Lösungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Code_Snippets|Verschiedene kommentierte Lösungen und Code-Schnippsel]]&lt;br /&gt;
* [[:Kategorie:Examples|Beispielanwendungen - Hardwarelösungen - Fremdsystemanbindungen]]&lt;br /&gt;
* [[Anwendungsszenarien]]&lt;br /&gt;
* [[Trick der Woche|Tipp der Woche]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:FHEM|Fhem-Haupt-Kategorien]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- dieser Abschnitt ist überflüssig und wird in Kürze gelöscht (Details:Diskussionsseite)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#dfefdf;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Weitere Informationen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die [http://www.fhem.de Fhem] Seite&lt;br /&gt;
* [[:Kategorie:Glossary|Glossar]] (Erklärung für bestimmte Begriffe)&lt;br /&gt;
* [http://forum.fhem.de Forum] (Das FHEM-Forum)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
* [[:DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[:Kategorie:Development|Alle Artikel zu Development]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;55%&amp;quot; style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;  border:1px solid #888888; border-radius: 8px; padding: 0em 1em 1em 1em; background-color:#d7ffff;height:14em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEMWiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:small;height:10em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;{{FHEMWiki_News}}&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[FHEMWiki:News|News]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#F8F8FF;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Letzte Änderungen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:small;color:black;&amp;quot;&amp;gt;&amp;lt;small&amp;gt;{{Special:Recentchanges/5}}&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[Special:Recentchanges|Änderungen]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vorbereitung für &amp;quot;letzte 5 neuen Seiten&amp;quot; ... --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#FFFFAA;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die letzten fünf neuen Seiten&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;small&amp;gt;{{Special:NewPages/5}}&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;Mehr [[Special:NewPages|Neue Seiten]]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von &amp;quot;Vorbereitung für ...&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; border:1px solid #dfdfdf; border-radius: 8px; padding:0 1em 1em 1em; background-color:#DDD68F;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Administratives zum Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Allgemeine Aktivitäten:&#039;&#039;&lt;br /&gt;
* Registrierung zur Mitarbeit: wende Dich bitte an einen [[FHEMWiki:Administratoren|Administrator]]&lt;br /&gt;
* Basiswissen über die Mitarbeit an einem Wiki erarbeiten ([http://de.wikipedia.org/wiki/Wikipedia:Beteiligen z.B. Wikipedia])&lt;br /&gt;
* Erweiterung und Korrektur von Artikeln, wo immer nötig&lt;br /&gt;
* Ein(ig)e der [[Spezial:Gewünschte Seiten|gewünschten Seiten]] erstellen &lt;br /&gt;
* Ideen aus dem [http://forum.fhem.de Forum] in bestehende oder neue Artikel einarbeiten&lt;br /&gt;
* [[Datei:Info_red.png|20px]] &#039;&#039;&#039;Tips / Regeln / Hinweise auf &amp;quot;[[FHEMWiki:Über FHEMWiki|Über FHEMWiki]]&amp;quot; beachten!&#039;&#039;&#039; [[Datei:Info_red.png|20px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- dieser Abschnitt sollte jetzt (hoffentlich) nicht mehr erforderlich sein&lt;br /&gt;
&#039;&#039;Sonderaktivitäten nach dem Festplattencrash auf dem Wiki-Server:&#039;&#039;&lt;br /&gt;
* Bereinigung von [[Spezial:Unbenutzte_Dateien|verwaisten Dateien]]; oft läßt schon der Dateiname Rückschlüsse auf die Seite zu, die diese Datei / dieses Bild verwenden sollte&lt;br /&gt;
* Überarbeiten von [[:Kategorie:Seiten mit defekten Dateilinks|Seiten mit defekten Dateilinks]]&lt;br /&gt;
* generell: aufmerksames Lesen der Artikel, da manche Dinge bei der automatisierten Datenrettung nicht vollständig wieder hergestellt werden konnten&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Aktivitäten für Administratoren:&#039;&#039;&lt;br /&gt;
* Sichten / Löschen von [[:Kategorie:Löschkandidaten|Löschkandidaten]]&lt;br /&gt;
* Vorschlag: Einrichten einer Seite, auf der Anfragen an Benutzer mit Admin-Rechten eingetragen werden können&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sonstiges:&#039;&#039;&lt;br /&gt;
* Zum Ausprobieren bitte die [[FHEMWiki:Sandbox]] benutzen&lt;br /&gt;
* [//meta.wikimedia.org/wiki/Help:Contents Wiki Benutzerhandbuch].&lt;br /&gt;
* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Wiki-Konfigurationsvariablen]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8158</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8158"/>
		<updated>2014-10-17T06:29:26Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Impulse für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Impulse für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als &amp;quot;1 durch 100 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&#039;&lt;br /&gt;
Diese Funktion setzt automatisch die &amp;quot;Offset&amp;quot;- Werte, indem man den aktuellen Zählerstand&lt;br /&gt;
in das entspr. Eingabefeld einträgt und abschickt. Man hat dann mit der Anzeige des &amp;quot;Sollzählerstandes&amp;quot;&lt;br /&gt;
in FHEM einen Vergleichswert um zu prüfen, ob die Energiezählung richtig arbeitet oder ob es Ausfälle gab.  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Funktion wie bei Tagesverbrauch, wird jedoch nur zum Monats- und Jahresumbruch ausgeführt&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: Monatsumbruch $month2 &amp;gt; $month oder Jahresumbruch $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } &lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8157</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8157"/>
		<updated>2014-10-17T06:27:44Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Impulse für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Impulse für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als &amp;quot;1 durch 100 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&#039;&lt;br /&gt;
Diese Funktion setzt automatisch die &amp;quot;Offset&amp;quot;- Werte, indem man den aktuellen Zählerstand&lt;br /&gt;
in das entspr. Eingabefeld einträgt und abschickt. Man hat dann mit der Anzeige des &amp;quot;Sollzählerstandes&amp;quot;&lt;br /&gt;
in FHEM einen Vergleichswert um zu prüfen, ob die Energiezählung richtig arbeitet oder ob es Ausfälle gab.  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Funktion wie bei Tagesverbrauch, wird jedoch nur zum Monats- und Jahresumbruch ausgeführt&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: Monatsumbruch $month2 &amp;gt; $month oder Jahresumbruch $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } &lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8156</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8156"/>
		<updated>2014-10-16T12:20:49Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Impulse für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Impulse für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als &amp;quot;1 durch 100 (Imp.)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&#039;&lt;br /&gt;
Diese Funktion setzt automatisch die &amp;quot;Offset&amp;quot;- Werte, indem man den aktuellen Zählerstand&lt;br /&gt;
in das entspr. Eingabefeld einträgt und abschickt. Man hat dann mit der Anzeige des &amp;quot;Sollzählerstandes&amp;quot;&lt;br /&gt;
in FHEM einen Vergleichswert um zu prüfen, ob die Energiezählung richtig arbeitet oder ob es Ausfälle gab.  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8155</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8155"/>
		<updated>2014-10-16T11:26:02Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Umdrehungen für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Umdrehungen für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als 1 durch 100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&#039;&lt;br /&gt;
Diese Funktion setzt automatisch die &amp;quot;Offset&amp;quot;- Werte, indem man den aktuellen Zählerstand&lt;br /&gt;
in das entspr. Eingabefeld einträgt und abschickt. Man hat dann mit der Anzeige des &amp;quot;Sollzählerstandes&amp;quot;&lt;br /&gt;
in FHEM einen Vergleichswert um zu prüfen, ob die Energiezählung richtig arbeitet oder ob es Ausfälle gab.  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8154</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8154"/>
		<updated>2014-10-16T11:19:27Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Umdrehungen für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Umdrehungen für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als 1 durch 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion setzt automatisch die &amp;quot;Offset&amp;quot;- Werte, indem man den aktuellen Zählerstand&lt;br /&gt;
in das entspr. Eingabefeld einträgt und abschickt. Man hat dann mit der Anzeige des &amp;quot;Sollzählerstandes&amp;quot;&lt;br /&gt;
in FHEM einen Vergleichswert um zu prüfen, ob die Energiezählung richtig arbeitet oder ob es Ausfälle gab.  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8153</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8153"/>
		<updated>2014-10-16T11:05:05Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Umdrehungen für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Umdrehungen für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als 1 durch 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8152</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8152"/>
		<updated>2014-10-16T11:04:00Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Umdrehungen für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Umdrehungen für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als 1 durch 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8151</id>
		<title>Stromzähler und 1-Wire, OWServer, OWDevice</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice&amp;diff=8151"/>
		<updated>2014-10-16T11:02:20Z</updated>

		<summary type="html">&lt;p&gt;Fiedel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt eine Anbindung zweier Leistungsmesser (aka Stromzähler) mit S0 Ausgang über einen 1-wire-S0-Zähler an FHEM.&lt;br /&gt;
&lt;br /&gt;
Das Ziel ist anstatt des monatlichen manuellen Ablesens des Einspeisezählers, eine granulare und automatisierte Aufzeichnung der Leistung einer Photovoltaikanlage zu erhalten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:fhemwiki-grafik-s0counter-und-onewire.gif]]&lt;br /&gt;
&lt;br /&gt;
Zwischen die beiden Wechselrichter und dem Einspeisezähler sind je ein digitaler Stromzähler mit S0-Ausgang geschaltet.&lt;br /&gt;
Einer dieser Stromzähler liefert 2000 Impulse pro kWh, der andere 1000 Impulse pro kWh.&lt;br /&gt;
&lt;br /&gt;
Diese beiden Stromzähler sind mit einem auf dem 1-Wire Baustein DS2423 basierenden Dual S0 Counter verbunden, der hier über einen &lt;br /&gt;
USB-Busmaster als serielles Interface mit einer Instanz eines OWServers verbunden ist.&lt;br /&gt;
&lt;br /&gt;
In FHEM ist dieser OWServer wie folgt definiert:&lt;br /&gt;
 &amp;lt;code&amp;gt;define myOWServer OWServer 192.168.1.12:4304&amp;lt;/code&amp;gt;&lt;br /&gt;
Es wird hier ein OWServer definiert, der über die IP-Adresse 192.168.1.12 erreichbar ist und dort auf dem Port 4304 auf Anfragen lauscht.&lt;br /&gt;
&lt;br /&gt;
Ist in FHEM das &amp;quot;autocreate&amp;quot; Flag gesetzt, dann findet FHEM den S0-Counter und erzeugt beispielsweise die folgenden Einträge:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define DS2423_58E50F000000 OWDevice 1D.58E50F000000 60&lt;br /&gt;
attr DS2423_58E50F000000 model DS2423&lt;br /&gt;
attr DS2423_58E50F000000 room OWDevice&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
Unter &amp;quot;DS2423_58E50F000000&amp;quot; kann man sich nicht direkt etwas vorstellen und anstatt alle 60 Sekunden ein Update zu holen, sollten auch 5 Minuten (=300 Sekunden) reichen. Daher wird das abgeändert zu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define PVZaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr PVZaehler model DS2423&lt;br /&gt;
attr PVZaehler room OWDevice &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dann definiert man noch ein Logfile dazu:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVZaehler FileLog ./log/PVZaehler-%Y.log PVZaehler:.*&lt;br /&gt;
attr FileLog_PVZaehler logtype text&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und findet dort Einträge der Form&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:09:55 PVZaehler counters.B: 139840&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.A: 282478&lt;br /&gt;
2014-01-20_16:14:58 PVZaehler counters.B: 139841&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wie man sieht, erscheinen für jeden der beiden Counter in diesem 1-Wire Device eine eigene Zeile mit dem aktuellen Wert des Zählers. &lt;br /&gt;
Da der erste S0-Zähler 2000 Impulse pro kWh liefert, ist der Wert für &amp;quot;counters.A&amp;quot; auch etwa das Doppelte von &amp;quot;counters.B&amp;quot;, dessen &lt;br /&gt;
zugehöriger S0-Zähler ja nur 1000 Impulse pro kWh liefert.&lt;br /&gt;
&lt;br /&gt;
Eigentlich wäre es wünschenswert,&lt;br /&gt;
nur eine Zeile mit beiden Werten zu loggen, diese mit der passenden Einheit Watt-Stunden (Wh) zu bezeichnen und auch noch die Summe der beiden Werte aufzuzeichnen.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;state&amp;quot; Zeile im Reading des Devices&lt;br /&gt;
 &lt;br /&gt;
[[Datei:owdevice-pvzaehler-reading.png]]&lt;br /&gt;
&lt;br /&gt;
beinhaltet die Werte beider Counter, aber das &amp;quot;state&amp;quot; Reading verursacht laut [http://fhem.de/commandref.html#OWDevice CommandRef] keinen Event, &lt;br /&gt;
den man in einer FileLog Definition einfach verwenden könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es muss also etwas mehr getan werden. Die Idee ist, ein Dummy-Device zu definieren und dazu ein passendes Notify, das auf die &amp;quot;PVZaehler&amp;quot; Events reagiert und&lt;br /&gt;
den Wert an dieses Dummy-Device weitergibt, in dessen Filelog die Daten dann aufgezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Im Einzelnen:&lt;br /&gt;
 &amp;lt;code&amp;gt;define PVErtrag dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
definiert das Dummy-Device, das die Erträge der Anlage erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;1:  define notify_PVErtrag notify PVZaehler:counters\.A.*  { \&lt;br /&gt;
2:      my $a = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/2 ;; \&lt;br /&gt;
3:      my $b = ReadingsVal(&amp;quot;PVZaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0) ;; \&lt;br /&gt;
4:      my $c = $a+$b ;; \&lt;br /&gt;
5:      my $text = &amp;quot;WR1: $a Wh, WR2: $b Wh, Gesamt: $c Wh&amp;quot; ;; \&lt;br /&gt;
6:      fhem (&amp;quot;set PVErtrag $text&amp;quot;) ;; \&lt;br /&gt;
7:     } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
werden die Daten erzeugt und an das PVErtrag Device geschickt. &lt;br /&gt;
&lt;br /&gt;
In Zeile 1 wird das Notify definiert: &amp;quot;PVZaehler&amp;quot; ist das Device, auf dessen Events &lt;br /&gt;
reagiert werden soll und &amp;quot;counters\.A.*&amp;quot; der reguläre Ausdruck, auf den das Notify reagieren soll. Der Punkt in &amp;quot;counters.A&amp;quot; ist mit einem Backslash maskiert, &lt;br /&gt;
da er sonst als Metazeichen für den regulären Ausdruck interpretiert werden würde.  Das &amp;quot;.*&amp;quot; bezeichnet x-beliebigen Text.  &lt;br /&gt;
&lt;br /&gt;
Wenn nun also das PVZaehler-Device &lt;br /&gt;
einen Event verursacht, der die Zeichenkette &amp;quot;counters.A&amp;quot; enthält, dann wird der in geschweiften Klammern stehende Perl-Code ausgeführt. &lt;br /&gt;
Dabei dienen die Backslashes jeweils am Zeilenende als Hinweis für FHEM, dass der Perl-Code noch nicht zu Ende ist, sondern in der nächsten Zeile fortgeführt wird.&lt;br /&gt;
Ebenso sind entsprechend der [http://fhem.de/commandref.html#perl CommandRef] die Semikolons in der fhem.cfg verdoppelt.&lt;br /&gt;
Zeile 2 definiert eine Variable $a und weist ihr den Wert des &amp;quot;counters.A&amp;quot; geteilt durch 2 zu; in Zeile 3 erhält die Variable $b den Wert des &amp;quot;counters.B&amp;quot;. In Zeile 4 &lt;br /&gt;
werden die beiden Werte addiert und in Zeile 5 schliesslich zu einem Ausgabetext zusammengesetzt. Zeile 6 sendet dann diesen Ausgabetext an das PVErtrag Device.&lt;br /&gt;
&lt;br /&gt;
Schliesslich wird mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_PVErtrag FileLog ./log/FileLog_PVErtrag-%Y-%m.log PVErtrag&lt;br /&gt;
attr FileLog_PVErtrag logtype text &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
das Filelog erzeugt, in dem die Daten abgelegt werden.  Hier ein Auszug aus diesem FileLog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;...&lt;br /&gt;
2014-01-21_13:15:22 PVErtrag WR1: 141666 Wh, WR2: 140271 Wh, Gesamt: 281937 Wh&lt;br /&gt;
2014-01-21_13:20:22 PVErtrag WR1: 141677 Wh, WR2: 140282 Wh, Gesamt: 281959 Wh&lt;br /&gt;
2014-01-21_13:25:22 PVErtrag WR1: 141687.5 Wh, WR2: 140293 Wh, Gesamt: 281980.5 Wh&lt;br /&gt;
2014-01-21_13:30:22 PVErtrag WR1: 141697 Wh, WR2: 140302 Wh, Gesamt: 281999 Wh&lt;br /&gt;
2014-01-21_13:35:22 PVErtrag WR1: 141705.5 Wh, WR2: 140311 Wh, Gesamt: 282016.5 Wh&lt;br /&gt;
... &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten &#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abweichend von der Verwendung als Ertragszähler hier ein Beispiel mit &amp;quot;userreadings&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Quellle für die userreadings und die Umrechnung: [http://forum.fhem.de/index.php/topic,10962.msg72943.html#msg72943]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Eintrag für die benutzerdefinierten Readings und Attribute(CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;attr global userattr offset offsetA offsetB &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Die Def. des Zählers mit der Berechnung der Verbrauchswerte (CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define OW_Strom_Gas_Zaehler OWDevice 1D.58E50F000000 300&lt;br /&gt;
attr OW_Strom_Gas_Zaehler IODev myOWServer&lt;br /&gt;
attr OW_Strom_Gas_Zaehler model DS2423&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetA 25003.91&lt;br /&gt;
attr OW_Strom_Gas_Zaehler offsetB 12287.94&lt;br /&gt;
attr OW_Strom_Gas_Zaehler polls counters.A,counters.B&lt;br /&gt;
attr OW_Strom_Gas_Zaehler room 1_Energie&lt;br /&gt;
attr OW_Strom_Gas_Zaehler stateFormat { sprintf(&amp;quot;%.3f kWh %.3f m³&amp;quot;, ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,&amp;quot;kWh&amp;quot;), ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,&amp;quot;m³&amp;quot;));; }&lt;br /&gt;
attr OW_Strom_Gas_Zaehler userReadings displayA {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetA&amp;quot;,0);;}, consumption_power differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)*3600*0.01333333333333;;}, daily_power {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0)-Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);;}, displayB {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0+AttrVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;offsetB&amp;quot;,0);;}, consumption_gas differential {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)*3600*0.01;;}, daily_gas {ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0)-Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);;} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier müssen wie bereits oben beschrieben die Zählerkonstanten eingetragen werden - im Beispiel ist:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.A&amp;quot; (Strom): &amp;quot;75.0&amp;quot; , was 75 Umdrehungen für 1 KWH entspricht, &amp;quot;0.01333333333333&amp;quot; ist nichts weiter als &amp;quot;1 durch 75&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;counters.B&amp;quot; (Gas)  : &amp;quot;100.0&amp;quot; , was 100 Umdrehungen für 1 m³ entspricht, &amp;quot;0.01&amp;quot; ist nichts weiter als 1 durch 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autom. Berechnung der Offset- Werte für die realen Zählerstände &amp;quot;DisplayA/B&amp;quot; (CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Dummys zum Eingeben der realen Zählerstände:&lt;br /&gt;
define Offset_A dummy&lt;br /&gt;
attr Offset_A alias Berechn. Offset A&lt;br /&gt;
attr Offset_A comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetA&amp;quot;&lt;br /&gt;
attr Offset_A group OWDevice&lt;br /&gt;
attr Offset_A room 1_Energie&lt;br /&gt;
attr Offset_A setList Zählerstand_Strom:textField&lt;br /&gt;
attr Offset_A webCmd Zählerstand_Strom&lt;br /&gt;
&lt;br /&gt;
define Offset_B dummy&lt;br /&gt;
attr Offset_B alias Berechn. Offset B&lt;br /&gt;
attr Offset_B comment Eingabefeld für Zählerstand Strom zur Berechnung von &amp;quot;offsetB&amp;quot;&lt;br /&gt;
attr Offset_B group OWDevice&lt;br /&gt;
attr Offset_B room 1_Energie&lt;br /&gt;
attr Offset_B setList Zählerstand_Gas:textField&lt;br /&gt;
attr Offset_B webCmd Zählerstand_Gas&lt;br /&gt;
&lt;br /&gt;
# Funktion zum Berechnen und Setzen der Offset- Werte:&lt;br /&gt;
define Func_SetOffset_N notify Offset_A|Offset_B  { \&lt;br /&gt;
\&lt;br /&gt;
  my $aufrufer_SetOffset = &amp;quot;@&amp;quot; ;;\&lt;br /&gt;
  my $valueA = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.A&amp;quot;,0)/75.0);;\&lt;br /&gt;
  my $valueB = (ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;counters.B&amp;quot;,0)/100.0);;\&lt;br /&gt;
  my $setoffsetA = (ReadingsVal(&amp;quot;Offset_A&amp;quot;,&amp;quot;Zählerstand_Strom&amp;quot;,0) - $valueA);;\&lt;br /&gt;
  my $setoffsetB = (ReadingsVal(&amp;quot;Offset_B&amp;quot;,&amp;quot;Zählerstand_Gas&amp;quot;,0) - $valueB);;\&lt;br /&gt;
\&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_A&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetA auf: $setoffsetA&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetA $setoffsetA&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_A $setoffsetA&amp;quot;);;\&lt;br /&gt;
 } \&lt;br /&gt;
 if ($aufrufer_SetOffset eq &amp;quot;Offset_B&amp;quot;) { \&lt;br /&gt;
     Log 1, &amp;quot;Setze OW_Strom_Gas_Zaehler.offsetB auf: $setoffsetB&amp;quot;;; \&lt;br /&gt;
     fhem(&amp;quot;attr OW_Strom_Gas_Zaehler offsetB $setoffsetB&amp;quot;);;\&lt;br /&gt;
     fhem(&amp;quot;set Offset_B $setoffsetB&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
                                             { \&lt;br /&gt;
     fhem(&amp;quot;save&amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
attr Func_SetOffset_N group Berechnungen&lt;br /&gt;
attr Func_SetOffset_N room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier müssen die Zählerkonstanten noch einmal angepasst werden in den Variablen &amp;quot;$valueA&amp;quot; und &amp;quot;$valueB&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dummies und Aufrufe zur Berechnung des Energieverbrauchs Tag / Monat (CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Dummys für Daily&lt;br /&gt;
define Dum_DP_Diff_D dummy&lt;br /&gt;
attr Dum_DP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_DG_Diff_D dummy&lt;br /&gt;
attr Dum_DG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_DG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Power_D dummy&lt;br /&gt;
attr Dum_Daily_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Daily_Gas_D dummy&lt;br /&gt;
attr Dum_Daily_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Daily_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Dummys für Monthly&lt;br /&gt;
define Dum_MP_Diff_D dummy&lt;br /&gt;
attr Dum_MP_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MP_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_MG_Diff_D dummy&lt;br /&gt;
attr Dum_MG_Diff_D group Berechnungen&lt;br /&gt;
attr Dum_MG_Diff_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Power_D dummy&lt;br /&gt;
attr Dum_Monthly_Power_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Power_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define Dum_Monthly_Gas_D dummy&lt;br /&gt;
attr Dum_Monthly_Gas_D group Berechnungen&lt;br /&gt;
attr Dum_Monthly_Gas_D room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Tag gesamt&lt;br /&gt;
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}&lt;br /&gt;
attr Func_Daily_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Daily_Energy_A room 1_Energie&lt;br /&gt;
&lt;br /&gt;
# Berechnung Energieverbrauch Monat gesamt&lt;br /&gt;
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}&lt;br /&gt;
attr Func_Monthly_Energy_A group Berechnungen&lt;br /&gt;
attr Func_Monthly_Energy_A room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Funktionen zum Berechnen und Loggen der Tages- und Monatswerte (99_myUtils.pm)&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Energie Tagesverbräuche berechnen&lt;br /&gt;
###################################&lt;br /&gt;
sub&lt;br /&gt;
prg_Daily_Stat()&lt;br /&gt;
 {&lt;br /&gt;
 #&lt;br /&gt;
 # Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_DP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_DG_Diff_D&amp;quot;);&lt;br /&gt;
 # Tagesverbrauch in DailyPower speichern&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Power_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Daily_Gas_D $data{DGval}&amp;quot;);&lt;br /&gt;
 # Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)&lt;br /&gt;
   $data{DPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{DGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DP_Diff_D $data{DPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_DG_Diff_D $data{DGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Energie Monatsverbräuche berechnen&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
 # Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen&lt;br /&gt;
 # Monatsverbrauch in MonthlyPower speichern&lt;br /&gt;
 # Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)&lt;br /&gt;
&lt;br /&gt;
sub&lt;br /&gt;
prg_Monthly_Stat()&lt;br /&gt;
 {&lt;br /&gt;
  my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;
  my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );&lt;br /&gt;
  if ( $month2 &amp;gt; $month or $year2 &amp;gt; $year ){&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0) - Value(&amp;quot;Dum_MP_Diff_D&amp;quot;);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0) - Value(&amp;quot;Dum_MG_Diff_D&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Power_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_Monthly_Gas_D $data{MGval}&amp;quot;);&lt;br /&gt;
   $data{MPval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayA&amp;quot;,0);&lt;br /&gt;
   $data{MGval} = ReadingsVal(&amp;quot;OW_Strom_Gas_Zaehler&amp;quot;,&amp;quot;displayB&amp;quot;,0);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MP_Diff_D $data{MPval}&amp;quot;);&lt;br /&gt;
   fhem (&amp;quot;set Dum_MG_Diff_D $data{MGval}&amp;quot;);&lt;br /&gt;
   fhem(&amp;quot;save&amp;quot;);&lt;br /&gt;
   Log 1, &amp;quot;Monatsber. Energie erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year erfüllt&amp;quot;;&lt;br /&gt;
   } else {&lt;br /&gt;
        Log 1, &amp;quot;Monatsber. n. erfolgt: $month2 &amp;gt; $month oder $year2 &amp;gt; $year n. erfüllt&amp;quot;;&lt;br /&gt;
       }&lt;br /&gt;
} &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Log- und Plotzuweisungen (CFG):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;define Log_Energy_M FileLog ./log/OW_Strom_Gas_Zaehler-%Y-%m.log OW_Strom_Gas_Zaehler:counters.A.*|OW_Strom_Gas_Zaehler:counters.B.*|OW_Strom_Gas_Zaehler:displayA.*|OW_Strom_Gas_Zaehler:displayB.*|OW_Strom_Gas_Zaehler:consumption_power.*|OW_Strom_Gas_Zaehler:consumption_gas.*|OW_Strom_Gas_Zaehler:daily_power.*|OW_Strom_Gas_Zaehler:daily_gas.*&lt;br /&gt;
attr Log_Energy_M logtype stromverbrauch:Strom,gasverbrauch:Gas,text:Text&lt;br /&gt;
attr Log_Energy_M room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define Log_Energy_Y FileLog ./log/OW_Strom_Gas_Zaehler-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*&lt;br /&gt;
attr Log_Energy_Y logtype energie_monat:Monat,energie_jahr:Jahr,text:Text&lt;br /&gt;
attr Log_Energy_Y room 4_Logdaten&lt;br /&gt;
&lt;br /&gt;
define 00_Stromverbrauch SVG Log_Energy_M:stromverbrauch:CURRENT&lt;br /&gt;
attr 00_Stromverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 00_Stromverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 01_Gasverbrauch SVG Log_Energy_M:gasverbrauch:CURRENT&lt;br /&gt;
attr 01_Gasverbrauch label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 01_Gasverbrauch room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 02_Energie_Monat SVG Log_Energy_Y:energie_monat:CURRENT&lt;br /&gt;
attr 02_Energie_Monat fixedrange month&lt;br /&gt;
attr 02_Energie_Monat label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 02_Energie_Monat room 1_Energie&lt;br /&gt;
&lt;br /&gt;
define 03_Energie_Jahr SVG Log_Energy_Y:energie_jahr:CURRENT&lt;br /&gt;
attr 03_Energie_Jahr fixedrange year&lt;br /&gt;
attr 03_Energie_Jahr label &amp;quot;Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr 03_Energie_Jahr room 1_Energie &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Strom (stromverbrauch.gplot):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Stromverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan kW&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert kWh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_power\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_power\x3a:: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Gas (gasverbrauch.gplot):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Created by FHEMWEB, 2013-05-16 21:45:00&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;Gasverbrauch Tag&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics &lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Momentan m³&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Summiert m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.consumption_gas\x3a::&lt;br /&gt;
#FileLog 4:OW_Strom_Gas_Zaehler.daily_gas\x3a::&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Momentan m³&#039; ls l2fill lw 0.5 with lines,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Summiert m³&#039; ls l1 lw 1 with lines,\&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Monat (energie_monat.gplot):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-02-15 18:52:52&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;Energieverbrauch Monat&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Daily_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Daily_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with points&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;&#039; ls l2 lw 1 with lines &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Plotfile Jahr (energie_jahr.gplot):&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# Created by FHEM/98_SVG.pm, 2014-05-02 10:04:37&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;Energieverbrauch Jahr&#039;&lt;br /&gt;
set ytics &lt;br /&gt;
set y2tics nomirror&lt;br /&gt;
set grid ytics&lt;br /&gt;
set ylabel &amp;quot;Stromverbrauch kWh&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Gasverbrauch m³&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 3:Dum_Monthly_Power_D.*:0:&lt;br /&gt;
#FileLog 3:Dum_Monthly_Gas_D.*:0:&lt;br /&gt;
&lt;br /&gt;
plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y1 title &#039;Strom kWh&#039; ls l3fill lw 1 with bars,\&lt;br /&gt;
     &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Gas m³&#039; ls l2fill lw 1 with fsteps &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:1-Wire]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Fiedel</name></author>
	</entry>
</feed>