<?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=Otto123</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=Otto123"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Otto123"/>
	<updated>2026-04-10T01:49:45Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=40558</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=40558"/>
		<updated>2025-12-22T13:34:53Z</updated>

		<summary type="html">&lt;p&gt;Otto123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgenden Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 reicht aktuell (November 2024) dieses Vorgehen:&lt;br /&gt;
&lt;br /&gt;
Im Terminal sudo raspi-config aufrufen und dann:&lt;br /&gt;
&lt;br /&gt;
# Punkt 3 Interface Options    Configure connections to peripherals &lt;br /&gt;
# Punkt I6 Serial Port Enable/disable shell messages on the serial connection&lt;br /&gt;
# Frage: Would you like a login shell to be accessible over serial? mit &amp;lt;No&amp;gt; beantwortet&lt;br /&gt;
# Frage: Would you like the serial port hardware to be enabled? mit &amp;lt;Yes&amp;gt; beantwortet&lt;br /&gt;
# Quittung: The serial login shell is disabled │ The serial interface is enabled -&amp;gt; Ok&lt;br /&gt;
&lt;br /&gt;
Jetzt neu starten.  Man muss keine Dateien editieren!&lt;br /&gt;
&lt;br /&gt;
Bei den Pi Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Der Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Achtung: Alte Version!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=40358</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=40358"/>
		<updated>2025-09-07T07:10:45Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Autostart von sonos2mqtt mit FHEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT verwenden, beachten Sie bitte, dass der MQTT2_CLIENT die ursprüngliche Herkunft der über MQTT verteilten Informationen nicht kennt. Daher ergeben sich in der Anwendung kleinere Unterschiede, zu deren Verständnis die diesbezüglichen [[MQTT2_CLIENT#Anwendung|Hinweise zu MQTT2_CLIENT]] bekannt sein sollten.}}Zur Einbindung von Geräten, welche zur Nutzung des MQTT-Protokols konfiguriert werden können und darüber mit einem MQTT-Server (früher: Broker) kommunizieren, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE|MQTT2_DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&amp;lt;ref&amp;gt;Beachten Sie bei mehrkanaligen Geräten, dass jeweils nur ein Hauptkanal mittels setExtensions verwaltet werden kann! U.a. aus diesen Grund ist es meist sinnvoller, die &#039;&#039;split&#039;&#039;-Varianten der attrTemplate-Einrichtung zu verwenden.&amp;lt;/ref&amp;gt;&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt SetExtensions, allerdings muss dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Allgemeine Einstellungen und Hinweise ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Beachten Sie, dass für [[autocreate]] in Verbindung mit MQTT2_SERVER &#039;&#039;&#039;zwingend&#039;&#039;&#039; jeder über MQTT kommunizierende Client eine ClientID angeben muss. Passen Sie daher ggf. die Einstellungen Ihres Geräts an. Manche Geräte verwenden auch &amp;quot;Wegwerf&amp;quot;-ClientID&#039;s. Für diese empfiehlt es sich, ggf. dann die durch autocreate erstellten Geräte nachzubearbeiten und die ClientID-Angabe v.a. aus den Inhalten des readingList-Attributs zu entfernen.}}Die nachfolgenden Beispiele gelingen am einfachsten mit &#039;&#039;&#039;MQTT2_SERVER als Server (&amp;quot;Broker&amp;quot;)&#039;&#039;&#039;, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; &#039;&#039;&#039;nicht deaktiviert&#039;&#039;&#039; sein, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines {{Link2CmdRef|Anker=autocreate|Lang=en|Label=autocreate}}-Device (&#039;&#039;TYPE=autocreate&#039;&#039;) ebenfalls aktiv ist.&amp;lt;/ref&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;lt;ref&amp;gt;MQTT2_SERVER verwendet als default-Einstellung für &#039;&#039;autocreate&#039;&#039; &#039;&#039;simple&#039;&#039;, ohne dass ein entsprechendes Attribut gesetzt werden müsste. Die Einstellung &#039;&#039;complex&#039;&#039; empfiehlt sich in der Regel nicht; diese ist jedoch dann zu empfehlen, wenn das Device entweder verschachtelte JSON-Array-Strukturen liefert oder bestimmte Readings nicht gefüllt werden sollen.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
&lt;br /&gt;
Falls der MQTT Broker mit Hilfe von [[allowed]] abgesichert wurde, muss in den Geräten ebenfalls User bzw. Passwort eingetragen werden, damit eine MQTT Kommunikation möglich ist.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muss ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT-Einstellungen in den Geräten ===&lt;br /&gt;
Die Beispiele gehen davon aus, dass die einzubindenden Geräte &#039;&#039;&#039;&#039;&#039;mit den default-Einstellungen&#039;&#039;&#039;&#039;&#039; für MQTT betrieben werden, wenn man von den Angaben zum Server und ggf. der Gerätekennung absieht. Es sollten also insbesondere &#039;&#039;&#039;keine Veränderungen der topic-Pfade&#039;&#039;&#039; vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Einige der hier beschriebenen Einstellungen haben Änderungen der sich durch die jeweiligen Automatismen eigentlich jeweils ergebenden Standard-Werte zur Folge, insbesondere, was Reading-Namen und von den Geräten gesendete Werte angeht. Sie sollten daher zunächst die Konfiguration des jeweiligen MQTT2-DEVICE-Geräts abschließen, und erst anschließend die weitere Integration mit Event-Handlern, logging usw. vornehmen.  }}&lt;br /&gt;
&lt;br /&gt;
=== auto-Konfigurations-features ===&lt;br /&gt;
Viele firmwares und Dienste bieten Möglichkeiten an, einer Controller-Software (insbesondere homeassistant) Hilfsdaten zur automatisierten Konfiguration bereitzustellen. Da FHEM diese Daten nicht zu ihrem ursprünglichen Zweck verwenden kann, werden hierdurch lediglich zusätzliche Readings erzeugt, mit denen man als User in der Regel wenig anfangen kann. Es wird daher empfohlen, derartige features &#039;&#039;&#039;abzuschalten&#039;&#039;&#039;. Wo dies nicht möglich ist, sollte man eine passende [[MQTT2_CLIENT#ignoreRegexp|ignoreRegexp]] setzen bzw. diese passend erweitern!&lt;br /&gt;
&lt;br /&gt;
=== Schritt für Schritt ===&lt;br /&gt;
Hier werden in der Regel fertige Konfigurationen für häufige Anwendungsfälle (beispielhaft) dargestellt. In [[MQTT2_DEVICE - Schritt für Schritt]] ist etwas mehr über die Vorgehensweise bei der Zusammenstellung der verschiedenen Attribute und deren Zusammenwirken zu erfahren.&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://www.zigbee2mqtt.io zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
&lt;br /&gt;
Einzelheiten zur Vorgehensweise sind auf der Detailseite [[Zigbee2mqtt|zigbee2mqtt]] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. &lt;br /&gt;
{{Hinweis|[[Datei:Tasmota mqtt config.png|120px|thumb|right]]Vor allem, aber nicht nur bei Verwendung des MQTT2_CLIENT als IO, ist es empfehlenswert, in der MQTT-Konfiguration der tasmota-Geräte für den Parameter &#039;&#039;&amp;lt;nowiki&amp;gt;topic = %topic% (tasmota)&amp;lt;/nowiki&amp;gt;&#039;&#039; ebenfalls die dynamisch aus der Chip-ID erzeugte Kennung &#039;&#039;DVES_%06X&#039;&#039; zu verwenden. (Kopieren Sie einfach diese Zeichenkette aus dem  Eingabefeld für &#039;&#039;&amp;quot;client ...&amp;quot;&#039;&#039;, siehe nebenstehende Abbildung). Die eigentliche Umbenennung zu einem &amp;quot;sprechenden Namen&amp;quot; kann dann innerhalb von FHEM - mittels &#039;&#039;rename&#039;&#039; oder ggf. mit einem &#039;&#039;alias&#039;&#039; - erfolgen.}}&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Bislang wurden Tasmota version(en) ab 6.1.1 bis min. 8.1.0 getestet, dies auf verschiedener Hardware, zunächst mit Sonoff Touch und S20, zwischenzeitlich mit einer Vielzahl von Geräten, die per USB-Adapter oder mit der Methode aus dem [https://www.heise.de/ct/artikel/Tuya-Convert-IoT-Geraete-ohne-Loeten-vom-Cloud-Zwang-befreien-4283623.html Tuya-Convert]-Projekt des heise-Verlags auf Tasmota umgeflasht wurden.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen - Schalter ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD devStateIcon on:FS20.on:off off:FS20.off:on&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/DVES_9B01BD/POWER on\&lt;br /&gt;
    off cmnd/DVES_9B01BD/POWER off\&lt;br /&gt;
    reboot cmnd/DVES_9B01BD/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen - Dimmer ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Dieses Beispiel ist nur bedingt zur Nachahmung zu empfehlen: Prinzipiell kann man Readings und setter in MQTT2_DEVICE fast nach Belieben benennen. Wählt man allerdings &amp;lt;i&amp;gt;FHEM-typische&amp;lt;/i&amp;gt; Namen, kann dies sehr zur Vereinfachung beitragen. Z.B. wird eine Sprachssteuerung bei einem Dimmer üblicherweise automatisch korrekt eingestellt werden, wenn der für die Helligkeit zuständige setter z.B. &amp;lt;i&amp;gt;pct&amp;lt;/i&amp;gt; (oder &amp;lt;i&amp;gt;brightness&amp;lt;/i&amp;gt;) heißt, oder eine abzufragende Temperatur &amp;lt;i&amp;gt;temperature&amp;lt;/i&amp;gt;. Entsprechendes gilt im Rahmen von &amp;lt;i&amp;gt;devspec-Abfragen&amp;lt;/i&amp;gt;.}}Bei einem Dimmer sind einige zusätzliche Anpassungen vorzunehmen. Ein Dimmer wird über &#039;&#039;&#039;POWER&#039;&#039;&#039; geschaltet und über &#039;&#039;&#039;Dimmer&#039;&#039;&#039; gedimmt. Damit das funktioniert, müssen ein stateFormat und devStateIcon zusammenarbeiten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr MQTT2_DVES_2DF34D devStateIcon 10\d.*:dim100%@orange:off 1\d.*:dim12%@orange:off 2\d.*:dim18%@orange:off 3\d.*:dim31%@orange:off 4\d.*:dim43%@orange:off 5\d.*:dim50%@orange:off 6\d.*:dim62%@orange:off 7\d.*:dim68%@orange:off 8\d.*:dim81%@orange:off 9\d.*:dim93%@orange:off 0:FS20.off:on .*:FS20.off@orange:off&lt;br /&gt;
 attr MQTT2_DVES_2DF34D stateFormat {if(ReadingsVal($name,&amp;quot;POWER&amp;quot;,0)eq&amp;quot;off&amp;quot;){0}else{ReadingsVal($name,&amp;quot;Dimmer&amp;quot;,0)}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun kann man über das Icon ein- und ausschalten und der Zustand des Dimmers wird korrekt angezeigt.&lt;br /&gt;
&lt;br /&gt;
Es fehlt noch ein Slider, um auch dimmen zu können. Zusätzlich muss setList noch um Dimmer erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 attr MQTT2_DVES_2DF34D setList on cmnd/dimmer/POWER on\&lt;br /&gt;
 off cmnd/dimmer/POWER off\&lt;br /&gt;
 Dimmer cmnd/dimmer/Dimmer&lt;br /&gt;
 attr MQTT2_DVES_2DF34D webCmd Dimmer&lt;br /&gt;
 attr MQTT2_DVES_2DF34D widgetOverride Dimmer:slider,0,1,100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
===== Allgemeines =====&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.{{Hinweis|Bitte attrTemplates nicht verwechseln mit templates, die auf den Tasmota- bzw. Blackadder-Seiten angeboten werden, welche zur Konfiguration der firmware genutzt werden können! Es sollte zunächst die firmware korrekt eingerichtet werden, so dass das Gerät selbst direkt auf dessen Web-Interface korrekt bedient werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===== Kein passendes attrTemplate vorhanden? =====&lt;br /&gt;
Exisitert (noch) kein passendes attrTemplate, ist zu empfehlen, zunächst das &amp;quot;&#039;&#039;tasmota_basic&#039;&#039;&amp;quot; anzuwenden. Dieses führt einige Basiskonfigurationen durch, die für FHEM hilfreich sind, z.B. wird die firmware so eingestellt, dass Schaltzustände in Kleinschreibung übermittelt werden, statt der defaults &amp;quot;ON&amp;quot; bzw. &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allerdings stellt dieses das &#039;&#039;autocreate&#039;&#039; an dem MQTT2_DEVICE auf 0, was dann nicht optimal ist, wenn man weitere Readings aus dem Gerät erwartet, etwa, weil zusätzliche Sensoren vorhanden sind. In diesem Fall empfiehlt es sich, das &#039;&#039;autocreate&#039;&#039;-Attribut an dem MQTT2_DEVICE zu löschen, damit alle weiteren Informationen verarbeitet werden und ggf. im &#039;&#039;jsonMap&#039;&#039;-Attribut nur die Angabe &amp;quot;&#039;&#039;POWER1:state&#039;&#039;&amp;quot; zu belassen.&lt;br /&gt;
&lt;br /&gt;
=== on-for-timer ===&lt;br /&gt;
Um z.B. ein Relais nur für einen Zeitraum anzuschalten, kann man bei Tasmota-Geräten zwischen mehrere Varianten wählen. Ohne speziellen &#039;&#039;setter&#039;&#039; in der &#039;&#039;setList&#039;&#039; werden die &#039;&#039;&#039;SetExtensions&#039;&#039;&#039; verwendet. Timer laufen damit innerhalb FHEM. Da diese intern als temporäres [[at]] ausgeführt werden, sind diese auch noch nach einem FHEM-Neustart vorhanden, sofern FHEM ordnungsgemäß beendet und neu gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Die Tasmota-firmware bietet ergänzend dazu zwei Möglichkeiten an, bei denen der Timer direkt auf dem ESP-Microcontroller verwaltet wird:&lt;br /&gt;
&lt;br /&gt;
==== delay ==== &lt;br /&gt;
Zeile zur Erweiterung der &#039;&#039;setList&#039;&#039; (Attributeingabe via FHEMWEB!):&lt;br /&gt;
 on-for-timer {my $duration = $EVTPART1*10; &#039;cmnd/DVES_575127/Backlog POWER1 1; delay &#039;.$duration.&#039;; POWER1 0&#039;}&lt;br /&gt;
&lt;br /&gt;
Ohne Auswirkungen auf alles, was danach kommt, hat aber den Nachteil, dass die möglichen Zeitspannen auf 3600 1/10 Sekunden begrenzt sind (siehe [https://tasmota.github.io/docs/Commands/#delay Commands - Tasmota Delay]), also 6 Minuten.&lt;br /&gt;
&lt;br /&gt;
====pulseTime ====&lt;br /&gt;
Zeile zur Erweiterung der &#039;&#039;setList&#039;&#039; (s.o.):&lt;br /&gt;
 on-for-timer {my $duration = $EVTPART1 &amp;lt; 11.2 ? $EVTPART1*10 : $EVTPART1+100; &#039;CMNDTOPIC/Backlog pulseTime1 &#039;.$duration.&#039;; POWER1 1&#039;}&lt;br /&gt;
Auch hier sind die möglichen längsten Einschaltdauern begrenzt, allerdings ist diese mit 18h deutlich länger als mit &#039;&#039;delay&#039;&#039;. Diese Implementierung hat den Nachteil, dass der ESP-Microcontroller die jeweils letzte pulseTime auch für alle weiteren &amp;quot;normalen&amp;quot; Einschaltvorgänge berücksichtigt, das Relais also ebenfalls nach Ablauf der übermittelten pulseTime abgeschaltet wird; dies gilt allerdings ohne explizites &#039;&#039;save&#039;&#039; nur bis zum nächsten reboot des Microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Da nach dem ersten pulseTime setzten, diese immer benutzt wird, kann man mit einem kleine Workaround das Device normal arbeiten lassen. Dafür wird bei jedem anderem Befehl, aus der PulseTime, der Timer deaktiviert.&lt;br /&gt;
Hierfür machen wir uns zu nutzen, dass man mehrere Befehle gleichzeitig an Tasmota senden kann (backlog). Ob diese Lösung auch mit anderen MQTT Firmwares funktioniert, kann ich nicht sagen. Es wurde lediglich mit Tasmota getestet.&lt;br /&gt;
Wir senden also, bevor wir den eigentlich Tasmota Befehl zum Ein- oder Ausschalten schicken, einen Befehl zum deaktivieren des Timers: &amp;quot;pulseTime 0&amp;quot;&lt;br /&gt;
Hier ein Beispiel: (das entsprechende device &amp;quot;DEV_611F3E&amp;quot; muss gegen das eigene ersetzt werden)&lt;br /&gt;
 off:noArg    cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 0&lt;br /&gt;
 on:noArg     cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 1 &lt;br /&gt;
 toggle:noArg cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 2&lt;br /&gt;
&lt;br /&gt;
=== zigbee2tasmota ===&lt;br /&gt;
[https://tasmota.github.io/docs/Zigbee/ zigbee2tasmota] ist eine Erweiterung der Tasmota-firmware für Microcontroller, insbesondere dem ESP8266 (und ESP32)(link), über die einige ZigBee-Chipsätze (insbesondere TI CC2530) als [[ZigBee#Koordinator_.28ZigBee_coordinator.2C_ZC.29|Coordinator]] eingebunden werden können, um ein ZigBee-Netzwerk aufzubauen.&lt;br /&gt;
{{Hinweis|Stand 08/2020 war die Einbindung anderer Chipsätze erst in einem Alpha-Stadium; die Zahl der über einen CC2530 einbindbaren ZigBee-Geräte ist daher derzeit relativ begrenzt (ca. 16)!}}&lt;br /&gt;
Auch für diese Lösung stehen einige &#039;&#039;attrTemplate&#039;&#039; zur Verfügung. Nähere Informationen hierzu sind dem Artikel [[Zigbee2Tasmota-MQTT]] zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
== ESPurna ==&lt;br /&gt;
ESPurna ist eine weitere alternative firmware für ESP8266-basierte Geräte, Details sind der [https://github.com/xoseperez/espurna/wiki Projektseite] zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
Das Format, in dem ESPurna Daten sendet, unterscheidet sich v.a. darin, dass bool&#039;sche Werte als 0 oder 1 gesendet werden, und nicht wie sonst üblich als &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot; oä.. Es stehen einige Mustertemplates zur Verfügung, um diese Art der Payload in FHEM-konforme Werte zu überführen.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig senden die Shelly-Geräte ihren kompletten Status alle 30 Sekunden. Dies kann man über den Parameter &#039;&#039;mqtt_update_period&#039;&#039; in den &#039;&#039;settings&#039;&#039; ändern, allerdings ist dieser nur über die HTTP-Schnittstelle des Shelly verfügbar. Um diese Statusupdates abzustellen, kann über den Browser folgender Befehl verwendet werden:&lt;br /&gt;
 http://&amp;lt;ip-des-shelly&amp;gt;/settings?mqtt_update_period=0, &lt;br /&gt;
Soweit bekannt, werden dann nur statische updates ausgeschaltet, z.B. für das Relay bzw. angeschlossene Taster oder Schalter; insbesondere Verbrauchswerte werden dennoch aktualisiert.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly Plug S ===&lt;br /&gt;
Über die Leistungsmessung des Shelly Plug S lässt sich sehr einfach auch eine Erkennung des Betriebszustandes des angeschlossenen Gerätes realisieren. Dazu stellt man zuerst fest, wieviel Leistung das Gerät in jedem Betriebszustand verbraucht und kann dann z.B. für einen angeschlossenen Fernseher, der im Standby 1 Watt und im Betrieb &amp;gt; 100 Watt verbraucht, den Zustand erkennen und als on/off Status anzeigen. Dazu wird das state Reading wie folgt definiert:&lt;br /&gt;
  attr readingList shellies/shellyplug-s-123456/relay/0/power:.* { { state =&amp;gt; $EVTPART0&amp;lt;100?&amp;quot;off&amp;quot;:&amp;quot;on&amp;quot; } }&lt;br /&gt;
Der Status des MQTT2 Devices zeigt dann bei &amp;lt;100W &amp;quot;off&amp;quot; und sonst &amp;quot;on&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
=== HTTP-Commands ===&lt;br /&gt;
In diesem {{Link2Forum|Topic=102369|LinkText=Forumsbeitrag}} wird eine Lösung vorgestellt, um über [[99 myUtils anlegen|myUtils-Code]] weitere Kommandos bereitzustellen, die sonst nur direkt über das Web-Interface zu erreichen sind.&lt;br /&gt;
&lt;br /&gt;
== Shelly Gen2 ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Shelly mit dem WLAN verbinden, entweder über die Shelly APP oder per Laptop auf den Offenen AP des Shelly verbinden und dann übers WebUI des Shelly mit dem Heimischen WLAN verbinden. Über die APP geht dies meist etwas einfach und schneller, besonders wenn man mehrere Shelly Geräte hinzufügen möchte. Durch die BT Unterstützung der Gen2 Geräte, klappt dies meist auch deutlich schneller und zuverlässiger als noch bei Gen 1 Geräten. &lt;br /&gt;
Nachdem der Shelly mit dem WLAN verbunden ist, sollte die Firmware überprüft und gegebenenfalls aktualisiert werden (Stand Anfang 2022 scheint die firmware noch nicht voll ausgereift gewesen zu sein, da dass insbesondere die MQTT-Schnittstelle immer wieder überarbeitet wurde). Bitte KEINE BETA Versionen installieren, wenn nicht dazu aufgefordert wurde.&lt;br /&gt;
Nach dem, durch das Update ausgelösten, Neustart kurz Prüfen ob die Uhrzeit passt, wenn trotz richtiger Zeitzone die Uhrzeit nicht stimmt hilft ein weiterer Neustart.&lt;br /&gt;
Nun auf Networks| Internet (leider in APP und WebUI unterschiedlich), hier auf MQTT und die Einstellungen für den verwendeten MQTT Server treffen. Diese Einstellungen werden auch wieder durch Neustart übernommen.&lt;br /&gt;
=== Shelly Plus 1 ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shelly erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
defmod MQTT2_shellyplus1_441793a34044 MQTT2_DEVICE shellyplus1_441793a34044&lt;br /&gt;
attr MQTT2_shellyplus1_441793a34044 readingList shellyplus1_441793a34044:shellyplus1-441793a34044/online:.* online\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/mqtt:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/events/rpc:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/sys:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/switch_0:.* { json2nameValue($EVENT) }&lt;br /&gt;
attr MQTT2_shellyplus1_441793a34044 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 IODev m2s&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 available_updates_beta_version 0.10.0-beta6&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 cfg_rev 7&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 connected true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 dst shellyplus1-441793a34044/events&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 fs_free 237568&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 fs_size 458752&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 id 0&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 mac 441793A34044&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 method NotifyStatus&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 online true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 output false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_mqtt_connected true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_id 0&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_output false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_source WS_in&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_switch_0_temperature_tC 39.88&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_switch_0_temperature_tF 103.78&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 params_sys_available_updates_beta_version 0.10.0-beta6&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_ts 1646474952.66&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_rssi -57&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_ssid WLAN-Alex&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_sta_ip 192.168.177.167&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_status got ip&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 ram_free 179764&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 ram_size 249456&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 restart_required false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 source WS_in&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 src shellyplus1-441793a34044&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 temperature_tC 39.9&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 temperature_tF 103.9&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 time 11:08&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 unixtime 1646474911&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 uptime 7&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die set Anweisung unterhalb der Device Übersicht können wir ein attrTemplate wählen; shellyPlus_1&lt;br /&gt;
Es erscheint eine kurze Übersicht was im Template enthalten ist, dieses befindet sich noch im Aufbau und wird aktuell von der Community aufgebaut und weiterentwickelt. Mit einem Klick auf „set“ laden wir das Template und übernehmen die Einstellungen für den Shelly Plus 1.&lt;br /&gt;
Damit ist der Shelly bereit, im Status wird neben dem Namen auch der Onlinestatus des Shellys (grüner | roter Punkt) so wie eine Lampe mit Toggle (on | off) Funktion und die Temperatur des Shellys angezeigt. Darüber hinaus verschwindet die Lampe und wird durch einen klickbaren Hinweis ersetzt, wenn ein Neustart des Shellys nötig ist.&lt;br /&gt;
&lt;br /&gt;
=== Tipps ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=So nimmt man bei Verwendung eines normalen Schalters (eine Stellung EIN eine AUS) gerne den „Flip“ Mode – damit wird der Shelly IMMER umgeschaltet, egal in welche Stellung der Schalter sich bewegt („Kreuzschaltung“). Diese Einstellungen trifft man grundlegend im WebUI des Shelly (oder  APP) unter „Channel settings“.&lt;br /&gt;
Für den „Flip“ müssen wir die Grundeinstellung des „Power on default“ auch ändern (gleiche Seite) - persönlich wähle ich „Restore last“, also: nach Stromausfall wird der letzte Zustand wieder hergestellt; grundsätzlich gehen alle Modi außer „Match input“.&lt;br /&gt;
}}&lt;br /&gt;
Das aktuelle Template wurde um die Funktion erweitert, den Button Mode umzuschalten. In den meisten Fällen legt man sich auf eine Schaltmethode fest, welche zum Hardware Setup passt.&lt;br /&gt;
&lt;br /&gt;
Manchmal will man aber vielleicht den Hardware Schalter deaktivieren, nennen wir es „Kindersicherung“. Bei Shelly heißt das „detached“.&lt;br /&gt;
Diese Funktion wurde ins Template als „in_mode“ Übernommen. Mögliche set Befehle sind „flip“, „detached“ „toggle“. Bedingung zur Verwendung ist: „relay power on default“ darf NICHT „Match input“ sein. Sollte Follow statt Flip bevorzugt werden, müsste entsprechende Zeile in der setList von „flip“ auf „follow“ angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Der Befehlt lässt sich mit dem webCmd in_mode auch schnell zugänglich in die Übersicht vom Shelly setzen, so erhält man neben dem Status ein Dropdown mit flip detached  und toggle zum schnellen umschalten. Mit webCmdLabel kann man noch einen Namen für das Dropdown setzen.&lt;br /&gt;
&lt;br /&gt;
== OpenMQTTGateway ==&lt;br /&gt;
Um verschiedene Systeme wie BLE usw. auf MQTT zu bringen bietet sich [https://github.com/1technophile/OpenMQTTGateway OpenMQTTGateway] an, z.B. wird für das Auslesen vieler BLE-Seonsoren lediglich ein ESP32-Board ohne Zusatzhardware (ab ca. 5,- Euro in Fernost erhältlich) benötigt, auf das dann eine vorkompilierte firmware geflasht wird (hierfür wird ein USB-seriell-Wandler benötigt).&lt;br /&gt;
&lt;br /&gt;
Nähere Details sind im Artikel [[OpenMQTTGateway]] zu finden.&lt;br /&gt;
&lt;br /&gt;
== 8-Port-Ethernet Board ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
datei:8-relais-ethernetboard closed.jpg|mit Gehäuse&lt;br /&gt;
datei:8-Port-MQTT-Relais-Board.jpg|ohne Gehäuse&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In diesem {{Link2Forum|Topic=107536|Message=1016379|LinkText=Forenbeitrag}} bzw. dem betreffenden Thread wurde ein Relais-Board vorgestellt, mit dem 8 Relais über Ethernetkabel verbunden werden, die Kommunikation erfolgt dann über MQTT. Über die verwendete Software ist wenig bekannt, es könnte jedoch sein, dass diese Art der Einbindung auch bei weiteren Boards funktioniert, die einen bestimmten Ethernet-Chipset von TI (DP83848) und eine Cortex M3 MCU verwenden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel. Allerdings lassen sich manche MiLight-Geräte nicht an die Bridge anlernen, und es werden auch nicht alle Fernbedienungs-Typen voll unterstützt.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist und die zu steuernden Leuchtmittel mit dem Hub bereits verbunden (gepairt) sind bzw. entsprechende Fernbedienungs-Signale empfangen werden können (bei vorhandenem pairing eines Leuchtmittels an die Fernbedienung).&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
Die Einstellungen für &#039;&#039;MQTT topic pattern&#039;&#039; usw. können auf den default-Werten&amp;lt;ref&amp;gt;Diese sind: &amp;lt;br&amp;gt;&#039;&#039;milight/:device_id/:device_type/:group_id&#039;&#039; für &amp;quot;topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/updates/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;update topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/states/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;state topic pattern&amp;quot;. Der Autor hat derzeit folgende Infotypen zum Senden markiert: &amp;quot;status, brightness, hue, color, mode, color_temp, bulb_mode, computed_color, hex_color&amp;quot; (enthält eventuell zu viele Angaben. Bei einem Eventhandler muss man uU. darauf achten, dass kurz hintereinander zweimal dasselbe Event kommen kann (für ON/OFF)).&amp;lt;/ref&amp;gt; belassen werden, für die seit Mitte 2019 vorhandene Option, eine LWT-Message zu senden (&#039;&#039;MQTT Client Status Topic&#039;&#039;), tragen Sie &#039;&#039;milight/LWT&#039;&#039; ein und aktivieren &#039;&#039;Detailed&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; &#039;&#039;&#039;esp_milight_hub_bridge&#039;&#039;&#039; angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
==== Ein Leuchtmittel, mehrere Fernbedienungen ====&lt;br /&gt;
Pairt man mehrere Fernbedienungen mit einem Leuchtmittel, sollten auch alle entsprechenden Fernbedienungscodes in das readingList-Attribut übernommen werden. Dazu übernimmt man am einfachsten die Einträge aus den zusätzlichen MQTT2_DEVICEs. Benötigt man das zusätzliche Device nicht separat, um z.B. eine getrennte Gruppenschaltung zu realisieren, kann man dieses löschen. Beispiel-readingList für ein Device, das auf zwei Fernbedienungscodes und zwei Gruppen &amp;quot;hört&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 attr Licht_Wz_all readingList milight/states/0x1234/rgbw/2:.* {json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x1234/rgbw/2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0x1234/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x1234/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0xABCD/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0xABCD/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0xABCD/rgbw/4:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0xABCD/rgbw/4:.* { json2nameValue($EVENT) }&lt;br /&gt;
&lt;br /&gt;
==== Fernbedienung als Input-Device nutzen ====&lt;br /&gt;
In diesem {{Link2Forum|Topic=103493|LinkText=Thread}} ist dargestellt, wie man eine Fernbedingung des Typs FUT089 dazu verwenden kann, einen [[MPD]] oder Rollladenaktoren zu steuern, oder diese Fernbedienung für [[Hue#HUE-Device|HUEDevice]]-Leuchtmittel zu nutzen.&lt;br /&gt;
Um hier nur Differenz-Meldungen direkt an die betreffende myUtils-Funktion zu übergeben und doppelte Events zu verhindern, sollte hier die readingList so angepasst werden, dass nur Messages aus dem &amp;quot;updates&amp;quot;-Zweig ausgewertet werden: &lt;br /&gt;
 defmod MiLight_RC1_0 MQTT2_DEVICE milight_0xABCD_0&lt;br /&gt;
 attr MiLight_RC1_0 readingList milight/states/0xABCD/fut089/[0-8]:.* {}&lt;br /&gt;
 milight/updates/0xABCD/fut089/0:.* { FHEM::attrT_MiLight_Utils::MPDcontrol(&#039;myMPD&#039;,$EVENT, &#039;Yamaha_Main&#039;) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/1:.* { FHEM::attrT_MiLight_Utils::FUT_to_RGBW(&#039;Licht_Stehlampe_links&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/2:.* { FHEM::attrT_MiLight_Utils::FUT_to_RGBW(&#039;Licht_Stehlampe_rechts&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/3:.* { FHEM::attrT_MiLight_Utils::four_Lights_matrix($EVENT, &#039;Licht_WoZi_Vorn_Aussen&#039;, &#039;Licht_WoZi_Vorn_Mitte&#039;, &#039;Licht_WoZi_Hinten_Aussen&#039;, &#039;Licht_WoZi_Hinten_Mitte&#039;) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/4:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Jalousie_WZ&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/5:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Rollladen_WZ_SSO&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/6:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Rollladen_WZ_SSW&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/7:.* {}\&lt;br /&gt;
 milight/updates/0x5D47/fut089/8:.* {}&lt;br /&gt;
 attr MiLight_RC_WZ stateFormat CommandSet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
An dieser Stelle sollen lediglich die Grundzüge erläutert werden, eine ausführliche Anleitung über die Konfiguration des [[EBUS-MQTT2|eBus mit MQTT2 gibt es hier]].&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
Vorausgesetzt wird ein laufender eBus-Dämon. Dessen Einrichtung wird im Artikel [[EBUS#Software|EBUS]] beschrieben.&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) ist die Kommunikation über MQTT zu aktivieren und die Topic-Struktur festzulegen, z.B. &#039;&#039;ebusd/%circuit/%name&#039;&#039;.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der &#039;&#039;readingList&#039;&#039; enthalten, die vom ebus stammen. Da wir die &#039;&#039;readingList&#039;&#039; anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen zumindest sämtliche &#039;&#039;readingList&#039;&#039;-Attribute entsprechend bereinigt oder gelöscht werden; in der Regel ist es einfacher, diese Geräte nach dem Deaktivieren des autocreate am IO zu löschen.&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT als IO nutzen, sollte für das weitere Vorgehen eine Kopie des MQTT2-&amp;quot;Sammeldevices&amp;quot; genutzt werden, und dessen &#039;&#039;CID&#039;&#039; auf &#039;&#039;ebusd&#039;&#039; geändert werden. Nach Anwendung des ebusd-splitter-templates müssen dann alle den ebus betreffenden Einträge aus der &#039;&#039;readingList&#039;&#039; des &amp;quot;Sammeldevices&amp;quot; gelöscht werden oder diese ganz gelöscht.}}Ist der ebus-Dämon lauffähig und für MQTT konfiguriert, sendet dieser regelmäßige Messages. &lt;br /&gt;
&lt;br /&gt;
Sind die Vorbereitungen abgeschlossen, aktivieren wir &#039;&#039;autocreate&#039;&#039; wieder, allerdings wählen wir als autocreate-Methode &#039;&#039;complex&#039;&#039; aus, da der eBus-Dämon teilweise&amp;lt;ref&amp;gt;Dies betrifft vorrangig die Statusmeldungen&amp;lt;/ref&amp;gt; eine weiter verschachtelte JSON-Struktur zum Versenden der Informationen verwendet als üblich. Danach wird wie bei den anderen o.g. Geräten automatisch ein neues MQTT2_DEVICE angelegt&amp;lt;ref&amp;gt;Bei Verwendung des MQTT2_CLIENT wird dann die &#039;&#039;readingList&#039;&#039; am bereits definierten MQTT2_DEVICE aus der Kopie des &amp;quot;Sammeldevice&amp;quot; automatisch wieder erstellt bzw. gefüllt.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Auf das von &#039;&#039;autocreate&#039;&#039; erstellte MQTT2_DEVICE wird nunmehr das template &#039;&#039;eBus_daemon_splitter&#039;&#039; angewendet. Nach einiger Zeit sollte sowohl die readingList an diesem Device erweitert worden sein, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt. &lt;br /&gt;
Dieses Device liefert zukünftig Readings zum Dämon selbst, wie dessen &#039;&#039;uptime&#039;&#039;, alle weiteren am eBus angeschlossenen Teilnehmer werden dagegen zweckmäßigerweise durch ein oder mehrere weitere MQTT2_DEVICE-Geräte dargestellt. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;attrTemplate&#039;&#039; läd eine weitere &#039;&#039;attrTemplate&#039;&#039;-file und [[99 myUtils anlegen|99_myUtils-Code]] vom FHEM-Server nach. Beides steht dann auch unmittelbar zur Nutzung zur Verfügung. &lt;br /&gt;
==== &amp;quot;ebusd_bai&amp;quot; und weitere Geräte ====&lt;br /&gt;
{{Hinweis|Der eBus-Dämon sendet nicht alle Informationen zu allen am eBus angeschlossenen Geräte automatisch. Diese müssen teilweise erst aktiv angefragt werden. Wie das im einzelnen erfolgen kann, ist dem o.g. Detailartikel zu entnehmen.}}&lt;br /&gt;
Funktioniert die Kommunikation zwischen dem eBus-Dämon und FHEM, sollte nach einigen Minuten zumindest ein weiteres Gerät namens &#039;&#039;MQTT2_ebus_bai&#039;&#039; angelegt worden sein.&lt;br /&gt;
&lt;br /&gt;
== Sonos2Mqtt ==&lt;br /&gt;
Aus einem Versuch heraus ist ein {{Link2Forum|Topic=111711|LinkText=kleines Projekt}} geworden: Die Sonos Umgebung mit Hilfe von sonos2mqtt als generisches MQTT2_DEVICE komfortabel in FHEM einzubinden.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von ein paar Templates ist die grundlegende Einbindung in FHEM nach einer kleinen Installation auf Systemebene schnell erledigt. Es läuft derzeit noch zahlreiche Entwicklung und Ideenfindung, die Fortschritte sind live im Thread oder [[Sonos2mqtt|konsolidiert im Wiki]] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Setup im System ===&lt;br /&gt;
Für dies Funktion wird der nodejs Server [https://github.com/svrooij/sonos2mqtt sonos2mqtt] benötigt. Entweder installiert man den lokal, irgendwo im Netzwerk oder nutzt den [[MQTT2-Module - Praxisbeispiele#Verwendung des Docker Containers|Docker Container.]]&lt;br /&gt;
&lt;br /&gt;
Der nodejs Server sonos2mqtt kann aus Sicht von FHEM irgendwo im Netzwerk stehen - aber er muss im gleichen Netzwerk wie die Sonosplayer stehen. Das UPNP Sonosnetzwerk funktioniert nicht über Netzwerksegmente hinweg.&lt;br /&gt;
&lt;br /&gt;
Eine Beschreibung aller Startparameter für sonos2mqtt findet man [https://svrooij.github.io/sonos2mqtt in der offiziellen Doku].&lt;br /&gt;
&lt;br /&gt;
Erreicht der nodejs Server sonos2mqtt den MQTT Server nicht über - default: localhost, Port 1883, keine Anmeldung&amp;quot; - muss der Parameter --mqtt  gesetzt werden! &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://myuser:the_secret_password@192.168.0.3:1800&amp;lt;/code&amp;gt;            # alles gesetzt&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://192.168.0.3:1800&amp;lt;/code&amp;gt;                                                                 # IP Adresse und Port gesetzt, keine Anmeldung am MQTT Server&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://192.168.0.3&amp;lt;/code&amp;gt;                                                                           # IP Adresse gesetzt, Port ist Standard 1883&lt;br /&gt;
&lt;br /&gt;
Erfolgt der Start mit pm2, werden die Parameter mit einem &#039;&#039;zusätzlichen&#039;&#039; doppelten Bindestrich (--) hinter dem nodejs Modul übergeben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
pm2 start sonos2mqtt -- --mqtt mqtt://myuser:the_secret_password@192.168.0.3:1800&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lokales Setup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: nodejs und pm2 ist installiert und für alle Benutzer verfügbar. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo npm install -g sonos2mqtt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Je nach Entwicklungsstand sind auch Betaversionen verfügbar. Für aktuelle Betaversionen wird dieser Zusatz beim Setup verwendet. -&amp;gt; sonosmqtt@3.1.0-beta.1&lt;br /&gt;
&lt;br /&gt;
Wird der sonos2mqtt Server auf einer anderen Maschine eingerichtet, ist der Start entsprechend diesem Absatz [[MQTT2-Module - Praxisbeispiele#Autostart von sonos2mqtt im System mit pm2 .28Alternative.29|Autostart von Sonos2mqtt im System mit pm2]] einzurichten.&lt;br /&gt;
&lt;br /&gt;
=== Setup in FHEM ===&lt;br /&gt;
Man definiert lediglich ein Bridge Device, der Rest wird automatisch erledigt.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: &lt;br /&gt;
* autocreate im System ist aktiv. &lt;br /&gt;
* Der verwendete MQTT2_SERVER steht auf &#039;&#039;&#039;autocreate simple&#039;&#039;&#039; (default/Standard).&lt;br /&gt;
* Templates aktuell - FHEM uptodate oder bei Bedarf in der FHEM Kommandozeile aktualisieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ Svn_GetFile(&amp;quot;FHEM/lib/AttrTemplate/mqtt2.template&amp;quot;, &amp;quot;FHEM/lib/AttrTemplate/mqtt2.template&amp;quot;, sub(){ AttrTemplate_Initialize() }) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei der Anwendung des Templates für die Bridge wird das Attribut devicetopic ausgelesen oder auf default sonos gesetzt! &lt;br /&gt;
&lt;br /&gt;
Wird ein anderer Devicetopic verwendet, muss der bei der Anlage der Bridge gesetzt werden!&lt;br /&gt;
&lt;br /&gt;
Diese Zeilen einzeln in der FHEM Kommandozeile oder als Block in der Raw Definition. &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define SonosBridge MQTT2_DEVICE&lt;br /&gt;
attr SonosBridge room MQTT2_DEVICE&lt;br /&gt;
set SonosBridge attrTemplate sonos2mqtt_bridge_comfort&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das Template sonos2mqtt_bridge_comfort:&lt;br /&gt;
* setzt das Template sonos2mqtt_bridge auf das Device,&lt;br /&gt;
* lädt die Datei 99_sonos2mqttUtils.pm aus dem contrib Ordner nach,&lt;br /&gt;
* definiert ein notify, dies erledigt im weiteren Betrieb die automatische Konfiguration der automatisch erzeugten MQTT2_DEVICEs. &lt;br /&gt;
** mit dem Template sonos2mqtt_speaker (das Template kann auch manuell auf vorhandene Player angewendet werden, die automatische Erzeugung der Player wird aber empfohlen)&lt;br /&gt;
** Ermittelt Detailinformation des jeweiligen Players (vor allem IP Adresse und Modelnumber)&lt;br /&gt;
** Lädt die Sonosgeräte Icons von den UPNP Devices herunter&lt;br /&gt;
** erweitert das setList input Kommando um den TV Eingang (HDMI, spdif) bzw. Line_IN Eingang falls vorhanden (Modelnumber)&lt;br /&gt;
* Die Player werden automatisch einzeln erzeugt wenn sie mqtt Nachrichten senden (Play/Stop) oder (alle sofort) wenn der sonos2mqtt Server gestartet wird. &lt;br /&gt;
&lt;br /&gt;
==== Wozu dient die Bridge? ====&lt;br /&gt;
Sie stellt ein paar wesentliche Funktionen zu Verfügung&lt;br /&gt;
# Auffangen von nicht benötigten MQTT Nachrichten.&lt;br /&gt;
# Erzeugung/Weiterleitung von Nachrichten für die einzelnen Player - damit auch die Erzeugung von separaten Playern nach dem Schema MQTT2_RINCON12345678901234567.&lt;br /&gt;
# Statusanzeige sonos2mqtt als Reading connected (0 offline, 1 connected, 2 Player connected).&lt;br /&gt;
Sie kann zusätzlich als zentrales Device verwendet werden, um die Sonos Umgebung abzubilden, z.B. Readings für Favoriten  u.ä.&lt;br /&gt;
&lt;br /&gt;
==== Start sonos2mqtt lokal ====&lt;br /&gt;
Der Start / Stop des sonos2mqtt Servers innerhalb von FHEM ist nur lokal simpel möglich. Ist der Server irgendwo im Netzwerk oder im Docker Container, muss man andere Möglichkeiten finden. Der Neustart aus FHEM ist zwar praktisch, aber nicht erforderlich. &lt;br /&gt;
&lt;br /&gt;
Wird eine existierenden Sonos Landschaft inhaltlich verändert (Player dazu/weg), muss der Server neu gestartet werden. Werden Player temporär abgeschaltet, merkt das der Server nach einer Zeit selbst, oder man forciert dies mit einem CheckSubscription an der Bridge.&lt;br /&gt;
&lt;br /&gt;
Soll das Modul sonos2mqtt mit seinen default Einstellungen gestartet werden, genügt dieser kurze Befehl (in der FHEM Kommandozeile):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;pm2 start sonos2mqtt&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tipp: Verwendet man anstatt &amp;quot;Befehl&amp;quot; den Syntax {qx(Befehl)} in der FHEM Kommandozeile, wirkt der Befehl zwar blockierend aber die Ausgabe erfolgt im Browser und nicht im Logfile. Mit dem Parameter -s erfolgt keine Ausgabe.&lt;br /&gt;
&lt;br /&gt;
==== Autostart von sonos2mqtt mit FHEM ====&lt;br /&gt;
Der Code startet sowohl das sonos2mqtt Modul sofort und implementiert ein notify für den zukünftigen automatischen Start beim Start von FHEM.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define n_pm2_sonos notify global:INITIALIZED|n_pm2_sonos:start &amp;quot;pm2 -s start sonos2mqtt&amp;quot;&lt;br /&gt;
trigger n_pm2_sonos start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Autostart von sonos2mqtt im System mit pm2 (Alternative) ===&lt;br /&gt;
Der obige Code startet das sonos2mqtt nodejs Modul mit pm2 beim Start von FHEM. Sollte das nicht funktionieren oder nicht ins gesamte Konzept passen (weil z.B. mehrere nodejs Module geladen werden) kann der automatische Start direkt im System erfolgen. Zunächst dafür das oben eventuell schon definierte notify löschen!&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
delete n_pm2_sonos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Der Start des Modul muss nicht mit erhöhten Rechten geschehen! Im Terminal folgendes eingeben (unter dem angemeldeten Benutzer wird sonos2mqtt später immer gestartet):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pm2 start sonos2mqtt&lt;br /&gt;
pm2 startup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Der letzte Befehl &amp;quot;redet&amp;quot;, d.h. es gibt eine Ausgabe in der Art:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[PM2] To setup the Startup Script, copy/paste the following command:&lt;br /&gt;
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Man tut einfach genau das, was dasteht: die letzte Zeile kopieren und wieder einfügen und ausführen. Danach muss man die Konfiguration von pm2 noch sichern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pm2 save&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verwendung des Docker Containers ===&lt;br /&gt;
Ergänzend zur [https://svrooij.io/sonos2mqtt/getting-started.html#run-sonos2mqtt-in-docker Original Doku:]&lt;br /&gt;
&lt;br /&gt;
Beim Container findet die Konfiguration der Verbindung zum FHEM in den Environment Variablen statt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
environment:&lt;br /&gt;
  - SONOS2MQTT_DEVICE=192.168.56.207 # hier muss einer der Sonos Lautsprecher stehen&lt;br /&gt;
  - SONOS2MQTT_MQTT=mqtt://192.168.56.121:1883 # mqtt2_server FHEM, erweiterter Syntax siehe oben&lt;br /&gt;
  - SONOS_LISTENER_HOST=192.168.56.121 # Docker host IP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonos2mqtt mit mehr Komfort ===&lt;br /&gt;
Im Wiki Artikel [[Sonos2mqtt]] geht es weiter.&lt;br /&gt;
&lt;br /&gt;
== Owntracks GPS Tracking in FHEM über MQTT - Cloud ==&lt;br /&gt;
Das hier gezeiget Beispiel verwendet eine MQTT Instanz im Internet, die mit einem MQTT2_CLIENT angebunden wird. Da wenig Traffic benötigt wird, genügt z.B. eine kostenfreie Instanz z.B. bei myqtthub (Stand. Dezember 2020)&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man einen MQTT2_SERVER auch direkt verfügbar machen, wenn man sich sicher ist was man da tut! Siehe {{Link2Forum|Topic=99666|Message=1028576|LinkText=diesen Forenbeitrag}}. Das Bridge Device wird dabei genau so benötigt, nur der IODev ist dann der MQTT2_SERVER.&lt;br /&gt;
&lt;br /&gt;
=== owntracks auf dem Smartphone konfigurieren ===&lt;br /&gt;
Menü / Einstellung / Verbindung &lt;br /&gt;
&lt;br /&gt;
Dort sind insgesamt 4 Registerkarten mit Werten zu füllen (Beispiel):&lt;br /&gt;
* Modus -&amp;gt; MQTT&lt;br /&gt;
* Hostname  -&amp;gt; &lt;br /&gt;
** Hostnamen: host.cloud.com &lt;br /&gt;
** Port: 8883 &lt;br /&gt;
** ClientID: ID vom Provider &lt;br /&gt;
** WebSockets (nicht nutzen)&lt;br /&gt;
* Identifikation -&amp;gt; &lt;br /&gt;
** Benutzername: user-name &lt;br /&gt;
** Passwort: user-password &lt;br /&gt;
** GeräteID: mi6 (erscheint in FHEM im Device Namen verwendet)&lt;br /&gt;
** TrackerID: hk (nur zweistellig, erscheint als ID in der owntracks Karte)&lt;br /&gt;
* Sicherheit -&amp;gt; &lt;br /&gt;
** TLS aktivieren&lt;br /&gt;
=== Definition in FHEM ===&lt;br /&gt;
Der MQTT2_CLIENT wird so eingerichtet, man braucht eine andere ClientID als auf dem Smartphone! Stimmt alles sollte das Gerät sofort open anzeigen.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
MQTT2_CLIENT einrichten, autocreate simpel&lt;br /&gt;
define mqtt2Cloud MQTT2_CLIENT host.cloud.com:8883&lt;br /&gt;
attr mqtt2Cloud SSL 1&lt;br /&gt;
attr mqtt2Cloud autocreate simple&lt;br /&gt;
attr mqtt2Cloud clientId fhem1&lt;br /&gt;
attr mqtt2Cloud room MQTT2_IO&lt;br /&gt;
attr mqtt2Cloud username user-name&lt;br /&gt;
set mqtt2Cloud password user-password&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Für die automatische Erzeugung der Trackergeräte in FHEM richtig man zuerst ein Bridge Device ein:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define MQTT2_Cloud_bridge MQTT2_DEVICE&lt;br /&gt;
attr MQTT2_Cloud_bridge IODev mqtt2Cloud&lt;br /&gt;
attr MQTT2_Cloud_bridge autocreate 1&lt;br /&gt;
attr MQTT2_Cloud_bridge room MQTT2_DEVICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dies wird entweder mit dem Template allgemein  konfiguriert&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set MQTT2_Cloud_bridge attrTemplate MQTT2_CLIENT_general_bridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;oder manuell nur für owntracks eingerichtet&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr MQTT2_Cloud_bridge bridgeRegexp owntracks/[^/]+/([^/:]+).* &amp;quot;owntracks_$1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;MQTT2 Geräte für owntracks werden jetzt automatisch mit dem Namen MQTT2_owntracks_&amp;lt;GeräteID&amp;gt; erzeugt. Diese werden einfach mit dem Template owntracks_device fertig konfiguriert. Bei einem IOS Gerät kann man danach noch das Template owntracks_device_IOS als Erweiterung anwenden.&lt;br /&gt;
&lt;br /&gt;
==== Anwesenheitserkennung ====&lt;br /&gt;
Die Anwesenheit kann im owntracks Device direkt für die selbst definierten Plätze abgelesen werden: entweder steht im reading place der jeweilige Ort oder away. Um hier noch eine gewisse Einheitlichkeit in der Verwendung zu bekommen kann man ein PRESENCE Device verwenden: &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define OT_Mi6 PRESENCE event MQTT2_owntracks_mi6:place:.away MQTT2_owntracks_mi6:place:.&amp;lt;Home&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Im Move Modus erfolgt die Erkennung sehr schnell und damit einige Sekunden eher als eine BT Erkennung im Haus - der Akkuverbrauch steigt enorm. Im Significant Modus kann es schon mal ein paar Minuten dauern - ein relevanter Akku Verbrauch ist nicht erkennbar.&lt;br /&gt;
&lt;br /&gt;
== Owntracks GPS Tracking in FHEM direkt an den eigenen Fhem-Server ==&lt;br /&gt;
Dieses Beispiel beschreibt den direkten MQTT2 Zugang wobei das IODev dann der MQTT2_SERVER ist. Hierzu bitte {{Link2Forum|Topic=99666|Message=1028576|LinkText=diesen Forenbeitrag}} lesen.&lt;br /&gt;
&lt;br /&gt;
=== SSL - Zertifikate fuer fhem erstellen. ===&lt;br /&gt;
Zunächst erstellen wir fuer den MQTT - Server CA zertifizierte SSL Zertifikate. Diese sind identisch mit den SSL - Zertifikaten, welche man evtl. schon fuer den SSL - Zugang seines FHEMWEB - Device erstellt hat. &lt;br /&gt;
&lt;br /&gt;
Hat man den FHEMWEB schon mit eiem SSL Zertifikat (http&#039;&#039;&#039;&amp;lt;u&amp;gt;s&amp;lt;/u&amp;gt;&#039;&#039;&#039;://) abgesichert, muss man daraus nur noch den .p12 - Container erstellen. &lt;br /&gt;
&lt;br /&gt;
Hat man den FHEMWEB noch nicht abgesichert (http://), dann wir es höchste Zeit! &lt;br /&gt;
&lt;br /&gt;
Für die Erstellung dieser SSL Zertifikate folgt dem Wiki-Beitrag [[FHEM mit HTTPS SSL-Zertifikat und eine eigene Zertifizierungsstelle]]. &lt;br /&gt;
&lt;br /&gt;
Die darin beschriebenen Dateien, das cacert.pem sowie den server.p12 - Container müsst ihr nun an euer Mobiltelefon senden.&lt;br /&gt;
&lt;br /&gt;
=== Definition in FHEM ===&lt;br /&gt;
Der MQTT2_Server wird wie folgt eingerichtet.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define myMQTT2Server_extern MQTT2_SERVER IPV6:1884 global&lt;br /&gt;
attr MQTTBroker_extern SSL 1&lt;br /&gt;
attr MQTTBroker_extern autocreate complex&lt;br /&gt;
attr MQTTBroker_extern event-on-change-reading .*&lt;br /&gt;
attr MQTTBroker_extern group MQTT2&lt;br /&gt;
attr MQTTBroker_extern icon mqtt_broker&lt;br /&gt;
attr MQTTBroker_extern room MQTT2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der MQTT2_Server wird zusätzlich über &amp;quot;allowed&amp;quot; abgesichert:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define allowed_MQTT2Server_extern allowed&lt;br /&gt;
attr allowed_MQTT2Server_extern DbLogExclude .*&lt;br /&gt;
attr allowed_MQTT2Server_extern group MQTT2&lt;br /&gt;
attr allowed_MQTT2Server_extern room  MQTT2&lt;br /&gt;
attr allowed_MQTT2Server_extern validFor myMQTT2Server_extern&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Jetzt vergeben wir noch einen Usernamen und ein Passwort für dieses &amp;quot;allowed&amp;quot; - Device&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set allowed_MQTT2Server_extern basicAuth MyMQTT2Username MyMQTT2Password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Denkt bitte daran einen eigenen Usernamen und ein eigenes langes, kompliziertes Passwort zu verwenden. Vorsicht bei Sonderzeichen!&lt;br /&gt;
&lt;br /&gt;
=== Port-Freigaben im Router ===&lt;br /&gt;
An dieser Stelle müssen wir den Port 1884 in den Internet - Freigaben eures Routers freigeben.&lt;br /&gt;
&lt;br /&gt;
Bei der Fritz!Box wird dies beispielsweise unter Internet -&amp;gt; Freigaben -&amp;gt; Port-Freigaben gemacht. Die Details hierzu entnehmt bitte der Bedienungsanleitung eures Routers.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist dabei, das ihr das Protokol &amp;quot;TCP&amp;quot; verwendet und der Port 1884 extern nach Port 1884 intern an die IP - Adresse des jeweiligen fhem-Servers übermittelt wird.&lt;br /&gt;
&lt;br /&gt;
=== owntracks auf dem Smartphone konfigurieren ===&lt;br /&gt;
Menü / Einstellung / Verbindung &lt;br /&gt;
&lt;br /&gt;
Dort sind insgesamt 4 Registerkarten mit Werten zu füllen (Beispiel):&lt;br /&gt;
* Modus -&amp;gt; MQTT&lt;br /&gt;
* Hostname  -&amp;gt; &lt;br /&gt;
** Hostnamen: subdomain.dyndns.com &lt;br /&gt;
** Port: 1884 &lt;br /&gt;
** ClientID: Vorname_Nachname &lt;br /&gt;
** WebSockets (nicht nutzen)&lt;br /&gt;
* Identifikation -&amp;gt; &lt;br /&gt;
** Benutzername: MyMQTT2Username &lt;br /&gt;
** Passwort: MyMQTT2Password &lt;br /&gt;
** GeräteID: mi6 (erscheint in FHEM im Device Namen verwendet)&lt;br /&gt;
** TrackerID: hk (nur zweistellig, erscheint als ID in der owntracks Karte. Empfehlung: Die Initialien verwenden.)&lt;br /&gt;
* Sicherheit -&amp;gt; &lt;br /&gt;
** TLS aktivieren&lt;br /&gt;
** CA-Zertifikat: cacert.pem&lt;br /&gt;
** Client-Zertifikat: server.p12&lt;br /&gt;
** Passwort fuer Client-Zertifikat: Passwort für den server.p12 - Container&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, dann erstellt das myMQTT2Server_extern - Device automatisch ein neues Device für jede owntracks-App, die sich an dem myMQTT2Server_extern - Device meldet.&lt;br /&gt;
&lt;br /&gt;
Übrigens: Will man seine gesamte Familie ebenfalls über owntracks tracken, so muss man in den jeweiligen APPs nur die Werte für ClientID, GeräteID und TrackerID individuell gestalten. &lt;br /&gt;
&lt;br /&gt;
An den fhem- Einstellungen müssen keine weiteren Änderungen vorgenommen werden.&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepasst werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== autocreate funktioniert anscheinend nicht? ===&lt;br /&gt;
In der Regel wird bei neu eingehenden MQTT-Messages über &#039;&#039;autocreate&#039;&#039; ein neues Device erstellt, wenn Nachrichten von einem bisher unbekannten Gerät kommen. Geschieht dies nicht, sollten folgende Punkte geprüft werden:&lt;br /&gt;
# (nur bei MQTT2_SERVER:) Der Client muss eine ClientID angeben, diese darf nicht den defaults von &#039;&#039;mosquito_sub&#039;&#039; entsprechen.&lt;br /&gt;
# Ein allgemeines {{Link2CmdRef|Anker=autocreate|Lang=en|Label=autocreate}}-Device (&#039;&#039;TYPE=autocreate&#039;&#039;) muss vorhanden und aktiv sein.&lt;br /&gt;
# &#039;&#039;autocreate&#039;&#039; am IO muss eingeschaltet sein, was für MQTT2_SERVER bedeutet, dass es nicht auf &amp;quot;0&amp;quot; stehen darf (hier ist dann &#039;&#039;simple&#039;&#039; die aktive Voreinstellung), für MQTT2_CLIENT sollte ebenfalls &#039;&#039;simple&#039;&#039; verwendet werden; dies muss hier allerdings explizit gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wird dann immer noch kein Device erstellt, gibt es in aller Regel ein Device, das bereits einen entsprechenden Eintrag in der readingList enthält, oder es sind keine Nachrichten eingegangen. Überprüfen Sie daher dann ggf. die Einstellungen am Client-Gerät (z.B. im Web-Interface des Shelly oder Tasmota-geflashten ESP8266).&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;autocreate&#039;&#039; am Device schließlich bestimmt, ob die &#039;&#039;readingsList&#039;&#039; erweitert werden darf, wenn Informationen über bisher nicht über die readingList abgedeckte Topics empfangen werden und vom MQTT2-IO als zu diesem Device/ClientID gehörend identifiziert wurden.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Die per attrTemplate jeweils erzeugten Konfigurationen sind Einrichtungsbeispiele, die v.a. eine in sich konsistenze Zusammenstellung der verschiedenen Attribute enthalten. Es steht jedem User frei, diese Ausgangsbasis dann nach seinem Belieben zu ändern. Spätere Änderungen des verwendeten attrTemplate wirken sich nicht automatisch auf die durch frühere Versionen oder den User nachkonfigurierte Geräte aus! Da es vorkommen kann, dass sich die per MQTT übermittelten Daten und Topics ändern, wenn z.B. eine firmware aktualisiert wurden, kann dies Anpassungen am jeweiligen Template erforderlich machen. Grundsätzlich sollen die per attrTemplate für MQTT2_DEVICE verfügbaren attrTemplate jeweils für die aktuellste verfügbare stabile firmware-Version passen.}}&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;[[AttrTemplate|attrTemplate]]&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung für MQTT2_DEVICE ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|In einigen Fällen kann es vorkommen, dass die template-Bezeichnung zwischenzeitlich geändert wurde. Seit 21.09.2019 erfolgt die Sortierung der auswählbaren templates nicht mehr nur nach den Namen, so dass die entsprechenden Namensbestandteile entfallen sind, die einer besseren Sortierung dienten.}}&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate: Es werden nicht alle templates angezeigt ===&lt;br /&gt;
Siehe Beitrag [[AttrTemplate#Warum finde ich das Template xyz nicht.3F|AttrTemplate: Warum finde ich das Template xyz nicht.]]&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate und Sprachsteuerung ===&lt;br /&gt;
Konfiguriert man MQTT2_DEVICE-Geräte mit attrTemplate, werden in der Regel auch direkt die für die Sprachsteuerung der Geräte erforderlichen Attribute mit gesetzt. Weiterführende Hinweise sind auch zu diesem Teilaspekt von &#039;&#039;[[AttrTemplate|attrTemplate]]&#039;&#039; dem betreffenden Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== bridgeRegexp ===&lt;br /&gt;
[[Datei:Mqtt2 server.png|300px|thumb|left|Logische Verortung der bridgeRegexp-Angaben]]{{Randnotiz|RNTyp=y|RNText=Beachten Sie, dass aufgrund des geschilderten Prinzips eine Änderung einer bridgeRegexp bei einem Gerät auch dazu führt, dass alle Readings eines Geräts und alle readingList-Einträge gelöscht werden.}}Üblicherweise werden alle Informationen, die aus einer Quelle stammen auch &#039;&#039;&#039;&#039;&#039;einem&#039;&#039;&#039;&#039;&#039; &#039;&#039;MQTT2_DEVICE&#039;&#039; zugeordnet, wobei im Falle des dort nicht aktivierten autocreate-Attributs entsprechende readingList-Einträge erzeugt werden. In dem nebenstehenden Schaubild wären dies die Geräte &#039;&#039;A&#039;&#039; bis &#039;&#039;D&#039;&#039;. Das &#039;&#039;&#039;Attribut&#039;&#039;&#039; &#039;&#039;bridgeRegexp&#039;&#039; kann dazu genutzt werden, um neue, bisher unbekannte Topic-Strukturen im Rahmen des autocreate-Vorgangs anders zu strukturieren. Diese werden dabei im Ergebnis einem &#039;&#039;&#039;anderen Device&#039;&#039;&#039; (das ggf. erst erstellt wird) zugeschlagen, sollte eine zu der topic-Struktur passende regex in diesem Attribut gesetzt sein. Für dessen CID und die Bildung des Names wird die im 2. Teil jedes Eintrags als &#039;&#039;newClientId&#039;&#039; hinterlegte Angabe verwendet. In nebenstehendem Schaubild ist dies exemplarisch für die Gerätegruppe &#039;&#039;D&#039;&#039; mit dem &#039;&#039;bridge&#039;&#039;-Device &#039;&#039;D&#039;&#039; und dessen &#039;&#039;Satelliten&#039;&#039; &#039;&#039;D1&#039;&#039; bis &#039;&#039;D4&#039;&#039; dargestellt.&lt;br /&gt;
Dementsprechend sind in den hier aufgeführten Beispielen &#039;&#039;bridgeRegexp&#039;&#039;-Attribute immer dort zu finden, wo ein Gerät oder Dienst dazu dient, mit weiteren, ggf. auf andere Weise kommunizierende Geräte oder Baugruppen zu kommunizieren, wie z.B. für über hier dargestellten &#039;&#039;zigbee2mqtt&#039;&#039; oder &#039;&#039;zigbee2tasmota&#039;&#039;. Ein Sonderfall hierbei ist das template &#039;&#039;MQTT2_CLIENT_general_bridge&#039;&#039; zur Verwendung mit dem [[MQTT2_CLIENT#Anwendung|MQTT2_CLIENT]], denn aus dessen Sicht stammen alle Informationen aus derselben Quelle, nämlich z.B. dem &#039;&#039;mosquitto&#039;&#039;-Server und würden sonst alle ein und demselben MQTT2_DEVICE zugewiesen.&lt;br /&gt;
&lt;br /&gt;
=== Ständig neue Devices? ===&lt;br /&gt;
MQTT2_SERVER kann zwischen verschiedenen Geräten auch anhand der ClientID unterscheiden. Für jedes neu erkannte Gerät wird auch ein eigenes MQTT2_DEVICE angelegt. Abhilfemaßnahmen:&lt;br /&gt;
==== Vergabe einer ClientID ====&lt;br /&gt;
Die meisten MQTT-fähigen Geräte enthalten Optionen zur Vergabe einer eindeutigen ClientID (siehe das Beispiel des zigbee2mqtt-Dienstes oben). &lt;br /&gt;
Wird keine ClientID vergeben, verwenden manche Clients für jede Verbindung wieder neue ID&#039;s. Es wird empfohlen, möglichst von diesen Einstelloptionen Gebrauch zu machen.&lt;br /&gt;
&lt;br /&gt;
==== Löschen der ClientID aus der readingList usw. ====&lt;br /&gt;
Ist dies nicht möglich oder erwünscht, kann man auch die ClientID aus den readingList-, setList- und getList-Attributen entfernen. Dies ist jedenfalls solange unschädlich als nicht mehrere Geräte identische Topic-Pfade verwenden (daher die Empfehlung, insbesondere bei Tasmota-Geräten den &#039;&#039;default&#039;&#039; &amp;quot;sonoff&amp;quot; zu ändern).&lt;br /&gt;
Beispielsweise wäre &amp;lt;code&amp;gt;attr Milight_Bridge readingList milight_hub_1370325:milight/LWT:.* {json2nameValue($EVENT) }&amp;lt;/code&amp;gt; zu ändern in &amp;lt;code&amp;gt;attr Milight_Bridge readingList milight/LWT:.* {json2nameValue($EVENT) }&amp;lt;/code&amp;gt;&lt;br /&gt;
Die über &#039;&#039;attrTemplate&#039;&#039; verfügbaren Konfigurationen verwenden in der Regel keine ClientID&#039;s bzw. entfernen diese.&lt;br /&gt;
&lt;br /&gt;
=== Wildcards in readingList und setList ===&lt;br /&gt;
Auch in readingList und in setList sollten sich sog. wildcards verwenden lassen. Die Vorgehensweise ist jedoch unterschiedlich:&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;readingList&#039;&#039; werden normale regex-Ausdrücke verwendet. Ein Punkt steht daher z.B. für ein beliebiges Zeichen, alles zwischen zwei Topic-Tree-Elementen (getrennt typischerweise durch einen &amp;quot;/&amp;quot;) kann man so schreiben: &amp;quot;[^/]+&amp;quot; (entspricht: &amp;quot;Mindestens ein Zeichen, das kein Schrägstrich ist&amp;quot;). Ergänzender Hinweis: Will man z.B. Informationen aus einem beliebigen Teil des Topic-trees extrahieren und als Reading-Namen verwenden, kann dies im Rahmen eines Perl-Aufrufs geschehen. Beispiele aus der mqtt2.template-file: OpenMQTTGateway_BT_scanner und OpenMQTTGateway_BT_gtag (letzteres überführt die Information, über welches Gateway bestimmte Informationen eingegangen ist jeweils in eigene Readings pro Gateway).&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;setList&#039;&#039; gelten dagegen die wildcard-Konventionen aus der MQTT-Welt. Dort steht &amp;quot;+&amp;quot; für einen austauschbaren Teil des Topic-Trees (zwischen zwei Schrägstrichen). Anmerkung: Bitte vorher prüfen, ob es wirklich sinnvoll ist, derart unspezifische Publishes vorzunehmen. Meist gibt es &amp;quot;Gruppen-Topics&amp;quot;, auf die mehrere Geräte eines bestimmten Typs hören bzw. man kann dies dort (in der firmware bzw. auf den Konfigurationsseiten der Geräte) einstellen.&lt;br /&gt;
&lt;br /&gt;
=== Die JSON-Daten sollen ausnahmsweise nicht ausgepackt werden ===&lt;br /&gt;
In manchen Fällen ist das automatische Auspacken der JSON-Payload nicht erwünscht. In diesen Fällen kann man einfach den gewünschten Reading-Namen in die readingList eintragen, statt der Anweisung, den JSON an json2NameValue() zu übergeben. Aus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MQTT_OwnTracks readingList owntracks/clouduser/mi6:.* { json2nameValue($EVENT) }\&lt;br /&gt;
owntracks/clouduser/mi6/waypoints:.* { json2nameValue($EVENT) }\&lt;br /&gt;
owntracks/clouduser/mi6/event:.* { json2nameValue($EVENT) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wird dann:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MQTT_OwnTracks readingList owntracks/clouduser/mi6:.* json_mi6\&lt;br /&gt;
owntracks/clouduser/mi6/waypoints:.* json_waypoints\&lt;br /&gt;
owntracks/clouduser/mi6/event:.* json_event&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Erforderlichenfalls kann man die Einträge auch doppelt erstellen, um sowohl den JSON wie auch die ausgepackten Readings zu erhalten.&lt;br /&gt;
&lt;br /&gt;
=== Die JSON-Daten vor dem auspacken manipulieren ===&lt;br /&gt;
Aus diversen Gründen kann es zweckmäßig sein, einen bestimmten Wert der JSON-Payload zu ignorieren.&lt;br /&gt;
Z.B. sendet ein Client statt eines Messwertes die Info &amp;quot;bad&amp;quot;. Dieser Fehlerwert soll aus der JSON-Payload &amp;quot;ausgefiltert&amp;quot; werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr DEVICE readingList &amp;lt;your topic&amp;gt;:.* { my $rets = json2nameValue($EVENT,&#039;&#039;,$JSONMAP);; my %cleaned = map { $_,$rets-&amp;gt;{$_} } grep { &#039;bad&#039; ne $rets-&amp;gt;{$_} } keys %{$rets};; return \%cleaned }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Numerische Werte zuvor runden :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr DEVICE readingList &amp;lt;your topic&amp;gt;:.* { my $h=json2nameValue($EVENT,&#039;XXX&#039;);; map { $h-&amp;gt;{$_}=round($h-&amp;gt;{$_}) if(looks_like_number($h-&amp;gt;{$_})) } keys %{$h};; $h }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Einfache Payload ====&lt;br /&gt;
Einen Wert mappen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr DEVICE readingList &amp;lt;your topic&amp;gt;:.* {my %h=(0=&amp;gt;&#039;SofortLaden&#039;,1=&amp;gt;&#039;MinPV&#039;,2=&amp;gt;&#039;NurPV&#039;,3=&amp;gt;&#039;Stop&#039;,4=&amp;gt;&#039;Standby&#039;);; return {ChargeMode=&amp;gt;$h{$EVENT}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Konfigurationsinformationen verwerfen ===&lt;br /&gt;
Siehe Einleitung und den [[MQTT2_CLIENT#ignoreRegexp|ignoreRegexp-Abschnitt zu MQTT2_CLIENT]].&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Themen ===&lt;br /&gt;
==== Verbinden mehrerer FHEM-Instanzen über MQTT ====&lt;br /&gt;
Wie im Hauptartikel zu [[MQTT#Kommunikation zu sonstigen FHEM-Geräten über MQTT|MQTT]] erläutert, gibt es mehrere Varianten, wie man mit Hilfe von FHEM aus Events an beliebigen Geräten MQTT-Messages erzeugen kann. So kann man z.B. Messdaten eines Systems über ein &#039;&#039;notify&#039;&#039; iVm. einer einfachen &#039;&#039;publish&#039;&#039;-Anweisung an ein zweites FHEM schicken, das diese Daten dann z.B. mit Hilfe der MQTT2-Module auswerten kann.&lt;br /&gt;
Damit dabei Nachrichten unterschiedlicher Quellen auch als getrennte Readings bzw. ggf. auch gesonderten MQTT2_DEVICE-Instanzen zugeordnet werden, sollte man entsprechende Topic-Strukturen wählen, die dann auch mit Hilfe einer geeigneten &#039;&#039;bridgeRegexp&#039;&#039; automatisiert ausgewertet werden kann, siehe z.B. dieser {{Link2Forum|Topic=107145|LinkText=Forumsthread}}:&lt;br /&gt;
 attr MQTT2_myMqttServer bridgeRegexp \&lt;br /&gt;
   SmartHome/MqttGenericBridge2/([A-Za-z0-9]*)/.*:.* &amp;quot;mgb2_$1&amp;quot;&lt;br /&gt;
Dabei werden die betreffenden Informationen der entfernten FHEM-Instanz alle nach dem Schema &#039;&#039;SmartHome/MqttGenericBridge2/&amp;lt;Device-Name&amp;gt;/&amp;lt;Reading-Name&amp;gt;&#039;&#039; versendet.&lt;br /&gt;
&lt;br /&gt;
==== Umstellung von MQTT_DEVICE (und Derivaten wie XiaomiMQTTDevice) zu MQTT2_DEVICE ====&lt;br /&gt;
Wer beabsichtigt, von der Implementierung MQTT+MQTT_DEVICE zu MQTT2-IO und MQTT2_DEVICE zu wechseln, sollte einige Punkte beachten. Viele diesbezügliche Fragen sind vor allem in  {{Link2Forum|Topic=103762|LinkText=diesem Foren-Thread}}&lt;br /&gt;
&lt;br /&gt;
näher erläutert.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
* {{Link2Forum|Topic=116162|LinkText=Der MQTT-Workshop für MQTT2-Module}}&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Sonos2mqtt&amp;diff=40320</id>
		<title>Sonos2mqtt</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Sonos2mqtt&amp;diff=40320"/>
		<updated>2025-08-12T19:56:28Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Text2Speech Variante einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Grundeinrichtung ==&lt;br /&gt;
Die Grundeinrichtung ist bereits im Artikel [[MQTT2-Module - Praxisbeispiele#Sonos2Mqtt|MQTT2-Module - Praxisbeispiele]] beschrieben. Hier soll es um die praktische Verwendung und Erweiterung gehen. &lt;br /&gt;
&lt;br /&gt;
Für alle Erweiterungen wird versucht vorhandene Devices in FHEM zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Viele Dinge werden derzeit noch entwickelt und können frei gestaltet werden - der Vorteil von generischen FHEM Devices.&lt;br /&gt;
&lt;br /&gt;
== Tipps zur Verwendung ==&lt;br /&gt;
Die automatische Konfiguration setzt den alias entsprechend dem im Sonos vergeben Namen . Die langen MQTT2_RINCON_ Namen sind unhandlich und schlecht lesbar. Man kann Player mit einem devspec ansprechen, das simpelste ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;set alias=Büro play&amp;lt;/code&amp;gt;&lt;br /&gt;
Oder alle Player&lt;br /&gt;
:&amp;lt;code&amp;gt;set model=sonos2mqtt_speaker leaveGroup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfiguration der Player ==&lt;br /&gt;
Mit dem Template sonos_bridge_comfort wird aus dem contrib Ordner eine Datei 99_sonos2mqttUtils.pm nachgeladen und aktiviert. Darin befindet sich der wesentliche Code, die sonos2mqtt Geräte selbst enthalten nur rudimentäre Aufrufe. &lt;br /&gt;
&lt;br /&gt;
Selbstverständlich kann man diese Datei jederzeit selbst gestalten (FHEM Menu:Edit Files) aber man sollte beachten, dass eine erneute Anwendung des Templates die Datei überschreibt.&lt;br /&gt;
&lt;br /&gt;
Man kann auch jederzeit diese Datei aus dem SVN neu laden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{ Svn_GetFile(&amp;quot;contrib/AttrTemplate/99_sonos2mqttUtils.pm&amp;quot;, &amp;quot;FHEM/99_sonos2mqttUtils.pm&amp;quot;, sub(){ CommandReload(undef, &amp;quot;99_sonos2mqttUtils&amp;quot;) }) }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Hauptroutine ist sonos2mqtt die mit zwei Parametern aufgerufen wird. &amp;lt;code&amp;gt;{sonos2mqtt($NAME,$EVENT)}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Optik des Players wird mit der Routine &amp;lt;code&amp;gt;sonos2mqtt_devStateIcon&amp;lt;/code&amp;gt; bestimmt.&lt;br /&gt;
&lt;br /&gt;
Man kann die Player mittels &amp;lt;code&amp;gt;attr a:model=sonos2mqtt_speaker webCmd volume&amp;lt;/code&amp;gt; mit einem Slider in der Übersicht ausstatten.&lt;br /&gt;
&lt;br /&gt;
Ändert man die Sonoslandschaft, kann man auch alles einreißen und neu erzeugen lassen. Zunächst alles löschen (für die FHEM Kommandozeile):&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{fhem(&amp;quot;delete a:model=sonos2mqtt_speaker;;delete FileLog_MQTT2_RINCON.*&amp;quot;);;qx(rm ./log/MQTT2_RINCON_*);;return &amp;quot;&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Danach muss man sonos2mqtt einfach neu starten: pm2 start ... bzw den docker container neu starten.&lt;br /&gt;
&lt;br /&gt;
== Befehle nachrüsten ==&lt;br /&gt;
Um Befehle in der setList / getList / readingList  nachzurüsten gibt es die Routine &amp;lt;code&amp;gt;sonos2mqtt_mod_list(devspec,attrName,line)&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Vorhandene Zeilen werden ersetzt. Identifiziert wird nur der erste Teil bis zum &amp;quot;:&amp;quot;. Beispiel für die Kommandozeile: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{sonos2mqtt_mod_list(&#039;a:model=sonos2mqtt_bridge&#039;,&#039;readingList&#039;,&#039;sonos/RINCON_([0-9A-Z]+)/Reply:.* Reply&#039;)}&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Sprachausgabe ==&lt;br /&gt;
Man hat zwei Möglichkeiten, dies umzusetzen: &lt;br /&gt;
# Text2Speech FHEM intern&lt;br /&gt;
# Mit dem sonos text to speech Server https://svrooij.io/sonos2mqtt/&lt;br /&gt;
&lt;br /&gt;
=== Text2Speech Variante einrichten ===&lt;br /&gt;
Zwei zusätzliche Geräte sind notwendig:&lt;br /&gt;
* [[Text2Speech]] im Servermodus, erzeugt mp3 Dateien im cache Verzeichnis und legt einen Link im Reading httpName ab.&lt;br /&gt;
* Ein HTTP Server stellt die Dateien im gleichen Verzeichnis bereit&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Für die vollständige Funktion und Installation von Text2Speech ist die Commandref zu beachten! Für das unten im Beispiel verwendete Feature UseMP3Wrap muss das Tool mp3wrap installiert werden (z.B. &amp;lt;code&amp;gt;apt install mp3wrap&amp;lt;/code&amp;gt;). Dies ist bei längeren Texten und bei der Verwendung von eingebetteten festen Sounds existenziell!&lt;br /&gt;
&lt;br /&gt;
Für die Funktion ist wichtig, dass das Sonos System den Host im Link zur Datei richtig auflösen kann. Deshalb wird der Hostname und Port des Servers im Reading host des TTS Device als Name oder IP Adresse abgelegt! Dies kann entweder mit dem hier gezeigten Befehl oder vollständig manuell erfolgen. Für FHEM innerhalb Docker muss man die Adresse des Docker Host angeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung bei der Angabe für das Reading host&#039;&#039;&#039;: das angegebene WEB bzw. PORT muss ohne Anmeldung erreichbar sein! Sollte allowed definiert sein, muss attribute noCheckFor beachtet werden. Oder man definiert an separates FHEMWEB. siehe auch [https://forum.fhem.de/index.php?topic=142248.0]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod SonosTTS Text2Speech none&lt;br /&gt;
attr SonosTTS TTS_UseMP3Wrap 1&lt;br /&gt;
attr SonosTTS TTS_Language Deutsch&lt;br /&gt;
attr SonosTTS userReadings httpName:lastFilename.* {&#039;http://&#039;.ReadingsVal($name,&#039;host&#039;,&#039;set host:port first&#039;).&#039;/fhem/&#039;.ReadingsVal($name,&#039;lastFilename&#039;,&#039;&#039;)}&lt;br /&gt;
attr SonosTTS TTS_CacheFileDir cache&lt;br /&gt;
setreading SonosTTS host {(qx(hostname -s|tr -d &#039;\n&#039;).&#039;:&#039;.InternalVal(&#039;WEB&#039;,&#039;PORT&#039;,&#039;8083&#039;))}&lt;br /&gt;
#setreading SonosTTS host {((split(&#039; &#039;, qx(hostname -I)))[0].&#039;:&#039;.InternalVal(&#039;WEB&#039;,&#039;PORT&#039;,&#039;8083&#039;))}&lt;br /&gt;
#setreading SonosTTS host &amp;lt;hostname&amp;gt;:&amp;lt;port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defmod SonosSpeakWeb HTTPSRV cache cache SonosSpeakWeb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Der Sprachausgabe Befehl im Player Device läuft in 3 Schritten:&lt;br /&gt;
# mit dem TTS Gerät wird die mp3 Datei erzeugt,&lt;br /&gt;
# mit dem sleep wird auf die Fertigstellung gewartet,&lt;br /&gt;
# die Datei wird mit &amp;lt;code&amp;gt;set Player notify volume uri&amp;lt;/code&amp;gt; abgespielt.&lt;br /&gt;
Durch den &amp;quot;sonos2mqtt notify&amp;quot; Befehl wird die laufende Umgebung wiederhergestellt.&lt;br /&gt;
* Wird der Sprachbefehl an den Gruppenmaster gesendet wird die mp3 Datei in der gesamten Gruppe gespielt. &lt;br /&gt;
* Wird der Sprachbefehl an ein Mitglied einer Gruppe gesendet (nicht den Master) wird die Gruppe aufgetrennt und später wieder hergestellt.&lt;br /&gt;
Es sind zwei Befehle zur Sprachausgabe eingebaut: &lt;br /&gt;
&lt;br /&gt;
=== sayText Befehl ===&lt;br /&gt;
Dieser Befehl orientiert sich an den FHEM [[DevelopmentGuidelinesAV|DevelopmentGuidelines]] und sammelt &amp;quot;gleichzeitig&amp;quot; eintreffende Sprachnachrichten, damit nichts verloren geht. Informationen im Forum dazu in {{Link2Forum|Topic=111711|Message=1100112|LinkText=diesem Beitrag}}.&lt;br /&gt;
&lt;br /&gt;
Die Lautstärke wird separat in SonosTTS gesetzt: &amp;lt;code&amp;gt;setreading SonosTTS vol 15&amp;lt;/code&amp;gt;,  ebenso die Sprache (einmalig bei der Einrichtung oder bei Bedarf zwischendurch) &amp;lt;code&amp;gt;attr SonosTTS TTS_Language Deutsch&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Der Befehl &amp;lt;code&amp;gt;set SonosTTS volume xx&amp;lt;/code&amp;gt; hat im Servermodus des Devices keine Wirkung!&#039;&#039;&lt;br /&gt;
=== Speak Befehl ===&lt;br /&gt;
Dieser Befehl ist ähnlich wie der in der FHEM-Sonos Umgebung:&lt;br /&gt;
:&amp;lt;code&amp;gt;set Player speak &amp;lt;volume&amp;gt; text&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendet man diesen Syntax (mit Sprache und Stimme am Anfang), wird automatisch der speak Befehl an die sonos-tts abgesetzt. Die sonos-tts muss man separat installieren/integrieren!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set EG.KU.Sonos speak de-DE Vicki 25 Test&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man keine laufenden Sendung unterbrechen sondern einfach eine Ansage machen und danach etwas starten, kann man so vorgehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set SonosTTS tts Hier steht die Ansage;sleep SonosTTS:playing:.0 ; set alias=PlayerAlias playUri [SonosTTS:httpName]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Volume Befehl ===&lt;br /&gt;
Der Befehl akzeptiert einen zweiten Wert als Startwert d.h. set volume 25 10 setzt sofort auf 10 und startet dann fading auf 25. Ein zweiter Wert -1 erzeugt ein fading vom aktuellen Wert auf den angegebenen.&lt;br /&gt;
&lt;br /&gt;
==== Spiele feste Sounds ====&lt;br /&gt;
Generell kann man feste mp3 Dateien (Klingeltöne, Klänge usw.) auch im cache Verzeichnis ablegen und direkt mit dem Link starten. &lt;br /&gt;
&lt;br /&gt;
Es gibt zahlreiche Soundquellen im Internet, ist der gewünschte Sound dabei, kann man ihn innerhalb FHEM herunterladen und an Ort und Stelle platzieren. (Beispiel ohne und mit Umbennung)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;wget -qP ./cache https://cdn.smartersoft-group.com/various/pull-bell-short.mp3&amp;quot;&lt;br /&gt;
&amp;quot;wget -qO ./cache/KlingelTon.mp3 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vergewissern ob der gewünschte Sound auch da ist: {qx(ls -lha ./cache)}&lt;br /&gt;
&lt;br /&gt;
Mit set magic kann man dabei einfach Teile aus anderen Readings holen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set alias=Büro notify 25 {(&#039;http://[SonosTTS:host]/fhem/cache/KlingelTon.mp3&#039;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Man kann auch den setter im Gerät erweitern &amp;lt;code&amp;gt;{sonos2mqtt_mod_list(&#039;a:model=sonos2mqtt_speaker&#039;,&#039;setList&#039;,q(playSound:textField ....))}&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
playSound:textField {my $tts=&amp;quot;SonosTTS&amp;quot;;my ($cmd,$vol,$file)=split(&#039; &#039;, $EVENT,3);$file=($file=~m/.*\.mp3$/)?&amp;quot;$file&amp;quot;:&amp;quot;$file.mp3&amp;quot;;fhem(&amp;quot;set $NAME notify $vol http://[$tts:host]/fhem/[a:$tts:TTS_CacheFileDir]/$file&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Damit sind dann dieser Syntax möglich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set alias=Büro playSound 40 KlingelTon.mp3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
oder ohne Dateiendung (wird auf .mp3 gesetzt)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set alias=Büro playSound 40 KlingelTon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SonosBridge ===&lt;br /&gt;
Die SonsoBridge enthält bereits ein paar zentrale Funktionen und Readings, z.B. wird beim Laden der Favoritenliste ein Reading favlist und grouplist erzeugt, welches zur Erweiterung der Player mit Auswahllisten dienen kann.&lt;br /&gt;
&lt;br /&gt;
=== Player mit Favoritenliste und Gruppenliste ausstatten ===&lt;br /&gt;
Wenn nicht schon geschehen muss man jetzt die Favoriten zum ersten Mal einlesen: &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
get SonosBridge Favorites&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nachdem die SonosBridge &amp;quot;aufgerüstet&amp;quot; ist, kann man allen Playern die Favoritenliste zum Auswählen eintragen. Beide Zeile sind für die FHEM Kommandozeile und verwenden die Routine aus der 99_sonos2mqttUtils.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{sonos2mqtt_mod_list(&#039;a:model=sonos2mqtt_speaker&#039;,&#039;setList&#039;,&#039;joinGroup:&#039;.ReadingsVal((devspec2array(&#039;a:model=sonos2mqtt_bridge&#039;))[0],&#039;grouplist&#039;,&#039;&#039;).q( {sonos2mqtt($NAME,$EVENT)}))}&lt;br /&gt;
{sonos2mqtt_mod_list(&#039;a:model=sonos2mqtt_speaker&#039;,&#039;setList&#039;,&#039;playFav:&#039;.ReadingsVal((devspec2array(&#039;a:model=sonos2mqtt_bridge&#039;))[0],&#039;favlist&#039;,&#039;&#039;).q( {sonos2mqtt($NAME,$EVENT)}))}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Man kann den playFav Befehl auch im set Befehl mit einem Teil des Favoriten Namen verwenden. Enthält die Favoritenliste z.B. Radio Leipzig würde der auch mit diesem Befehl angesteuert werden:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set alias=Bad playFav leipzig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listen der Favoriten Radios und Playlist erstellen ===&lt;br /&gt;
Im Sonos System kann man an (mindestens) drei Stellen Favoriten hinterlegen: Sonos-Favoriten, Sonos-Playlisten, TuneIn: Meine Radiosender&lt;br /&gt;
&lt;br /&gt;
Diese drei Listen kann man einlesen und für die einfache Suche und Auswahl verwenden. Der play Befehl akzeptiert dazu zwei weitere Parameter und sucht in den entsprechenden Listen.&lt;br /&gt;
&lt;br /&gt;
Diese play Befehle starten nicht sofort, sondern erst nach einem folgenden set ... play. Damit kann man etwas vorbereiten und gezielt starten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set alias=Büro play Favorite Deutschlandfunk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set alias=Büro play Radio HitRadio&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set alias=Büro play Playlist Meine Hits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sonos-Favoriten-, TuneIn: Meine Radiosender- und Sonos-Playlisten dazu vom Sonos System einmalig (bzw. bei Veränderungen) einlesen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get SonosBridge Reply Playlists;sleep SonosBridge:Reply.*;setreading SonosBridge Playlists [SonosBridge:Reply]&lt;br /&gt;
get SonosBridge Reply Favorites;sleep SonosBridge:Reply.*;setreading SonosBridge Favorites [SonosBridge:Reply]&lt;br /&gt;
get SonosBridge Reply Radios;sleep SonosBridge:Reply.*;setreading SonosBridge Radios [SonosBridge:Reply]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für ein Guten Morgen Radio:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set alias=BadWanne,alias=Kueche joinGroup Bad;&lt;br /&gt;
set alias=BadWanne,alias=Bad volume 13 6;&lt;br /&gt;
set alias=Bad play Favorite Deutschlandfunk.Kultur.RP;&lt;br /&gt;
set alias=Kueche volume 18 8;&lt;br /&gt;
sleep 0.2;set alias=Bad play&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Radioliste durchtasten ===&lt;br /&gt;
Will man eine Liste von bestimmten Radiostationen mit einem Taster &amp;quot;durchtasten&amp;quot; kann man das wie folgt tun:&lt;br /&gt;
&lt;br /&gt;
Das oben erwähnte &amp;lt;code&amp;gt;99_sonos2mqttUtils.pm&amp;lt;/code&amp;gt; (ab 6.1.2023) schreibt die Radios aus dem Reading &amp;lt;code&amp;gt;Favoriten&amp;lt;/code&amp;gt; in das userReading &amp;lt;code&amp;gt;favlist&amp;lt;/code&amp;gt; im SonosBridge Device und aktualisiert das auch.&lt;br /&gt;
&lt;br /&gt;
==== Der Befehl zum weiterschalten ====&lt;br /&gt;
Jedes Mal wenn dieser Befehl ausgeführt wird, wird der nächste &amp;quot;Radio-Favorit&amp;quot; (aus dem userReading &amp;lt;code&amp;gt;favlist&amp;lt;/code&amp;gt; des SonosBridge Devices) gestartet.&lt;br /&gt;
&lt;br /&gt;
Erfolgt die Ausgabe eines Radiosender, wird bei einem &amp;lt;code&amp;gt;set &#039;&#039;sonos2mqtt_speaker&#039;&#039; next&amp;lt;/code&amp;gt; auf den nächsten Sender in dieser Liste geschaltet und der &amp;lt;code&amp;gt;transportState&amp;lt;/code&amp;gt; beibehalten.&lt;br /&gt;
&lt;br /&gt;
==== Name der Radiostation vor dem Umschalten ansagen ====&lt;br /&gt;
Will man vor dem Radiostart noch die Ansage des Senders haben, geht das zwar auch mit dem &amp;lt;code&amp;gt;speak&amp;lt;/code&amp;gt; Befehl, die direkte Ausgabe ohne Restore der Umgebung (sonos2mqtt notify) ist aber effektiver.&lt;br /&gt;
&lt;br /&gt;
Damit das funktioniert müssen wir die Events einschränken: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr model=sonos2mqtt_speaker event-on-change-reading .*&lt;br /&gt;
{my $dev = (devspec2array(&#039;model=sonos2mqtt_bridge&#039;))[0];;my $r=Each($dev,ReadingsVal($dev,&#039;favlist&#039;,&#039;&#039;));;my $play = (devspec2array(&#039;alias=Büro&#039;))[0];;my $tts=&amp;quot;SonosTTS&amp;quot;;;fhem(&amp;quot;set $tts tts Es folgt $r;;sleep $tts:playing:.0;;set $play playUri [$tts:httpName];;sleep $play:play;;sleep $play:PLAYING;;sleep $play:STOPPED;;set $play playFav $r&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kurze Erklärung zum Code &lt;br /&gt;
* ermittelt den nächsten Radiosender in der Liste: &amp;lt;code&amp;gt;my $dev = (devspec2array(&#039;model=sonos2mqtt_bridge&#039;))[0];;my $r=Each($dev,ReadingsVal($dev,&#039;favlist&#039;,&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;))&amp;lt;/code&amp;gt; &lt;br /&gt;
* ermitteln des Namens des &amp;lt;code&amp;gt;&#039;&#039;sonos2mqtt_speaker&#039;&#039;&amp;lt;/code&amp;gt; Devices anhand des &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; Attributes: &amp;lt;code&amp;gt;my $play = (devspec2array(&#039;alias=Büro&#039;))[0]&amp;lt;/code&amp;gt;&lt;br /&gt;
* erzeugt die Ansage &amp;quot;Es folgt SenderXY&amp;quot;: &amp;lt;code&amp;gt;my $tts=&amp;quot;SonosTTS&amp;quot;;;fhem(&amp;quot;set $tts tts Es folgt $r&amp;lt;/code&amp;gt;&lt;br /&gt;
* wenn die mp3 Datei fertig erzeugt ist: &amp;lt;code&amp;gt;sleep $tts:playing:.0&amp;lt;/code&amp;gt;, wird sie mit dem Befehl playUri an den oben ermittelten &amp;lt;code&amp;gt;&#039;&#039;sonos2mqtt_speaker&#039;&#039;&amp;lt;/code&amp;gt; gesendet: &amp;lt;code&amp;gt;set $play playUri [$tts:httpName]&amp;lt;/code&amp;gt;&lt;br /&gt;
* es wird eine Eventfolge abgewartet -&amp;gt; play / PLAYING / STOPPED: &amp;lt;code&amp;gt;sleep $play:play;;sleep $play:PLAYING;;sleep $play:STOPPED&amp;lt;/code&amp;gt;&lt;br /&gt;
* danach wird der Radiosender gestartet: &amp;lt;code&amp;gt;set $play playFav $r&amp;lt;/code&amp;gt;&lt;br /&gt;
Der Code ist so einfach und relativ &amp;quot;steif&amp;quot; für die Kommandozeile. Man kann das auch in einen Setter packen (&amp;lt;code&amp;gt;set &#039;&#039;sonos2mqtt_speaker&#039;&#039; toggleRadio&amp;lt;/code&amp;gt;). Dazu den Text unten in das Attribut &amp;lt;code&amp;gt;setList&amp;lt;/code&amp;gt; des &amp;lt;code&amp;gt;&#039;&#039;sonos2mqtt_speaker&#039;&#039;&amp;lt;/code&amp;gt; Devices hinzufügen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
toggleRadio:noArg {my $dev = (devspec2array(&#039;model=sonos2mqtt_bridge&#039;))[0];my $r=Each($dev,ReadingsVal($dev,&#039;favlist&#039;,&#039;&#039;));my $tts=&amp;quot;SonosTTS&amp;quot;;fhem(&amp;quot;set $tts tts Es folgt $r;sleep $tts:playing:.0;set $NAME playUri [$tts:httpName];sleep $NAME:play;sleep $NAME:PLAYING;sleep $NAME:STOPPED;set $NAME playFav $r&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dokumentationen und weitere Entwicklungen ==&lt;br /&gt;
ToDo&lt;br /&gt;
&lt;br /&gt;
Erweiterung um Alarmhandling siehe [https://forum.fhem.de/index.php/topic,111711.msg1162031.html#msg1162031 Forum]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MQTT]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=39878</id>
		<title>HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=39878"/>
		<updated>2025-01-26T12:12:31Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Variante mit ser2net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-MOD-RPI-PCB.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funkmodul für Raspberry Pi &lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Gateway&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3/869,525 MHz&lt;br /&gt;
|HWChannels=n/a&lt;br /&gt;
|HWVoltage=1,8–3,6 V&amp;amp;nbsp;DC&lt;br /&gt;
|HWPowerConsumption=50 mA max.&lt;br /&gt;
|HWPoweredBy=RasPi&lt;br /&gt;
|HWSize=19x41x14mm&lt;br /&gt;
|HWDeviceFHEM=[[HMUARTLGW]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3 &lt;br /&gt;
}}&lt;br /&gt;
Das [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]] ist eine Platine, die auf die GPIO-Schnittstelle des [[Raspberry Pi]] aufgesteckt werden und damit als [[Interface]] zu [[HomeMatic]] Geräten dienen kann. &lt;br /&gt;
&lt;br /&gt;
== Aufbau, Einsatz und grundsätzliche Funktionsweise ==&lt;br /&gt;
Das Modul besteht aus zwei Teilplatinen, die von eQ-3 über den Internetshop von ELV (als Bausatz ab etwa 20€, fertig montiert ab etwa 30€) verkauft werden. &lt;br /&gt;
&lt;br /&gt;
Das eigentliche Funkmodul wird mit HM-MOD-RPI-UART bezeichnet (und trägt den Aufdruck UART, im obigen Bild hinten teilweise verdeckt und mit der umrandeten 7 versehen), sie hat fünf einpolige Buchsen mit dem Rastermaß 2mm. Die Zusatzplatine zum Anschluss an die GPIO wird mit TRX1 bezeichnet (im obigen Bild vorn sichtbar mit dem Aufdruck HM-MOD-RPI-PCB), sie hat zwei sechspolige Buchsen mit dem Rastermaß 2,54mm.  Die Zusatzplatine enthält im Wesentlichen Stützkondensatoren und erlaubt einen direkten Anschluss an die GPIO eines Raspberry Pi.&lt;br /&gt;
* Der vorgesehene Einsatz als Aufsteckmodul auf den GPIO Port des Raspberry erfordert eine Modell abhängige Konfiguration. Diese wird im Setupbereich des Wiki Artikel zum [[Raspberry_Pi]] beschrieben.&lt;br /&gt;
  &lt;br /&gt;
{{Randnotiz|RNText=Neben der hier beschriebenen Option das HM-MOD-RPI-PCB zu verwenden, besteht auch die Möglichkeit, damit auf demselben Raspberry eine virtuelle CCU zu betreiben, welche dann mit [[HMCCU]] eingebunden werden kann. Hierfür stehen mehrere Virtualisierungsvarianten zur Verfügung; eine kurze Darstellung, wie das mittels YAHM funktioniert, ist in diesem {{Link2Forum|Topic=79670|Message=718289|Forenbeitrag}} zu finden.}}Mit dieser Platine in Verbindung mit dem FHEM-Modul [[HMUARTLGW]] ist nur der Betrieb von BidCoS-Geräten möglich. Zur Einbindung von Geräten, die HM-IP verwenden, ist derzeit (Stand Juni 2018) noch zwingend eine (ggf. virtualisierte) CCU2 oder neuer erforderlich.&lt;br /&gt;
&lt;br /&gt;
Das Funkmodul stellt auf dem 868MHz-Frequenzband eine Verbindung zu Homematic-Geräten her. Das Modul wird über die serielle Schnittstelle an ein Gerät gekoppelt, dass diese serielle Schnittstelle auswerten und die Information dann weiterverarbeiten kann. Hier kommen beispielsweise in Frage: Raspberry Pi, WeMos mini, ESP8266-Module, USB-serielle Adapter. Bereits das UART-Funkmodul erlaubt eine serielle Anbindung (die entsprechenden Schnittstellen Tx und Rx sind vorhanden, sie basieren auf 3,3V), es kann aber auch die  zusätzliche TRX1-Platine seriell verbunden werden. Des weiteren gibt es im Forum ein {{Link2Forum|Topic=56606}}, in dem PeMue eine eigene Platinenversion (Schaltplan, Stückliste und vieles mehr) vorstellt.&lt;br /&gt;
&lt;br /&gt;
=== Platine 1 -PCB-Modul ===&lt;br /&gt;
[[Datei:Hm-uart trx1.png|thumb|right|200px|Verkabelung beim HM-MOD-PCB]]&lt;br /&gt;
Am einfachsten ist es sicherlich, das kombinierte PCB-Modul (also beide Platinen UART und TRX1 durch eine Pfostenleiste miteinander verlötet) direkt auf die GPIO des Raspberry Pi aufzustecken. Das Bild rechts zeigt die entsprechende Verkabelung. Dabei ist zu beachten, dass sich nicht zwei Module die GPIO teilen können. Steckt schon ein Modul im Raspberry Pi, muss der Anschluss per USB, in einem zweiten Raspberry Pi oder per WLAN gewählt werden.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platine 2 -UART-Modul ===&lt;br /&gt;
[[Datei:Verkabelung-HM-MOD-uart.png|thumb|right|200px|Verkabelung beim HM-MOD-UART]]&lt;br /&gt;
Will man das TRX1-Modul nicht verwenden, so kann man auch das UART-Modul direkt mit Rx/Tx des Raspberry Pi verbinden. Das Bild rechts zeigt die entsprechende Verkabelung. Hier sollten allerdings Stützkondensatoren an die Stromversorgung des UART angebracht werden, da Spannungsschwankungen sonst zu schwer interpretierbaren Fehlern führen können. Die Anschlüsse sind dem nachstehenden Bild zu entnehmen, allerdings ist hier nicht die UART-Platine, sondern das TRX1-Gegenstück zu sehen!&lt;br /&gt;
&lt;br /&gt;
Sowohl serielle Schnittstelle des Raspberry Pi als auch das UART-Modul arbeiten mit 3,3V arbeitet, so dass man keine Spannungsteiler benötigt. Mehr Informationen zu den GPIOs findet man unter diesem [http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_GPIO.html Link].&lt;br /&gt;
&lt;br /&gt;
=== Zusammenbau und Verwendung ===&lt;br /&gt;
Man sollte die Antenne aus dem Gehäuse schauen lassen oder gar eine externe Antenne anbringen. Idealerweise sollte das Ende der Drahtantenne mit einem Klecks Heißkleber oder ähnlichem isoliert werden; eine Berührung vor allem mit dem Innenleben des Raspberry Pi muss vermieden werden!&lt;br /&gt;
&lt;br /&gt;
Beide Platinen können zusammengebaut oder auch nur das UART Modul getrennt verwendet werden. &lt;br /&gt;
[[Datei:HM-MOD-UART-Unten.jpg|thumb|left|200px|Montage des Moduls HM-MOD-UART unten]]&lt;br /&gt;
[[Datei:HM-MOD-UART-Oben.jpg|thumb|right|200px|Montage des Moduls HM-MOD-UART oben]]&lt;br /&gt;
Die originale Montage in der Anleitung von eq3 sieht den Zusammenbau PCB Modul unten und UART Modul oben vor (Bild rechts). Damit schließen die kleineren Pi-Gehäuse nicht richtig: das Gesamtmodul klemmt am Deckel.&lt;br /&gt;
&lt;br /&gt;
Man kann ohne weiteres das UART-Modul unter dem PCB-Modul montieren (Bild links), damit wird die Gesamthöhe geringer und es passt problemlos in jedes Gehäuse. Bitte vorher die genaue Situation prüfen: Es kann sein, dass damit Kühlkörper oder ähnliches seitens der Pi-Platine stören.&lt;br /&gt;
&lt;br /&gt;
Man kann auch das PCB Modul kürzen und das UART Modul mit kurzen Drähten in einer Ebene verbinden (kein Bild).&lt;br /&gt;
&lt;br /&gt;
Bitte auf die richtige Lage (Bilder) beim Zusammenbau und auf Lötzinnbrücken achten. Da die Anschlüsse durchkontaktiert sind, bewirkt eine falsche Positionierung des UART-Moduls im schlimmsten Fall einen Kurzschluss. Man erkennt auf beiden Bildern, dass beim UART-Modul die Pinleiste einmal auf der einen und ein andermal auf der anderen Seite des Moduls angelötet werden muss! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Das Modul muss, um verwendet zu werden, mit einer Hardware verbunden werden. Hier kommen mehrere Möglichkeiten in Betracht, die jeweils vor und Nachteile aufweisen. Sie werden jetzt nacheinander präsentiert.  &lt;br /&gt;
&lt;br /&gt;
=== Anbindung an die GPIO im Raspberry ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
Man kann das  HM-MOD-RPI-PCB Modul direkt in die GPIOs eines Raspberry stecken. Das hat den Vorteil, dass das Gerät (mehr oder weniger) sofort betriebsbereit ist, aber den Nachteil, dass am RPi vorher mehrere Installationen zu erfolgen haben. &lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;&amp;lt;big&amp;gt;notwendige Konfiguration der Schnittstelle&amp;lt;/big&amp;gt;&#039;&#039;&#039; ist hier beschrieben: [[Raspberry_Pi#Verwendung_UART_f.C3.BCr_Zusatzmodule|Verwendung UART für Zusatzmodule]].&lt;br /&gt;
* Der Einsatz in FHEM für CUL_HM erfolgt mit dem Modul [[HMUARTLGW]]&lt;br /&gt;
* Die automatische Erkennung der USB Geräte muss deaktiviert werden: &lt;br /&gt;
::&amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt;&lt;br /&gt;
: Nach dem Setzen des Attributes muss die Änderung gespeichert werden (siehe [[save]])!&lt;br /&gt;
&lt;br /&gt;
=== Anbindung über das Netzwerk===&lt;br /&gt;
Wenn das  HM-MOD-RPI-PCB Modul an einen RPi angeschlossen ist, kann man dieses Modul danach auch im Netzwerk verfügbar machen. Dieser Pi kann beliebige Aufgaben erledigen, nur das HM-MOD-RPI-PCB Modul selbst darf nicht lokal verwendet werden. Somit kann man bei einem Umzug des FHEM Servers das HM-MOD-RPI-PCB Modul einfach weiterhin nutzen oder einen vorhandene RaspberryPi zum &amp;quot;HMLAN&amp;quot; umbauen. Sollte man aber ausschließlich Zugriff auf das HM-MOD-RPI-PCB Modul im Netzwerk benötigen, empfiehlt sich auch aus Kostengründen (Stromverbrauch) eine andere Lösung.&lt;br /&gt;
&lt;br /&gt;
Achtung! Auch über das Netzwerk darf immer &#039;&#039;&#039;nur eine Instanz auf das freigegebene Modul zugreifen&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration der Schnittstelle ist in jedem Fall gleich: [[Raspberry Pi#Verwendung UART für Zusatzmodule|Verwendung UART für Zusatzmodule]]. &lt;br /&gt;
&lt;br /&gt;
Die [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi#Definition in FHEM 2|Definition in FHEM]] erfolgt dann mit dem Parameter &amp;lt;code&amp;gt;uart:// .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit ser2net =====&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,124384.0.html &#039;&#039;&#039;Achtung!&#039;&#039;&#039; Mit der Version 4 hat sich die Konfiguration geändert!]&lt;br /&gt;
&lt;br /&gt;
Diese Installation auf dem Pi mit dem  HM-MOD-RPI-PCB Modul bitte im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. &lt;br /&gt;
&lt;br /&gt;
Bis zur ser2net &#039;&#039;&#039;Version 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install ser2net&lt;br /&gt;
echo &amp;quot;4000:raw:0:/dev/ttyAMA0:115200 NONE 1STOPBIT 8DATABITS HANGUP_WHEN_DONE&amp;quot; &amp;gt;&amp;gt; /etc/ser2net.conf&lt;br /&gt;
# Den Dienst neu starten&lt;br /&gt;
systemctl restart ser2net&amp;lt;/pre&amp;gt;Ab der ser2net &#039;&#039;&#039;Version 4&#039;&#039;&#039; erfolgt die Konfiguration im anderen Format /etc/ser2net.yaml.  [https://linux.die.net/man/8/ser2net manpage]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /etc/ser2net.yaml /etc/ser2net.yaml.sav&lt;br /&gt;
cat &amp;lt;&amp;lt;EOI &amp;gt; /etc/ser2net.yaml&lt;br /&gt;
%YAML 1.1&lt;br /&gt;
---&lt;br /&gt;
# HM_MOD-RPI-PCB&lt;br /&gt;
connection: &amp;amp;con01&lt;br /&gt;
    accepter: tcp,4000&lt;br /&gt;
    connector: serialdev,&lt;br /&gt;
              /dev/ttyAMA0,&lt;br /&gt;
              115200n81,local&lt;br /&gt;
EOI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zur Kommunikation zwischen FHEM und ser2net auf einem anderen Gerät im Netzwerk kann (mindestens ab Debian Bullseye) zusätzlich die Option &amp;quot;NOBREAK&amp;quot; im Connector (siehe [https://linux.die.net/man/8/ser2net manpage]) erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
In der Service unit müssen Abhängigkeiten vorhanden sein, sonst startet der Dienst nach einem System reboot nicht. Bitte kontrollieren und eventuell korrigieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl edit --full ser2net&amp;lt;/code&amp;gt; siehe auch  [[Fhem.service (systemd unit file)|Wiki (systemd unit file)]]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Serial port to network proxy&lt;br /&gt;
Documentation=man:ser2net(8)&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
EnvironmentFile=-/etc/default/ser2net&lt;br /&gt;
ExecStart=/usr/sbin/ser2net -n -c $CONFFILE -P /run/ser2net.pid&lt;br /&gt;
Type=exec&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit socat =====&lt;br /&gt;
Installation auf dem Pi wo das Modul steckt bitte so installieren. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
Zum Test kann man socat in der Kommandozeile starten&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den dauerhaften Betrieb muss der Start von socat automatisch erfolgen. &lt;br /&gt;
Auf einem Debian Jessie mit systemd legt man z.B. einen Dienst durch folgende Datei an:&lt;br /&gt;
/etc/systemd/system/hmlangw.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Text&amp;quot;&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 Type=forking&lt;br /&gt;
   &lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/usr/bin/socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200&lt;br /&gt;
 User=root&lt;br /&gt;
 Restart=always&lt;br /&gt;
 RestartSec=10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dann kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo systemctl enable hmlangw &amp;lt;/code&amp;gt;&lt;br /&gt;
der Service zum Autostart konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit USB-Adapter ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten: Es sind immer wieder Exemplare mit [[CP2102]] im Umlauf, die mehr als 3.3V Spannung liefern! Vor dem Verbinden mit dem HM-Modul sollte daher geprüft werden, ob der interne Spannungswandler ordnungsgemäß funktioniert und wirklich nur 3.3V liefert. Bei den blauen Micro-Modulen kann man den Fehler nach dieser Anleitung beheben: [https://www.silabs.com/community/interface/forum.topic.html/cp2102_3_3v_outputi-EaVr Beitrag von PBudmark vom 08.07.2017].}}&lt;br /&gt;
[[Datei:PL2102 Modul.png|200px|thumb|right|Mod zur Herstellung der korrekten Spannung]]&lt;br /&gt;
Das UART-Modul kann ebenfalls mit einem USB-Adapter an ein USB-fähiges Gerät angeschlossen werden. Allerdings ist hier wieder auf den Spannnungspegel zu achten, unbedingt einen USB-Adapter mit 3,3 Volt Pegel nehmen! Der Vorteil ist hier, dass hohe Geschwindigkeiten möglich sind und nicht wie bei WLAN Latenzen auftreten, aber es muss eben ein USB-Anschluss verfügbar sein.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich bewährt haben sich z.B. Modelle mit einem [[CP2102]], der auch ausreichend Stromreserven zum Betrieb des Moduls bietet. Dabei ist die serielle Schnittstelle wie üblich zu kreuzen, also&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung&#039;&#039;&#039;&lt;br /&gt;
  3.3V &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
  GND  &amp;lt;-&amp;gt; GND&lt;br /&gt;
  Rx   &amp;lt;-&amp;gt; Tx&lt;br /&gt;
  Tx   &amp;lt;-&amp;gt; Rx&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit ESP8266 ===&lt;br /&gt;
Hier ist der Vorteil, dass vor Ort nur WLAN verfügbar sein muss. Nachteilig kann sich auswirken, dass WLAN hohe Latenzen aufweisen kann und daher manchmal der Eindruck entsteht, das Modul sei gerade abwesend. &lt;br /&gt;
&lt;br /&gt;
Zum Anschluss kann ein beliebiger ESP8266 verwendet werden. Mit einigen Versionen (Beispiele im Forum: {{Link2Forum|Topic=102141|Message=956606|LinkText=ESP07}} sowie {{Link2Forum|Topic=102141|LinkText=Wemos mini pro}}) ist eine Anbindung anscheinend nicht oder nur schwer möglich - wobei dies auch an nicht funktionsfähigen Clonen liegen kann oder beim Wemos daran, dass dort die USB-Schnittstelle mit Tx/Rx nicht kalkulierbare Störungen auslöst. Ein Problem bei Wlan Anbindung kann die vergrößerte roundtrip delay darstellen. &lt;br /&gt;
&lt;br /&gt;
Es gibt verschiedene ESP Firmware-Möglichkeiten:  &lt;br /&gt;
* [https://github.com/jeelabs/esp-link &#039;&#039;&#039;ESPLink&#039;&#039;&#039;] ist eine sehr stabile und nicht mehr aktiv weiterentwickelte Firmware, die die serielle Schnittstelle direkt mit WLAN verbindet und ohne größere Schwierigkeiten eingerichtet werden kann und funktioniert. Sie nutzt die serielle Schnittstelle des ESP. Allerdings erlaubt ESPLink nicht die Nutzung anderer GPIOs, so können beispielsweise keine anderen Sensoren mit angeschlossen bzw. ausgelesen werden. Verwendet man ESP-Link, so muss neben der WLAN Konfiguration nur das Pin Assignment konfiguriert werden. Alle Pins auf disabled stellen.&lt;br /&gt;
* [https://www.letscontrolit.com/wiki/index.php/ESPEasy &#039;&#039;&#039;ESPEasy&#039;&#039;&#039;] (neue Version: ESPMega) wird beständig weiterentwickelt und gestattet es, weitere Sensoren anzuschließen und deren Werte auszulesen. Insbesondere kann man mit ESPEasy auch zwei weitere Pins nutzen, um eine serielle Schnittstelle zu simulieren (so genannter &#039;&#039;serieller Server&#039;&#039;). Man spricht auch von einer &#039;&#039;swapped&#039;&#039; Schnittstelle. Die {{Link2Forum|Topic=62651|LinkText=Platine von amunra}} nutzt eine solche Schnittstelle.  Allerdings gibt es mit einigen ESP8266-Geräten Schwierigkeiten, diese serielle Schnittstelle zu nutzen. So ist etwa ein serieller Server mit neueren ESP-Versionen anscheinend nicht lauffähig (siehe dazu {{Link2Forum|Topic=75422|LinkText=diesen Thread}}). Es gibt eine ältere Firmware-Version von PeMue, die  unmittelbar funktionsfähig scheint, siehe dazu {{Link2Forum|Topic=86592|LinkText=diesen Forenthread}}. &lt;br /&gt;
* &#039;&#039;&#039;Tasmota&#039;&#039;&#039; kann mit der Komponente TCP_Bridge ebenfalls das Modul ansteuern. Hier im [https://forum.fhem.de/index.php/topic,125817.msg1233521.html Forum] gibt es dazu eine ausführliche Anleitung und den Erfahrungsbericht.  &lt;br /&gt;
[[Datei:Esp-pin Konfiguration HMUART.png|200px|mini|esp-link Pin-Konfiguration beim swapped Server]]&lt;br /&gt;
Bei der seriellen Schnittstelle (da die ESP auf 3,3V laufen, sind keine Spannungsteiler erforderlich) findet man die Verschaltung unten. Bei der &#039;&#039;swapped&#039;&#039; Schnittstelle wird auf die digitalen Pins D7/D8 zurückgegriffen (siehe auch unten). Die letztere Verschaltung erfordert eine entsprechende Implementierung der Schnittstelle in der Firmware selbst, die beispielsweise bei ESPEasy unter Umständen nicht gegeben ist oder selbst kompiliert werden muss.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung bei einem WeMos D1 mini&#039;&#039;&#039;&lt;br /&gt;
  (UART) &amp;lt;-&amp;gt; (Wemos swapped) &amp;lt;-&amp;gt; (Wemos seriell)&lt;br /&gt;
   3.3V  &amp;lt;-&amp;gt; 3.3V            &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
   GND   &amp;lt;-&amp;gt; GND             &amp;lt;-&amp;gt; GND&lt;br /&gt;
   Rx    &amp;lt;-&amp;gt; D8              &amp;lt;-&amp;gt; Tx (D10 oder Tx)&lt;br /&gt;
   Tx    &amp;lt;-&amp;gt; D7              &amp;lt;-&amp;gt; Rx (D9 oder Rx)&lt;br /&gt;
   &lt;br /&gt;
Es gibt eine ausführliche Erläuterung für die Software unter [https://forum.fhem.de/index.php?action=dlattach;topic=56606.0;attach=68630], siehe auch [https://www.esp8266.com/viewtopic.php?f=32&amp;amp;t=18669 diese Grafik der Pins des Wemos]&lt;br /&gt;
&lt;br /&gt;
Im Forum gibt es mehr Informationen zu diesen Adaptern, zum Beispiel {{Link2Forum|Topic=62651|LinkText=&amp;quot;(amunra)-Platine für HM-MOD-UART-RPI...&amp;quot;}} oder {{Link2Forum|Topic=79559|LinkText=&amp;quot;3. Sammelbestellung - Homematic WLAN Gateway&amp;quot;}}.&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-CFG-WLAN-k.jpeg|thumb|left|200px|Anschluß an Wemos]]&lt;br /&gt;
Auf dem linken Foto ist der Anschluss des gesamten Moduls (Rastermaß 2,54mm statt 2mm!) an den Wemos zur Wifi-Einbindung abgebildet.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit einem LAN-TTL-Wandler ===&lt;br /&gt;
[[Datei:Hm-uart und usr-tcp232-T2.png|thumb|right|400px|Anschluß an die gängige Variante USR-TCP232-T2]]Auf gängigen Marktplätzen sind für etwas weniger als 10 Euro Module erhältlich, die einen seriellen Anschluss im LAN bereitstellen können. Nähere Hinweise sind in den Artikeln [[Serial TTL to Ethernet Module]] sowie [[1W-IF-ETH]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Die Module melden sich per DHCP&amp;lt;ref&amp;gt;jedenfalls neuere firmware-Versionen&amp;lt;/ref&amp;gt; im Netzwerk an, die Konfiguration erfolgt je nach Variante über ein Web-Interface, ein Windows-Tool oder eine Management-Software.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit MapleCUx ===&lt;br /&gt;
Auch die seriellen Schnittstellen, die ein MapleCUL oder [[MapleCUN]] bereitstellen, können zum Anschluß des Moduls verwendet werden. Der MapleCUN stellt beide seriellen Schnittstellen je unter einem eigenen Port ins Netz.&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Die Funktion in FHEM hängt ab von der verwendeten Hardware. Die eigentliche Funktion wird mit dem Modul [[HMUARTLGW]] hergestellt. Alle dortigen Hinweise zur Konfiguration sind zu beachten! Man sollte sich auch mit den Grundlagen der [[HomeMatic]] Kommunikation vertraut machen.&lt;br /&gt;
&lt;br /&gt;
Je nach physischem Anschluss erfolgt eine Anbindung in FHEM in unterschiedlicher Weise. Folgende Beispiele sind &#039;&#039;&#039;abweichend&#039;&#039;&#039; von der &#039;&#039;&#039;&amp;lt;big&amp;gt;[[HMUARTLGW#Define|Standardkonfiguration]]!&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wurde ein USB-Adapter auf dem FHEM-Gerät selbst verwendet, definiert man das Gerät in FHEM wie folgt.&lt;br /&gt;
  define USB_HmUART HMUARTLGW /dev/ttyUSBx&lt;br /&gt;
Wurde dagegen das Gerät über WLAN oder LAN durch das UART-Modul angebunden, erfolgt die Einbindung in FHEM durch&lt;br /&gt;
  define WLAN_HmUART HMUARTLGW uart://&amp;lt;IP-Adresse&amp;gt;:&amp;lt;Portnummer&amp;gt;&lt;br /&gt;
Portnummern:&lt;br /&gt;
*ser2net 4000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*socat 2000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*esp-link 23 &lt;br /&gt;
*MapleCUN 2324 bzw. 2325 &lt;br /&gt;
*USR-TCP232-T2 entspr. Konfiguration.&lt;br /&gt;
&lt;br /&gt;
=== Logbeispiel ===&lt;br /&gt;
Typischerweise meldet sich das Modul beim Start so:&lt;br /&gt;
   2016.10.06 17:11:16 3: Opening myHmUART device /dev/ttyAMA0&lt;br /&gt;
   2016.10.06 17:11:16 3: Setting myHmUART serial parameters to 115200,8,N,1&lt;br /&gt;
   2016.10.06 17:11:16 3: myHmUART device opened&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_BL&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_App&lt;br /&gt;
&lt;br /&gt;
=== Verwendung AES in FHEM===&lt;br /&gt;
Das Modul beherrscht AES.&lt;br /&gt;
Für weitere Informationen gibt es einen separaten Wiki Eintrag [[AES Encryption]]&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls mit FHEM ===&lt;br /&gt;
Die Module werden mit einer Firmware 1.2.1 ausgeliefert. Dies Firmware ist nicht für einen stabilen Betrieb geeignet, die Firmware 1.4.1 ist die minimal lauffähige Version.&lt;br /&gt;
&lt;br /&gt;
Bitte den Befehl zum download inklusive der Anführungszeichen in die FHEM Kommandozeile eingeben!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware herunterladen&#039;&#039;&#039;&lt;br /&gt;
* Version 1.4.1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/28045df83480122f90ab92f7c6e625f9bf3b61aa/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Alternativ die aktuellste (für den Betrieb mit dem Modul HMUARTLGW &#039;&#039;&#039;NICHT&#039;&#039;&#039; empfohlen)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/HEAD/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(Firmware neuer als 1.4.1 dient nur bei CCU-Klonen mit Mischbetrieb BidCOs, klassisch HomeMatic und HomeMatic IP, siehe {{Link2Forum|Topic=70752|LinkText=diesen Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flashen der neuen Firmware&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Erstmal überzeugen das die Firmware da ist: Z.B. mit dem Befehl in der FHEM Kommandozeile, die Ausgabe erfolgt in der Weboberfläche!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;{qx(ls -lha ./FHEM/firmware)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn alles ok - Befehl zum flashen ausführen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;set myHmUART updateCoPro /opt/fhem/FHEM/firmware/coprocessor_update.eq3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls ohne FHEM ===&lt;br /&gt;
Sollte das Update über FHEM nicht funktionieren oder FHEM nicht verfügbar sein, kann die Firmware auch wie folgt eingespielt werden (Quelle: [http://heinz-otto.blogspot.com/2016/07/raspberry-pi-homematic-modul.html Ottos Technik Blog])&lt;br /&gt;
&lt;br /&gt;
  sudo su&lt;br /&gt;
  apt-get update &amp;amp;&amp;amp; apt-get -y install libusb-1.0-0-dev build-essential git&lt;br /&gt;
  systemctl stop fhem&lt;br /&gt;
  git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
  cd hmcfgusb/&lt;br /&gt;
  make&lt;br /&gt;
  # Firmware runterladen&lt;br /&gt;
  wget https://raw.githubusercontent.com/eq-3/occu/ee68faf77e42ed5e3641790b43a710a3301cea7e/firmware/HM-MOD-UART/coprocessor_update.eq3&lt;br /&gt;
  # eigentliches flashen:&lt;br /&gt;
  ./flash-hmmoduart -U /dev/ttyAMA0 coprocessor_update.eq3&lt;br /&gt;
&lt;br /&gt;
=== Bekannte Probleme ===&lt;br /&gt;
* Sollten beim Flashen der Firmware hartnäckige Probleme auftreten (kein Erfolg aber auch gar keine Fehlermeldungen) ist das Modul vom Strom zu trennen, ein Neustart des Pi reicht nicht!&lt;br /&gt;
* Ein {{Link2Forum|Topic=41203|Message=340320|LinkText=Beitrag}} aus dem genannten Forenthread: &#039;&#039;Das Ding ist anscheinend wirklich einfach das Funkmodul aus der CCU2 (wird zumindest in der eQ-3 SW als CCU2 angesprochen) und spricht ein für FHEM vollkommen neues Protokoll.&#039;&#039;&lt;br /&gt;
* Beim Raspberry 4 gibt es eine Einstellung zur Temperaturkontrolle, die muss deaktiviert werden. Siehe diesen {{Link2Forum|Topic=123223|Message=1178032|LinkText=Beitrag im Forum}}.&lt;br /&gt;
* Bei Verwendung mit einem USR TCP232-T2 Wandler kann es in der Default-Einstellung des Wandlers dazu kommen, dass obsolete Kommunikation gepuffert und nach einem Wiederverbinden unnötig an FHEM gesendet wird (siehe {{Link2Forum|Topic=123948|LinkText=dieses Foren-Thema}}). Im FHEM-Log gibt es in diesem Fall die Meldung &amp;quot;HMUART failed to enter App!&amp;quot;   Abhilfe schafft das Aktivieren der Option &amp;quot;Buffer Data before connected&amp;quot; unter &amp;quot;Expand Function&amp;quot; im WebUI des TCP-232.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=41203|LinkText=Forenthread}} mit Nachfrage zur Unterstützung dieses Geräts in FHEM&lt;br /&gt;
* {{Link2Forum|Topic=54511|LinkText=Modul für HomeMatic UART-Modul (RPi) und HomeMatic LAN Gateway}}&lt;br /&gt;
* [http://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html Produktseite] bei ELV&lt;br /&gt;
* {{DocLink|elv|/Assets/Produkte/10/1040/104029/Downloads/104029_lan_gateway_um.pdf Bedienungsanleitung}}&lt;br /&gt;
* {{Link2Forum|Topic=56606|LinkText=Forenthread}} Hardware Thread mit vielen Varianten der Anbindung. In Post #26 gibt es die Detailbeschreibung in der angehängten PDF.&lt;br /&gt;
:&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39830</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39830"/>
		<updated>2025-01-23T10:57:34Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Der einfache Weg zum aktuellen System */ Blöcke getauscht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 reicht aktuell (November 2024) dieses Vorgehen:&lt;br /&gt;
&lt;br /&gt;
Im Terminal sudo raspi-config aufrufen und dann:&lt;br /&gt;
&lt;br /&gt;
# Punkt 3 Interface Options    Configure connections to peripherals &lt;br /&gt;
# Punkt I6 Serial Port Enable/disable shell messages on the serial connection&lt;br /&gt;
# Frage: Would you like a login shell to be accessible over serial? mit &amp;lt;No&amp;gt; beantwortet&lt;br /&gt;
# Frage: Would you like the serial port hardware to be enabled? mit &amp;lt;Yes&amp;gt; beantwortet&lt;br /&gt;
# Quittung: The serial login shell is disabled │ The serial interface is enabled -&amp;gt; Ok&lt;br /&gt;
&lt;br /&gt;
Jetzt neu starten.  Man muss keine Dateien editieren!&lt;br /&gt;
&lt;br /&gt;
Bei den Pi Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Der Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Achtung: Alte Version!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CFG-USB_USB_Konfigurations-Adapter&amp;diff=39825</id>
		<title>HM-CFG-USB USB Konfigurations-Adapter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CFG-USB_USB_Konfigurations-Adapter&amp;diff=39825"/>
		<updated>2025-01-19T15:43:02Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Vorbemerkung zur Bereitstellung im gesamten Netzwerk */ Link eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-CFG-USB-2.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic USB Konfigurationsadapter (Version 2)&lt;br /&gt;
|HWProtocol=HomeMatic &lt;br /&gt;
|HWType=Interface/Gateway&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3 MHz&lt;br /&gt;
|HWChannels=&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=&lt;br /&gt;
|HWPoweredBy=USB-Bus&lt;br /&gt;
|HWSize=V1: 40 x 90 x 25 mm&amp;lt;br /&amp;gt;V2: 28 x 84 x 11,5 mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=eQ-3&lt;br /&gt;
}}&lt;br /&gt;
Der [[HomeMatic]] &#039;&#039;&#039;USB Konfigurations-Adapter&#039;&#039;&#039; ist ein USB-Stick, der außer zur Konfiguration von HomeMatic-Komponenten auch als [[Interface]] zwischen FHEM und HomeMatic-Geräten benutzt werden kann. Er existiert in zwei Versionen: der älteren HM-CFG-USB und der neueren HM-CFG-USB2. Die folgenden Beschreibungen gelten für beide Versionen, es sei denn, es ist ausdrücklich eine spezifische Version genannt.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
Im FHEM-Forum wird die Einbindung als Interface in diesem {{Link2Forum|Topic=13071}} beschrieben und diskutiert. Im {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} wird eine gut funktionierende HMLAN-Emulationssoftware [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland] von ihrem Entwickler vorgestellt, um den HM-CFG-USB in FHEM zu integrieren. Die HMLAN-Emulationssoftware muss zunächst kompiliert und installiert werden. Anschließend wird der HM-CFG-USB (üblicherweise auf localhost) genau wie [[HM-CFG-LAN LAN Konfigurations-Adapter|HMLAN]] in FHEM eingebunden. &lt;br /&gt;
&lt;br /&gt;
=== Vorbemerkung zur Bereitstellung im gesamten Netzwerk ===&lt;br /&gt;
Alle folgenden Beispiele starten den hmland nur mit dem Parameter -p für Port. Es existiert aber auch ein Parameter -l für listen, der steht default auf 127.0.0.1 . Damit hört der Service nur auf localhost. Will man von einem anderen Host im Netzwerk zugreifen setzt man diesen Parameter z.B. auf die Hostadresse oder auf 0.0.0.0&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hmland -l 0.0.0.0 -p 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dies wäre eine simple Möglichkeit, um diesen Dienst auf einem Host laufen zu lassen und ihn in docker oder lxc Containern zu anzusprechen. Siehe hierzu auch folgenden [https://forum.fhem.de/index.php?topic=140386.0 Forenbeitrag].&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Linux ===&lt;br /&gt;
Die Schritte zur Kompilierung und Installation hat der hmland-Entwickler sowohl auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] in Englisch (kurz) als auch im oben genannten {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} in Deutsch (ausführlich) dargestellt. Die dort gemachten Angaben werden auch bei Bedarf aktualisiert und sind deshalb der beste Anlaufpunkt für Kompilierung und Installation. &lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=&#039;&#039;&#039;Skript zur Kompletteinrichtung unter Linux&#039;&#039;&#039;&lt;br /&gt;
Dieser {{Link2Forum|Topic=13071|Message=190887|LinkText=Bericht}} im Forum stellt ein Script vor, das &#039;&#039;hmland&#039;&#039; herunterlädt, übersetzt (kompiliert), installiert sowie ein init-Script anlegt, so dass fast keine manuellen Eingriffe mehr notwendig sind.}}&lt;br /&gt;
Die nachfolgenden Angaben in diesem Abschnitt sind rein zu Informationszwecken (noch) enthalten: &lt;br /&gt;
&lt;br /&gt;
Zunächst muss die HMLAN-Emulationssoftware kompiliert werden. Analog zu [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb dieser Beschreibung] ist die Vorgehensweise die folgende (in Debian/Ubuntu/Raspbian):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd /opt/&lt;br /&gt;
 apt-get install build-essential libusb-1.0-0-dev make gcc git&lt;br /&gt;
 git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
 cd hmcfgusb&lt;br /&gt;
 make&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der Dienst (zu Testzwecken sind Debugging-Ausgaben mit &amp;lt;code&amp;gt;-D&amp;lt;/code&amp;gt; aktiviert) gestartet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt; /opt/hmcfgusb/hmland -p 1000 -D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Start als Daemon ====&lt;br /&gt;
Um &#039;&#039;hmland&#039;&#039; automatisch als Daemon bei &#039;&#039;&#039;init.d Systemen&#039;&#039;&#039; zu starten, kann ein init-Script genutzt werden. Die Quellen von &#039;&#039;hmland&#039;&#039; enthalten ein solches Script im &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt; Unterverzeichnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /opt/hmcfgusb/debian/hmland.init /etc/init.d/hmland&lt;br /&gt;
cp /opt/hmcfgusb/debian/hmland.default /etc/default/hmland&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einstellungen, beispielsweise der Port, auf dem &#039;&#039;hmland&#039;&#039; hört, können (und sollten) in der Datei &amp;lt;code&amp;gt;/etc/default/hmland&amp;lt;/code&amp;gt; vorgenommen werden. Wichtig: Wenn diese Anleitung befolgt wurde, muss in der Datei &amp;lt;code&amp;gt;/etc/init.d/hmland&amp;lt;/code&amp;gt; die folgende Zeile wie folgt angepasst werden (&amp;lt;code&amp;gt;/hm&amp;lt;/code&amp;gt; aus dem Pfad entfernen), damit der automatische Start des Daemon klappt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DAEMON=/opt/hmcfgusb/$NAME # Introduce the server&#039;s location here&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die kopierte Datei mit &amp;lt;code&amp;gt;chmod 755 /etc/init.d/hmland&amp;lt;/code&amp;gt; ausführbar machen, anschließend kann &#039;&#039;hmland&#039;&#039; mit folgendem Befehl gestartet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;/etc/init.d/hmland start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Start mit systemd ====&lt;br /&gt;
Bei Distributionen, die &#039;&#039;&#039;systemd&#039;&#039;&#039; einsetzen (z.B. Debian Stretch) kann folgende Konfigurationsdatei verwendet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Homematic LAN Adapter service&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/opt/hmcfgusb/hmland -p 1000&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei muss dann natürlich der Port (1000) an die eigene Konfiguration angepasst werden und auch der Pfad wo sich der &amp;lt;Code&amp;gt; hmland&amp;lt;/Code&amp;gt; befindet, wenn man sich an oben stehendem Beispiel orientiert wäre das dann &amp;lt;Code&amp;gt;/opt/hmcfgusb/&amp;lt;/Code&amp;gt;&lt;br /&gt;
Diese Datei muss dann als &amp;lt;Code&amp;gt;hmland.service&amp;lt;/Code&amp;gt; unter &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;/etc/systemd/system&amp;lt;/syntaxhighlight&amp;gt; abgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Nun muss einmalig der Befehl&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl daemon-reload&amp;lt;/syntaxhighlight&amp;gt; ausgeführt werden damit die neuen Dateien eingelesen werden.&lt;br /&gt;
Mit dem Befehl &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl enable hmland&amp;lt;/syntaxhighlight&amp;gt; wird dafür gesorgt, dass bei einem Systemstart hmland automatisch gestartet wird&lt;br /&gt;
Mit  &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl status hmland &amp;lt;/syntaxhighlight&amp;gt; kann dann noch geprüft werden ob der Service läuft&lt;br /&gt;
&lt;br /&gt;
==== Start mit upstart ====&lt;br /&gt;
Bei Distributionen, die &#039;&#039;&#039;Upstart&#039;&#039;&#039; einsetzen (z.B. xbian) kann folgende Konfigurationsdatei verwendet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# HMLAND&lt;br /&gt;
&lt;br /&gt;
description     &amp;quot;hmland&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start on starting fhem&lt;br /&gt;
stop on stopped fhem&lt;br /&gt;
&lt;br /&gt;
respawn&lt;br /&gt;
expect fork&lt;br /&gt;
&lt;br /&gt;
chdir /opt/hmcfgusb&lt;br /&gt;
exec /opt/hmcfgusb/hmland -d -l 127.0.0.1 -p 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte als &amp;lt;code&amp;gt;/etc/init/hmland.conf&amp;lt;/code&amp;gt; angelegt werden. Mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;initctl reload-configuration &amp;lt;/code&amp;gt;&lt;br /&gt;
wird Upstart angewiesen, seine Konfiguration erneut einzulesen. Danach kann der Dienst &#039;&#039;hmland&#039;&#039; mit&lt;br /&gt;
:&amp;lt;code&amp;gt;service hmland start &amp;lt;/code&amp;gt;&lt;br /&gt;
gestartet werden. &amp;lt;code&amp;gt;hmland&amp;lt;/code&amp;gt; wird jetzt immer vor FHEM gestartet und nach FHEM beendet.&lt;br /&gt;
&lt;br /&gt;
==== Start über FHEM Startskript ====&lt;br /&gt;
{{Randnotiz|RNText=Bei Systemen mit systemd (ab debian stretch) gibt es dieses Script nicht mehr. Siehe auch den Wiki Artikel [[Fhem.service (systemd unit file)]] dort mit ExecStartPre einbinden. Oder als extra Service wie im Abschnitt systemd weiter oben}}&lt;br /&gt;
Ausprobiert auf einem BBB mit Debian, eigentlich ist das alles von Betateilchen:&lt;br /&gt;
&lt;br /&gt;
Zunächst hmland kompilieren wie oben beschrieben, bis zum make. Das muss erfolgreich durchgelaufen sein.&lt;br /&gt;
&lt;br /&gt;
Dann geht es weiter:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp hmcfgusb.rules /etc/udev/rules.d/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt das FHEM Startskript anpassen (in den Blöcken &#039;start&#039; und &#039;stop&#039; muss quasi nur jeweils 1 Zeile eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
Damit editiert man das FHEM Startskript:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo nano /etc/init.d/fhem &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so sollten die Blöcke anschließend aussehen (bitte nur jeweils die Zeile mit hmland einfügen)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 &#039;start&#039;)&lt;br /&gt;
        echo &amp;quot;Starting fhem...&amp;quot;&lt;br /&gt;
        /opt/hmcfgusb/hmland -d -p 1000&lt;br /&gt;
        perl fhem.pl fhem.cfg&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        ;;&lt;br /&gt;
&lt;br /&gt;
 &#039;stop&#039;)&lt;br /&gt;
        echo &amp;quot;Stopping fhem...&amp;quot;&lt;br /&gt;
        perl fhem.pl $port &amp;quot;shutdown&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        pkill hmland&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So wird hmland vor FHEM gestartet und nach FHEM beendet. Letztlich erspart es Probleme mit den diversen Startskripten und ihren Rechten.&lt;br /&gt;
&lt;br /&gt;
Es dauert nach dem Start von FHEM noch einige Sekunden, bis hmland fertig geladen ist. In dieser Zeit kann es zu fehlerhaften Einträgen im Logfile kommen.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung auf Synology DiskStations ===&lt;br /&gt;
Packages für DSM5.2 finden sich hier:&lt;br /&gt;
https://github.com/mkunzmann/spksrc/releases/tag/0.101-3&lt;br /&gt;
&lt;br /&gt;
Welches Package für welche DS kann man hier sehen:&lt;br /&gt;
https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model&lt;br /&gt;
&lt;br /&gt;
Einfach das passende Package installieren und dann kann man den hmland über den Synology Package-Manager starten und stoppen. Während der Installation kann man den Port für hmland festlegen. Bitte einen Port &amp;gt; 1024 wählen, da der hmland nicht als root läuft. Außerdem kann ein Logfile angegeben werden. Hier am besten eine Datei auf einem USB Stick angeben die für jedermann schreibbar sein muss. Damit sollten die Platten nach wie vor in den Standby gehen.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Mac OS X ===&lt;br /&gt;
Wie unter Linux braucht man die HMLAN-Emulationssoftware hmland, die man aus Quelltexten erstellen muss. Dazu muss man die Bibliothek libusb installieren, entweder mit einem der Paketmanager wie Fink, MacPorts oder Homebrew oder direkt aus den Quellentexten (Beispiel: &amp;quot;fink install libusb1-shlibs libusb1&amp;quot;). Hat man wie bei Linux das Quelltextarchiv für hmland heruntergeladen und ausgepackt, müssen die Dateien Makefile und hmcfgusb.c angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Im Makefile muss man den Pfad zur libusb anpassen. Hat man libusb mit fink installiert, muss man, &amp;quot;/opt/local/&amp;quot; durch &amp;quot;/sw/&amp;quot; bei den CFLAGS und den LDFLAGS ersetzen und&lt;br /&gt;
das &amp;quot;-lrt&amp;quot; aus den LDLIBS entfernen. Die Library librt gibt es bei Mac OS X nicht und wird anscheinend auch nicht gebraucht. (Stimmt das eigentlich?)&lt;br /&gt;
&lt;br /&gt;
In der Datei hmcfgusb.c muss man die Zeilen 130-134 mit dem Aufruf libusb_detach_kernel_driver auskommentieren oder löschen. Der geht nicht auf Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Nach den Änderungen in den zwei Dateien, kann man wie bei Linux den Dämon hmland mit dem Kommando &amp;quot;make&amp;quot; erzeugen und mit &amp;quot;./hmland&amp;quot; ausführen. Automatisches Starten beim Booten mit launchd ist noch nicht probiert.&lt;br /&gt;
&lt;br /&gt;
Beim Start von hmland sollte man folgende Fehlermeldung in einer Endlos-Schleife erhalten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Datum Zeit: Client 127.0.0.1 connected!&lt;br /&gt;
Can&#039;t claim interface: Access denied (insufficient permissions)&lt;br /&gt;
Can&#039;t find/open hmcfgusb!&lt;br /&gt;
Datum Zeit: Connection to 127.0.0.1 closed!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch ein Start von hmland mit Superuser-Rechten ändert daran nichts. Damit das claim interface klappt, muss man eine codeless kext in den Ordner /Library/Extensions legen. Ich habe dieses (http://mspdebug.sourceforge.net/misc/ex430rf2500-kext.zip) herunter geladen. Damit es funktioniert, muss man aber in der Datei Info.plist des Bundle die Properties idProduct und idVendor ändern, entweder mit dem Property List Editor oder einem anderen Texteditor. Die beiden Properties sind etwas versteckt bei Information Property List → IOKitPersonalities → ComIntf. Bei DebugIntf und DeviceDriver scheint man es nicht ändern zu müssen, aber schaden kann es nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
idProduct: 49167&lt;br /&gt;
idVendor: 6943&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Rechte des kext-Bundles müssen auch noch gesetzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  chmod -R 755 ex430rf2500.kext&lt;br /&gt;
  chown -R root:wheel ex430rf2500.kext&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Datei ex430rf2500.kext in den Ordner /Library/Extensions legen und hmland sollte dann funktionieren.&lt;br /&gt;
&lt;br /&gt;
Es kann sein, dass ab Mac OS X 10.9 der Trick mit dem codeless kext nicht mehr funktioniert, aber noch ist das nicht getestet oder bestätigt. Langfristig kann man vielleicht auch eine kext mit einem Treiber für den HM-CFG-USB USB erstellen&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Windows ===&lt;br /&gt;
Bei der Einrichtung und vermutlich auch dem Betrieb unter Windows 8.1 sind wegen der erweiterten Energieverwaltungsfunktionen die von eQ-3 [http://www.eq-3.de/Downloads/eq3/pdf_FAQ/Funk-Konfigurationsdapter-USB_Windos_8.1.pdf zusammengestellten Tipps] zu befolgen.&lt;br /&gt;
&lt;br /&gt;
=== Definition(en) in der FHEM-Konfiguration ===&lt;br /&gt;
In der FHEM [[Konfiguration]] muss noch, sofern/sobald der &#039;&#039;hmland&#039;&#039; läuft, das Device eingerichtet werden mit den folgenden Anweisungen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &#039;&#039;&#039;hmusb&#039;&#039;&#039; HMLAN 127.0.0.1:1000 &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;hmusb&#039;&#039;&#039; der frei wählbare Devicename ist. Anschließend sollte bzw. muss noch mit&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &#039;&#039;&#039;hmusb&#039;&#039;&#039; hmId &amp;lt;&#039;&#039;&#039;hmId&#039;&#039;&#039;&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
eine &#039;&#039;&#039;hmId&#039;&#039;&#039; zugeordnet werden (dabei bitte auch die Hinweise und Regeln beachten, die im Zusammenhang mit der [[Virtueller Controller VCCU|VCCU]] beschrieben sind!&lt;br /&gt;
&lt;br /&gt;
== Firmware Update ==&lt;br /&gt;
Der Firmware Update (unter Linux) ist ebenfalls auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] beschrieben. Auch die letzte bekannte Firmware-Version (0.967) steht dort zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Verbindung zu neueren hmland-Versionen nicht stabil ===&lt;br /&gt;
Seit Version 0.100 meldet sich die HMLAN-Emulationssoftware als USB-Interface bei FHEM. Ältere FHEM-Versionen (vor dem 19.6.2015) brechen deshalb die Verbindung ab, da sie nur ein LAN-Interface erwarten.&lt;br /&gt;
&lt;br /&gt;
Lösung: Kommandozeilenparameter &amp;lt;code&amp;gt;-I&amp;lt;/code&amp;gt; dem hmland-Aufruf hinzufügen, dann meldet sich dieser wieder als LAN-Interface.&lt;br /&gt;
&lt;br /&gt;
=== Stick nicht (mehr) ansprechbar ===&lt;br /&gt;
Zitat aus dem {{Link2Forum|Topic=32502|Message=249122|LinkText=FHEM-Forum}}: &lt;br /&gt;
:&#039;&#039;... befürchte ich, dass dein Stick das Zeitliche gesegnet hat. Machen die Dinger leider sehr gerne... Ganz besonders beim Modus-Wechsel vom 10k- in den 100k-Modus, wenn man bei irgendeinem Device ein Firmwareupdate durchführt. &amp;lt;br /&amp;gt;Die gute Nachricht ist, dass der Fehler bei sämtlichen Händlern bekannt ist und anstandslos getauscht wird.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
Der USB-Stack am Raspberry Pi ist für viele Probleme verantwortlich. Daher sieht man öfter Fehlermeldungen:&lt;br /&gt;
:&amp;lt;code&amp;gt;usb-transfer took more than 100ms (1039ms), this may lead to timing problems!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da das Timing bei HomeMatic wichtig ist führt das zu vielen Retransmits und zu unzuverlässigen Aktoren. Als Workaround kann man den USB-Stack auf die deutlich langsamere Version 1.1 stellen. Dazu fügt man folgenden Text am Anfang der Datei /boot/cmdline.txt ein:&lt;br /&gt;
:&amp;lt;code&amp;gt;dwc_otg.speed=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weitergehende Informationen ==&lt;br /&gt;
Es sind zwei Versionen des HM-CFG-USB im Umlauf:&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Stand März 2016 ist allem Anschein nach kein HM-CFG-USB mehr im ELV Programm enthalten!}}&lt;br /&gt;
* HM-CFG-USB-2: die aktuelle Version; Kennzeichen dieser Version: &lt;br /&gt;
** Größe: 28 x 84 x 11,5&amp;amp;nbsp;mm&lt;br /&gt;
** Gewicht: 18&amp;amp;nbsp;g&lt;br /&gt;
** Antenne innenliegend&lt;br /&gt;
* HM-CFG-USB: Vorgängerversion; Stand 12/2013 noch Restbestände im Handel verfügbar. Dokumentation ([http://files.voelkner.de/625000-649999/646462-an-01-ml-HM_Konfigurationsadapter_CFG_USB_de_en.pdf Völkner]); Kennzeichen:&lt;br /&gt;
** Anschluss per separatem USB-Kabel&lt;br /&gt;
** abstehende Stabantenne&lt;br /&gt;
** Größe: 40 x 90 x 25&amp;amp;nbsp;mm&lt;br /&gt;
** Gewicht: 45&amp;amp;nbsp;g&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-CFG-USB-2_-UM-eQ-3-150129-web.pdf HM-CFG-USB-2, PDF]&lt;br /&gt;
* FHEM-Forums {{Link2Forum|Topic=13071}}: HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in FHEM nutzen&lt;br /&gt;
* [http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/homematic-funk-konfigurationsadapter-usb.html eQ-3 Produktseite] zum &amp;quot;HomeMatic Funk-Konfigurationsadapter USB&amp;quot;; Downloads, technische Daten, etc.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:OSX]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CFG-USB_USB_Konfigurations-Adapter&amp;diff=39824</id>
		<title>HM-CFG-USB USB Konfigurations-Adapter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CFG-USB_USB_Konfigurations-Adapter&amp;diff=39824"/>
		<updated>2025-01-19T15:41:29Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Einbindung in FHEM */ Abschnitt Vorbemerkungen für den Zugriff aus dem gesamten Netzwerk eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-CFG-USB-2.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic USB Konfigurationsadapter (Version 2)&lt;br /&gt;
|HWProtocol=HomeMatic &lt;br /&gt;
|HWType=Interface/Gateway&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3 MHz&lt;br /&gt;
|HWChannels=&lt;br /&gt;
|HWVoltage=5 V&lt;br /&gt;
|HWPowerConsumption=&lt;br /&gt;
|HWPoweredBy=USB-Bus&lt;br /&gt;
|HWSize=V1: 40 x 90 x 25 mm&amp;lt;br /&amp;gt;V2: 28 x 84 x 11,5 mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=eQ-3&lt;br /&gt;
}}&lt;br /&gt;
Der [[HomeMatic]] &#039;&#039;&#039;USB Konfigurations-Adapter&#039;&#039;&#039; ist ein USB-Stick, der außer zur Konfiguration von HomeMatic-Komponenten auch als [[Interface]] zwischen FHEM und HomeMatic-Geräten benutzt werden kann. Er existiert in zwei Versionen: der älteren HM-CFG-USB und der neueren HM-CFG-USB2. Die folgenden Beschreibungen gelten für beide Versionen, es sei denn, es ist ausdrücklich eine spezifische Version genannt.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
Im FHEM-Forum wird die Einbindung als Interface in diesem {{Link2Forum|Topic=13071}} beschrieben und diskutiert. Im {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} wird eine gut funktionierende HMLAN-Emulationssoftware [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland] von ihrem Entwickler vorgestellt, um den HM-CFG-USB in FHEM zu integrieren. Die HMLAN-Emulationssoftware muss zunächst kompiliert und installiert werden. Anschließend wird der HM-CFG-USB (üblicherweise auf localhost) genau wie [[HM-CFG-LAN LAN Konfigurations-Adapter|HMLAN]] in FHEM eingebunden. &lt;br /&gt;
&lt;br /&gt;
=== Vorbemerkung zur Bereitstellung im gesamten Netzwerk ===&lt;br /&gt;
Alle folgenden Beispiele starten den hmland nur mit dem Parameter -p für Port. Es existiert aber auch ein Parameter -l für listen, der steht default auf 127.0.0.1 . Damit hört der Service nur auf localhost. Will man von einem anderen Host im Netzwerk zugreifen setzt man diesen Parameter z.B. auf die Hostadresse oder auf 0.0.0.0&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hmland -l 0.0.0.0 -p 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dies wäre eine simple Möglichkeit, um diesen Dienst auf einem Host laufen zu lassen und ihn in docker oder lxc Containern zu anzusprechen.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Linux ===&lt;br /&gt;
Die Schritte zur Kompilierung und Installation hat der hmland-Entwickler sowohl auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] in Englisch (kurz) als auch im oben genannten {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} in Deutsch (ausführlich) dargestellt. Die dort gemachten Angaben werden auch bei Bedarf aktualisiert und sind deshalb der beste Anlaufpunkt für Kompilierung und Installation. &lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=&#039;&#039;&#039;Skript zur Kompletteinrichtung unter Linux&#039;&#039;&#039;&lt;br /&gt;
Dieser {{Link2Forum|Topic=13071|Message=190887|LinkText=Bericht}} im Forum stellt ein Script vor, das &#039;&#039;hmland&#039;&#039; herunterlädt, übersetzt (kompiliert), installiert sowie ein init-Script anlegt, so dass fast keine manuellen Eingriffe mehr notwendig sind.}}&lt;br /&gt;
Die nachfolgenden Angaben in diesem Abschnitt sind rein zu Informationszwecken (noch) enthalten: &lt;br /&gt;
&lt;br /&gt;
Zunächst muss die HMLAN-Emulationssoftware kompiliert werden. Analog zu [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb dieser Beschreibung] ist die Vorgehensweise die folgende (in Debian/Ubuntu/Raspbian):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd /opt/&lt;br /&gt;
 apt-get install build-essential libusb-1.0-0-dev make gcc git&lt;br /&gt;
 git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
 cd hmcfgusb&lt;br /&gt;
 make&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der Dienst (zu Testzwecken sind Debugging-Ausgaben mit &amp;lt;code&amp;gt;-D&amp;lt;/code&amp;gt; aktiviert) gestartet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt; /opt/hmcfgusb/hmland -p 1000 -D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Start als Daemon ====&lt;br /&gt;
Um &#039;&#039;hmland&#039;&#039; automatisch als Daemon bei &#039;&#039;&#039;init.d Systemen&#039;&#039;&#039; zu starten, kann ein init-Script genutzt werden. Die Quellen von &#039;&#039;hmland&#039;&#039; enthalten ein solches Script im &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt; Unterverzeichnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /opt/hmcfgusb/debian/hmland.init /etc/init.d/hmland&lt;br /&gt;
cp /opt/hmcfgusb/debian/hmland.default /etc/default/hmland&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einstellungen, beispielsweise der Port, auf dem &#039;&#039;hmland&#039;&#039; hört, können (und sollten) in der Datei &amp;lt;code&amp;gt;/etc/default/hmland&amp;lt;/code&amp;gt; vorgenommen werden. Wichtig: Wenn diese Anleitung befolgt wurde, muss in der Datei &amp;lt;code&amp;gt;/etc/init.d/hmland&amp;lt;/code&amp;gt; die folgende Zeile wie folgt angepasst werden (&amp;lt;code&amp;gt;/hm&amp;lt;/code&amp;gt; aus dem Pfad entfernen), damit der automatische Start des Daemon klappt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DAEMON=/opt/hmcfgusb/$NAME # Introduce the server&#039;s location here&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die kopierte Datei mit &amp;lt;code&amp;gt;chmod 755 /etc/init.d/hmland&amp;lt;/code&amp;gt; ausführbar machen, anschließend kann &#039;&#039;hmland&#039;&#039; mit folgendem Befehl gestartet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;/etc/init.d/hmland start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Start mit systemd ====&lt;br /&gt;
Bei Distributionen, die &#039;&#039;&#039;systemd&#039;&#039;&#039; einsetzen (z.B. Debian Stretch) kann folgende Konfigurationsdatei verwendet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Homematic LAN Adapter service&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/opt/hmcfgusb/hmland -p 1000&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei muss dann natürlich der Port (1000) an die eigene Konfiguration angepasst werden und auch der Pfad wo sich der &amp;lt;Code&amp;gt; hmland&amp;lt;/Code&amp;gt; befindet, wenn man sich an oben stehendem Beispiel orientiert wäre das dann &amp;lt;Code&amp;gt;/opt/hmcfgusb/&amp;lt;/Code&amp;gt;&lt;br /&gt;
Diese Datei muss dann als &amp;lt;Code&amp;gt;hmland.service&amp;lt;/Code&amp;gt; unter &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;/etc/systemd/system&amp;lt;/syntaxhighlight&amp;gt; abgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Nun muss einmalig der Befehl&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl daemon-reload&amp;lt;/syntaxhighlight&amp;gt; ausgeführt werden damit die neuen Dateien eingelesen werden.&lt;br /&gt;
Mit dem Befehl &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl enable hmland&amp;lt;/syntaxhighlight&amp;gt; wird dafür gesorgt, dass bei einem Systemstart hmland automatisch gestartet wird&lt;br /&gt;
Mit  &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;systemctl status hmland &amp;lt;/syntaxhighlight&amp;gt; kann dann noch geprüft werden ob der Service läuft&lt;br /&gt;
&lt;br /&gt;
==== Start mit upstart ====&lt;br /&gt;
Bei Distributionen, die &#039;&#039;&#039;Upstart&#039;&#039;&#039; einsetzen (z.B. xbian) kann folgende Konfigurationsdatei verwendet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# HMLAND&lt;br /&gt;
&lt;br /&gt;
description     &amp;quot;hmland&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start on starting fhem&lt;br /&gt;
stop on stopped fhem&lt;br /&gt;
&lt;br /&gt;
respawn&lt;br /&gt;
expect fork&lt;br /&gt;
&lt;br /&gt;
chdir /opt/hmcfgusb&lt;br /&gt;
exec /opt/hmcfgusb/hmland -d -l 127.0.0.1 -p 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei sollte als &amp;lt;code&amp;gt;/etc/init/hmland.conf&amp;lt;/code&amp;gt; angelegt werden. Mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;initctl reload-configuration &amp;lt;/code&amp;gt;&lt;br /&gt;
wird Upstart angewiesen, seine Konfiguration erneut einzulesen. Danach kann der Dienst &#039;&#039;hmland&#039;&#039; mit&lt;br /&gt;
:&amp;lt;code&amp;gt;service hmland start &amp;lt;/code&amp;gt;&lt;br /&gt;
gestartet werden. &amp;lt;code&amp;gt;hmland&amp;lt;/code&amp;gt; wird jetzt immer vor FHEM gestartet und nach FHEM beendet.&lt;br /&gt;
&lt;br /&gt;
==== Start über FHEM Startskript ====&lt;br /&gt;
{{Randnotiz|RNText=Bei Systemen mit systemd (ab debian stretch) gibt es dieses Script nicht mehr. Siehe auch den Wiki Artikel [[Fhem.service (systemd unit file)]] dort mit ExecStartPre einbinden. Oder als extra Service wie im Abschnitt systemd weiter oben}}&lt;br /&gt;
Ausprobiert auf einem BBB mit Debian, eigentlich ist das alles von Betateilchen:&lt;br /&gt;
&lt;br /&gt;
Zunächst hmland kompilieren wie oben beschrieben, bis zum make. Das muss erfolgreich durchgelaufen sein.&lt;br /&gt;
&lt;br /&gt;
Dann geht es weiter:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp hmcfgusb.rules /etc/udev/rules.d/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt das FHEM Startskript anpassen (in den Blöcken &#039;start&#039; und &#039;stop&#039; muss quasi nur jeweils 1 Zeile eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
Damit editiert man das FHEM Startskript:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo nano /etc/init.d/fhem &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so sollten die Blöcke anschließend aussehen (bitte nur jeweils die Zeile mit hmland einfügen)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 &#039;start&#039;)&lt;br /&gt;
        echo &amp;quot;Starting fhem...&amp;quot;&lt;br /&gt;
        /opt/hmcfgusb/hmland -d -p 1000&lt;br /&gt;
        perl fhem.pl fhem.cfg&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        ;;&lt;br /&gt;
&lt;br /&gt;
 &#039;stop&#039;)&lt;br /&gt;
        echo &amp;quot;Stopping fhem...&amp;quot;&lt;br /&gt;
        perl fhem.pl $port &amp;quot;shutdown&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        pkill hmland&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So wird hmland vor FHEM gestartet und nach FHEM beendet. Letztlich erspart es Probleme mit den diversen Startskripten und ihren Rechten.&lt;br /&gt;
&lt;br /&gt;
Es dauert nach dem Start von FHEM noch einige Sekunden, bis hmland fertig geladen ist. In dieser Zeit kann es zu fehlerhaften Einträgen im Logfile kommen.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung auf Synology DiskStations ===&lt;br /&gt;
Packages für DSM5.2 finden sich hier:&lt;br /&gt;
https://github.com/mkunzmann/spksrc/releases/tag/0.101-3&lt;br /&gt;
&lt;br /&gt;
Welches Package für welche DS kann man hier sehen:&lt;br /&gt;
https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model&lt;br /&gt;
&lt;br /&gt;
Einfach das passende Package installieren und dann kann man den hmland über den Synology Package-Manager starten und stoppen. Während der Installation kann man den Port für hmland festlegen. Bitte einen Port &amp;gt; 1024 wählen, da der hmland nicht als root läuft. Außerdem kann ein Logfile angegeben werden. Hier am besten eine Datei auf einem USB Stick angeben die für jedermann schreibbar sein muss. Damit sollten die Platten nach wie vor in den Standby gehen.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Mac OS X ===&lt;br /&gt;
Wie unter Linux braucht man die HMLAN-Emulationssoftware hmland, die man aus Quelltexten erstellen muss. Dazu muss man die Bibliothek libusb installieren, entweder mit einem der Paketmanager wie Fink, MacPorts oder Homebrew oder direkt aus den Quellentexten (Beispiel: &amp;quot;fink install libusb1-shlibs libusb1&amp;quot;). Hat man wie bei Linux das Quelltextarchiv für hmland heruntergeladen und ausgepackt, müssen die Dateien Makefile und hmcfgusb.c angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Im Makefile muss man den Pfad zur libusb anpassen. Hat man libusb mit fink installiert, muss man, &amp;quot;/opt/local/&amp;quot; durch &amp;quot;/sw/&amp;quot; bei den CFLAGS und den LDFLAGS ersetzen und&lt;br /&gt;
das &amp;quot;-lrt&amp;quot; aus den LDLIBS entfernen. Die Library librt gibt es bei Mac OS X nicht und wird anscheinend auch nicht gebraucht. (Stimmt das eigentlich?)&lt;br /&gt;
&lt;br /&gt;
In der Datei hmcfgusb.c muss man die Zeilen 130-134 mit dem Aufruf libusb_detach_kernel_driver auskommentieren oder löschen. Der geht nicht auf Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Nach den Änderungen in den zwei Dateien, kann man wie bei Linux den Dämon hmland mit dem Kommando &amp;quot;make&amp;quot; erzeugen und mit &amp;quot;./hmland&amp;quot; ausführen. Automatisches Starten beim Booten mit launchd ist noch nicht probiert.&lt;br /&gt;
&lt;br /&gt;
Beim Start von hmland sollte man folgende Fehlermeldung in einer Endlos-Schleife erhalten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Datum Zeit: Client 127.0.0.1 connected!&lt;br /&gt;
Can&#039;t claim interface: Access denied (insufficient permissions)&lt;br /&gt;
Can&#039;t find/open hmcfgusb!&lt;br /&gt;
Datum Zeit: Connection to 127.0.0.1 closed!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch ein Start von hmland mit Superuser-Rechten ändert daran nichts. Damit das claim interface klappt, muss man eine codeless kext in den Ordner /Library/Extensions legen. Ich habe dieses (http://mspdebug.sourceforge.net/misc/ex430rf2500-kext.zip) herunter geladen. Damit es funktioniert, muss man aber in der Datei Info.plist des Bundle die Properties idProduct und idVendor ändern, entweder mit dem Property List Editor oder einem anderen Texteditor. Die beiden Properties sind etwas versteckt bei Information Property List → IOKitPersonalities → ComIntf. Bei DebugIntf und DeviceDriver scheint man es nicht ändern zu müssen, aber schaden kann es nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
idProduct: 49167&lt;br /&gt;
idVendor: 6943&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Rechte des kext-Bundles müssen auch noch gesetzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  chmod -R 755 ex430rf2500.kext&lt;br /&gt;
  chown -R root:wheel ex430rf2500.kext&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Datei ex430rf2500.kext in den Ordner /Library/Extensions legen und hmland sollte dann funktionieren.&lt;br /&gt;
&lt;br /&gt;
Es kann sein, dass ab Mac OS X 10.9 der Trick mit dem codeless kext nicht mehr funktioniert, aber noch ist das nicht getestet oder bestätigt. Langfristig kann man vielleicht auch eine kext mit einem Treiber für den HM-CFG-USB USB erstellen&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Windows ===&lt;br /&gt;
Bei der Einrichtung und vermutlich auch dem Betrieb unter Windows 8.1 sind wegen der erweiterten Energieverwaltungsfunktionen die von eQ-3 [http://www.eq-3.de/Downloads/eq3/pdf_FAQ/Funk-Konfigurationsdapter-USB_Windos_8.1.pdf zusammengestellten Tipps] zu befolgen.&lt;br /&gt;
&lt;br /&gt;
=== Definition(en) in der FHEM-Konfiguration ===&lt;br /&gt;
In der FHEM [[Konfiguration]] muss noch, sofern/sobald der &#039;&#039;hmland&#039;&#039; läuft, das Device eingerichtet werden mit den folgenden Anweisungen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define &#039;&#039;&#039;hmusb&#039;&#039;&#039; HMLAN 127.0.0.1:1000 &amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;hmusb&#039;&#039;&#039; der frei wählbare Devicename ist. Anschließend sollte bzw. muss noch mit&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &#039;&#039;&#039;hmusb&#039;&#039;&#039; hmId &amp;lt;&#039;&#039;&#039;hmId&#039;&#039;&#039;&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
eine &#039;&#039;&#039;hmId&#039;&#039;&#039; zugeordnet werden (dabei bitte auch die Hinweise und Regeln beachten, die im Zusammenhang mit der [[Virtueller Controller VCCU|VCCU]] beschrieben sind!&lt;br /&gt;
&lt;br /&gt;
== Firmware Update ==&lt;br /&gt;
Der Firmware Update (unter Linux) ist ebenfalls auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] beschrieben. Auch die letzte bekannte Firmware-Version (0.967) steht dort zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Verbindung zu neueren hmland-Versionen nicht stabil ===&lt;br /&gt;
Seit Version 0.100 meldet sich die HMLAN-Emulationssoftware als USB-Interface bei FHEM. Ältere FHEM-Versionen (vor dem 19.6.2015) brechen deshalb die Verbindung ab, da sie nur ein LAN-Interface erwarten.&lt;br /&gt;
&lt;br /&gt;
Lösung: Kommandozeilenparameter &amp;lt;code&amp;gt;-I&amp;lt;/code&amp;gt; dem hmland-Aufruf hinzufügen, dann meldet sich dieser wieder als LAN-Interface.&lt;br /&gt;
&lt;br /&gt;
=== Stick nicht (mehr) ansprechbar ===&lt;br /&gt;
Zitat aus dem {{Link2Forum|Topic=32502|Message=249122|LinkText=FHEM-Forum}}: &lt;br /&gt;
:&#039;&#039;... befürchte ich, dass dein Stick das Zeitliche gesegnet hat. Machen die Dinger leider sehr gerne... Ganz besonders beim Modus-Wechsel vom 10k- in den 100k-Modus, wenn man bei irgendeinem Device ein Firmwareupdate durchführt. &amp;lt;br /&amp;gt;Die gute Nachricht ist, dass der Fehler bei sämtlichen Händlern bekannt ist und anstandslos getauscht wird.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
Der USB-Stack am Raspberry Pi ist für viele Probleme verantwortlich. Daher sieht man öfter Fehlermeldungen:&lt;br /&gt;
:&amp;lt;code&amp;gt;usb-transfer took more than 100ms (1039ms), this may lead to timing problems!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da das Timing bei HomeMatic wichtig ist führt das zu vielen Retransmits und zu unzuverlässigen Aktoren. Als Workaround kann man den USB-Stack auf die deutlich langsamere Version 1.1 stellen. Dazu fügt man folgenden Text am Anfang der Datei /boot/cmdline.txt ein:&lt;br /&gt;
:&amp;lt;code&amp;gt;dwc_otg.speed=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weitergehende Informationen ==&lt;br /&gt;
Es sind zwei Versionen des HM-CFG-USB im Umlauf:&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Stand März 2016 ist allem Anschein nach kein HM-CFG-USB mehr im ELV Programm enthalten!}}&lt;br /&gt;
* HM-CFG-USB-2: die aktuelle Version; Kennzeichen dieser Version: &lt;br /&gt;
** Größe: 28 x 84 x 11,5&amp;amp;nbsp;mm&lt;br /&gt;
** Gewicht: 18&amp;amp;nbsp;g&lt;br /&gt;
** Antenne innenliegend&lt;br /&gt;
* HM-CFG-USB: Vorgängerversion; Stand 12/2013 noch Restbestände im Handel verfügbar. Dokumentation ([http://files.voelkner.de/625000-649999/646462-an-01-ml-HM_Konfigurationsadapter_CFG_USB_de_en.pdf Völkner]); Kennzeichen:&lt;br /&gt;
** Anschluss per separatem USB-Kabel&lt;br /&gt;
** abstehende Stabantenne&lt;br /&gt;
** Größe: 40 x 90 x 25&amp;amp;nbsp;mm&lt;br /&gt;
** Gewicht: 45&amp;amp;nbsp;g&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-CFG-USB-2_-UM-eQ-3-150129-web.pdf HM-CFG-USB-2, PDF]&lt;br /&gt;
* FHEM-Forums {{Link2Forum|Topic=13071}}: HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in FHEM nutzen&lt;br /&gt;
* [http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/homematic-funk-konfigurationsadapter-usb.html eQ-3 Produktseite] zum &amp;quot;HomeMatic Funk-Konfigurationsadapter USB&amp;quot;; Downloads, technische Daten, etc.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:OSX]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39721</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39721"/>
		<updated>2024-12-03T09:03:06Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Banner Wartung entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für aktuelle Mitteilungen ---------            &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Neue Mindestlänge für Passwörter&#039;&#039;&#039;: bedingt durch den Umzug auf einen neuen Server und die aktuelle Version von MediaWiki ist die Mindestlänge von Benutzerpasswörtern auf 10 angehoben worden. Bitte bei entsprechender Aufforderung beim Login ein mindestens zehnstelliges Passwort setzen.&amp;lt;/div&amp;gt;&lt;br /&gt;
 Ende von Banner für aktuelle Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&#039;&#039;&#039;[[:Kategorie:FHEM|Hauptkategorien dieses Wikis]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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|Hauptkategorien dieses Wikis]]&#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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39720</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39720"/>
		<updated>2024-12-01T19:20:57Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Info zur Wartung eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wartungsarbeiten&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am Dienstag 3.12.2024 ab 10:00 Uhr werden Wartungsarbeiten am FHEM Wiki ausgeführt. &lt;br /&gt;
Im Wartungsmodus ist nur lesender Zugriff möglich. Es kann auch zu kurzzeitiger Nichterreichbarkeit kommen.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für aktuelle Mitteilungen ---------            &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Neue Mindestlänge für Passwörter&#039;&#039;&#039;: bedingt durch den Umzug auf einen neuen Server und die aktuelle Version von MediaWiki ist die Mindestlänge von Benutzerpasswörtern auf 10 angehoben worden. Bitte bei entsprechender Aufforderung beim Login ein mindestens zehnstelliges Passwort setzen.&amp;lt;/div&amp;gt;&lt;br /&gt;
 Ende von Banner für aktuelle Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&#039;&#039;&#039;[[:Kategorie:FHEM|Hauptkategorien dieses Wikis]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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|Hauptkategorien dieses Wikis]]&#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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Fhem.service_(systemd_unit_file)&amp;diff=39695</id>
		<title>Fhem.service (systemd unit file)</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fhem.service_(systemd_unit_file)&amp;diff=39695"/>
		<updated>2024-11-17T14:10:06Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Start von anderen Services abhängig machen */ Hinweis mit network-online eingetragen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Datei fhem.service ist ein systemd unit file und wird bei der debian Installation von FHEM mit ausgeliefert. Änderungen an dieser Datei sind normalerweise nicht notwendig. Man sollte zumindest genau wissen was man tut! Der Artikel soll die Datei etwas beschreiben und ein paar Fälle behandeln die ein Anpassung notwendig machen.&lt;br /&gt;
==Unit File - ein paar kurze Erklärung==&lt;br /&gt;
Den aktuellen Inhalt kann man jederzeit anschauen:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl cat fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Stand Mai 2020 hat die Datei folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
=== Inhalt /etc/systemd/system/fhem.service ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# $Id: fhem.service 19235 2019-04-21 13:26:17Z betateilchen $&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=FHEM Home Automation&lt;br /&gt;
Wants=network.target&lt;br /&gt;
After=network.target&lt;br /&gt;
#Requires=postgresql.service&lt;br /&gt;
#After=postgresql.service&lt;br /&gt;
#Requires=mysql.service&lt;br /&gt;
#After=mysql.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
User=fhem&lt;br /&gt;
Group=dialout&lt;br /&gt;
WorkingDirectory=/opt/fhem&lt;br /&gt;
ExecStart=/usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
#ExecStart=/usr/bin/perl fhem.pl configDB&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erklärung ausgewählter Parameter ===&lt;br /&gt;
&#039;&#039;&#039;Wants=&#039;&#039;&#039; die angegebene Services werden benötigt, fhem startet aber trotzdem falls die Services nicht gestartet werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requires=&#039;&#039;&#039; wenn der Service nicht gestartet werden kann, wird fhem nicht gestartet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;After=&#039;&#039;&#039; bewirkt, dass fhem nach dem Service (der Gruppe) gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Das ist wichtig damit Services die für fhem notwendig sind schon gestartet sind. Benötig fhem z.B. Datenbanken sind die entsprechenden  Zeilen einzubauen oder durch entfernen des Kommentarzeichens (#) zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User=fhem&#039;&#039;&#039; bewirkt das der Services mit user fhem gestartet wird. Falls fhem mit dem user root gestartet wird, startet fhem.pl einen neuen Prozess unter dem User fhem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Group=dialout&#039;&#039;&#039; Es wird die Gruppe dialout zum Start benutzt.&lt;br /&gt;
&lt;br /&gt;
Beide Zeilen können für den normalen Start von FHEM auch auskommentiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Zusätzlicher Parameter ===&lt;br /&gt;
&#039;&#039;&#039;ExecStartPre=&#039;&#039;&#039; Hier kann ein Shell Befehl stehen, der vor dem Start des eigentlichen Service (ExecStart=) ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== unit file bearbeiten ===&lt;br /&gt;
Dieser Befehl editiert die (fhem.service) unit Datei mit dem Standard Editor (z.B. nano) und führt zum Abschluss auch ein daemon-reload durch.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl edit --full fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Tipp: Datei speichern &#039;&#039;&#039;ctrl+s&#039;&#039;&#039; und Editor verlassen &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Prozesse vor dem FHEM Start ausführen ==&lt;br /&gt;
Ziel ist es sicherzustellen, dass für den Start von FHEM alle Voraussetzungen erfüllt sind, z.B.&lt;br /&gt;
* Hardware aktiviert ([[COC]], [[FHEM_auf_Raspberry_PI_mit_COC_betreiben]], {{Link2Forum|Topic=106060|Message=1003767|LinkText=SCC Busware}}, [[HM-CFG-USB USB Konfigurations-Adapter|HM-CFG-USB]])&lt;br /&gt;
* Datenbank gestartet&lt;br /&gt;
* Systemprozess läuft (z.B. {{Link2Forum|Topic=110716|LinkText=Bluetooth gestartet}} &lt;br /&gt;
* eigenen Prozessen ist gestartet &lt;br /&gt;
* [[DWD OpenData|Sprache einstellen]]&lt;br /&gt;
Dazu gibt es mehrere Lösungswege:&lt;br /&gt;
* die Datei fhem.service modifizieren&lt;br /&gt;
* einen separaten Service implementieren&lt;br /&gt;
* Abhängigkeiten definieren&lt;br /&gt;
&lt;br /&gt;
=== Ein Script mit separater service unit starten ===&lt;br /&gt;
Wir erstellen quasi einen eigenen Service - Vorteil: Die fhem.service braucht man nicht verändern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Script bereitstellen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel hier in einem allgemeinerem Pfad:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /usr/local/bin/EnableXX.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Code (Beispiele am Ende) hier einfügen und die Datei speichern und Editor verlassen (ctrl+s ctrl+x).&lt;br /&gt;
&lt;br /&gt;
Hier kann meist der Original Scriptcode verwendet werden, der früher in das init.d Script eingefügt werden sollte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. unit file erzeugen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Man erstellt eine neues unit file.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl edit --full --force enablexx.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mit folgendem Inhalt&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=EnableXX&lt;br /&gt;
Before=fhem.service&lt;br /&gt;
#After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=bash /usr/local/bin/EnableXX.sh&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Die Zeile Before=fhem.service stellt sicher, dass der Start vor FHEM erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Service aktivieren&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#sudo systemctl daemon-reload # nur notwendig wenn nicht systemctl edit verwendet wurde&lt;br /&gt;
sudo systemctl enable enablexx&lt;br /&gt;
sudo systemctl start enablexx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Erfolg auch nach einem komplette Neustart testen!&lt;br /&gt;
&lt;br /&gt;
=== Ein Script zusammen mit FHEM starten ===&lt;br /&gt;
&#039;&#039;&#039;1. Script bereitstellen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dazu wird eine Scriptdatei erzeugt, Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/ExecStartPre.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Code (Beispiele am Ende) hier einfügen und die Datei speichern und Editor verlassen (ctrl+s ctrl+x). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. ExecStartPre aktivieren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein Script mit root Rechten in der fhem.service unit auszuführen, müssen drei Zeilen in der Datei geändert werden ([[Fhem.service (systemd unit file)#unit file bearbeiten|siehe oben]]).&lt;br /&gt;
&lt;br /&gt;
Vor der Zeile ExecStart= wir diese Zeile eingefügt:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
ExecStartPre= bash /opt/fhem/ExecStartPre.sh&lt;br /&gt;
ExecStart=...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die beiden Zeilen User und Group muss man auskommentieren, da die Unit sonst mit dem User fhem ausgeführt wird.&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Die Gruppenmitgliedschaft des Users fhem (z.B. gpio) ist beim Systemstart an der Stelle noch nicht wirksam.}}&lt;br /&gt;
 #User=fhem &lt;br /&gt;
 #Group=dialout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Änderungen aktivieren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Änderungen werden erst nach einem daemon-reload aktiv und nach einem restart wirksam.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#sudo systemctl daemon-reload # nur notwendig wenn nicht systemctl edit verwendet wurde&lt;br /&gt;
sudo systemctl restart fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Erfolg auch nach einem komplette Neustart testen!&lt;br /&gt;
&lt;br /&gt;
=== Start von anderen Services abhängig machen ===&lt;br /&gt;
In der fhem.service unit kann man sicherstellen, dass ein Service fertig gestartet wurde bevor fhem startet. Dazu kann man im unit Abschnitt zwei Zeilen einfügen (bzw. Kommentar entfernen):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Wants=xxx.service &lt;br /&gt;
After=xxx.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Insbesondere empfiehlt es sich auf den kompletten Start des Netzwerkes zu warten, vor allem wenn beim Start von FHEM Netzwerkressourcen online sein müssen (Netzlaufwerke, Dienste wie ser2net usw.).&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Wants=network-online.target &lt;br /&gt;
After=network-online.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Man kann auch erzwingen, dass FHEM nicht startet falls die Voraussetzungen nicht erfüllt sind. Dafür muss anstatt Wants= Requires= verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Einstellungen dies und das ==&lt;br /&gt;
&lt;br /&gt;
=== Start verzögern ===&lt;br /&gt;
Es ist immer besser eine direkte Abhängigkeit zu definieren. In unklaren Situationen oder als erste Abhilfe kann es notwendig sein, einfach den FHEM Start zu verzögern.&lt;br /&gt;
&lt;br /&gt;
Der default Wert für &#039;&#039;TimeoutStartSec=&#039;&#039; liegt bei 90 sec. Anzeige mit &amp;lt;code&amp;gt;systemctl show fhem.service -p TimeoutStartUSec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Soll die Startverzögerung länger sein, muss dieser Wert zusätzlich gesetzt werden. Ansonsten wird der Start mit einer Fehlermeldung abgebrochen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
ExecStartPre=/bin/sleep 10&lt;br /&gt;
#TimeoutStartSec=            # default 90, set for larger sleep time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart verzögern ===&lt;br /&gt;
Sollte man z.B. bei einem Neustart über die FHEM Oberfläche (shutdown restart) zwei Starts innerhalb von 1 Sekunde im Logfile beobachten, kann man den Neustart im unit file mit einem Parameter um 2 - 10 Sekunden ({{Link2Forum|Topic=93870|Message=924833|LinkText=siehe auch diesen Forenbeitrag}}) verzögern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
Restart=...&lt;br /&gt;
RestartSec=2&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweise und Tipps ==&lt;br /&gt;
=== Startreihenfolge beeinflussen ===&lt;br /&gt;
Wie man erzwingen kann, dass FHEM &#039;&#039;&#039;nach&#039;&#039;&#039; hciuart (Bluetooth Service) startet, ist in {{Link2Forum|Topic=110716|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Ausgaben im Script ===&lt;br /&gt;
Ausgaben mit echo landen im /var/log/syslog. Das Log kann man mit diesem Befehl anzeigen. Ist das Logfile zu unübersichtlich kann man sich auch z.B. nur 15 Zeilen nach systemd Ausgabe des unit files anzeigen lassen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /var/log/syslog&lt;br /&gt;
cat /var/log/syslog|grep -A 15 &amp;quot;FHEM Home&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielcode ===&lt;br /&gt;
Diese Codebeispiel ist auf dem Raspberry Pi ausführbar und lässt vor dem Start von FHEM die grüne LED (ACT) blinken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1: 3 mal kurz und 3 mal lang&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Lass die ACT LED (grün) am Pi 3 mal kurz und 3 mal lang blinken&lt;br /&gt;
ANZAHL=3&lt;br /&gt;
#Status (Standard [mmc0] )sichern&lt;br /&gt;
trigger=$(cat /sys/class/leds/led0/trigger|grep -o &amp;quot;\[.*\]&amp;quot;|tr -d [+])&lt;br /&gt;
#umschalten auf manuell&lt;br /&gt;
echo &amp;quot;none&amp;quot; &amp;gt;/sys/class/leds/led0/trigger&lt;br /&gt;
#blinken&lt;br /&gt;
for ((i=1 ; i&amp;lt;=$(( $ANZAHL * 2 )) ; i++ )); do&lt;br /&gt;
  echo $(( $i % 2 )) &amp;gt;/sys/class/leds/led0/brightness&lt;br /&gt;
  sleep 0.3&lt;br /&gt;
done&lt;br /&gt;
for ((i=1 ; i&amp;lt;=$(( $ANZAHL * 2 )) ; i++ )); do&lt;br /&gt;
  echo $(( $i % 2 )) &amp;gt;/sys/class/leds/led0/brightness&lt;br /&gt;
  sleep 1&lt;br /&gt;
done&lt;br /&gt;
#Status wieder herstellen&lt;br /&gt;
echo $trigger &amp;gt;/sys/class/leds/led0/trigger&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39640</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39640"/>
		<updated>2024-11-02T17:51:16Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 reicht aktuelle (November 2024) dieses Vorgehen:&lt;br /&gt;
&lt;br /&gt;
Im Terminal sudo raspi-config aufrufen und dann:&lt;br /&gt;
&lt;br /&gt;
# Punkt 3 Interface Options    Configure connections to peripherals &lt;br /&gt;
# Punkt I6 Serial Port Enable/disable shell messages on the serial connection&lt;br /&gt;
# Frage: Would you like a login shell to be accessible over serial? mit &amp;lt;No&amp;gt; beantwortet&lt;br /&gt;
# Frage: Would you like the serial port hardware to be enabled? mit &amp;lt;Yes&amp;gt; beantwortet&lt;br /&gt;
# Quittung: The serial login shell is disabled │ The serial interface is enabled -&amp;gt; Ok&lt;br /&gt;
&lt;br /&gt;
Jetzt neu starten.  Man muss keine Dateien editieren!&lt;br /&gt;
&lt;br /&gt;
Bei den Pi Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39629</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39629"/>
		<updated>2024-11-02T13:02:31Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ Pi 5 Abschnitt editiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 reicht aktuelle (November 2024) dieses Vorgehen:&lt;br /&gt;
&lt;br /&gt;
Im Terminal raspi-config aufrufen und dann:&lt;br /&gt;
&lt;br /&gt;
# Punkt 3 Interface Options    Configure connections to peripherals &lt;br /&gt;
# Punkt I6 Serial Port Enable/disable shell messages on the serial connection&lt;br /&gt;
# Frage: Would you like a login shell to be accessible over serial? mit &amp;lt;No&amp;gt; beantwortet&lt;br /&gt;
# Frage: Would you like the serial port hardware to be enabled? mit &amp;lt;Yes&amp;gt; beantwortet&lt;br /&gt;
# Quittung: The serial login shell is disabled │ The serial interface is enabled -&amp;gt; Ok&lt;br /&gt;
&lt;br /&gt;
Jetzt neu starten.  Man muss keine Dateien editieren!&lt;br /&gt;
&lt;br /&gt;
Bei den Pi Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw2PB-FM_Schaltaktor_mit_Tasteraufsatz_2fach&amp;diff=39598</id>
		<title>HM-LC-Sw2PB-FM Schaltaktor mit Tasteraufsatz 2fach</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw2PB-FM_Schaltaktor_mit_Tasteraufsatz_2fach&amp;diff=39598"/>
		<updated>2024-09-28T16:32:30Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Otto123 verschob die Seite HM-LC-Sw2PB-FM Schaltaktor mit Tasteraufsatz 2fach nach HM-LC-Sw2-PB-FM Schaltaktor mit Tasteraufsatz 2fach: Schreibfehler in der Bezeichnung vom Aktor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[HM-LC-Sw2-PB-FM Schaltaktor mit Tasteraufsatz 2fach]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-Sw2-PB-FM_Schaltaktor_mit_Tasteraufsatz_2fach&amp;diff=39597</id>
		<title>HM-LC-Sw2-PB-FM Schaltaktor mit Tasteraufsatz 2fach</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-Sw2-PB-FM_Schaltaktor_mit_Tasteraufsatz_2fach&amp;diff=39597"/>
		<updated>2024-09-28T16:32:30Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Otto123 verschob die Seite HM-LC-Sw2PB-FM Schaltaktor mit Tasteraufsatz 2fach nach HM-LC-Sw2-PB-FM Schaltaktor mit Tasteraufsatz 2fach: Schreibfehler in der Bezeichnung vom Aktor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Funk-Schaltaktor mit Tasteraufsatz 2fach Unterputz&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|&lt;br /&gt;
Information der Technischen Kundenbetreuung von ELV im [https://www.elv.de/topic/hm-lc-sw2-pb-fm.html ELV-Forum] vom 12.02.2015:&amp;lt;br /&amp;gt;&#039;&#039;Die Aktoren im Peha-Gehäuse &amp;quot;HM-LC-Sw1-PB-FM&amp;quot; und &amp;quot;HM-LC-Sw2-PB-FM&amp;quot; werden vom Hersteller eQ-3 leider nicht mehr produziert.&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
;siehe aber: [[HM-LC-Sw2PBU-FM Unterputz-Schaltaktor 2-fach]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
Wandtaster im Peha Aura Gehäuse, mit Unterputz Funk-Schaltaktor 2-Kanal, der in typische Installationsdosen passt. &lt;br /&gt;
Dadurch Austausch eines Wandschalters bei Erhalt der lokalen Schaltfunktion und gleichzeitiger Fernsteuerbarkeit.&lt;br /&gt;
&lt;br /&gt;
Stromaufnahme 10mA, Standby Verbrauch, 0,5 Watt.&lt;br /&gt;
Last wird per Relais (Schliesser) geschaltet, Schaltleistung 5 Ampere ohmsche Last. &lt;br /&gt;
Achtung: Schaltleistung gilt für beide Kanäle in Summe.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Hardware-Installation =&lt;br /&gt;
&lt;br /&gt;
Der Taster ersetzt zwei bisherige Schalter komplett und kombiniert die Funktion eines Unterputzaktors mit den notwendigen Tastern, sodass nicht erst passende Taster gesucht werden müssen. Der Doppeltaster selbst baut sehr flach, sodass der Aktor mit Taster meist besser in vorhandene Unterputzdosen passt als normale Taster mit einem separaten Unterputzaktor wie z.b. dem [[HM-LC-SW1-FM]]. Allerdings ist der HM-LC-Sw2PB-FM auch vergleichsweise teuer und wird nicht mehr hergestellt.&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
Problemlos verwendbar. Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
Die Anlerntasten (getrennt je Kanal) befinden sich unter dem eigentlichen aufgesteckten Tasteraufsatz. 4 Sekunden drücken versetzt das Gerät in den Anlernmodus, die LED blinkt dauerhaft.&lt;br /&gt;
Erneutes Drücken beendet den Anlermodus vorzeitig, ansonsten wird der Anlernmodus nach 20 Sekunden beendet.&lt;br /&gt;
&lt;br /&gt;
Kurzes Drücken ermöglicht ausserdem schalten auch ohne Tasteraufsatz, z.b. zum Testen der Installation.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Auch mit hmPairForSec kann jeweils nur ein Gerät angelernt werden. Für mehrere Geräte den Vorgang bitte wiederholen.&lt;br /&gt;
&lt;br /&gt;
= Mögliche Hardwaredefekte =&lt;br /&gt;
&lt;br /&gt;
Wenn man die zweite Lampe anschalten muss damit die erste auch angeht oder man eine unbestimmte Zeit (ca. 5-40 sekunden) warten muss damit die ursprünglich angeschaltete Lampe angeht, kann ein Kondensator defekt sein, hier C20. (Ein vergleichbarer Defekt tritt auch häufig beim Rolladenaktor [[HM-LC-Bl1PBU-FM Funk-Rollladenaktor für Markenschalter|HM-LC-Bl1PBU-FM]] und dem Dimmer [[HM-LC-Dim1TPBU-FM 1-Kanal-Dimmer UP|HM-LC-Dim1TPBU-FM]] auf). &lt;br /&gt;
&lt;br /&gt;
Der Elko ist eine SWCON 10µ 16 Volt 105°. Liegt die Kapazität bei etwa 5µ (Kapazitätsmesser) ist er defekt. Die Kapazität kann im eingebauten Zustand gemessen werden. Die Schwierigkeit des Austausches liegt auf dem üblichen Bausatzniveau.&lt;br /&gt;
&lt;br /&gt;
Falls die Relais immer mal klebten, kann man die durch Printrelais HONFA HF41F/012-ZS ersetzen. Der Einsatz eines ESB1 (Einschaltstrombegrenzer) beim schalten von LED Lampen ist empfehlenswert. Man kann diesen in die L Leitung des Aktors einschleifen und spart sich somit einen Zweiten. Den kurzen Spannungseinbruch verkraftet der Aktor offenbar ohne Murren. Getestet mit zwei LED Panels von jeweils ca 15 Watt.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
Anleitung: [http://www.theunissen24.com/media/downloads/941313_21.pdf (externer Anbieter www.theunissen24.com)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW2-FM_Schaltaktor_2-fach_UP&amp;diff=39558</id>
		<title>HM-LC-SW2-FM Schaltaktor 2-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW2-FM_Schaltaktor_2-fach_UP&amp;diff=39558"/>
		<updated>2024-09-11T12:19:03Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-Sw2-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor 2-fach (Unterputz)&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=230 V~&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch ca. 0,5 W&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=53 x 53 x 30 mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[HM-LC-SW2-FM Schaltaktor 2-fach UP]] ist ein zweikanaliger Homematic Funk-Schaltaktor für die Unterputzmontage.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Unabhängiges Schalten von zwei Verbrauchern mittels FHEM ([[Interface]]: [[CUL]], [[CUN]], [[HMLAN Konfigurator]]) oder über angeschlossene(n) Taster.&lt;br /&gt;
&lt;br /&gt;
Das maximale Schaltvermögen liegt bei 5 A (Summe beider Kanäle, ohmsche Last). Diese Begrenzung ist sehr ernst zu nehmen, da sonst eine Sicherung durchbrennt und ersetzt werden muss. Für ein Schaltvermögen von bis zu 16 A ist der [[HM-LC-SW1-FM Schaltaktor 1-fach UP|einkanalige HM-LC-SW1]] eine Alternative.&lt;br /&gt;
&lt;br /&gt;
== Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
Wie auch die bauähnlichen 1-kanaligen Schaltaktoren, -dimmer und der Rolladenaktor sind zum Ansteuern des Aktors mit externen Tasten ausschließlich Taster verwendbar.&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation korrigiert werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details dazu sind [[HomeMatic_Register_programmieren#confBtnTime_-_Kurz_oder_lang_und_der_Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] muss wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Bei eingeschaltetem Autocreate werden die erforderlichen Definitionen beim Pairen selbstständig erstellt. Ein exemplarischer Auszug aus der fhem.cfg (Seriennummer anonymisiert):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define HM_Sw2_Garage CUL_HM 2D38E9&lt;br /&gt;
attr HM_Sw2_Garage IODev MyHMLAN&lt;br /&gt;
attr HM_Sw2_Garage autoReadReg 4_reqStatus&lt;br /&gt;
attr HM_Sw2_Garage expert 2_full &lt;br /&gt;
attr HM_Sw2_Garage firmware 1.12&lt;br /&gt;
attr HM_Sw2_Garage model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_Garage room CUL_HM&lt;br /&gt;
attr HM_Sw2_Garage serialNr LEQ0xxxxxx&lt;br /&gt;
attr HM_Sw2_Garage subType switch &lt;br /&gt;
attr HM_Sw2_Garage webCmd getConfig:clear msgEvents&lt;br /&gt;
&lt;br /&gt;
define HM_Sw2_GarageLicht1 CUL_HM 2D38E901&lt;br /&gt;
attr HM_Sw2_GarageLicht1 model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_GarageLicht1 peerIDs 00000000,&lt;br /&gt;
attr HM_Sw2_GarageLicht1 room CUL_HM&lt;br /&gt;
attr HM_Sw2_GarageLicht1 webCmd statusRequest:toggle:on:off&lt;br /&gt;
&lt;br /&gt;
define HM_Sw2_GarageLicht2 CUL_HM 2D38E902&lt;br /&gt;
attr HM_Sw2_GarageLicht2 model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_GarageLicht2 peerIDs 00000000, &lt;br /&gt;
attr HM_Sw2_GarageLicht2 room CUL_HM&lt;br /&gt;
attr HM_Sw2_GarageLicht2 webCmd statusRequest:toggle:on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Firmware&#039;&#039;&#039; - Versionen / Update&lt;br /&gt;
Bei diesem Aktor kann durch den Endbenutzer &#039;&#039;&#039;kein&#039;&#039;&#039; [[HomeMatic Firmware Update|Firmware Update]] durchgeführt werden. Es sind aber Geräte mit unterschiedlichen Firmware Versionen in Umlauf:&lt;br /&gt;
* 1.12 (Seriennr. LEQ0...)&lt;br /&gt;
* 1.9 (Seriennr. KEQ10..)&lt;br /&gt;
* 2.5 (Seriennr. LEQ1...)&lt;br /&gt;
}}&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet und ein ausgeschalteter Aktor wird eingeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW2-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 15:29:04 2: CUL_HM set LichtSchreibtisch on&lt;br /&gt;
2012.02.05 15:29:09 2: CUL_HM set LichtSchreibtisch off&lt;br /&gt;
2012.02.12 19:04:42 2: CUL_HM set LichtSchreibtisch toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einsatzbeispiel ==&lt;br /&gt;
[[Bild:HM-LC-Sw1-FM_aufHutschiene.jpg|thumb|right|LC-Sw2-FM als Ersatz für (zwei) &amp;quot;Eltako&amp;quot; Stromstoßrelais]]&lt;br /&gt;
Im gezeigten Bild werden zwei Eltako-Stromstoßrelais durch den Zweikanal-Schaltaktor ersetzt. Hierbei sind nur die vorhandenen Verbindungen auf den LC-Sw2-FM umzuklemmen. Sämtliche Taster funktionieren unverändert wie vorher, zusätzlich sind die angeschlossenen Leuchten damit über Funk (FHEM, HomeMatic-Fernbedienung etc.) direkt oder auch zeitgesteuert schaltbar.&lt;br /&gt;
&lt;br /&gt;
Zur Vereinfachung der Montage in einem Hutschienenverteiler ist das Schaltmodul mit Kabelbindern in einem Hutschienengehäuse (Breite: 73 mm) fixiert.&lt;br /&gt;
&lt;br /&gt;
Die gezeigte Verschaltung ist möglich, da die Tastereingänge S1 und S2 mit Netzspannung (und damit wie ein herkömmliches Stromstoßrelais) angesteuert werden können. &lt;br /&gt;
&lt;br /&gt;
Mittlerweile (seit Mitte 2015, als Bausatz) gibt es auch den originär für Hutschienenmontage vorgesehenen einkanaligen Aktor HM-LC-Sw1-DR, Breite 18&amp;amp;nbsp;mm (entspricht 1&amp;amp;nbsp;TE), mit einer maximalen Schaltleistung (ohmsche Last) von 1380&amp;amp;nbsp;W.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Durch die relativ geringe Belastbarkeit der Relais kann es leicht zum sogenannten &amp;quot;Verkleben&amp;quot; der Relais kommen. Dieses Problem inklusive einiger Hinweise zur Reparatur durch Ersatz eines defekten Relais sind in {{Link2Forum|Topic=43914|LinkText=diesem Forenthema}} beschrieben. Das Verkleben kann durch einen Einschaltstrombegrenzer (NTC) verhindert werden. Im Handel ist der z.B. als ESB1 erhältlich.  &lt;br /&gt;
&lt;br /&gt;
* Bei Überlastung oder Kurzschluss durch externe Verbraucher (wie auch durch durchbrennende Glühlampen im Einschaltmoment) stirbt im Aktor eine spezielle, steckbar ausgeführte Schmelzsicherung, die nur durch Öffnen des Gehäuses ausgetauscht werden kann.&lt;br /&gt;
* Nach Jahren im Betrieb kann es zum Ausfall des Netzteiles kommen, [[HM-LC-SW1-FM Schaltaktor 1-fach UP#Hardware Ausfall|siehe HM-LC-SW1-FM]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden.&lt;br /&gt;
* Anleitung (PDF {{DocLink|elv|/service/manuals/76793_HM_Unterputzschalter_UM.pdf}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39557</id>
		<title>HM-LC-SW1-FM Schaltaktor 1-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39557"/>
		<updated>2024-09-11T11:04:52Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Hardware Ausfall */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic Funk-Schaltaktor 1-fach (Unterputz)&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-SW1-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V AC&lt;br /&gt;
|HWPowerConsumption=0,5W&lt;br /&gt;
|HWPoweredBy=Netzspannung&lt;br /&gt;
|HWSize=53x53x30mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels [[CUL]]/[[CUN]]/[[HMLAN Konfigurator]] und über einen mechanischen spannungsfesten Taster. &lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;: die Installation von Komponenten mit Netzspannung darf nur von Fachpersonal durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Will man die Funk-Schaltaktoren auch manuell betreiben, d.h. man upgradet eine vorhandene Elektroinstallation, so sind Taster notwendig. Schalter können notfalls mittels einer zusätzlichen Feder zu Taster umgebaut werden, Tastschalter sind leider nicht geeignet. &lt;br /&gt;
&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation erreicht werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details zu dem Eingriff sind [[HomeMatic Register programmieren#confBtnTime - Kurz oder lang und der Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Je nach vorhandenen Schalterdosen empfiehlt es sich bestehende Schalterdosen nach hinten auszuweiten, d.h. die Abdeckung nach hinten heraus zu brechen, da die Aktoren und Kabel nicht gerade sparsam mit dem Platz umgehen. Alternativ könnte man den Aktor auch in eine zusätzliche Schalterdosen unterbringen und diese mit einem Federdeckel abschließen. Dies hat den Vorteil, dass man auch durch relativ dicke Tapete die LED und somit den Zustand des Aktors ablesen kann.&lt;br /&gt;
&lt;br /&gt;
Der Aktor kann auch gänzlich ohne Taster, also nur per &#039;&#039;set&#039;&#039;-Befehlen durch FHEM oder per gepeerten Geräten gesteuert werden, jedoch muss zumindest für das Anlernen zeitweise ein Taster angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden. Hierfür wird ein am Aktor temporär angeschlossener spannungsfester Taster zwingend benötigt.&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass &#039;&#039;autocreate&#039;&#039; aktiv ist&lt;br /&gt;
# Am CUL/HMLAN o.ä. &amp;lt;code&amp;gt;set HMLAN hmPairForSec 60&amp;lt;/code&amp;gt;&lt;br /&gt;
# Binnen 60 Sekunden Aktor in Anlernmodus bringen (Taster 4s festhalten bis LED blinkt) -&amp;gt; Device wird in fhem angelegt, z.B. als CUL_HM_HM_LC_SW1_FM_2BAD45&lt;br /&gt;
# &amp;lt;code&amp;gt;rename &amp;lt;Aktor&amp;gt; &amp;lt;AktorNameNeu&amp;gt;&amp;lt;/code&amp;gt; -&amp;gt; richtigen Namen zuordnen&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LichtTerasse CUL_HM 17AEA6&lt;br /&gt;
attr LichtTerasse devInfo 010100&lt;br /&gt;
attr LichtTerasse firmware 1.9&lt;br /&gt;
attr LichtTerasse hmClass receiver&lt;br /&gt;
attr LichtTerasse model HM-LC-SW1-FM&lt;br /&gt;
attr LichtTerasse room Terasse&lt;br /&gt;
attr LichtTerasse serialNr IEQ00xxxx&lt;br /&gt;
attr LichtTerasse subType switch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW1-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 16:51:44 2: CUL_HM set LichtTerasse on&lt;br /&gt;
2012.02.05 16:52:14 2: CUL_HM set LichtTerasse off&lt;br /&gt;
2012.02.05 16:52:15 2: CUL_HM set LichtTerasse toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nützliches Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Wer den Schaltaktor im Sicherungskasten selbst einbauen möchte, z.B. um einen Stromstossschalter zu ersetzen, dem kann folgendes Zubehör empfohlen werden: Hutschienengehäuse CNMB-4V-Kit, Bestellnr. 532659 bei conrad. Das ist zwar sicher auch nicht VdE-konform, aber besser wie ohne. Alternativ kann auch der [[HM-LC-Sw1-DR 1fach Schaltaktor Hutschiene]] zur direkten Montage auf Hutschienen eingesetzt werde.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
Um den HM-LC-SW1-FM in den Anlernmodus zu versetzen, soll man lt. Anleitung den (temporär) angeschlossenen Taster für 4 Sekunden gedrückt halten. Falls dies bei Ihnen nicht funktioniert, so versuchen Sie den Taster einfach mal ca. 7 bis 8 Sekunden gedrückt zu halten (bis die LED des SW1-FM kurz aufleuchtet).&lt;br /&gt;
&lt;br /&gt;
Wenn das Pairing nicht komplett durchläuft (Device zeigt als Status MissingACK und kann nicht von FHEM aus gesteuert werden), dann hilft ggf. ein weiteres Pairing über hmPairSerial.&lt;br /&gt;
&lt;br /&gt;
== Hardware Ausfall ==&lt;br /&gt;
Nach einigen Jahren brennt der Sicherungswiderstand R10 (2,2 kOhm) durch. Ursache ist offenbar die Alterung der beiden Elektrolytkondensatoren C9 und C10 (0,47µF/400 Volt). Der Austausch dieser drei Bauteile ist simpel und mit etwas Geschick ohne die Trennung der beiden Platinen möglich. Siehe auch diesen [https://forum.fhem.de/index.php?topic=29649.0 Forenbeitrag].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden. &lt;br /&gt;
&lt;br /&gt;
[https://files2.elv.com/public/07/0767/076793/Internet/76793_um.pdf Anleitung (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39556</id>
		<title>HM-LC-SW1-FM Schaltaktor 1-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39556"/>
		<updated>2024-09-11T11:04:35Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Hardware Ausfall */ Link eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic Funk-Schaltaktor 1-fach (Unterputz)&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-SW1-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V AC&lt;br /&gt;
|HWPowerConsumption=0,5W&lt;br /&gt;
|HWPoweredBy=Netzspannung&lt;br /&gt;
|HWSize=53x53x30mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels [[CUL]]/[[CUN]]/[[HMLAN Konfigurator]] und über einen mechanischen spannungsfesten Taster. &lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;: die Installation von Komponenten mit Netzspannung darf nur von Fachpersonal durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Will man die Funk-Schaltaktoren auch manuell betreiben, d.h. man upgradet eine vorhandene Elektroinstallation, so sind Taster notwendig. Schalter können notfalls mittels einer zusätzlichen Feder zu Taster umgebaut werden, Tastschalter sind leider nicht geeignet. &lt;br /&gt;
&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation erreicht werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details zu dem Eingriff sind [[HomeMatic Register programmieren#confBtnTime - Kurz oder lang und der Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Je nach vorhandenen Schalterdosen empfiehlt es sich bestehende Schalterdosen nach hinten auszuweiten, d.h. die Abdeckung nach hinten heraus zu brechen, da die Aktoren und Kabel nicht gerade sparsam mit dem Platz umgehen. Alternativ könnte man den Aktor auch in eine zusätzliche Schalterdosen unterbringen und diese mit einem Federdeckel abschließen. Dies hat den Vorteil, dass man auch durch relativ dicke Tapete die LED und somit den Zustand des Aktors ablesen kann.&lt;br /&gt;
&lt;br /&gt;
Der Aktor kann auch gänzlich ohne Taster, also nur per &#039;&#039;set&#039;&#039;-Befehlen durch FHEM oder per gepeerten Geräten gesteuert werden, jedoch muss zumindest für das Anlernen zeitweise ein Taster angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden. Hierfür wird ein am Aktor temporär angeschlossener spannungsfester Taster zwingend benötigt.&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass &#039;&#039;autocreate&#039;&#039; aktiv ist&lt;br /&gt;
# Am CUL/HMLAN o.ä. &amp;lt;code&amp;gt;set HMLAN hmPairForSec 60&amp;lt;/code&amp;gt;&lt;br /&gt;
# Binnen 60 Sekunden Aktor in Anlernmodus bringen (Taster 4s festhalten bis LED blinkt) -&amp;gt; Device wird in fhem angelegt, z.B. als CUL_HM_HM_LC_SW1_FM_2BAD45&lt;br /&gt;
# &amp;lt;code&amp;gt;rename &amp;lt;Aktor&amp;gt; &amp;lt;AktorNameNeu&amp;gt;&amp;lt;/code&amp;gt; -&amp;gt; richtigen Namen zuordnen&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LichtTerasse CUL_HM 17AEA6&lt;br /&gt;
attr LichtTerasse devInfo 010100&lt;br /&gt;
attr LichtTerasse firmware 1.9&lt;br /&gt;
attr LichtTerasse hmClass receiver&lt;br /&gt;
attr LichtTerasse model HM-LC-SW1-FM&lt;br /&gt;
attr LichtTerasse room Terasse&lt;br /&gt;
attr LichtTerasse serialNr IEQ00xxxx&lt;br /&gt;
attr LichtTerasse subType switch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW1-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 16:51:44 2: CUL_HM set LichtTerasse on&lt;br /&gt;
2012.02.05 16:52:14 2: CUL_HM set LichtTerasse off&lt;br /&gt;
2012.02.05 16:52:15 2: CUL_HM set LichtTerasse toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nützliches Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Wer den Schaltaktor im Sicherungskasten selbst einbauen möchte, z.B. um einen Stromstossschalter zu ersetzen, dem kann folgendes Zubehör empfohlen werden: Hutschienengehäuse CNMB-4V-Kit, Bestellnr. 532659 bei conrad. Das ist zwar sicher auch nicht VdE-konform, aber besser wie ohne. Alternativ kann auch der [[HM-LC-Sw1-DR 1fach Schaltaktor Hutschiene]] zur direkten Montage auf Hutschienen eingesetzt werde.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
Um den HM-LC-SW1-FM in den Anlernmodus zu versetzen, soll man lt. Anleitung den (temporär) angeschlossenen Taster für 4 Sekunden gedrückt halten. Falls dies bei Ihnen nicht funktioniert, so versuchen Sie den Taster einfach mal ca. 7 bis 8 Sekunden gedrückt zu halten (bis die LED des SW1-FM kurz aufleuchtet).&lt;br /&gt;
&lt;br /&gt;
Wenn das Pairing nicht komplett durchläuft (Device zeigt als Status MissingACK und kann nicht von FHEM aus gesteuert werden), dann hilft ggf. ein weiteres Pairing über hmPairSerial.&lt;br /&gt;
&lt;br /&gt;
== Hardware Ausfall ==&lt;br /&gt;
Nach einigen Jahren brennt der Sicherungswiderstand R10 (2,2 kOhm) durch. Ursache ist offenbar die Alterung der beiden Elektrolytkondensatoren C9 und C10 (0,47µF/400 Volt). Der Austausch dieser drei Bauteile ist simpel und mit etwas Geschick ohne die Trennung der beiden Platinen möglich. Sihe auch diesen [https://forum.fhem.de/index.php?topic=29649.0 Forenbeitrag].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden. &lt;br /&gt;
&lt;br /&gt;
[https://files2.elv.com/public/07/0767/076793/Internet/76793_um.pdf Anleitung (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW2-FM_Schaltaktor_2-fach_UP&amp;diff=39555</id>
		<title>HM-LC-SW2-FM Schaltaktor 2-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW2-FM_Schaltaktor_2-fach_UP&amp;diff=39555"/>
		<updated>2024-09-11T11:00:04Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Bekannte Probleme */ Hinweis auf Netzteilausfall hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-Sw2-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor 2-fach (Unterputz)&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Empfänger, Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=230 V~&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch ca. 0,5 W&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=53 x 53 x 30 mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[HM-LC-SW2-FM Schaltaktor 2-fach UP]] ist ein zweikanaliger Homematic Funk-Schaltaktor für die Unterputzmontage.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Unabhängiges Schalten von zwei Verbrauchern mittels FHEM ([[Interface]]: [[CUL]], [[CUN]], [[HMLAN Konfigurator]]) oder über angeschlossene(n) Taster.&lt;br /&gt;
&lt;br /&gt;
Das maximale Schaltvermögen liegt bei 5 A (Summe beider Kanäle, ohmsche Last). Diese Begrenzung ist sehr ernst zu nehmen, da sonst eine Sicherung durchbrennt und ersetzt werden muss. Für ein Schaltvermögen von bis zu 16 A ist der [[HM-LC-SW1-FM Schaltaktor 1-fach UP|einkanalige HM-LC-SW1]] eine Alternative.&lt;br /&gt;
&lt;br /&gt;
== Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
Wie auch die bauähnlichen 1-kanaligen Schaltaktoren, -dimmer und der Rolladenaktor sind zum Ansteuern des Aktors mit externen Tasten ausschließlich Taster verwendbar.&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation korrigiert werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details dazu sind [[HomeMatic_Register_programmieren#confBtnTime_-_Kurz_oder_lang_und_der_Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] muss wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Bei eingeschaltetem Autocreate werden die erforderlichen Definitionen beim Pairen selbstständig erstellt. Ein exemplarischer Auszug aus der fhem.cfg (Seriennummer anonymisiert):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define HM_Sw2_Garage CUL_HM 2D38E9&lt;br /&gt;
attr HM_Sw2_Garage IODev MyHMLAN&lt;br /&gt;
attr HM_Sw2_Garage autoReadReg 4_reqStatus&lt;br /&gt;
attr HM_Sw2_Garage expert 2_full &lt;br /&gt;
attr HM_Sw2_Garage firmware 1.12&lt;br /&gt;
attr HM_Sw2_Garage model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_Garage room CUL_HM&lt;br /&gt;
attr HM_Sw2_Garage serialNr LEQ0xxxxxx&lt;br /&gt;
attr HM_Sw2_Garage subType switch &lt;br /&gt;
attr HM_Sw2_Garage webCmd getConfig:clear msgEvents&lt;br /&gt;
&lt;br /&gt;
define HM_Sw2_GarageLicht1 CUL_HM 2D38E901&lt;br /&gt;
attr HM_Sw2_GarageLicht1 model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_GarageLicht1 peerIDs 00000000,&lt;br /&gt;
attr HM_Sw2_GarageLicht1 room CUL_HM&lt;br /&gt;
attr HM_Sw2_GarageLicht1 webCmd statusRequest:toggle:on:off&lt;br /&gt;
&lt;br /&gt;
define HM_Sw2_GarageLicht2 CUL_HM 2D38E902&lt;br /&gt;
attr HM_Sw2_GarageLicht2 model HM-LC-SW2-FM&lt;br /&gt;
attr HM_Sw2_GarageLicht2 peerIDs 00000000, &lt;br /&gt;
attr HM_Sw2_GarageLicht2 room CUL_HM&lt;br /&gt;
attr HM_Sw2_GarageLicht2 webCmd statusRequest:toggle:on:off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=&#039;&#039;&#039;Firmware&#039;&#039;&#039; - Versionen / Update&lt;br /&gt;
Bei diesem Aktor kann durch den Endbenutzer &#039;&#039;&#039;kein&#039;&#039;&#039; [[HomeMatic Firmware Update|Firmware Update]] durchgeführt werden. Es sind aber Geräte mit unterschiedlichen Firmware Versionen in Umlauf:&lt;br /&gt;
* 1.12 (Seriennr. LEQ0...)&lt;br /&gt;
* 1.9 (Seriennr. KEQ10..)&lt;br /&gt;
* 2.5 (Seriennr. LEQ1...)&lt;br /&gt;
}}&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet und ein ausgeschalteter Aktor wird eingeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW2-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 15:29:04 2: CUL_HM set LichtSchreibtisch on&lt;br /&gt;
2012.02.05 15:29:09 2: CUL_HM set LichtSchreibtisch off&lt;br /&gt;
2012.02.12 19:04:42 2: CUL_HM set LichtSchreibtisch toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einsatzbeispiel ==&lt;br /&gt;
[[Bild:HM-LC-Sw1-FM_aufHutschiene.jpg|thumb|right|LC-Sw2-FM als Ersatz für (zwei) &amp;quot;Eltako&amp;quot; Stromstoßrelais]]&lt;br /&gt;
Im gezeigten Bild werden zwei Eltako-Stromstoßrelais durch den Zweikanal-Schaltaktor ersetzt. Hierbei sind nur die vorhandenen Verbindungen auf den LC-Sw2-FM umzuklemmen. Sämtliche Taster funktionieren unverändert wie vorher, zusätzlich sind die angeschlossenen Leuchten damit über Funk (FHEM, HomeMatic-Fernbedienung etc.) direkt oder auch zeitgesteuert schaltbar.&lt;br /&gt;
&lt;br /&gt;
Zur Vereinfachung der Montage in einem Hutschienenverteiler ist das Schaltmodul mit Kabelbindern in einem Hutschienengehäuse (Breite: 73 mm) fixiert.&lt;br /&gt;
&lt;br /&gt;
Die gezeigte Verschaltung ist möglich, da die Tastereingänge S1 und S2 mit Netzspannung (und damit wie ein herkömmliches Stromstoßrelais) angesteuert werden können. &lt;br /&gt;
&lt;br /&gt;
Mittlerweile (seit Mitte 2015, als Bausatz) gibt es auch den originär für Hutschienenmontage vorgesehenen einkanaligen Aktor HM-LC-Sw1-DR, Breite 18&amp;amp;nbsp;mm (entspricht 1&amp;amp;nbsp;TE), mit einer maximalen Schaltleistung (ohmsche Last) von 1380&amp;amp;nbsp;W.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Durch die relativ geringe Belastbarkeit der Relais kann es leicht zum sogenannten &amp;quot;Verkleben&amp;quot; der Relais kommen. Dieses Problem inklusive einiger Hinweise zur Reparatur durch Ersatz eines defekten Relais sind in {{Link2Forum|Topic=43914|LinkText=diesem Forenthema}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Bei Überlastung oder Kurzschluss durch externe Verbraucher (wie auch durch durchbrennende Glühlampen im Einschaltmoment) stirbt im Aktor eine spezielle, steckbar ausgeführte Schmelzsicherung, die nur durch Öffnen des Gehäuses ausgetauscht werden kann.&lt;br /&gt;
&lt;br /&gt;
Nach Jahren im Betrieb kann es zum Ausfall des Netzteiles kommen, [[HM-LC-SW1-FM Schaltaktor 1-fach UP#Hardware Ausfall|siehe HM-LC-SW1-FM]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden.&lt;br /&gt;
* Anleitung (PDF {{DocLink|elv|/service/manuals/76793_HM_Unterputzschalter_UM.pdf}})&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39554</id>
		<title>HM-LC-SW1-FM Schaltaktor 1-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39554"/>
		<updated>2024-09-11T10:55:25Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Probleme */ mögliche Hardware Defekte eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic Funk-Schaltaktor 1-fach (Unterputz)&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-SW1-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V AC&lt;br /&gt;
|HWPowerConsumption=0,5W&lt;br /&gt;
|HWPoweredBy=Netzspannung&lt;br /&gt;
|HWSize=53x53x30mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels [[CUL]]/[[CUN]]/[[HMLAN Konfigurator]] und über einen mechanischen spannungsfesten Taster. &lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;: die Installation von Komponenten mit Netzspannung darf nur von Fachpersonal durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Will man die Funk-Schaltaktoren auch manuell betreiben, d.h. man upgradet eine vorhandene Elektroinstallation, so sind Taster notwendig. Schalter können notfalls mittels einer zusätzlichen Feder zu Taster umgebaut werden, Tastschalter sind leider nicht geeignet. &lt;br /&gt;
&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation erreicht werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details zu dem Eingriff sind [[HomeMatic Register programmieren#confBtnTime - Kurz oder lang und der Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Je nach vorhandenen Schalterdosen empfiehlt es sich bestehende Schalterdosen nach hinten auszuweiten, d.h. die Abdeckung nach hinten heraus zu brechen, da die Aktoren und Kabel nicht gerade sparsam mit dem Platz umgehen. Alternativ könnte man den Aktor auch in eine zusätzliche Schalterdosen unterbringen und diese mit einem Federdeckel abschließen. Dies hat den Vorteil, dass man auch durch relativ dicke Tapete die LED und somit den Zustand des Aktors ablesen kann.&lt;br /&gt;
&lt;br /&gt;
Der Aktor kann auch gänzlich ohne Taster, also nur per &#039;&#039;set&#039;&#039;-Befehlen durch FHEM oder per gepeerten Geräten gesteuert werden, jedoch muss zumindest für das Anlernen zeitweise ein Taster angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden. Hierfür wird ein am Aktor temporär angeschlossener spannungsfester Taster zwingend benötigt.&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass &#039;&#039;autocreate&#039;&#039; aktiv ist&lt;br /&gt;
# Am CUL/HMLAN o.ä. &amp;lt;code&amp;gt;set HMLAN hmPairForSec 60&amp;lt;/code&amp;gt;&lt;br /&gt;
# Binnen 60 Sekunden Aktor in Anlernmodus bringen (Taster 4s festhalten bis LED blinkt) -&amp;gt; Device wird in fhem angelegt, z.B. als CUL_HM_HM_LC_SW1_FM_2BAD45&lt;br /&gt;
# &amp;lt;code&amp;gt;rename &amp;lt;Aktor&amp;gt; &amp;lt;AktorNameNeu&amp;gt;&amp;lt;/code&amp;gt; -&amp;gt; richtigen Namen zuordnen&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LichtTerasse CUL_HM 17AEA6&lt;br /&gt;
attr LichtTerasse devInfo 010100&lt;br /&gt;
attr LichtTerasse firmware 1.9&lt;br /&gt;
attr LichtTerasse hmClass receiver&lt;br /&gt;
attr LichtTerasse model HM-LC-SW1-FM&lt;br /&gt;
attr LichtTerasse room Terasse&lt;br /&gt;
attr LichtTerasse serialNr IEQ00xxxx&lt;br /&gt;
attr LichtTerasse subType switch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW1-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 16:51:44 2: CUL_HM set LichtTerasse on&lt;br /&gt;
2012.02.05 16:52:14 2: CUL_HM set LichtTerasse off&lt;br /&gt;
2012.02.05 16:52:15 2: CUL_HM set LichtTerasse toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nützliches Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Wer den Schaltaktor im Sicherungskasten selbst einbauen möchte, z.B. um einen Stromstossschalter zu ersetzen, dem kann folgendes Zubehör empfohlen werden: Hutschienengehäuse CNMB-4V-Kit, Bestellnr. 532659 bei conrad. Das ist zwar sicher auch nicht VdE-konform, aber besser wie ohne. Alternativ kann auch der [[HM-LC-Sw1-DR 1fach Schaltaktor Hutschiene]] zur direkten Montage auf Hutschienen eingesetzt werde.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
Um den HM-LC-SW1-FM in den Anlernmodus zu versetzen, soll man lt. Anleitung den (temporär) angeschlossenen Taster für 4 Sekunden gedrückt halten. Falls dies bei Ihnen nicht funktioniert, so versuchen Sie den Taster einfach mal ca. 7 bis 8 Sekunden gedrückt zu halten (bis die LED des SW1-FM kurz aufleuchtet).&lt;br /&gt;
&lt;br /&gt;
Wenn das Pairing nicht komplett durchläuft (Device zeigt als Status MissingACK und kann nicht von FHEM aus gesteuert werden), dann hilft ggf. ein weiteres Pairing über hmPairSerial.&lt;br /&gt;
&lt;br /&gt;
== Hardware Ausfall ==&lt;br /&gt;
Nach einigen Jahren brennt der Sicherungswiderstand R10 (2,2 kOhm) durch. Ursache ist offenbar die Alterung der beiden Elektrolytkondensatoren C9 und C10 (0,47µF/400 Volt). Der Austausch dieser drei Bauteile ist simpel und mit etwas Geschick ohne die Trennung der beiden Platinen möglich.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden. &lt;br /&gt;
&lt;br /&gt;
[https://files2.elv.com/public/07/0767/076793/Internet/76793_um.pdf Anleitung (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39543</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=39543"/>
		<updated>2024-08-08T09:15:08Z</updated>

		<summary type="html">&lt;p&gt;Otto123: small in dem Link Hauptkategorien entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für aktuelle Mitteilungen ---------            &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Neue Mindestlänge für Passwörter&#039;&#039;&#039;: bedingt durch den Umzug auf einen neuen Server und die aktuelle Version von MediaWiki ist die Mindestlänge von Benutzerpasswörtern auf 10 angehoben worden. Bitte bei entsprechender Aufforderung beim Login ein mindestens zehnstelliges Passwort setzen.&amp;lt;/div&amp;gt;&lt;br /&gt;
 Ende von Banner für aktuelle Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&#039;&#039;&#039;[[:Kategorie:FHEM|Hauptkategorien dieses Wikis]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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|Hauptkategorien dieses Wikis]]&#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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39370</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39370"/>
		<updated>2024-06-18T15:23:38Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 muss die UART0 aktiviert werden:&amp;lt;!-- Muss noch mal verifiziert werden --&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle UART0 aktivieren&lt;br /&gt;
# für Raspberry OS die Lage der Firmware Datei kann bei anderen OS abweichen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
dtoverlay=uart0&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Bei den Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39369</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39369"/>
		<updated>2024-06-18T15:22:26Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ Einfügen Pi 5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab 2024 &#039;&#039;Bookworm&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, 4, 5 und Zero W. (Stand April 2024)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. &lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden. Bitte einen geeigneten Editor verwenden und auf das Format beim Speichern achten.&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es Balena Etcher sowie RPi Imager.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (RPi Imager hat hierfür eine Einstellung). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll (auch dies kann unter RPi Imager bei den Einstellungen vorkonfiguriert werden).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte gegebenfalls geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade -y&amp;lt;/code&amp;gt;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Beim Pi 5 muss die UART0 aktiviert werden:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle UART0 aktivieren&lt;br /&gt;
# für Raspberry OS die Lage der Firmware Datei kann bei anderen OS abweichen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
dtoverlay=uart0&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Bei den Modellen 1-4 muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen bis 4 mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man Infos in {{Link2Forum|Topic=137496|Message=1307865|LinkText=diesem Forenbeitrag}}}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. Es gibt eine einfache Installationsvariante, aber auch einen manuellen Weg. Beim manuellen Weg sind dann einzeln die notwendigen Pakete benannt, sowie einige empfohlene Pakete (siehe dazu auch die Tabelle unten). Es gibt weitere Hinweise, welche Pakete sinnvoll sind (siehe beispielsweise den Foreneintrag [https://forum.fhem.de/index.php?msg=1312018]&lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
====Deinstallation====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zusatzpakete bei FHEM-Erst- und Zweitinstallation===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; |Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; |Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; |Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver &lt;br /&gt;
|ntpdate&lt;br /&gt;
| Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. &lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN &lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet &lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat &lt;br /&gt;
|socat&lt;br /&gt;
| Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
| Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
===Netzteil===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
===Kabel (Micro-USB)===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
===Echtzeituhr===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
===Last durch Backup (während update)===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
*Backup ausschalten und manuell durchführen&lt;br /&gt;
*Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
==Watchdog einrichten==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
==Interne Links == &lt;br /&gt;
*[[CUL am Raspberry Pi flashen]]&lt;br /&gt;
*[[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
==Externe Links== &lt;br /&gt;
*{{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
*[http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=39298</id>
		<title>HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=39298"/>
		<updated>2024-04-25T13:17:17Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Variante mit ser2net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-MOD-RPI-PCB.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funkmodul für Raspberry Pi &lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Gateway&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3/869,525 MHz&lt;br /&gt;
|HWChannels=n/a&lt;br /&gt;
|HWVoltage=1,8–3,6 V&amp;amp;nbsp;DC&lt;br /&gt;
|HWPowerConsumption=50 mA max.&lt;br /&gt;
|HWPoweredBy=RasPi&lt;br /&gt;
|HWSize=19x41x14mm&lt;br /&gt;
|HWDeviceFHEM=[[HMUARTLGW]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3 &lt;br /&gt;
}}&lt;br /&gt;
Das [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]] ist eine Platine, die auf die GPIO-Schnittstelle des [[Raspberry Pi]] aufgesteckt werden und damit als [[Interface]] zu [[HomeMatic]] Geräten dienen kann. &lt;br /&gt;
&lt;br /&gt;
== Aufbau, Einsatz und grundsätzliche Funktionsweise ==&lt;br /&gt;
Das Modul besteht aus zwei Teilplatinen, die von eQ-3 über den Internetshop von ELV (als Bausatz ab etwa 20€, fertig montiert ab etwa 30€) verkauft werden. &lt;br /&gt;
&lt;br /&gt;
Das eigentliche Funkmodul wird mit HM-MOD-RPI-UART bezeichnet (und trägt den Aufdruck UART, im obigen Bild hinten teilweise verdeckt und mit der umrandeten 7 versehen), sie hat fünf einpolige Buchsen mit dem Rastermaß 2mm. Die Zusatzplatine zum Anschluss an die GPIO wird mit TRX1 bezeichnet (im obigen Bild vorn sichtbar mit dem Aufdruck HM-MOD-RPI-PCB), sie hat zwei sechspolige Buchsen mit dem Rastermaß 2,54mm.  Die Zusatzplatine enthält im Wesentlichen Stützkondensatoren und erlaubt einen direkten Anschluss an die GPIO eines Raspberry Pi.&lt;br /&gt;
* Der vorgesehene Einsatz als Aufsteckmodul auf den GPIO Port des Raspberry erfordert eine Modell abhängige Konfiguration. Diese wird im Setupbereich des Wiki Artikel zum [[Raspberry_Pi]] beschrieben.&lt;br /&gt;
  &lt;br /&gt;
{{Randnotiz|RNText=Neben der hier beschriebenen Option das HM-MOD-RPI-PCB zu verwenden, besteht auch die Möglichkeit, damit auf demselben Raspberry eine virtuelle CCU zu betreiben, welche dann mit [[HMCCU]] eingebunden werden kann. Hierfür stehen mehrere Virtualisierungsvarianten zur Verfügung; eine kurze Darstellung, wie das mittels YAHM funktioniert, ist in diesem {{Link2Forum|Topic=79670|Message=718289|Forenbeitrag}} zu finden.}}Mit dieser Platine in Verbindung mit dem FHEM-Modul [[HMUARTLGW]] ist nur der Betrieb von BidCoS-Geräten möglich. Zur Einbindung von Geräten, die HM-IP verwenden, ist derzeit (Stand Juni 2018) noch zwingend eine (ggf. virtualisierte) CCU2 oder neuer erforderlich.&lt;br /&gt;
&lt;br /&gt;
Das Funkmodul stellt auf dem 868MHz-Frequenzband eine Verbindung zu Homematic-Geräten her. Das Modul wird über die serielle Schnittstelle an ein Gerät gekoppelt, dass diese serielle Schnittstelle auswerten und die Information dann weiterverarbeiten kann. Hier kommen beispielsweise in Frage: Raspberry Pi, WeMos mini, ESP8266-Module, USB-serielle Adapter. Bereits das UART-Funkmodul erlaubt eine serielle Anbindung (die entsprechenden Schnittstellen Tx und Rx sind vorhanden, sie basieren auf 3,3V), es kann aber auch die  zusätzliche TRX1-Platine seriell verbunden werden. Des weiteren gibt es im Forum ein {{Link2Forum|Topic=56606}}, in dem PeMue eine eigene Platinenversion (Schaltplan, Stückliste und vieles mehr) vorstellt.&lt;br /&gt;
&lt;br /&gt;
=== Platine 1 -PCB-Modul ===&lt;br /&gt;
[[Datei:Hm-uart trx1.png|thumb|right|200px|Verkabelung beim HM-MOD-PCB]]&lt;br /&gt;
Am einfachsten ist es sicherlich, das kombinierte PCB-Modul (also beide Platinen UART und TRX1 durch eine Pfostenleiste miteinander verlötet) direkt auf die GPIO des Raspberry Pi aufzustecken. Das Bild rechts zeigt die entsprechende Verkabelung. Dabei ist zu beachten, dass sich nicht zwei Module die GPIO teilen können. Steckt schon ein Modul im Raspberry Pi, muss der Anschluss per USB, in einem zweiten Raspberry Pi oder per WLAN gewählt werden.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platine 2 -UART-Modul ===&lt;br /&gt;
[[Datei:Verkabelung-HM-MOD-uart.png|thumb|right|200px|Verkabelung beim HM-MOD-UART]]&lt;br /&gt;
Will man das TRX1-Modul nicht verwenden, so kann man auch das UART-Modul direkt mit Rx/Tx des Raspberry Pi verbinden. Das Bild rechts zeigt die entsprechende Verkabelung. Hier sollten allerdings Stützkondensatoren an die Stromversorgung des UART angebracht werden, da Spannungsschwankungen sonst zu schwer interpretierbaren Fehlern führen können. Die Anschlüsse sind dem nachstehenden Bild zu entnehmen, allerdings ist hier nicht die UART-Platine, sondern das TRX1-Gegenstück zu sehen!&lt;br /&gt;
&lt;br /&gt;
Sowohl serielle Schnittstelle des Raspberry Pi als auch das UART-Modul arbeiten mit 3,3V arbeitet, so dass man keine Spannungsteiler benötigt. Mehr Informationen zu den GPIOs findet man unter diesem [http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_GPIO.html Link].&lt;br /&gt;
&lt;br /&gt;
=== Zusammenbau und Verwendung ===&lt;br /&gt;
Man sollte die Antenne aus dem Gehäuse schauen lassen oder gar eine externe Antenne anbringen. Idealerweise sollte das Ende der Drahtantenne mit einem Klecks Heißkleber oder ähnlichem isoliert werden; eine Berührung vor allem mit dem Innenleben des Raspberry Pi muss vermieden werden!&lt;br /&gt;
&lt;br /&gt;
Beide Platinen können zusammengebaut oder auch nur das UART Modul getrennt verwendet werden. &lt;br /&gt;
[[Datei:HM-MOD-UART-Unten.jpg|thumb|left|200px|Montage des Moduls HM-MOD-UART unten]]&lt;br /&gt;
[[Datei:HM-MOD-UART-Oben.jpg|thumb|right|200px|Montage des Moduls HM-MOD-UART oben]]&lt;br /&gt;
Die originale Montage in der Anleitung von eq3 sieht den Zusammenbau PCB Modul unten und UART Modul oben vor (Bild rechts). Damit schließen die kleineren Pi-Gehäuse nicht richtig: das Gesamtmodul klemmt am Deckel.&lt;br /&gt;
&lt;br /&gt;
Man kann ohne weiteres das UART-Modul unter dem PCB-Modul montieren (Bild links), damit wird die Gesamthöhe geringer und es passt problemlos in jedes Gehäuse. Bitte vorher die genaue Situation prüfen: Es kann sein, dass damit Kühlkörper oder ähnliches seitens der Pi-Platine stören.&lt;br /&gt;
&lt;br /&gt;
Man kann auch das PCB Modul kürzen und das UART Modul mit kurzen Drähten in einer Ebene verbinden (kein Bild).&lt;br /&gt;
&lt;br /&gt;
Bitte auf die richtige Lage (Bilder) beim Zusammenbau und auf Lötzinnbrücken achten. Da die Anschlüsse durchkontaktiert sind, bewirkt eine falsche Positionierung des UART-Moduls im schlimmsten Fall einen Kurzschluss. Man erkennt auf beiden Bildern, dass beim UART-Modul die Pinleiste einmal auf der einen und ein andermal auf der anderen Seite des Moduls angelötet werden muss! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Das Modul muss, um verwendet zu werden, mit einer Hardware verbunden werden. Hier kommen mehrere Möglichkeiten in Betracht, die jeweils vor und Nachteile aufweisen. Sie werden jetzt nacheinander präsentiert.  &lt;br /&gt;
&lt;br /&gt;
=== Anbindung an die GPIO im Raspberry ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
Man kann das  HM-MOD-RPI-PCB Modul direkt in die GPIOs eines Raspberry stecken. Das hat den Vorteil, dass das Gerät (mehr oder weniger) sofort betriebsbereit ist, aber den Nachteil, dass am RPi vorher mehrere Installationen zu erfolgen haben. &lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;&amp;lt;big&amp;gt;notwendige Konfiguration der Schnittstelle&amp;lt;/big&amp;gt;&#039;&#039;&#039; ist hier beschrieben: [[Raspberry_Pi#Verwendung_UART_f.C3.BCr_Zusatzmodule|Verwendung UART für Zusatzmodule]].&lt;br /&gt;
* Der Einsatz in FHEM für CUL_HM erfolgt mit dem Modul [[HMUARTLGW]]&lt;br /&gt;
* Die automatische Erkennung der USB Geräte muss deaktiviert werden: &lt;br /&gt;
::&amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt;&lt;br /&gt;
: Nach dem Setzen des Attributes muss die Änderung gespeichert werden (siehe [[save]])!&lt;br /&gt;
&lt;br /&gt;
=== Anbindung über das Netzwerk===&lt;br /&gt;
Wenn das  HM-MOD-RPI-PCB Modul an einen RPi angeschlossen ist, kann man dieses Modul danach auch im Netzwerk verfügbar machen. Dieser Pi kann beliebige Aufgaben erledigen, nur das HM-MOD-RPI-PCB Modul selbst darf nicht lokal verwendet werden. Somit kann man bei einem Umzug des FHEM Servers das HM-MOD-RPI-PCB Modul einfach weiterhin nutzen oder einen vorhandene RaspberryPi zum &amp;quot;HMLAN&amp;quot; umbauen. Sollte man aber ausschließlich Zugriff auf das HM-MOD-RPI-PCB Modul im Netzwerk benötigen, empfiehlt sich auch aus Kostengründen (Stromverbrauch) eine andere Lösung.&lt;br /&gt;
&lt;br /&gt;
Achtung! Auch über das Netzwerk darf immer &#039;&#039;&#039;nur eine Instanz auf das freigegebene Modul zugreifen&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration der Schnittstelle ist in jedem Fall gleich: [[Raspberry Pi#Verwendung UART für Zusatzmodule|Verwendung UART für Zusatzmodule]]. &lt;br /&gt;
&lt;br /&gt;
Die [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi#Definition in FHEM 2|Definition in FHEM]] erfolgt dann mit dem Parameter &amp;lt;code&amp;gt;uart:// .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit ser2net =====&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,124384.0.html &#039;&#039;&#039;Achtung!&#039;&#039;&#039; Mit der Version 4 hat sich die Konfiguration geändert!]&lt;br /&gt;
&lt;br /&gt;
Diese Installation auf dem Pi mit dem  HM-MOD-RPI-PCB Modul bitte im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. &lt;br /&gt;
&lt;br /&gt;
Bis zur ser2net &#039;&#039;&#039;Version 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install ser2net&lt;br /&gt;
echo &amp;quot;4000:raw:0:/dev/ttyAMA0:115200 NONE 1STOPBIT 8DATABITS HANGUP_WHEN_DONE&amp;quot; &amp;gt;&amp;gt; /etc/ser2net.conf&lt;br /&gt;
# Den Dienst neu starten&lt;br /&gt;
systemctl restart ser2net&amp;lt;/pre&amp;gt;Ab der ser2net &#039;&#039;&#039;Version 4&#039;&#039;&#039; erfolgt die Konfiguration im anderen Format /etc/ser2net.yaml.  [https://linux.die.net/man/8/ser2net manpage]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /etc/ser2net.yaml /etc/ser2net.yaml.sav&lt;br /&gt;
cat &amp;lt;&amp;lt;EOI &amp;gt; /etc/ser2net.yaml&lt;br /&gt;
%YAML 1.1&lt;br /&gt;
---&lt;br /&gt;
# HM_MOD-RPI-PCB&lt;br /&gt;
connection: &amp;amp;con01&lt;br /&gt;
    accepter: tcp,4000&lt;br /&gt;
    connector: serialdev,&lt;br /&gt;
              /dev/ttyAMA0,&lt;br /&gt;
              115200n81,local&lt;br /&gt;
EOI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zur Kommunikation zwischen FHEM und ser2net auf einem anderen Gerät im Netzwerk kann (mindestens ab Debian Bullseye) zusätzlich die Option &amp;quot;NOBREAK&amp;quot; im Connector (siehe [https://linux.die.net/man/8/ser2net manpage]) erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
In der Service unit müssen Abhängigkeiten eingefügt werden, sonst startet der Dienst nach einem System reboot nicht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl edit --full ser2net&amp;lt;/code&amp;gt; siehe auch  [[Fhem.service (systemd unit file)|Wiki (systemd unit file)]]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Serial port to network proxy&lt;br /&gt;
Documentation=man:ser2net(8)&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
EnvironmentFile=-/etc/default/ser2net&lt;br /&gt;
ExecStart=/usr/sbin/ser2net -n -c $CONFFILE -P /run/ser2net.pid&lt;br /&gt;
Type=exec&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit socat =====&lt;br /&gt;
Installation auf dem Pi wo das Modul steckt bitte so installieren. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
Zum Test kann man socat in der Kommandozeile starten&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den dauerhaften Betrieb muss der Start von socat automatisch erfolgen. &lt;br /&gt;
Auf einem Debian Jessie mit systemd legt man z.B. einen Dienst durch folgende Datei an:&lt;br /&gt;
/etc/systemd/system/hmlangw.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Text&amp;quot;&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 Type=forking&lt;br /&gt;
   &lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/usr/bin/socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200&lt;br /&gt;
 User=root&lt;br /&gt;
 Restart=always&lt;br /&gt;
 RestartSec=10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dann kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo systemctl enable hmlangw &amp;lt;/code&amp;gt;&lt;br /&gt;
der Service zum Autostart konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit USB-Adapter ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten: Es sind immer wieder Exemplare mit [[CP2102]] im Umlauf, die mehr als 3.3V Spannung liefern! Vor dem Verbinden mit dem HM-Modul sollte daher geprüft werden, ob der interne Spannungswandler ordnungsgemäß funktioniert und wirklich nur 3.3V liefert. Bei den blauen Micro-Modulen kann man den Fehler nach dieser Anleitung beheben: [https://www.silabs.com/community/interface/forum.topic.html/cp2102_3_3v_outputi-EaVr Beitrag von PBudmark vom 08.07.2017].}}&lt;br /&gt;
[[Datei:PL2102 Modul.png|200px|thumb|right|Mod zur Herstellung der korrekten Spannung]]&lt;br /&gt;
Das UART-Modul kann ebenfalls mit einem USB-Adapter an ein USB-fähiges Gerät angeschlossen werden. Allerdings ist hier wieder auf den Spannnungspegel zu achten, unbedingt einen USB-Adapter mit 3,3 Volt Pegel nehmen! Der Vorteil ist hier, dass hohe Geschwindigkeiten möglich sind und nicht wie bei WLAN Latenzen auftreten, aber es muss eben ein USB-Anschluss verfügbar sein.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich bewährt haben sich z.B. Modelle mit einem [[CP2102]], der auch ausreichend Stromreserven zum Betrieb des Moduls bietet. Dabei ist die serielle Schnittstelle wie üblich zu kreuzen, also&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung&#039;&#039;&#039;&lt;br /&gt;
  3.3V &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
  GND  &amp;lt;-&amp;gt; GND&lt;br /&gt;
  Rx   &amp;lt;-&amp;gt; Tx&lt;br /&gt;
  Tx   &amp;lt;-&amp;gt; Rx&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit ESP8266 ===&lt;br /&gt;
Hier ist der Vorteil, dass vor Ort nur WLAN verfügbar sein muss. Nachteilig kann sich auswirken, dass WLAN hohe Latenzen aufweisen kann und daher manchmal der Eindruck entsteht, das Modul sei gerade abwesend. &lt;br /&gt;
&lt;br /&gt;
Zum Anschluss kann ein beliebiger ESP8266 verwendet werden. Mit einigen Versionen (Beispiele im Forum: {{Link2Forum|Topic=102141|Message=956606|LinkText=ESP07}} sowie {{Link2Forum|Topic=102141|LinkText=Wemos mini pro}}) ist eine Anbindung anscheinend nicht oder nur schwer möglich - wobei dies auch an nicht funktionsfähigen Clonen liegen kann oder beim Wemos daran, dass dort die USB-Schnittstelle mit Tx/Rx nicht kalkulierbare Störungen auslöst. Ein Problem bei Wlan Anbindung kann die vergrößerte roundtrip delay darstellen. &lt;br /&gt;
&lt;br /&gt;
Es gibt verschiedene ESP Firmware-Möglichkeiten:  &lt;br /&gt;
* [https://github.com/jeelabs/esp-link &#039;&#039;&#039;ESPLink&#039;&#039;&#039;] ist eine sehr stabile und nicht mehr aktiv weiterentwickelte Firmware, die die serielle Schnittstelle direkt mit WLAN verbindet und ohne größere Schwierigkeiten eingerichtet werden kann und funktioniert. Sie nutzt die serielle Schnittstelle des ESP. Allerdings erlaubt ESPLink nicht die Nutzung anderer GPIOs, so können beispielsweise keine anderen Sensoren mit angeschlossen bzw. ausgelesen werden. Verwendet man ESP-Link, so muss neben der WLAN Konfiguration nur das Pin Assignment konfiguriert werden. Alle Pins auf disabled stellen.&lt;br /&gt;
* [https://www.letscontrolit.com/wiki/index.php/ESPEasy &#039;&#039;&#039;ESPEasy&#039;&#039;&#039;] (neue Version: ESPMega) wird beständig weiterentwickelt und gestattet es, weitere Sensoren anzuschließen und deren Werte auszulesen. Insbesondere kann man mit ESPEasy auch zwei weitere Pins nutzen, um eine serielle Schnittstelle zu simulieren (so genannter &#039;&#039;serieller Server&#039;&#039;). Man spricht auch von einer &#039;&#039;swapped&#039;&#039; Schnittstelle. Die {{Link2Forum|Topic=62651|LinkText=Platine von amunra}} nutzt eine solche Schnittstelle.  Allerdings gibt es mit einigen ESP8266-Geräten Schwierigkeiten, diese serielle Schnittstelle zu nutzen. So ist etwa ein serieller Server mit neueren ESP-Versionen anscheinend nicht lauffähig (siehe dazu {{Link2Forum|Topic=75422|LinkText=diesen Thread}}). Es gibt eine ältere Firmware-Version von PeMue, die  unmittelbar funktionsfähig scheint, siehe dazu {{Link2Forum|Topic=86592|LinkText=diesen Forenthread}}. &lt;br /&gt;
* &#039;&#039;&#039;Tasmota&#039;&#039;&#039; kann mit der Komponente TCP_Bridge ebenfalls das Modul ansteuern. Hier im [https://forum.fhem.de/index.php/topic,125817.msg1233521.html Forum] gibt es dazu eine ausführliche Anleitung und den Erfahrungsbericht.  &lt;br /&gt;
[[Datei:Esp-pin Konfiguration HMUART.png|200px|mini|esp-link Pin-Konfiguration beim swapped Server]]&lt;br /&gt;
Bei der seriellen Schnittstelle (da die ESP auf 3,3V laufen, sind keine Spannungsteiler erforderlich) findet man die Verschaltung unten. Bei der &#039;&#039;swapped&#039;&#039; Schnittstelle wird auf die digitalen Pins D7/D8 zurückgegriffen (siehe auch unten). Die letztere Verschaltung erfordert eine entsprechende Implementierung der Schnittstelle in der Firmware selbst, die beispielsweise bei ESPEasy unter Umständen nicht gegeben ist oder selbst kompiliert werden muss.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung bei einem WeMos D1 mini&#039;&#039;&#039;&lt;br /&gt;
  (UART) &amp;lt;-&amp;gt; (Wemos swapped) &amp;lt;-&amp;gt; (Wemos seriell)&lt;br /&gt;
   3.3V  &amp;lt;-&amp;gt; 3.3V            &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
   GND   &amp;lt;-&amp;gt; GND             &amp;lt;-&amp;gt; GND&lt;br /&gt;
   Rx    &amp;lt;-&amp;gt; D8              &amp;lt;-&amp;gt; Tx (D10 oder Tx)&lt;br /&gt;
   Tx    &amp;lt;-&amp;gt; D7              &amp;lt;-&amp;gt; Rx (D9 oder Rx)&lt;br /&gt;
   &lt;br /&gt;
Es gibt eine ausführliche Erläuterung für die Software unter [https://forum.fhem.de/index.php?action=dlattach;topic=56606.0;attach=68630], siehe auch [https://www.esp8266.com/viewtopic.php?f=32&amp;amp;t=18669 diese Grafik der Pins des Wemos]&lt;br /&gt;
&lt;br /&gt;
Im Forum gibt es mehr Informationen zu diesen Adaptern, zum Beispiel {{Link2Forum|Topic=62651|LinkText=&amp;quot;(amunra)-Platine für HM-MOD-UART-RPI...&amp;quot;}} oder {{Link2Forum|Topic=79559|LinkText=&amp;quot;3. Sammelbestellung - Homematic WLAN Gateway&amp;quot;}}.&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-CFG-WLAN-k.jpeg|thumb|left|200px|Anschluß an Wemos]]&lt;br /&gt;
Auf dem linken Foto ist der Anschluss des gesamten Moduls (Rastermaß 2,54mm statt 2mm!) an den Wemos zur Wifi-Einbindung abgebildet.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit einem LAN-TTL-Wandler ===&lt;br /&gt;
[[Datei:Hm-uart und usr-tcp232-T2.png|thumb|right|400px|Anschluß an die gängige Variante USR-TCP232-T2]]Auf gängigen Marktplätzen sind für etwas weniger als 10 Euro Module erhältlich, die einen seriellen Anschluss im LAN bereitstellen können. Nähere Hinweise sind in den Artikeln [[Serial TTL to Ethernet Module]] sowie [[1W-IF-ETH]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Die Module melden sich per DHCP&amp;lt;ref&amp;gt;jedenfalls neuere firmware-Versionen&amp;lt;/ref&amp;gt; im Netzwerk an, die Konfiguration erfolgt je nach Variante über ein Web-Interface, ein Windows-Tool oder eine Management-Software.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit MapleCUx ===&lt;br /&gt;
Auch die seriellen Schnittstellen, die ein MapleCUL oder [[MapleCUN]] bereitstellen, können zum Anschluß des Moduls verwendet werden. Der MapleCUN stellt beide seriellen Schnittstellen je unter einem eigenen Port ins Netz.&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Die Funktion in FHEM hängt ab von der verwendeten Hardware. Die eigentliche Funktion wird mit dem Modul [[HMUARTLGW]] hergestellt. Alle dortigen Hinweise zur Konfiguration sind zu beachten! Man sollte sich auch mit den Grundlagen der [[HomeMatic]] Kommunikation vertraut machen.&lt;br /&gt;
&lt;br /&gt;
Je nach physischem Anschluss erfolgt eine Anbindung in FHEM in unterschiedlicher Weise. Folgende Beispiele sind &#039;&#039;&#039;abweichend&#039;&#039;&#039; von der &#039;&#039;&#039;&amp;lt;big&amp;gt;[[HMUARTLGW#Define|Standardkonfiguration]]!&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wurde ein USB-Adapter auf dem FHEM-Gerät selbst verwendet, definiert man das Gerät in FHEM wie folgt.&lt;br /&gt;
  define USB_HmUART HMUARTLGW /dev/ttyUSBx&lt;br /&gt;
Wurde dagegen das Gerät über WLAN oder LAN durch das UART-Modul angebunden, erfolgt die Einbindung in FHEM durch&lt;br /&gt;
  define WLAN_HmUART HMUARTLGW uart://&amp;lt;IP-Adresse&amp;gt;:&amp;lt;Portnummer&amp;gt;&lt;br /&gt;
Portnummern:&lt;br /&gt;
*ser2net 4000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*socat 2000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*esp-link 23 &lt;br /&gt;
*MapleCUN 2324 bzw. 2325 &lt;br /&gt;
*USR-TCP232-T2 entspr. Konfiguration.&lt;br /&gt;
&lt;br /&gt;
=== Logbeispiel ===&lt;br /&gt;
Typischerweise meldet sich das Modul beim Start so:&lt;br /&gt;
   2016.10.06 17:11:16 3: Opening myHmUART device /dev/ttyAMA0&lt;br /&gt;
   2016.10.06 17:11:16 3: Setting myHmUART serial parameters to 115200,8,N,1&lt;br /&gt;
   2016.10.06 17:11:16 3: myHmUART device opened&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_BL&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_App&lt;br /&gt;
&lt;br /&gt;
=== Verwendung AES in FHEM===&lt;br /&gt;
Das Modul beherrscht AES.&lt;br /&gt;
Für weitere Informationen gibt es einen separaten Wiki Eintrag [[AES Encryption]]&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls mit FHEM ===&lt;br /&gt;
Die Module werden mit einer Firmware 1.2.1 ausgeliefert. Dies Firmware ist nicht für einen stabilen Betrieb geeignet, die Firmware 1.4.1 ist die minimal lauffähige Version.&lt;br /&gt;
&lt;br /&gt;
Bitte den Befehl zum download inklusive der Anführungszeichen in die FHEM Kommandozeile eingeben!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware herunterladen&#039;&#039;&#039;&lt;br /&gt;
* Version 1.4.1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/28045df83480122f90ab92f7c6e625f9bf3b61aa/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Alternativ die aktuellste (für den Betrieb mit dem Modul HMUARTLGW &#039;&#039;&#039;NICHT&#039;&#039;&#039; empfohlen)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/HEAD/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(Firmware neuer als 1.4.1 dient nur bei CCU-Klonen mit Mischbetrieb BidCOs, klassisch HomeMatic und HomeMatic IP, siehe {{Link2Forum|Topic=70752|LinkText=diesen Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flashen der neuen Firmware&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Erstmal überzeugen das die Firmware da ist: Z.B. mit dem Befehl in der FHEM Kommandozeile, die Ausgabe erfolgt in der Weboberfläche!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;{qx(ls -lha ./FHEM/firmware)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn alles ok - Befehl zum flashen ausführen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;set myHmUART updateCoPro /opt/fhem/FHEM/firmware/coprocessor_update.eq3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls ohne FHEM ===&lt;br /&gt;
Sollte das Update über FHEM nicht funktionieren oder FHEM nicht verfügbar sein, kann die Firmware auch wie folgt eingespielt werden (Quelle: [http://heinz-otto.blogspot.com/2016/07/raspberry-pi-homematic-modul.html Ottos Technik Blog])&lt;br /&gt;
&lt;br /&gt;
  sudo su&lt;br /&gt;
  apt-get update &amp;amp;&amp;amp; apt-get -y install libusb-1.0-0-dev build-essential git&lt;br /&gt;
  systemctl stop fhem&lt;br /&gt;
  git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
  cd hmcfgusb/&lt;br /&gt;
  make&lt;br /&gt;
  # Firmware runterladen&lt;br /&gt;
  wget https://raw.githubusercontent.com/eq-3/occu/ee68faf77e42ed5e3641790b43a710a3301cea7e/firmware/HM-MOD-UART/coprocessor_update.eq3&lt;br /&gt;
  # eigentliches flashen:&lt;br /&gt;
  ./flash-hmmoduart -U /dev/ttyAMA0 coprocessor_update.eq3&lt;br /&gt;
&lt;br /&gt;
=== Bekannte Probleme ===&lt;br /&gt;
* Sollten beim Flashen der Firmware hartnäckige Probleme auftreten (kein Erfolg aber auch gar keine Fehlermeldungen) ist das Modul vom Strom zu trennen, ein Neustart des Pi reicht nicht!&lt;br /&gt;
* Ein {{Link2Forum|Topic=41203|Message=340320|LinkText=Beitrag}} aus dem genannten Forenthread: &#039;&#039;Das Ding ist anscheinend wirklich einfach das Funkmodul aus der CCU2 (wird zumindest in der eQ-3 SW als CCU2 angesprochen) und spricht ein für FHEM vollkommen neues Protokoll.&#039;&#039;&lt;br /&gt;
* Beim Raspberry 4 gibt es eine Einstellung zur Temperaturkontrolle, die muss deaktiviert werden. Siehe diesen {{Link2Forum|Topic=123223|Message=1178032|LinkText=Beitrag im Forum}}.&lt;br /&gt;
* Bei Verwendung mit einem USR TCP232-T2 Wandler kann es in der Default-Einstellung des Wandlers dazu kommen, dass obsolete Kommunikation gepuffert und nach einem Wiederverbinden unnötig an FHEM gesendet wird (siehe {{Link2Forum|Topic=123948|LinkText=dieses Foren-Thema}}). Im FHEM-Log gibt es in diesem Fall die Meldung &amp;quot;HMUART failed to enter App!&amp;quot;   Abhilfe schafft das Aktivieren der Option &amp;quot;Buffer Data before connected&amp;quot; unter &amp;quot;Expand Function&amp;quot; im WebUI des TCP-232.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=41203|LinkText=Forenthread}} mit Nachfrage zur Unterstützung dieses Geräts in FHEM&lt;br /&gt;
* {{Link2Forum|Topic=54511|LinkText=Modul für HomeMatic UART-Modul (RPi) und HomeMatic LAN Gateway}}&lt;br /&gt;
* [http://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html Produktseite] bei ELV&lt;br /&gt;
* {{DocLink|elv|/Assets/Produkte/10/1040/104029/Downloads/104029_lan_gateway_um.pdf Bedienungsanleitung}}&lt;br /&gt;
* {{Link2Forum|Topic=56606|LinkText=Forenthread}} Hardware Thread mit vielen Varianten der Anbindung. In Post #26 gibt es die Detailbeschreibung in der angehängten PDF.&lt;br /&gt;
:&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=39213</id>
		<title>MQTT2-Module - Praxisbeispiele</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MQTT2-Module_-_Praxisbeispiele&amp;diff=39213"/>
		<updated>2024-04-01T09:07:50Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Setup im System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung: MQTT bzw. MQTT2 in FHEM ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT verwenden, beachten Sie bitte, dass der MQTT2_CLIENT die ursprüngliche Herkunft der über MQTT verteilten Informationen nicht kennt. Daher ergeben sich in der Anwendung kleinere Unterschiede, zu deren Verständnis die diesbezüglichen [[MQTT2_CLIENT#Anwendung|Hinweise zu MQTT2_CLIENT]] bekannt sein sollten.}}Zur Einbindung von Geräten, welche zur Nutzung des MQTT-Protokols konfiguriert werden können und darüber mit einem MQTT-Server (früher: Broker) kommunizieren, stehen unter FHEM verschiedene Optionen zur Verfügung, wobei nicht alle Module beliebig miteinander verwendet werden können. Details hierzu sind dieser [[MQTT|Übersicht]] zu entnehmen. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Artikels wird für die eigentlichen Geräte [[MQTT2 DEVICE|MQTT2_DEVICE]] verwendet, damit wird als IO-Device entweder {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder [[MQTT2 CLIENT|MQTT2_CLIENT]] benötigt, mit einem IO-Device des Typs [[MQTT (Modul)|MQTT]] funktioniert die nachfolgende Darstellung dagegen nicht&amp;lt;ref&amp;gt;Allerdings können die Konfigurationen in der Regel recht einfach auf die bisherige MQTT-Implementierung übertragen werden&amp;lt;/ref&amp;gt;. MQTT2_DEVICE unterstützt u.a. auch die &#039;&#039;setExtensions&#039;&#039; direkt, also z.B. &#039;&#039;on-for-timer&amp;lt;ref&amp;gt;Beachten Sie bei mehrkanaligen Geräten, dass jeweils nur ein Hauptkanal mittels setExtensions verwaltet werden kann! U.a. aus diesen Grund ist es meist sinnvoller, die &#039;&#039;split&#039;&#039;-Varianten der attrTemplate-Einrichtung zu verwenden.&amp;lt;/ref&amp;gt;&#039;&#039; sowie &#039;&#039;[[MQTT2-Module - Praxisbeispiele#attrTemplate_2|attrTemplate]]&#039;&#039;&amp;lt;ref&amp;gt;Auch MQTT_DEVICE unterstützt SetExtensions, allerdings muss dies dort per Attribut eingeschaltet werden&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Allgemeine Einstellungen und Hinweise ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Beachten Sie, dass für [[autocreate]] in Verbindung mit MQTT2_SERVER &#039;&#039;&#039;zwingend&#039;&#039;&#039; jeder über MQTT kommunizierende Client eine ClientID angeben muss. Passen Sie daher ggf. die Einstellungen Ihres Geräts an. Manche Geräte verwenden auch &amp;quot;Wegwerf&amp;quot;-ClientID&#039;s. Für diese empfiehlt es sich, ggf. dann die durch autocreate erstellten Geräte nachzubearbeiten und die ClientID-Angabe v.a. aus den Inhalten des readingList-Attributs zu entfernen.}}Die nachfolgenden Beispiele gelingen am einfachsten mit &#039;&#039;&#039;MQTT2_SERVER als Server (&amp;quot;Broker&amp;quot;)&#039;&#039;&#039;, für diesen sollte dabei &#039;&#039;autocreate&#039;&#039; &#039;&#039;&#039;nicht deaktiviert&#039;&#039;&#039; sein, damit die erforderlichen MQTT2_DEVICES soweit möglich automatisiert erstellt werden&amp;lt;ref&amp;gt;Dabei wird vorausgesetzt, dass ein allgemeines {{Link2CmdRef|Anker=autocreate|Lang=en|Label=autocreate}}-Device (&#039;&#039;TYPE=autocreate&#039;&#039;) ebenfalls aktiv ist.&amp;lt;/ref&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Beispiel&amp;lt;ref&amp;gt;MQTT2_SERVER verwendet als default-Einstellung für &#039;&#039;autocreate&#039;&#039; &#039;&#039;simple&#039;&#039;, ohne dass ein entsprechendes Attribut gesetzt werden müsste. Die Einstellung &#039;&#039;complex&#039;&#039; empfiehlt sich in der Regel nicht; diese ist jedoch dann zu empfehlen, wenn das Device entweder verschachtelte JSON-Array-Strukturen liefert oder bestimmte Readings nicht gefüllt werden sollen.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
 define MQTT2_FHEM_Server MQTT2_SERVER 1883 global&lt;br /&gt;
&lt;br /&gt;
Falls der MQTT Broker mit Hilfe von [[allowed]] abgesichert wurde, muss in den Geräten ebenfalls User bzw. Passwort eingetragen werden, damit eine MQTT Kommunikation möglich ist.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Die Code-Darstellung in diesem Beitrag entspricht jeweils dem RAW-Format zum [[Import von Code Snippets]]. Wer die Attribute direkt und einzeln bearbeitet, muss ggf. die &amp;quot;\&amp;quot; entfernen!}}&lt;br /&gt;
&lt;br /&gt;
=== MQTT-Einstellungen in den Geräten ===&lt;br /&gt;
Die Beispiele gehen davon aus, dass die einzubindenden Geräte &#039;&#039;&#039;&#039;&#039;mit den default-Einstellungen&#039;&#039;&#039;&#039;&#039; für MQTT betrieben werden, wenn man von den Angaben zum Server und ggf. der Gerätekennung absieht. Es sollten also insbesondere &#039;&#039;&#039;keine Veränderungen der topic-Pfade&#039;&#039;&#039; vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Einige der hier beschriebenen Einstellungen haben Änderungen der sich durch die jeweiligen Automatismen eigentlich jeweils ergebenden Standard-Werte zur Folge, insbesondere, was Reading-Namen und von den Geräten gesendete Werte angeht. Sie sollten daher zunächst die Konfiguration des jeweiligen MQTT2-DEVICE-Geräts abschließen, und erst anschließend die weitere Integration mit Event-Handlern, logging usw. vornehmen.  }}&lt;br /&gt;
&lt;br /&gt;
=== auto-Konfigurations-features ===&lt;br /&gt;
Viele firmwares und Dienste bieten Möglichkeiten an, einer Controller-Software (insbesondere homeassistant) Hilfsdaten zur automatisierten Konfiguration bereitzustellen. Da FHEM diese Daten nicht zu ihrem ursprünglichen Zweck verwenden kann, werden hierdurch lediglich zusätzliche Readings erzeugt, mit denen man als User in der Regel wenig anfangen kann. Es wird daher empfohlen, derartige features &#039;&#039;&#039;abzuschalten&#039;&#039;&#039;. Wo dies nicht möglich ist, sollte man eine passende [[MQTT2_CLIENT#ignoreRegexp|ignoreRegexp]] setzen bzw. diese passend erweitern!&lt;br /&gt;
&lt;br /&gt;
=== Schritt für Schritt ===&lt;br /&gt;
Hier werden in der Regel fertige Konfigurationen für häufige Anwendungsfälle (beispielhaft) dargestellt. In [[MQTT2_DEVICE - Schritt für Schritt]] ist etwas mehr über die Vorgehensweise bei der Zusammenstellung der verschiedenen Attribute und deren Zusammenwirken zu erfahren.&lt;br /&gt;
&lt;br /&gt;
== zigbee2mqtt ==&lt;br /&gt;
[[Bild:MQTT2_zigbee2mqtt_Bulbs.png|400px|thumb|Darstellung in FHEMWEB]]&lt;br /&gt;
[https://www.zigbee2mqtt.io zigbee2mqtt] ist ein open-source Projekt, mit dem zigbee-Geräte über MQTT direkt angesprochen werden können, ohne dass hierfür eine Bridge eines Herstellers benötigt wird.&lt;br /&gt;
&lt;br /&gt;
Einzelheiten zur Vorgehensweise sind auf der Detailseite [[Zigbee2mqtt|zigbee2mqtt]] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Tasmota ==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie, dass versicherungsrechtliche Probleme entstehen können, wenn die herstellereigene Firmware ersetzt wird!}}[https://github.com/arendst/Sonoff-Tasmota Tasmota] (&#039;&#039;&#039;T&#039;&#039;&#039;heo &#039;&#039;&#039;A&#039;&#039;&#039;rends &#039;&#039;&#039;S&#039;&#039;&#039;onoff &#039;&#039;&#039;M&#039;&#039;&#039;QTT &#039;&#039;&#039;O&#039;&#039;&#039;ver &#039;&#039;&#039;T&#039;&#039;&#039;he &#039;&#039;&#039;A&#039;&#039;&#039;ir - einer offenen Firmware von [https://github.com/arendst arendst]) ist eine open-source Software für ESP8266-Geräte, die z.B. statt der originalen Firmware für Sonoff-Geräte und andere ESP8266-basierte WLAN-Steckdosen usw. verwendet werden kann. &lt;br /&gt;
{{Hinweis|[[Datei:Tasmota mqtt config.png|120px|thumb|right]]Vor allem, aber nicht nur bei Verwendung des MQTT2_CLIENT als IO, ist es empfehlenswert, in der MQTT-Konfiguration der tasmota-Geräte für den Parameter &#039;&#039;&amp;lt;nowiki&amp;gt;topic = %topic% (tasmota)&amp;lt;/nowiki&amp;gt;&#039;&#039; ebenfalls die dynamisch aus der Chip-ID erzeugte Kennung &#039;&#039;DVES_%06X&#039;&#039; zu verwenden. (Kopieren Sie einfach diese Zeichenkette aus dem  Eingabefeld für &#039;&#039;&amp;quot;client ...&amp;quot;&#039;&#039;, siehe nebenstehende Abbildung). Die eigentliche Umbenennung zu einem &amp;quot;sprechenden Namen&amp;quot; kann dann innerhalb von FHEM - mittels &#039;&#039;rename&#039;&#039; oder ggf. mit einem &#039;&#039;alias&#039;&#039; - erfolgen.}}&lt;br /&gt;
=== MQTT2_DEVICE ===&lt;br /&gt;
Dieses sollte bei aktiviertem &#039;&#039;autocreate&#039;&#039; am MQTT2_SERVER-Device automatisch angelegt werden, sobald das betreffende Gerät eingesteckt oder neu gestartet oder an einem evtl. vorhandenen Taster geschalten wird. Bislang wurden Tasmota version(en) ab 6.1.1 bis min. 8.1.0 getestet, dies auf verschiedener Hardware, zunächst mit Sonoff Touch und S20, zwischenzeitlich mit einer Vielzahl von Geräten, die per USB-Adapter oder mit der Methode aus dem [https://www.heise.de/ct/artikel/Tuya-Convert-IoT-Geraete-ohne-Loeten-vom-Cloud-Zwang-befreien-4283623.html Tuya-Convert]-Projekt des heise-Verlags auf Tasmota umgeflasht wurden.&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen - Schalter ===&lt;br /&gt;
Die RAW-Definition kann dann beispielsweise wie folgt ergänzt werden:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
 defmod MQTT2_DVES_9B01BD MQTT2_DEVICE DVES_9B01BD&lt;br /&gt;
 attr MQTT2_DVES_9B01BD IODev m2server&lt;br /&gt;
 attr MQTT2_DVES_9B01BD devStateIcon on:FS20.on:off off:FS20.off:on&lt;br /&gt;
 attr MQTT2_DVES_9B01BD readingList DVES_9B01BD:tele/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/LWT:.* LWT\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/UPTIME:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/SENSOR:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO1:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:tele/DVES_9B01BD/INFO3:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/RESULT:.* { json2nameValue($EVENT) }\&lt;br /&gt;
    DVES_9B01BD:stat/DVES_9B01BD/STATE:.* { json2nameValue($EVENT) }&lt;br /&gt;
 attr MQTT2_DVES_9B01BD room MQTT2_DEVICE&lt;br /&gt;
 attr MQTT2_DVES_9B01BD setList on cmnd/DVES_9B01BD/POWER on\&lt;br /&gt;
    off cmnd/DVES_9B01BD/POWER off\&lt;br /&gt;
    reboot cmnd/DVES_9B01BD/Restart 1&lt;br /&gt;
 attr MQTT2_DVES_9B01BD webCmd on:off:reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manuelle Anpassungen - Dimmer ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Dieses Beispiel ist nur bedingt zur Nachahmung zu empfehlen: Prinzipiell kann man Readings und setter in MQTT2_DEVICE fast nach Belieben benennen. Wählt man allerdings &amp;lt;i&amp;gt;FHEM-typische&amp;lt;/i&amp;gt; Namen, kann dies sehr zur Vereinfachung beitragen. Z.B. wird eine Sprachssteuerung bei einem Dimmer üblicherweise automatisch korrekt eingestellt werden, wenn der für die Helligkeit zuständige setter z.B. &amp;lt;i&amp;gt;pct&amp;lt;/i&amp;gt; (oder &amp;lt;i&amp;gt;brightness&amp;lt;/i&amp;gt;) heißt, oder eine abzufragende Temperatur &amp;lt;i&amp;gt;temperature&amp;lt;/i&amp;gt;. Entsprechendes gilt im Rahmen von &amp;lt;i&amp;gt;devspec-Abfragen&amp;lt;/i&amp;gt;.}}Bei einem Dimmer sind einige zusätzliche Anpassungen vorzunehmen. Ein Dimmer wird über &#039;&#039;&#039;POWER&#039;&#039;&#039; geschaltet und über &#039;&#039;&#039;Dimmer&#039;&#039;&#039; gedimmt. Damit das funktioniert, müssen ein stateFormat und devStateIcon zusammenarbeiten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr MQTT2_DVES_2DF34D devStateIcon 10\d.*:dim100%@orange:off 1\d.*:dim12%@orange:off 2\d.*:dim18%@orange:off 3\d.*:dim31%@orange:off 4\d.*:dim43%@orange:off 5\d.*:dim50%@orange:off 6\d.*:dim62%@orange:off 7\d.*:dim68%@orange:off 8\d.*:dim81%@orange:off 9\d.*:dim93%@orange:off 0:FS20.off:on .*:FS20.off@orange:off&lt;br /&gt;
 attr MQTT2_DVES_2DF34D stateFormat {if(ReadingsVal($name,&amp;quot;POWER&amp;quot;,0)eq&amp;quot;off&amp;quot;){0}else{ReadingsVal($name,&amp;quot;Dimmer&amp;quot;,0)}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun kann man über das Icon ein- und ausschalten und der Zustand des Dimmers wird korrekt angezeigt.&lt;br /&gt;
&lt;br /&gt;
Es fehlt noch ein Slider, um auch dimmen zu können. Zusätzlich muss setList noch um Dimmer erweitert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 attr MQTT2_DVES_2DF34D setList on cmnd/dimmer/POWER on\&lt;br /&gt;
 off cmnd/dimmer/POWER off\&lt;br /&gt;
 Dimmer cmnd/dimmer/Dimmer&lt;br /&gt;
 attr MQTT2_DVES_2DF34D webCmd Dimmer&lt;br /&gt;
 attr MQTT2_DVES_2DF34D widgetOverride Dimmer:slider,0,1,100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
===== Allgemeines =====&lt;br /&gt;
Für gängige Tasmota-Geräte stehen &#039;&#039;templates&#039;&#039; bereit, mit denen sich diese schnell konfigurieren lassen. &lt;br /&gt;
Beachten Sie dazu den Abschnitt &#039;&#039;attrTemplate&#039;&#039; in [[MQTT2 DEVICE#attrTemplate|MQTT2_DEVICE]]. Bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen werden dabei weitere Geräte angelegt und konfiguriert.{{Hinweis|Bitte attrTemplates nicht verwechseln mit templates, die auf den Tasmota- bzw. Blackadder-Seiten angeboten werden, welche zur Konfiguration der firmware genutzt werden können! Es sollte zunächst die firmware korrekt eingerichtet werden, so dass das Gerät selbst direkt auf dessen Web-Interface korrekt bedient werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===== Kein passendes attrTemplate vorhanden? =====&lt;br /&gt;
Exisitert (noch) kein passendes attrTemplate, ist zu empfehlen, zunächst das &amp;quot;&#039;&#039;tasmota_basic&#039;&#039;&amp;quot; anzuwenden. Dieses führt einige Basiskonfigurationen durch, die für FHEM hilfreich sind, z.B. wird die firmware so eingestellt, dass Schaltzustände in Kleinschreibung übermittelt werden, statt der defaults &amp;quot;ON&amp;quot; bzw. &amp;quot;OFF&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allerdings stellt dieses das &#039;&#039;autocreate&#039;&#039; an dem MQTT2_DEVICE auf 0, was dann nicht optimal ist, wenn man weitere Readings aus dem Gerät erwartet, etwa, weil zusätzliche Sensoren vorhanden sind. In diesem Fall empfiehlt es sich, das &#039;&#039;autocreate&#039;&#039;-Attribut an dem MQTT2_DEVICE zu löschen, damit alle weiteren Informationen verarbeitet werden und ggf. im &#039;&#039;jsonMap&#039;&#039;-Attribut nur die Angabe &amp;quot;&#039;&#039;POWER1:state&#039;&#039;&amp;quot; zu belassen.&lt;br /&gt;
&lt;br /&gt;
=== on-for-timer ===&lt;br /&gt;
Um z.B. ein Relais nur für einen Zeitraum anzuschalten, kann man bei Tasmota-Geräten zwischen mehrere Varianten wählen. Ohne speziellen &#039;&#039;setter&#039;&#039; in der &#039;&#039;setList&#039;&#039; werden die &#039;&#039;&#039;SetExtensions&#039;&#039;&#039; verwendet. Timer laufen damit innerhalb FHEM. Da diese intern als temporäres [[at]] ausgeführt werden, sind diese auch noch nach einem FHEM-Neustart vorhanden, sofern FHEM ordnungsgemäß beendet und neu gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Die Tasmota-firmware bietet ergänzend dazu zwei Möglichkeiten an, bei denen der Timer direkt auf dem ESP-Microcontroller verwaltet wird:&lt;br /&gt;
&lt;br /&gt;
==== delay ==== &lt;br /&gt;
Zeile zur Erweiterung der &#039;&#039;setList&#039;&#039; (Attributeingabe via FHEMWEB!):&lt;br /&gt;
 on-for-timer {my $duration = $EVTPART1*10; &#039;cmnd/DVES_575127/Backlog POWER1 1; delay &#039;.$duration.&#039;; POWER1 0&#039;}&lt;br /&gt;
&lt;br /&gt;
Ohne Auswirkungen auf alles, was danach kommt, hat aber den Nachteil, dass die möglichen Zeitspannen auf 3600 1/10 Sekunden begrenzt sind (siehe [https://tasmota.github.io/docs/Commands/#delay Commands - Tasmota Delay]), also 6 Minuten.&lt;br /&gt;
&lt;br /&gt;
====pulseTime ====&lt;br /&gt;
Zeile zur Erweiterung der &#039;&#039;setList&#039;&#039; (s.o.):&lt;br /&gt;
 on-for-timer {my $duration = $EVTPART1 &amp;lt; 11.2 ? $EVTPART1*10 : $EVTPART1+100; &#039;CMNDTOPIC/Backlog pulseTime1 &#039;.$duration.&#039;; POWER1 1&#039;}&lt;br /&gt;
Auch hier sind die möglichen längsten Einschaltdauern begrenzt, allerdings ist diese mit 18h deutlich länger als mit &#039;&#039;delay&#039;&#039;. Diese Implementierung hat den Nachteil, dass der ESP-Microcontroller die jeweils letzte pulseTime auch für alle weiteren &amp;quot;normalen&amp;quot; Einschaltvorgänge berücksichtigt, das Relais also ebenfalls nach Ablauf der übermittelten pulseTime abgeschaltet wird; dies gilt allerdings ohne explizites &#039;&#039;save&#039;&#039; nur bis zum nächsten reboot des Microcontrollers.&lt;br /&gt;
&lt;br /&gt;
Da nach dem ersten pulseTime setzten, diese immer benutzt wird, kann man mit einem kleine Workaround das Device normal arbeiten lassen. Dafür wird bei jedem anderem Befehl, aus der PulseTime, der Timer deaktiviert.&lt;br /&gt;
Hierfür machen wir uns zu nutzen, dass man mehrere Befehle gleichzeitig an Tasmota senden kann (backlog). Ob diese Lösung auch mit anderen MQTT Firmwares funktioniert, kann ich nicht sagen. Es wurde lediglich mit Tasmota getestet.&lt;br /&gt;
Wir senden also, bevor wir den eigentlich Tasmota Befehl zum Ein- oder Ausschalten schicken, einen Befehl zum deaktivieren des Timers: &amp;quot;pulseTime 0&amp;quot;&lt;br /&gt;
Hier ein Beispiel: (das entsprechende device &amp;quot;DEV_611F3E&amp;quot; muss gegen das eigene ersetzt werden)&lt;br /&gt;
 off:noArg    cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 0&lt;br /&gt;
 on:noArg     cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 1 &lt;br /&gt;
 toggle:noArg cmnd/DVES_611F3E/backlog pulseTime 0; POWER1 2&lt;br /&gt;
&lt;br /&gt;
=== zigbee2tasmota ===&lt;br /&gt;
[https://tasmota.github.io/docs/Zigbee/ zigbee2tasmota] ist eine Erweiterung der Tasmota-firmware für Microcontroller, insbesondere dem ESP8266 (und ESP32)(link), über die einige ZigBee-Chipsätze (insbesondere TI CC2530) als [[ZigBee#Koordinator_.28ZigBee_coordinator.2C_ZC.29|Coordinator]] eingebunden werden können, um ein ZigBee-Netzwerk aufzubauen.&lt;br /&gt;
{{Hinweis|Stand 08/2020 war die Einbindung anderer Chipsätze erst in einem Alpha-Stadium; die Zahl der über einen CC2530 einbindbaren ZigBee-Geräte ist daher derzeit relativ begrenzt (ca. 16)!}}&lt;br /&gt;
Auch für diese Lösung stehen einige &#039;&#039;attrTemplate&#039;&#039; zur Verfügung. Nähere Informationen hierzu sind dem Artikel [[Zigbee2Tasmota-MQTT]] zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
== ESPurna ==&lt;br /&gt;
ESPurna ist eine weitere alternative firmware für ESP8266-basierte Geräte, Details sind der [https://github.com/xoseperez/espurna/wiki Projektseite] zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
Das Format, in dem ESPurna Daten sendet, unterscheidet sich v.a. darin, dass bool&#039;sche Werte als 0 oder 1 gesendet werden, und nicht wie sonst üblich als &amp;quot;on&amp;quot; oder &amp;quot;off&amp;quot; oä.. Es stehen einige Mustertemplates zur Verfügung, um diese Art der Payload in FHEM-konforme Werte zu überführen.&lt;br /&gt;
&lt;br /&gt;
== Shelly ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Auch für Shelly-Geräte steht eine Auswahl an [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|templates]] bereit.&lt;br /&gt;
Beachten Sie auch hier, dass uU. bei Anwendung eines template mit &amp;quot;split&amp;quot; im Namen weitere Geräte angelegt und konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig senden die Shelly-Geräte ihren kompletten Status alle 30 Sekunden. Dies kann man über den Parameter &#039;&#039;mqtt_update_period&#039;&#039; in den &#039;&#039;settings&#039;&#039; ändern, allerdings ist dieser nur über die HTTP-Schnittstelle des Shelly verfügbar. Um diese Statusupdates abzustellen, kann über den Browser folgender Befehl verwendet werden:&lt;br /&gt;
 http://&amp;lt;ip-des-shelly&amp;gt;/settings?mqtt_update_period=0, &lt;br /&gt;
Soweit bekannt, werden dann nur statische updates ausgeschaltet, z.B. für das Relay bzw. angeschlossene Taster oder Schalter; insbesondere Verbrauchswerte werden dennoch aktualisiert.&lt;br /&gt;
&lt;br /&gt;
=== Shelly1 ===&lt;br /&gt;
&lt;br /&gt;
=== Shellybulb ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shellybulb erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate  angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
 Internals:&lt;br /&gt;
   CFGFN     &lt;br /&gt;
   CID        shellybulb_3CC533&lt;br /&gt;
   DEF        shellybulb_3CC533&lt;br /&gt;
   DEVICETOPIC MQTT2_shellybulb_3CC533&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   NAME       MQTT2_shellybulb_3CC533&lt;br /&gt;
   NR         246&lt;br /&gt;
   STATE      ???&lt;br /&gt;
   TYPE       MQTT2_DEVICE&lt;br /&gt;
   READINGS:&lt;br /&gt;
     2018-12-12 19:28:08   status_blue     0&lt;br /&gt;
     2018-12-12 19:28:08   status_brightness 61&lt;br /&gt;
     2018-12-12 19:28:08   status_effect   0&lt;br /&gt;
     2018-12-12 19:28:08   status_gain     26&lt;br /&gt;
     2018-12-12 19:28:08   status_green    0&lt;br /&gt;
     2018-12-12 19:28:08   status_ison     true&lt;br /&gt;
     2018-12-12 19:28:08   status_mode     color&lt;br /&gt;
     2018-12-12 19:28:08   status_red      255&lt;br /&gt;
     2018-12-12 19:28:08   status_temp     3250&lt;br /&gt;
     2018-12-12 19:28:08   status_white    0&lt;br /&gt;
 Attributes:&lt;br /&gt;
   IODev      MQTT2_FHEM_Server&lt;br /&gt;
   readingList shellybulb_3CC533:shellies/shellybulb-3CC533/color/0/status:.* { json2nameValue($EVENT, &#039;status_&#039;) }&lt;br /&gt;
   room       MQTT2_DEVICE&lt;br /&gt;
[[Bild:MQTT2 Shellybulb.png|400px|thumb|Darstellung in FHEMWEB nach Anwendung des template]]Dann bei den set-Anweisungen das attrTemplate &amp;quot;shellybulb&amp;quot; auswählen und setzen. Es erscheint eine Abfrage, ob die vorhandenen Readings gelöscht werden sollen. Diese bitte bestätigen und die Seite neu laden. Danach einmal An- und Ausschalten, damit die Readings auch durch einen neuen Status initialisiert werden und die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
=== Shelly Plug S ===&lt;br /&gt;
Über die Leistungsmessung des Shelly Plug S lässt sich sehr einfach auch eine Erkennung des Betriebszustandes des angeschlossenen Gerätes realisieren. Dazu stellt man zuerst fest, wieviel Leistung das Gerät in jedem Betriebszustand verbraucht und kann dann z.B. für einen angeschlossenen Fernseher, der im Standby 1 Watt und im Betrieb &amp;gt; 100 Watt verbraucht, den Zustand erkennen und als on/off Status anzeigen. Dazu wird das state Reading wie folgt definiert:&lt;br /&gt;
  attr readingList shellies/shellyplug-s-123456/relay/0/power:.* { { state =&amp;gt; $EVTPART0&amp;lt;100?&amp;quot;off&amp;quot;:&amp;quot;on&amp;quot; } }&lt;br /&gt;
Der Status des MQTT2 Devices zeigt dann bei &amp;lt;100W &amp;quot;off&amp;quot; und sonst &amp;quot;on&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
=== HTTP-Commands ===&lt;br /&gt;
In diesem {{Link2Forum|Topic=102369|LinkText=Forumsbeitrag}} wird eine Lösung vorgestellt, um über [[99 myUtils anlegen|myUtils-Code]] weitere Kommandos bereitzustellen, die sonst nur direkt über das Web-Interface zu erreichen sind.&lt;br /&gt;
&lt;br /&gt;
== Shelly Gen2 ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Shelly mit dem WLAN verbinden, entweder über die Shelly APP oder per Laptop auf den Offenen AP des Shelly verbinden und dann übers WebUI des Shelly mit dem Heimischen WLAN verbinden. Über die APP geht dies meist etwas einfach und schneller, besonders wenn man mehrere Shelly Geräte hinzufügen möchte. Durch die BT Unterstützung der Gen2 Geräte, klappt dies meist auch deutlich schneller und zuverlässiger als noch bei Gen 1 Geräten. &lt;br /&gt;
Nachdem der Shelly mit dem WLAN verbunden ist, sollte die Firmware überprüft und gegebenenfalls aktualisiert werden (Stand Anfang 2022 scheint die firmware noch nicht voll ausgereift gewesen zu sein, da dass insbesondere die MQTT-Schnittstelle immer wieder überarbeitet wurde). Bitte KEINE BETA Versionen installieren, wenn nicht dazu aufgefordert wurde.&lt;br /&gt;
Nach dem, durch das Update ausgelösten, Neustart kurz Prüfen ob die Uhrzeit passt, wenn trotz richtiger Zeitzone die Uhrzeit nicht stimmt hilft ein weiterer Neustart.&lt;br /&gt;
Nun auf Networks| Internet (leider in APP und WebUI unterschiedlich), hier auf MQTT und die Einstellungen für den verwendeten MQTT Server treffen. Diese Einstellungen werden auch wieder durch Neustart übernommen.&lt;br /&gt;
=== Shelly Plus 1 ===&lt;br /&gt;
Zunächst muss man einen Statusupdate des Shelly erzwingen (Aus- und Einschalten, physikalisch oder per Web-UI), damit das Gerät bei eingeschaltetem autocreate angelegt wird. Dies sieht zunächst so aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
defmod MQTT2_shellyplus1_441793a34044 MQTT2_DEVICE shellyplus1_441793a34044&lt;br /&gt;
attr MQTT2_shellyplus1_441793a34044 readingList shellyplus1_441793a34044:shellyplus1-441793a34044/online:.* online\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/mqtt:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/events/rpc:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/sys:.* { json2nameValue($EVENT) }\&lt;br /&gt;
shellyplus1_441793a34044:shellyplus1-441793a34044/status/switch_0:.* { json2nameValue($EVENT) }&lt;br /&gt;
attr MQTT2_shellyplus1_441793a34044 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 IODev m2s&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 available_updates_beta_version 0.10.0-beta6&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 cfg_rev 7&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 connected true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 dst shellyplus1-441793a34044/events&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 fs_free 237568&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 fs_size 458752&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 id 0&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 mac 441793A34044&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 method NotifyStatus&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 online true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 output false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_mqtt_connected true&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_id 0&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_output false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_switch_0_source WS_in&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_switch_0_temperature_tC 39.88&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_switch_0_temperature_tF 103.78&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 params_sys_available_updates_beta_version 0.10.0-beta6&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 params_ts 1646474952.66&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_rssi -57&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_ssid WLAN-Alex&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_sta_ip 192.168.177.167&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:24 params_wifi_status got ip&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 ram_free 179764&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 ram_size 249456&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 restart_required false&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 source WS_in&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 src shellyplus1-441793a34044&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 temperature_tC 39.9&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:09:12 temperature_tF 103.9&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 time 11:08&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 unixtime 1646474911&lt;br /&gt;
setstate MQTT2_shellyplus1_441793a34044 2022-03-05 11:08:31 uptime 7&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die set Anweisung unterhalb der Device Übersicht können wir ein attrTemplate wählen; shellyPlus_1&lt;br /&gt;
Es erscheint eine kurze Übersicht was im Template enthalten ist, dieses befindet sich noch im Aufbau und wird aktuell von der Community aufgebaut und weiterentwickelt. Mit einem Klick auf „set“ laden wir das Template und übernehmen die Einstellungen für den Shelly Plus 1.&lt;br /&gt;
Damit ist der Shelly bereit, im Status wird neben dem Namen auch der Onlinestatus des Shellys (grüner | roter Punkt) so wie eine Lampe mit Toggle (on | off) Funktion und die Temperatur des Shellys angezeigt. Darüber hinaus verschwindet die Lampe und wird durch einen klickbaren Hinweis ersetzt, wenn ein Neustart des Shellys nötig ist.&lt;br /&gt;
&lt;br /&gt;
=== Tipps ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=So nimmt man bei Verwendung eines normalen Schalters (eine Stellung EIN eine AUS) gerne den „Flip“ Mode – damit wird der Shelly IMMER umgeschaltet, egal in welche Stellung der Schalter sich bewegt („Kreuzschaltung“). Diese Einstellungen trifft man grundlegend im WebUI des Shelly (oder  APP) unter „Channel settings“.&lt;br /&gt;
Für den „Flip“ müssen wir die Grundeinstellung des „Power on default“ auch ändern (gleiche Seite) - persönlich wähle ich „Restore last“, also: nach Stromausfall wird der letzte Zustand wieder hergestellt; grundsätzlich gehen alle Modi außer „Match input“.&lt;br /&gt;
}}&lt;br /&gt;
Das aktuelle Template wurde um die Funktion erweitert, den Button Mode umzuschalten. In den meisten Fällen legt man sich auf eine Schaltmethode fest, welche zum Hardware Setup passt.&lt;br /&gt;
&lt;br /&gt;
Manchmal will man aber vielleicht den Hardware Schalter deaktivieren, nennen wir es „Kindersicherung“. Bei Shelly heißt das „detached“.&lt;br /&gt;
Diese Funktion wurde ins Template als „in_mode“ Übernommen. Mögliche set Befehle sind „flip“, „detached“ „toggle“. Bedingung zur Verwendung ist: „relay power on default“ darf NICHT „Match input“ sein. Sollte Follow statt Flip bevorzugt werden, müsste entsprechende Zeile in der setList von „flip“ auf „follow“ angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Der Befehlt lässt sich mit dem webCmd in_mode auch schnell zugänglich in die Übersicht vom Shelly setzen, so erhält man neben dem Status ein Dropdown mit flip detached  und toggle zum schnellen umschalten. Mit webCmdLabel kann man noch einen Namen für das Dropdown setzen.&lt;br /&gt;
&lt;br /&gt;
== OpenMQTTGateway ==&lt;br /&gt;
Um verschiedene Systeme wie BLE usw. auf MQTT zu bringen bietet sich [https://github.com/1technophile/OpenMQTTGateway OpenMQTTGateway] an, z.B. wird für das Auslesen vieler BLE-Seonsoren lediglich ein ESP32-Board ohne Zusatzhardware (ab ca. 5,- Euro in Fernost erhältlich) benötigt, auf das dann eine vorkompilierte firmware geflasht wird (hierfür wird ein USB-seriell-Wandler benötigt).&lt;br /&gt;
&lt;br /&gt;
Nähere Details sind im Artikel [[OpenMQTTGateway]] zu finden.&lt;br /&gt;
&lt;br /&gt;
== 8-Port-Ethernet Board ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
datei:8-relais-ethernetboard closed.jpg|mit Gehäuse&lt;br /&gt;
datei:8-Port-MQTT-Relais-Board.jpg|ohne Gehäuse&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In diesem {{Link2Forum|Topic=107536|Message=1016379|LinkText=Forenbeitrag}} bzw. dem betreffenden Thread wurde ein Relais-Board vorgestellt, mit dem 8 Relais über Ethernetkabel verbunden werden, die Kommunikation erfolgt dann über MQTT. Über die verwendete Software ist wenig bekannt, es könnte jedoch sein, dass diese Art der Einbindung auch bei weiteren Boards funktioniert, die einen bestimmten Ethernet-Chipset von TI (DP83848) und eine Cortex M3 MCU verwenden.&lt;br /&gt;
&lt;br /&gt;
== Milight-Bridge ==&lt;br /&gt;
=== Vorbemerkung ===&lt;br /&gt;
Der [https://github.com/sidoh/esp8266_milight_hub esp8266_milight_hub] ist ein open source- Projekt, mit dem auf Basis von &#039;&#039;openmili&#039;&#039; eine Vielzahl von MiLight-Geräten gesteuert werden können. Der MiLight-Hub erstetzt dabei eine beliebige Zahl von Milight-Bridges und ist auch zu verschiedenen Versionen des MiLight-Protokols kompatibel. Allerdings lassen sich manche MiLight-Geräte nicht an die Bridge anlernen, und es werden auch nicht alle Fernbedienungs-Typen voll unterstützt.&lt;br /&gt;
Neben MQTT kann dieser auch mit HTTPMOD oder Wifilight (bzw. den MiLight-Modulen) gesteuert werden. Die Hardware entspricht dabei im Wesentlichen einem MySensors-Wifi-Gateway&amp;lt;ref&amp;gt;Es wird lediglich ein anderer CS-PIN genutzt. Dies kann einfach in der Web-Oberfläche der Firmware umgestellt werden.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Hier wird vorausgesetzt, dass eine funktionierende Bridge vorhanden ist und die zu steuernden Leuchtmittel mit dem Hub bereits verbunden (gepairt) sind bzw. entsprechende Fernbedienungs-Signale empfangen werden können (bei vorhandenem pairing eines Leuchtmittels an die Fernbedienung).&lt;br /&gt;
Der Vorteil der MQTT-Lösung liegt darin, dass man bei kompatiblen Fernbedienungen auch direkt Informationen über Schaltvorgänge erhält, die mit der Fernbedienung ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellungen am MiLight-Hub ===&lt;br /&gt;
Die zum FHEM-Server bzw. dem MQTT2_SERVER passenden Vorgaben sind im Web-Interface des Hub einzustellen. Gegebenenfalls passen Sie die vom Hub zurückzugebenden Elemente im Web-Interface des Hub an.&lt;br /&gt;
Die Einstellungen für &#039;&#039;MQTT topic pattern&#039;&#039; usw. können auf den default-Werten&amp;lt;ref&amp;gt;Diese sind: &amp;lt;br&amp;gt;&#039;&#039;milight/:device_id/:device_type/:group_id&#039;&#039; für &amp;quot;topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/updates/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;update topic pattern&amp;quot;&amp;lt;br&amp;gt;&#039;&#039;milight/states/:hex_device_id/:device_type/:group_id&#039;&#039; für &amp;quot;state topic pattern&amp;quot;. Der Autor hat derzeit folgende Infotypen zum Senden markiert: &amp;quot;status, brightness, hue, color, mode, color_temp, bulb_mode, computed_color, hex_color&amp;quot; (enthält eventuell zu viele Angaben. Bei einem Eventhandler muss man uU. darauf achten, dass kurz hintereinander zweimal dasselbe Event kommen kann (für ON/OFF)).&amp;lt;/ref&amp;gt; belassen werden, für die seit Mitte 2019 vorhandene Option, eine LWT-Message zu senden (&#039;&#039;MQTT Client Status Topic&#039;&#039;), tragen Sie &#039;&#039;milight/LWT&#039;&#039; ein und aktivieren &#039;&#039;Detailed&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== FHEM-Devices ===&lt;br /&gt;
[[Bild:MQTT2 MiLight.png|400px|thumb|Milight: Darstellung in FHEMWEB]]&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
Wird nun über den Hub oder eine von diesem erkannte Fernbedienung ein vorhandenes Leuchtmittel geschaltet, wird bei eingeschaltetem autocreate ein erstes Device erstellt, die zunächst erstellte Definition sieht typischerweise etwa so aus:&lt;br /&gt;
 defmod MQTT2_milight_hub_1370325 MQTT2_DEVICE milight_hub_1370325&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 readingList milight_hub_1370325:milight/updates/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_hub_1370325 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses Device wird nun das &#039;&#039;template&#039;&#039; &#039;&#039;&#039;esp_milight_hub_bridge&#039;&#039;&#039; angewandt.&lt;br /&gt;
&lt;br /&gt;
==== Einzelne Leuchtmittel ====&lt;br /&gt;
&lt;br /&gt;
Wird nun nochmals das oben verwendete Leuchtmittel geschaltet, erstellt autocreate ein weiteres Device:&lt;br /&gt;
 defmod MQTT2_milight_0xBE59_1 MQTT2_DEVICE milight_0xBE59_1&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 IODev MQTT2_FHEM_Server&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 readingList milight/states/0xBE59/rgbw/1:.* { json2nameValue($EVENT, &#039;1_&#039;, $JSONMAP) }&lt;br /&gt;
 attr MQTT2_milight_0xBE59_1 room MQTT2_DEVICE&lt;br /&gt;
&lt;br /&gt;
Auf dieses wird nun eines der Bulb-templates angewendet. Wählt man das template X_01_esp_milight_hub_rgbw_bulb, wird eine einfache Variante erstellt, die neben einem toggelnden Icon nur Regler für Helligkeit, die Farbe und zwei Schaltflächen für den Weiß- und Nachtmodus enthält. Wer mehr oder andere Steuerelemente erhalten möchte, verwendet ein anderes template. Nicht benötigte Elemente kann man dabei einfach aus der Definition löschen.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Devices werden genauso erstellt. &lt;br /&gt;
&lt;br /&gt;
Um ein Device zu erhalten, mit dem sich alle Kanäle gleichzeitig steuern lassen, kann das template &#039;&#039;X_01a_esp_milight_hub_make_rgbw_group&#039;&#039; verwendet werden. Dieses verändert nicht das aktuelle Device, sondern erstellt &#039;&#039;&#039;eine Kopie&#039;&#039;&#039;, die dann modifiziert wird. Diese Kopie ist unter dem Namen &#039;&#039;milight_&amp;lt;RemoteID&amp;gt;_0&#039;&#039; im selben Raum zu finden wie das Ausgangsgerät und kann ebenfalls an die eigenen Wünsche angepasst werden. &lt;br /&gt;
&lt;br /&gt;
Weitere Beispiele:&lt;br /&gt;
Beispiel für ein RGB-CCT-Device:&lt;br /&gt;
 defmod Licht_Wz_all MQTT2_DEVICE&lt;br /&gt;
 attr Licht_Wz_all IODev MQTT2_Broker&lt;br /&gt;
 attr Licht_Wz_all eventMap /set_white:Weiss/night_mode:Nacht/white_mode:white/on:on/off:off/ON:on/OFF:off/next_mode:Mode/mode_speed_up:Up/mode_speed_down:Down/&lt;br /&gt;
 attr Licht_Wz_all group Licht&lt;br /&gt;
 attr Licht_Wz_all icon light_control&lt;br /&gt;
 attr Licht_Wz_all readingList milight/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0x5D02/rgb_cct/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 &lt;br /&gt;
 attr Licht_Wz_all room Wohnzimmer&lt;br /&gt;
 attr Licht_Wz_all setList on milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;ON&amp;quot;}\&lt;br /&gt;
 off milight/0x5D02/rgb_cct/0 {&amp;quot;status&amp;quot;:&amp;quot;OFF&amp;quot;}\&lt;br /&gt;
 level milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 hue:colorpicker,HUE,0,1,359 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 command:uzsuSelectRadio,Weiss,Nacht,Mode,Up,Down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 brightness:colorpicker,BRI,0,1,255 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 next_mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_up milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode_speed_down milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 saturation:colorpicker,BRI,0,1,100 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 color_temp:colorpicker,CT,153,1,370 milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 device_id milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 effect milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 mode milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}\&lt;br /&gt;
 commands milight/0x5D02/rgb_cct/0 {&amp;quot;$EVTPART0&amp;quot;:&amp;quot;$EVTPART1&amp;quot;}&lt;br /&gt;
 attr Licht_Wz_all sortby 1&lt;br /&gt;
 attr Licht_Wz_all webCmd command:brightness:saturation:color_temp:hue&lt;br /&gt;
 attr Licht_Wz_all webCmdLabel command\ &lt;br /&gt;
 :brightness:saturation\&lt;br /&gt;
 :color_temp:hue&lt;br /&gt;
==== Ein Leuchtmittel, mehrere Fernbedienungen ====&lt;br /&gt;
Pairt man mehrere Fernbedienungen mit einem Leuchtmittel, sollten auch alle entsprechenden Fernbedienungscodes in das readingList-Attribut übernommen werden. Dazu übernimmt man am einfachsten die Einträge aus den zusätzlichen MQTT2_DEVICEs. Benötigt man das zusätzliche Device nicht separat, um z.B. eine getrennte Gruppenschaltung zu realisieren, kann man dieses löschen. Beispiel-readingList für ein Device, das auf zwei Fernbedienungscodes und zwei Gruppen &amp;quot;hört&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 attr Licht_Wz_all readingList milight/states/0x1234/rgbw/2:.* {json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x1234/rgbw/2:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0x1234/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0x1234/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0xABCD/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0xABCD/rgbw/0:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/states/0xABCD/rgbw/4:.* { json2nameValue($EVENT) }\&lt;br /&gt;
 milight/updates/0xABCD/rgbw/4:.* { json2nameValue($EVENT) }&lt;br /&gt;
&lt;br /&gt;
==== Fernbedienung als Input-Device nutzen ====&lt;br /&gt;
In diesem {{Link2Forum|Topic=103493|LinkText=Thread}} ist dargestellt, wie man eine Fernbedingung des Typs FUT089 dazu verwenden kann, einen [[MPD]] oder Rollladenaktoren zu steuern, oder diese Fernbedienung für [[Hue#HUE-Device|HUEDevice]]-Leuchtmittel zu nutzen.&lt;br /&gt;
Um hier nur Differenz-Meldungen direkt an die betreffende myUtils-Funktion zu übergeben und doppelte Events zu verhindern, sollte hier die readingList so angepasst werden, dass nur Messages aus dem &amp;quot;updates&amp;quot;-Zweig ausgewertet werden: &lt;br /&gt;
 defmod MiLight_RC1_0 MQTT2_DEVICE milight_0xABCD_0&lt;br /&gt;
 attr MiLight_RC1_0 readingList milight/states/0xABCD/fut089/[0-8]:.* {}&lt;br /&gt;
 milight/updates/0xABCD/fut089/0:.* { FHEM::attrT_MiLight_Utils::MPDcontrol(&#039;myMPD&#039;,$EVENT, &#039;Yamaha_Main&#039;) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/1:.* { FHEM::attrT_MiLight_Utils::FUT_to_RGBW(&#039;Licht_Stehlampe_links&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/2:.* { FHEM::attrT_MiLight_Utils::FUT_to_RGBW(&#039;Licht_Stehlampe_rechts&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/3:.* { FHEM::attrT_MiLight_Utils::four_Lights_matrix($EVENT, &#039;Licht_WoZi_Vorn_Aussen&#039;, &#039;Licht_WoZi_Vorn_Mitte&#039;, &#039;Licht_WoZi_Hinten_Aussen&#039;, &#039;Licht_WoZi_Hinten_Mitte&#039;) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/4:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Jalousie_WZ&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/5:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Rollladen_WZ_SSO&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/6:.* { FHEM::attrT_MiLight_Utils::shuttercontrol(&#039;Rollladen_WZ_SSW&#039;,$EVENT) }\&lt;br /&gt;
 milight/updates/0x5D47/fut089/7:.* {}\&lt;br /&gt;
 milight/updates/0x5D47/fut089/8:.* {}&lt;br /&gt;
 attr MiLight_RC_WZ stateFormat CommandSet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== eBus ==&lt;br /&gt;
An dieser Stelle sollen lediglich die Grundzüge erläutert werden, eine ausführliche Anleitung über die Konfiguration des [[EBUS-MQTT2|eBus mit MQTT2 gibt es hier]].&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition am eBus ===&lt;br /&gt;
Vorausgesetzt wird ein laufender eBus-Dämon. Dessen Einrichtung wird im Artikel [[EBUS#Software|EBUS]] beschrieben.&lt;br /&gt;
In der Konfiguration des Dämons ( /etc/default/ebusd ) ist die Kommunikation über MQTT zu aktivieren und die Topic-Struktur festzulegen, z.B. &#039;&#039;ebusd/%circuit/%name&#039;&#039;.&lt;br /&gt;
 --accesslevel=* --mqttport=1883 --mqttjson --mqtthost=IpAdresseMQTTSERVER --mqtttopic=ebusd/%circuit/%name&lt;br /&gt;
{{Hinweis|Nachfolgend wird davon ausgegangen, dass als Vorgabe für mqtttopic &#039;&#039;ebusd&#039;&#039; verwendet wurde. Dies kann geändert werden, es wird aber dringend empfohlen, das mqtttopic in jedem Fall mit &#039;&#039;ebus...&#039;&#039; zu beginnen!}}&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung und Definition  in FHEM ===&lt;br /&gt;
Unabhängig von dem konkret genutzten IO-Modul (MQTT2_SERVER oder MQTT2_CLIENT) sollte an diesem &#039;&#039;&#039;&#039;&#039;vor&#039;&#039;&#039;&#039;&#039; den nachfolgenden Schritten zunächst das autocreate ausgeschaltet werden. Weiter sollte geprüft werden, ob es bereits MQTT2_DEVICE-Geräte gibt, die Einträge in der &#039;&#039;readingList&#039;&#039; enthalten, die vom ebus stammen. Da wir die &#039;&#039;readingList&#039;&#039; anschließend mit erweiterten JSON-Optionen erstellen wollen, müssen zumindest sämtliche &#039;&#039;readingList&#039;&#039;-Attribute entsprechend bereinigt oder gelöscht werden; in der Regel ist es einfacher, diese Geräte nach dem Deaktivieren des autocreate am IO zu löschen.&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollten Sie MQTT2_CLIENT als IO nutzen, sollte für das weitere Vorgehen eine Kopie des MQTT2-&amp;quot;Sammeldevices&amp;quot; genutzt werden, und dessen &#039;&#039;CID&#039;&#039; auf &#039;&#039;ebusd&#039;&#039; geändert werden. Nach Anwendung des ebusd-splitter-templates müssen dann alle den ebus betreffenden Einträge aus der &#039;&#039;readingList&#039;&#039; des &amp;quot;Sammeldevices&amp;quot; gelöscht werden oder diese ganz gelöscht.}}Ist der ebus-Dämon lauffähig und für MQTT konfiguriert, sendet dieser regelmäßige Messages. &lt;br /&gt;
&lt;br /&gt;
Sind die Vorbereitungen abgeschlossen, aktivieren wir &#039;&#039;autocreate&#039;&#039; wieder, allerdings wählen wir als autocreate-Methode &#039;&#039;complex&#039;&#039; aus, da der eBus-Dämon teilweise&amp;lt;ref&amp;gt;Dies betrifft vorrangig die Statusmeldungen&amp;lt;/ref&amp;gt; eine weiter verschachtelte JSON-Struktur zum Versenden der Informationen verwendet als üblich. Danach wird wie bei den anderen o.g. Geräten automatisch ein neues MQTT2_DEVICE angelegt&amp;lt;ref&amp;gt;Bei Verwendung des MQTT2_CLIENT wird dann die &#039;&#039;readingList&#039;&#039; am bereits definierten MQTT2_DEVICE aus der Kopie des &amp;quot;Sammeldevice&amp;quot; automatisch wieder erstellt bzw. gefüllt.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;ebus-Bridge&amp;quot; ====&lt;br /&gt;
Auf das von &#039;&#039;autocreate&#039;&#039; erstellte MQTT2_DEVICE wird nunmehr das template &#039;&#039;eBus_daemon_splitter&#039;&#039; angewendet. Nach einiger Zeit sollte sowohl die readingList an diesem Device erweitert worden sein, wie auch ein oder mehrere neue MQTT2_DEVICE-Geräte angelegt. &lt;br /&gt;
Dieses Device liefert zukünftig Readings zum Dämon selbst, wie dessen &#039;&#039;uptime&#039;&#039;, alle weiteren am eBus angeschlossenen Teilnehmer werden dagegen zweckmäßigerweise durch ein oder mehrere weitere MQTT2_DEVICE-Geräte dargestellt. &lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;attrTemplate&#039;&#039; läd eine weitere &#039;&#039;attrTemplate&#039;&#039;-file und [[99 myUtils anlegen|99_myUtils-Code]] vom FHEM-Server nach. Beides steht dann auch unmittelbar zur Nutzung zur Verfügung. &lt;br /&gt;
==== &amp;quot;ebusd_bai&amp;quot; und weitere Geräte ====&lt;br /&gt;
{{Hinweis|Der eBus-Dämon sendet nicht alle Informationen zu allen am eBus angeschlossenen Geräte automatisch. Diese müssen teilweise erst aktiv angefragt werden. Wie das im einzelnen erfolgen kann, ist dem o.g. Detailartikel zu entnehmen.}}&lt;br /&gt;
Funktioniert die Kommunikation zwischen dem eBus-Dämon und FHEM, sollte nach einigen Minuten zumindest ein weiteres Gerät namens &#039;&#039;MQTT2_ebus_bai&#039;&#039; angelegt worden sein.&lt;br /&gt;
&lt;br /&gt;
== Sonos2Mqtt ==&lt;br /&gt;
Aus einem Versuch heraus ist ein {{Link2Forum|Topic=111711|LinkText=kleines Projekt}} geworden: Die Sonos Umgebung mit Hilfe von sonos2mqtt als generisches MQTT2_DEVICE komfortabel in FHEM einzubinden.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von ein paar Templates ist die grundlegende Einbindung in FHEM nach einer kleinen Installation auf Systemebene schnell erledigt. Es läuft derzeit noch zahlreiche Entwicklung und Ideenfindung, die Fortschritte sind live im Thread oder [[Sonos2mqtt|konsolidiert im Wiki]] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Setup im System ===&lt;br /&gt;
Für dies Funktion wird der nodejs Server [https://github.com/svrooij/sonos2mqtt sonos2mqtt] benötigt. Entweder installiert man den lokal, irgendwo im Netzwerk oder nutzt den [[MQTT2-Module - Praxisbeispiele#Verwendung des Docker Containers|Docker Container.]]&lt;br /&gt;
&lt;br /&gt;
Der nodejs Server sonos2mqtt kann aus Sicht von FHEM irgendwo im Netzwerk stehen - aber er muss im gleichen Netzwerk wie die Sonosplayer stehen. Das UPNP Sonosnetzwerk funktioniert nicht über Netzwerksegmente hinweg.&lt;br /&gt;
&lt;br /&gt;
Eine Beschreibung aller Startparameter für sonos2mqtt findet man [https://svrooij.github.io/sonos2mqtt in der offiziellen Doku].&lt;br /&gt;
&lt;br /&gt;
Erreicht der nodejs Server sonos2mqtt den MQTT Server nicht über - default: localhost, Port 1883, keine Anmeldung&amp;quot; - muss der Parameter --mqtt  gesetzt werden! &lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://myuser:the_secret_password@192.168.0.3:1800&amp;lt;/code&amp;gt;            # alles gesetzt&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://192.168.0.3:1800&amp;lt;/code&amp;gt;                                                                 # IP Adresse und Port gesetzt, keine Anmeldung am MQTT Server&lt;br /&gt;
:&amp;lt;code&amp;gt;--mqtt mqtt://192.168.0.3&amp;lt;/code&amp;gt;                                                                           # IP Adresse gesetzt, Port ist Standard 1883&lt;br /&gt;
&lt;br /&gt;
Erfolgt der Start mit pm2, werden die Parameter mit einem &#039;&#039;zusätzlichen&#039;&#039; doppelten Bindestrich (--) hinter dem nodejs Modul übergeben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
pm2 start sonos2mqtt -- --mqtt mqtt://myuser:the_secret_password@192.168.0.3:1800&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lokales Setup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: nodejs und pm2 ist installiert und für alle Benutzer verfügbar. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo npm install -g sonos2mqtt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Je nach Entwicklungsstand sind auch Betaversionen verfügbar. Für aktuelle Betaversionen wird dieser Zusatz beim Setup verwendet. -&amp;gt; sonosmqtt@3.1.0-beta.1&lt;br /&gt;
&lt;br /&gt;
Wird der sonos2mqtt Server auf einer anderen Maschine eingerichtet, ist der Start entsprechend diesem Absatz [[MQTT2-Module - Praxisbeispiele#Autostart von sonos2mqtt im System mit pm2 .28Alternative.29|Autostart von Sonos2mqtt im System mit pm2]] einzurichten.&lt;br /&gt;
&lt;br /&gt;
=== Setup in FHEM ===&lt;br /&gt;
Man definiert lediglich ein Bridge Device, der Rest wird automatisch erledigt.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: &lt;br /&gt;
* autocreate im System ist aktiv. &lt;br /&gt;
* Der verwendete MQTT2_SERVER steht auf &#039;&#039;&#039;autocreate simple&#039;&#039;&#039; (default/Standard).&lt;br /&gt;
* Templates aktuell - FHEM uptodate oder bei Bedarf in der FHEM Kommandozeile aktualisieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ Svn_GetFile(&amp;quot;FHEM/lib/AttrTemplate/mqtt2.template&amp;quot;, &amp;quot;FHEM/lib/AttrTemplate/mqtt2.template&amp;quot;, sub(){ AttrTemplate_Initialize() }) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei der Anwendung des Templates für die Bridge wird das Attribut devicetopic ausgelesen oder auf default sonos gesetzt! &lt;br /&gt;
&lt;br /&gt;
Wird ein anderer Devicetopic verwendet, muss der bei der Anlage der Bridge gesetzt werden!&lt;br /&gt;
&lt;br /&gt;
Diese Zeilen einzeln in der FHEM Kommandozeile oder als Block in der Raw Definition. &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define SonosBridge MQTT2_DEVICE&lt;br /&gt;
attr SonosBridge room MQTT2_DEVICE&lt;br /&gt;
set SonosBridge attrTemplate sonos2mqtt_bridge_comfort&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das Template sonos2mqtt_bridge_comfort:&lt;br /&gt;
* setzt das Template sonos2mqtt_bridge auf das Device,&lt;br /&gt;
* lädt die Datei 99_sonos2mqttUtils.pm aus dem contrib Ordner nach,&lt;br /&gt;
* definiert ein notify, dies erledigt im weiteren Betrieb die automatische Konfiguration der automatisch erzeugten MQTT2_DEVICEs. &lt;br /&gt;
** mit dem Template sonos2mqtt_speaker (das Template kann auch manuell auf vorhandene Player angewendet werden, die automatische Erzeugung der Player wird aber empfohlen)&lt;br /&gt;
** Ermittelt Detailinformation des jeweiligen Players (vor allem IP Adresse und Modelnumber)&lt;br /&gt;
** Lädt die Sonosgeräte Icons von den UPNP Devices herunter&lt;br /&gt;
** erweitert das setList input Kommando um den TV Eingang (HDMI, spdif) bzw. Line_IN Eingang falls vorhanden (Modelnumber)&lt;br /&gt;
* Die Player werden automatisch einzeln erzeugt wenn sie mqtt Nachrichten senden (Play/Stop) oder (alle sofort) wenn der sonos2mqtt Server gestartet wird. &lt;br /&gt;
&lt;br /&gt;
==== Wozu dient die Bridge? ====&lt;br /&gt;
Sie stellt ein paar wesentliche Funktionen zu Verfügung&lt;br /&gt;
# Auffangen von nicht benötigten MQTT Nachrichten.&lt;br /&gt;
# Erzeugung/Weiterleitung von Nachrichten für die einzelnen Player - damit auch die Erzeugung von separaten Playern nach dem Schema MQTT2_RINCON12345678901234567.&lt;br /&gt;
# Statusanzeige sonos2mqtt als Reading connected (0 offline, 1 connected, 2 Player connected).&lt;br /&gt;
Sie kann zusätzlich als zentrales Device verwendet werden, um die Sonos Umgebung abzubilden, z.B. Readings für Favoriten  u.ä.&lt;br /&gt;
&lt;br /&gt;
==== Start sonos2mqtt lokal ====&lt;br /&gt;
Der Start / Stop des sonos2mqtt Servers innerhalb von FHEM ist nur lokal simpel möglich. Ist der Server irgendwo im Netzwerk oder im Docker Container, muss man andere Möglichkeiten finden. Der Neustart aus FHEM ist zwar praktisch, aber nicht erforderlich. &lt;br /&gt;
&lt;br /&gt;
Wird eine existierenden Sonos Landschaft inhaltlich verändert (Player dazu/weg), muss der Server neu gestartet werden. Werden Player temporär abgeschaltet, merkt das der Server nach einer Zeit selbst, oder man forciert dies mit einem CheckSubscription an der Bridge.&lt;br /&gt;
&lt;br /&gt;
Soll das Modul sonos2mqtt mit seinen default Einstellungen gestartet werden, genügt dieser kurze Befehl (in der FHEM Kommandozeile):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;pm2 start sonos2mqtt&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tipp: Verwendet man anstatt &amp;quot;Befehl&amp;quot; den Syntax {qx(Befehl)} in der FHEM Kommandozeile, wirkt der Befehl zwar blockierend aber die Ausgabe erfolgt im Browser und nicht im Logfile. Mit dem Parameter -s erfolgt keine Ausgabe.&lt;br /&gt;
&lt;br /&gt;
==== Autostart von sonos2mqtt mit FHEM ====&lt;br /&gt;
Der Code startet sowohl das sonso2mqtt Modul sofort und implementiert ein notify für den zukünftigen automatischen Start beim Start von FHEM.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define n_pm2_sonos notify global:INITIALIZED|n_pm2_sonos:start &amp;quot;pm2 -s start sonos2mqtt&amp;quot;&lt;br /&gt;
trigger n_pm2_sonos start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Autostart von sonos2mqtt im System mit pm2 (Alternative) ===&lt;br /&gt;
Der obige Code startet das sonos2mqtt nodejs Modul mit pm2 beim Start von FHEM. Sollte das nicht funktionieren oder nicht ins gesamte Konzept passen (weil z.B. mehrere nodejs Module geladen werden) kann der automatische Start direkt im System erfolgen. Zunächst dafür das oben eventuell schon definierte notify löschen!&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
delete n_pm2_sonos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Der Start des Modul muss nicht mit erhöhten Rechten geschehen! Im Terminal folgendes eingeben (unter dem angemeldeten Benutzer wird sonos2mqtt später immer gestartet):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pm2 start sonos2mqtt&lt;br /&gt;
pm2 startup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Der letzte Befehl &amp;quot;redet&amp;quot;, d.h. es gibt eine Ausgabe in der Art:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[PM2] To setup the Startup Script, copy/paste the following command:&lt;br /&gt;
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Man tut einfach genau das, was dasteht: die letzte Zeile kopieren und wieder einfügen und ausführen. Danach muss man die Konfiguration von pm2 noch sichern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pm2 save&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Verwendung des Docker Containers ===&lt;br /&gt;
Ergänzend zur [https://svrooij.io/sonos2mqtt/getting-started.html#run-sonos2mqtt-in-docker Original Doku:]&lt;br /&gt;
&lt;br /&gt;
Beim Container findet die Konfiguration der Verbindung zum FHEM in den Environment Variablen statt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
environment:&lt;br /&gt;
  - SONOS2MQTT_DEVICE=192.168.56.207 # hier muss einer der Sonos Lautsprecher stehen&lt;br /&gt;
  - SONOS2MQTT_MQTT=mqtt://192.168.56.121:1883 # mqtt2_server FHEM, erweiterter Syntax siehe oben&lt;br /&gt;
  - SONOS_LISTENER_HOST=192.168.56.121 # Docker host IP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sonos2mqtt mit mehr Komfort ===&lt;br /&gt;
Im Wiki Artikel [[Sonos2mqtt]] geht es weiter.&lt;br /&gt;
&lt;br /&gt;
== Owntracks GPS Tracking in FHEM über MQTT - Cloud ==&lt;br /&gt;
Das hier gezeiget Beispiel verwendet eine MQTT Instanz im Internet, die mit einem MQTT2_CLIENT angebunden wird. Da wenig Traffic benötigt wird, genügt z.B. eine kostenfreie Instanz z.B. bei myqtthub (Stand. Dezember 2020)&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man einen MQTT2_SERVER auch direkt verfügbar machen, wenn man sich sicher ist was man da tut! Siehe {{Link2Forum|Topic=99666|Message=1028576|LinkText=diesen Forenbeitrag}}. Das Bridge Device wird dabei genau so benötigt, nur der IODev ist dann der MQTT2_SERVER.&lt;br /&gt;
&lt;br /&gt;
=== owntracks auf dem Smartphone konfigurieren ===&lt;br /&gt;
Menü / Einstellung / Verbindung &lt;br /&gt;
&lt;br /&gt;
Dort sind insgesamt 4 Registerkarten mit Werten zu füllen (Beispiel):&lt;br /&gt;
* Modus -&amp;gt; MQTT&lt;br /&gt;
* Hostname  -&amp;gt; &lt;br /&gt;
** Hostnamen: host.cloud.com &lt;br /&gt;
** Port: 8883 &lt;br /&gt;
** ClientID: ID vom Provider &lt;br /&gt;
** WebSockets (nicht nutzen)&lt;br /&gt;
* Identifikation -&amp;gt; &lt;br /&gt;
** Benutzername: user-name &lt;br /&gt;
** Passwort: user-password &lt;br /&gt;
** GeräteID: mi6 (erscheint in FHEM im Device Namen verwendet)&lt;br /&gt;
** TrackerID: hk (nur zweistellig, erscheint als ID in der owntracks Karte)&lt;br /&gt;
* Sicherheit -&amp;gt; &lt;br /&gt;
** TLS aktivieren&lt;br /&gt;
=== Definition in FHEM ===&lt;br /&gt;
Der MQTT2_CLIENT wird so eingerichtet, man braucht eine andere ClientID als auf dem Smartphone! Stimmt alles sollte das Gerät sofort open anzeigen.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
MQTT2_CLIENT einrichten, autocreate simpel&lt;br /&gt;
define mqtt2Cloud MQTT2_CLIENT host.cloud.com:8883&lt;br /&gt;
attr mqtt2Cloud SSL 1&lt;br /&gt;
attr mqtt2Cloud autocreate simple&lt;br /&gt;
attr mqtt2Cloud clientId fhem1&lt;br /&gt;
attr mqtt2Cloud room MQTT2_IO&lt;br /&gt;
attr mqtt2Cloud username user-name&lt;br /&gt;
set mqtt2Cloud password user-password&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Für die automatische Erzeugung der Trackergeräte in FHEM richtig man zuerst ein Bridge Device ein:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define MQTT2_Cloud_bridge MQTT2_DEVICE&lt;br /&gt;
attr MQTT2_Cloud_bridge IODev mqtt2Cloud&lt;br /&gt;
attr MQTT2_Cloud_bridge autocreate 1&lt;br /&gt;
attr MQTT2_Cloud_bridge room MQTT2_DEVICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Dies wird entweder mit dem Template allgemein  konfiguriert&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set MQTT2_Cloud_bridge attrTemplate MQTT2_CLIENT_general_bridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;oder manuell nur für owntracks eingerichtet&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr MQTT2_Cloud_bridge bridgeRegexp owntracks/[^/]+/([^/:]+).* &amp;quot;owntracks_$1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;MQTT2 Geräte für owntracks werden jetzt automatisch mit dem Namen MQTT2_owntracks_&amp;lt;GeräteID&amp;gt; erzeugt. Diese werden einfach mit dem Template owntracks_device fertig konfiguriert. Bei einem IOS Gerät kann man danach noch das Template owntracks_device_IOS als Erweiterung anwenden.&lt;br /&gt;
&lt;br /&gt;
==== Anwesenheitserkennung ====&lt;br /&gt;
Die Anwesenheit kann im owntracks Device direkt für die selbst definierten Plätze abgelesen werden: entweder steht im reading place der jeweilige Ort oder away. Um hier noch eine gewisse Einheitlichkeit in der Verwendung zu bekommen kann man ein PRESENCE Device verwenden: &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define OT_Mi6 PRESENCE event MQTT2_owntracks_mi6:place:.away MQTT2_owntracks_mi6:place:.&amp;lt;Home&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Im Move Modus erfolgt die Erkennung sehr schnell und damit einige Sekunden eher als eine BT Erkennung im Haus - der Akkuverbrauch steigt enorm. Im Significant Modus kann es schon mal ein paar Minuten dauern - ein relevanter Akku Verbrauch ist nicht erkennbar.&lt;br /&gt;
&lt;br /&gt;
== Owntracks GPS Tracking in FHEM direkt an den eigenen Fhem-Server ==&lt;br /&gt;
Dieses Beispiel beschreibt den direkten MQTT2 Zugang wobei das IODev dann der MQTT2_SERVER ist. Hierzu bitte {{Link2Forum|Topic=99666|Message=1028576|LinkText=diesen Forenbeitrag}} lesen.&lt;br /&gt;
&lt;br /&gt;
=== SSL - Zertifikate fuer fhem erstellen. ===&lt;br /&gt;
Zunächst erstellen wir fuer den MQTT - Server CA zertifizierte SSL Zertifikate. Diese sind identisch mit den SSL - Zertifikaten, welche man evtl. schon fuer den SSL - Zugang seines FHEMWEB - Device erstellt hat. &lt;br /&gt;
&lt;br /&gt;
Hat man den FHEMWEB schon mit eiem SSL Zertifikat (http&#039;&#039;&#039;&amp;lt;u&amp;gt;s&amp;lt;/u&amp;gt;&#039;&#039;&#039;://) abgesichert, muss man daraus nur noch den .p12 - Container erstellen. &lt;br /&gt;
&lt;br /&gt;
Hat man den FHEMWEB noch nicht abgesichert (http://), dann wir es höchste Zeit! &lt;br /&gt;
&lt;br /&gt;
Für die Erstellung dieser SSL Zertifikate folgt dem Wiki-Beitrag [[FHEM mit HTTPS SSL-Zertifikat und eine eigene Zertifizierungsstelle]]. &lt;br /&gt;
&lt;br /&gt;
Die darin beschriebenen Dateien, das cacert.pem sowie den server.p12 - Container müsst ihr nun an euer Mobiltelefon senden.&lt;br /&gt;
&lt;br /&gt;
=== Definition in FHEM ===&lt;br /&gt;
Der MQTT2_Server wird wie folgt eingerichtet.&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define myMQTT2Server_extern MQTT2_SERVER IPV6:1884 global&lt;br /&gt;
attr MQTTBroker_extern SSL 1&lt;br /&gt;
attr MQTTBroker_extern autocreate complex&lt;br /&gt;
attr MQTTBroker_extern event-on-change-reading .*&lt;br /&gt;
attr MQTTBroker_extern group MQTT2&lt;br /&gt;
attr MQTTBroker_extern icon mqtt_broker&lt;br /&gt;
attr MQTTBroker_extern room MQTT2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der MQTT2_Server wird zusätzlich über &amp;quot;allowed&amp;quot; abgesichert:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define allowed_MQTT2Server_extern allowed&lt;br /&gt;
attr allowed_MQTT2Server_extern DbLogExclude .*&lt;br /&gt;
attr allowed_MQTT2Server_extern group MQTT2&lt;br /&gt;
attr allowed_MQTT2Server_extern room  MQTT2&lt;br /&gt;
attr allowed_MQTT2Server_extern validFor myMQTT2Server_extern&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Jetzt vergeben wir noch einen Usernamen und ein Passwort für dieses &amp;quot;allowed&amp;quot; - Device&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
set allowed_MQTT2Server_extern basicAuth MyMQTT2Username MyMQTT2Password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Denkt bitte daran einen eigenen Usernamen und ein eigenes langes, kompliziertes Passwort zu verwenden. Vorsicht bei Sonderzeichen!&lt;br /&gt;
&lt;br /&gt;
=== Port-Freigaben im Router ===&lt;br /&gt;
An dieser Stelle müssen wir den Port 1884 in den Internet - Freigaben eures Routers freigeben.&lt;br /&gt;
&lt;br /&gt;
Bei der Fritz!Box wird dies beispielsweise unter Internet -&amp;gt; Freigaben -&amp;gt; Port-Freigaben gemacht. Die Details hierzu entnehmt bitte der Bedienungsanleitung eures Routers.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist dabei, das ihr das Protokol &amp;quot;TCP&amp;quot; verwendet und der Port 1884 extern nach Port 1884 intern an die IP - Adresse des jeweiligen fhem-Servers übermittelt wird.&lt;br /&gt;
&lt;br /&gt;
=== owntracks auf dem Smartphone konfigurieren ===&lt;br /&gt;
Menü / Einstellung / Verbindung &lt;br /&gt;
&lt;br /&gt;
Dort sind insgesamt 4 Registerkarten mit Werten zu füllen (Beispiel):&lt;br /&gt;
* Modus -&amp;gt; MQTT&lt;br /&gt;
* Hostname  -&amp;gt; &lt;br /&gt;
** Hostnamen: subdomain.dyndns.com &lt;br /&gt;
** Port: 1884 &lt;br /&gt;
** ClientID: Vorname_Nachname &lt;br /&gt;
** WebSockets (nicht nutzen)&lt;br /&gt;
* Identifikation -&amp;gt; &lt;br /&gt;
** Benutzername: MyMQTT2Username &lt;br /&gt;
** Passwort: MyMQTT2Password &lt;br /&gt;
** GeräteID: mi6 (erscheint in FHEM im Device Namen verwendet)&lt;br /&gt;
** TrackerID: hk (nur zweistellig, erscheint als ID in der owntracks Karte. Empfehlung: Die Initialien verwenden.)&lt;br /&gt;
* Sicherheit -&amp;gt; &lt;br /&gt;
** TLS aktivieren&lt;br /&gt;
** CA-Zertifikat: cacert.pem&lt;br /&gt;
** Client-Zertifikat: server.p12&lt;br /&gt;
** Passwort fuer Client-Zertifikat: Passwort für den server.p12 - Container&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, dann erstellt das myMQTT2Server_extern - Device automatisch ein neues Device für jede owntracks-App, die sich an dem myMQTT2Server_extern - Device meldet.&lt;br /&gt;
&lt;br /&gt;
Übrigens: Will man seine gesamte Familie ebenfalls über owntracks tracken, so muss man in den jeweiligen APPs nur die Werte für ClientID, GeräteID und TrackerID individuell gestalten. &lt;br /&gt;
&lt;br /&gt;
An den fhem- Einstellungen müssen keine weiteren Änderungen vorgenommen werden.&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
=== MQTT2_SERVER und MQTT2_CLIENT für Debugging nutzen ===&lt;br /&gt;
Nutzt man das rawEvents-Attribut am MQTT2-IO&amp;lt;ref&amp;gt;z.B. &amp;lt;code&amp;gt;attr MQTT2_FHEM_Server rawEvents .*&amp;lt;/code&amp;gt;, der regex-Filter kann wie üblich angepasst werden&amp;lt;/ref&amp;gt;, kann man den Datenverkehr des Servers am Event-Monitor mitschneiden. Dies ist insbesondere für unbekannte Geräte nützlich, deren Topic- und Payload-Struktur noch nicht bekannt ist.&lt;br /&gt;
Um den kompletten MQTT Datenaustausch mitzuschneiden, kann man mit &amp;lt;code&amp;gt;attr mqtt2_server verbose 5&amp;lt;/code&amp;gt; auch alles ins FHEM-Log schreiben lassen.&lt;br /&gt;
&lt;br /&gt;
=== autocreate funktioniert anscheinend nicht? ===&lt;br /&gt;
In der Regel wird bei neu eingehenden MQTT-Messages über &#039;&#039;autocreate&#039;&#039; ein neues Device erstellt, wenn Nachrichten von einem bisher unbekannten Gerät kommen. Geschieht dies nicht, sollten folgende Punkte geprüft werden:&lt;br /&gt;
# (nur bei MQTT2_SERVER:) Der Client muss eine ClientID angeben, diese darf nicht den defaults von &#039;&#039;mosquito_sub&#039;&#039; entsprechen.&lt;br /&gt;
# Ein allgemeines {{Link2CmdRef|Anker=autocreate|Lang=en|Label=autocreate}}-Device (&#039;&#039;TYPE=autocreate&#039;&#039;) muss vorhanden und aktiv sein.&lt;br /&gt;
# &#039;&#039;autocreate&#039;&#039; am IO muss eingeschaltet sein, was für MQTT2_SERVER bedeutet, dass es nicht auf &amp;quot;0&amp;quot; stehen darf (hier ist dann &#039;&#039;simple&#039;&#039; die aktive Voreinstellung), für MQTT2_CLIENT sollte ebenfalls &#039;&#039;simple&#039;&#039; verwendet werden; dies muss hier allerdings explizit gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wird dann immer noch kein Device erstellt, gibt es in aller Regel ein Device, das bereits einen entsprechenden Eintrag in der readingList enthält, oder es sind keine Nachrichten eingegangen. Überprüfen Sie daher dann ggf. die Einstellungen am Client-Gerät (z.B. im Web-Interface des Shelly oder Tasmota-geflashten ESP8266).&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;autocreate&#039;&#039; am Device schließlich bestimmt, ob die &#039;&#039;readingsList&#039;&#039; erweitert werden darf, wenn Informationen über bisher nicht über die readingList abgedeckte Topics empfangen werden und vom MQTT2-IO als zu diesem Device/ClientID gehörend identifiziert wurden.&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate ===&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Die per attrTemplate jeweils erzeugten Konfigurationen sind Einrichtungsbeispiele, die v.a. eine in sich konsistenze Zusammenstellung der verschiedenen Attribute enthalten. Es steht jedem User frei, diese Ausgangsbasis dann nach seinem Belieben zu ändern. Spätere Änderungen des verwendeten attrTemplate wirken sich nicht automatisch auf die durch frühere Versionen oder den User nachkonfigurierte Geräte aus! Da es vorkommen kann, dass sich die per MQTT übermittelten Daten und Topics ändern, wenn z.B. eine firmware aktualisiert wurden, kann dies Anpassungen am jeweiligen Template erforderlich machen. Grundsätzlich sollen die per attrTemplate für MQTT2_DEVICE verfügbaren attrTemplate jeweils für die aktuellste verfügbare stabile firmware-Version passen.}}&lt;br /&gt;
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion &#039;&#039;[[AttrTemplate|attrTemplate]]&#039;&#039; genutzt werden. &lt;br /&gt;
Die Anwendung für MQTT2_DEVICE ist [[MQTT2 DEVICE#attrTemplate|hier]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|In einigen Fällen kann es vorkommen, dass die template-Bezeichnung zwischenzeitlich geändert wurde. Seit 21.09.2019 erfolgt die Sortierung der auswählbaren templates nicht mehr nur nach den Namen, so dass die entsprechenden Namensbestandteile entfallen sind, die einer besseren Sortierung dienten.}}&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate: Es werden nicht alle templates angezeigt ===&lt;br /&gt;
Siehe Beitrag [[AttrTemplate#Warum finde ich das Template xyz nicht.3F|AttrTemplate: Warum finde ich das Template xyz nicht.]]&lt;br /&gt;
&lt;br /&gt;
=== attrTemplate und Sprachsteuerung ===&lt;br /&gt;
Konfiguriert man MQTT2_DEVICE-Geräte mit attrTemplate, werden in der Regel auch direkt die für die Sprachsteuerung der Geräte erforderlichen Attribute mit gesetzt. Weiterführende Hinweise sind auch zu diesem Teilaspekt von &#039;&#039;[[AttrTemplate|attrTemplate]]&#039;&#039; dem betreffenden Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== bridgeRegexp ===&lt;br /&gt;
[[Datei:Mqtt2 server.png|300px|thumb|left|Logische Verortung der bridgeRegexp-Angaben]]{{Randnotiz|RNTyp=y|RNText=Beachten Sie, dass aufgrund des geschilderten Prinzips eine Änderung einer bridgeRegexp bei einem Gerät auch dazu führt, dass alle Readings eines Geräts und alle readingList-Einträge gelöscht werden.}}Üblicherweise werden alle Informationen, die aus einer Quelle stammen auch &#039;&#039;&#039;&#039;&#039;einem&#039;&#039;&#039;&#039;&#039; &#039;&#039;MQTT2_DEVICE&#039;&#039; zugeordnet, wobei im Falle des dort nicht aktivierten autocreate-Attributs entsprechende readingList-Einträge erzeugt werden. In dem nebenstehenden Schaubild wären dies die Geräte &#039;&#039;A&#039;&#039; bis &#039;&#039;D&#039;&#039;. Das &#039;&#039;&#039;Attribut&#039;&#039;&#039; &#039;&#039;bridgeRegexp&#039;&#039; kann dazu genutzt werden, um neue, bisher unbekannte Topic-Strukturen im Rahmen des autocreate-Vorgangs anders zu strukturieren. Diese werden dabei im Ergebnis einem &#039;&#039;&#039;anderen Device&#039;&#039;&#039; (das ggf. erst erstellt wird) zugeschlagen, sollte eine zu der topic-Struktur passende regex in diesem Attribut gesetzt sein. Für dessen CID und die Bildung des Names wird die im 2. Teil jedes Eintrags als &#039;&#039;newClientId&#039;&#039; hinterlegte Angabe verwendet. In nebenstehendem Schaubild ist dies exemplarisch für die Gerätegruppe &#039;&#039;D&#039;&#039; mit dem &#039;&#039;bridge&#039;&#039;-Device &#039;&#039;D&#039;&#039; und dessen &#039;&#039;Satelliten&#039;&#039; &#039;&#039;D1&#039;&#039; bis &#039;&#039;D4&#039;&#039; dargestellt.&lt;br /&gt;
Dementsprechend sind in den hier aufgeführten Beispielen &#039;&#039;bridgeRegexp&#039;&#039;-Attribute immer dort zu finden, wo ein Gerät oder Dienst dazu dient, mit weiteren, ggf. auf andere Weise kommunizierende Geräte oder Baugruppen zu kommunizieren, wie z.B. für über hier dargestellten &#039;&#039;zigbee2mqtt&#039;&#039; oder &#039;&#039;zigbee2tasmota&#039;&#039;. Ein Sonderfall hierbei ist das template &#039;&#039;MQTT2_CLIENT_general_bridge&#039;&#039; zur Verwendung mit dem [[MQTT2_CLIENT#Anwendung|MQTT2_CLIENT]], denn aus dessen Sicht stammen alle Informationen aus derselben Quelle, nämlich z.B. dem &#039;&#039;mosquitto&#039;&#039;-Server und würden sonst alle einem einem MQTT2_DEVICE zugewiesen.&lt;br /&gt;
&lt;br /&gt;
=== Ständig neue Devices? ===&lt;br /&gt;
MQTT2_SERVER kann zwischen verschiedenen Geräten auch anhand der ClientID unterscheiden. Für jedes neu erkannte Gerät wird auch ein eigenes MQTT2_DEVICE angelegt. Abhilfemaßnahmen:&lt;br /&gt;
==== Vergabe einer ClientID ====&lt;br /&gt;
Die meisten MQTT-fähigen Geräte enthalten Optionen zur Vergabe einer eindeutigen ClientID (siehe das Beispiel des zigbee2mqtt-Dienstes oben). &lt;br /&gt;
Wird keine ClientID vergeben, verwenden manche Clients für jede Verbindung wieder neue ID&#039;s. Es wird empfohlen, möglichst von diesen Einstelloptionen Gebrauch zu machen.&lt;br /&gt;
&lt;br /&gt;
==== Löschen der ClientID aus der readingList usw. ====&lt;br /&gt;
Ist dies nicht möglich oder erwünscht, kann man auch die ClientID aus den readingList-, setList- und getList-Attributen entfernen. Dies ist jedenfalls solange unschädlich als nicht mehrere Geräte identische Topic-Pfade verwenden (daher die Empfehlung, insbesondere bei Tasmota-Geräten den &#039;&#039;default&#039;&#039; &amp;quot;sonoff&amp;quot; zu ändern).&lt;br /&gt;
Beispielsweise wäre &amp;lt;code&amp;gt;attr Milight_Bridge readingList milight_hub_1370325:milight/LWT:.* {json2nameValue($EVENT) }&amp;lt;/code&amp;gt; zu ändern in &amp;lt;code&amp;gt;attr Milight_Bridge readingList milight/LWT:.* {json2nameValue($EVENT) }&amp;lt;/code&amp;gt;&lt;br /&gt;
Die über &#039;&#039;attrTemplate&#039;&#039; verfügbaren Konfigurationen verwenden in der Regel keine ClientID&#039;s bzw. entfernen diese.&lt;br /&gt;
&lt;br /&gt;
=== Wildcards in readingList und setList ===&lt;br /&gt;
Auch in readingList und in setList sollten sich sog. wildcards verwenden lassen. Die Vorgehensweise ist jedoch unterschiedlich:&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;readingList&#039;&#039; werden normale regex-Ausdrücke verwendet. Ein Punkt steht daher z.B. für ein beliebiges Zeichen, alles zwischen zwei Topic-Tree-Elementen (getrennt typischerweise durch einen &amp;quot;/&amp;quot;) kann man so schreiben: &amp;quot;[^/]+&amp;quot; (entspricht: &amp;quot;Mindestens ein Zeichen, das kein Schrägstrich ist&amp;quot;). Ergänzender Hinweis: Will man z.B. Informationen aus einem beliebigen Teil des Topic-trees extrahieren und als Reading-Namen verwenden, kann dies im Rahmen eines Perl-Aufrufs geschehen. Beispiele aus der mqtt2.template-file: OpenMQTTGateway_BT_scanner und OpenMQTTGateway_BT_gtag (letzteres überführt die Information, über welches Gateway bestimmte Informationen eingegangen ist jeweils in eigene Readings pro Gateway).&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;setList&#039;&#039; gelten dagegen die wildcard-Konventionen aus der MQTT-Welt. Dort steht &amp;quot;+&amp;quot; für einen austauschbaren Teil des Topic-Trees (zwischen zwei Schrägstrichen). Anmerkung: Bitte vorher prüfen, ob es wirklich sinnvoll ist, derart unspezifische Publishes vorzunehmen. Meist gibt es &amp;quot;Gruppen-Topics&amp;quot;, auf die mehrere Geräte eines bestimmten Typs hören bzw. man kann dies dort (in der firmware bzw. auf den Konfigurationsseiten der Geräte) einstellen.&lt;br /&gt;
&lt;br /&gt;
=== Die JSON-Daten sollen ausnahmsweise nicht ausgepackt werden ===&lt;br /&gt;
In manchen Fällen ist das automatische Auspacken der JSON-Payload nicht erwünscht. In diesen Fällen kann man einfach den gewünschten Reading-Namen in die readingList eintragen, statt der Anweisung, den JSON an json2NameValue() zu übergeben. Aus&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MQTT_OwnTracks readingList owntracks/clouduser/mi6:.* { json2nameValue($EVENT) }\&lt;br /&gt;
owntracks/clouduser/mi6/waypoints:.* { json2nameValue($EVENT) }\&lt;br /&gt;
owntracks/clouduser/mi6/event:.* { json2nameValue($EVENT) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wird dann:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr MQTT_OwnTracks readingList owntracks/clouduser/mi6:.* json_mi6\&lt;br /&gt;
owntracks/clouduser/mi6/waypoints:.* json_waypoints\&lt;br /&gt;
owntracks/clouduser/mi6/event:.* json_event&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Erforderlichenfalls kann man die Einträge auch doppelt erstellen, um sowohl den JSON wie auch die ausgepackten Readings zu erhalten.&lt;br /&gt;
&lt;br /&gt;
=== Die JSON-Daten vor dem auspacken manipulieren ===&lt;br /&gt;
Aus diversen Gründen kann es zweckmäßig sein, einen bestimmten Wert der JSON-Payload zu ignorieren.&lt;br /&gt;
Z.B. sendet ein Client statt eines Messwertes die Info &amp;quot;bad&amp;quot;. Dieser Fehlerwert soll aus der JSON-Payload &amp;quot;ausgefiltert&amp;quot; werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr DEVICE readingList &amp;lt;your topic&amp;gt;:.* { my $rets = json2nameValue($EVENT,&#039;&#039;,$JSONMAP);; my %cleaned = map { $_,$rets-&amp;gt;{$_} } grep { &#039;bad&#039; ne $rets-&amp;gt;{$_} } keys %{$rets};; return \%cleaned }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder auch einen Wert umzubenennen wenn die JSON-Payload nur ein Objekt beinhaltet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr DEVICE readingList &amp;lt;your topic&amp;gt;:.* {my %h=(0=&amp;gt;&#039;SofortLaden&#039;,1=&amp;gt;&#039;MinPV&#039;,2=&amp;gt;&#039;NurPV&#039;,3=&amp;gt;&#039;Stop&#039;,4=&amp;gt;&#039;Standby&#039;);; return {ChargeMode=&amp;gt;$h{$EVENT}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unnötige Konfigurationsinformationen verwerfen ===&lt;br /&gt;
Siehe Einleitung und den [[MQTT2_CLIENT#ignoreRegexp|ignoreRegexp-Abschnitt zu MQTT2_CLIENT]].&lt;br /&gt;
&lt;br /&gt;
=== Weiterführende Themen ===&lt;br /&gt;
==== Verbinden mehrerer FHEM-Instanzen über MQTT ====&lt;br /&gt;
Wie im Hauptartikel zu [[MQTT#Kommunikation zu sonstigen FHEM-Geräten über MQTT|MQTT]] erläutert, gibt es mehrere Varianten, wie man mit Hilfe von FHEM aus Events an beliebigen Geräten MQTT-Messages erzeugen kann. So kann man z.B. Messdaten eines Systems über ein &#039;&#039;notify&#039;&#039; iVm. einer einfachen &#039;&#039;publish&#039;&#039;-Anweisung an ein zweites FHEM schicken, das diese Daten dann z.B. mit Hilfe der MQTT2-Module auswerten kann.&lt;br /&gt;
Damit dabei Nachrichten unterschiedlicher Quellen auch als getrennte Readings bzw. ggf. auch gesonderten MQTT2_DEVICE-Instanzen zugeordnet werden, sollte man entsprechende Topic-Strukturen wählen, die dann auch mit Hilfe einer geeigneten &#039;&#039;bridgeRegexp&#039;&#039; automatisiert ausgewertet werden kann, siehe z.B. dieser {{Link2Forum|Topic=107145|LinkText=Forumsthread}}:&lt;br /&gt;
 attr MQTT2_myMqttServer bridgeRegexp \&lt;br /&gt;
   SmartHome/MqttGenericBridge2/([A-Za-z0-9]*)/.*:.* &amp;quot;mgb2_$1&amp;quot;&lt;br /&gt;
Dabei werden die betreffenden Informationen der entfernten FHEM-Instanz alle nach dem Schema &#039;&#039;SmartHome/MqttGenericBridge2/&amp;lt;Device-Name&amp;gt;/&amp;lt;Reading-Name&amp;gt;&#039;&#039; versendet.&lt;br /&gt;
&lt;br /&gt;
==== Umstellung von MQTT_DEVICE (und Derivaten wie XiaomiMQTTDevice) zu MQTT2_DEVICE ====&lt;br /&gt;
Wer beabsichtigt, von der Implementierung MQTT+MQTT_DEVICE zu MQTT2-IO und MQTT2_DEVICE zu wechseln, sollte einige Punkte beachten. Viele diesbezügliche Fragen sind vor allem in  {{Link2Forum|Topic=103762|LinkText=diesem Foren-Thread}}&lt;br /&gt;
&lt;br /&gt;
näher erläutert.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=91394|LinkText=Thread, aus dem diese Anleitung ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=91807|LinkText=Thread zum Tasmota-Device}}&lt;br /&gt;
* {{Link2Forum|Topic=97989|LinkText=Thread, aus dem diese Anleitung für den eBus ursprünglich entstanden ist}}&lt;br /&gt;
* {{Link2Forum|Topic=94495|LinkText=Neue templates einreichen}}&lt;br /&gt;
* {{Link2Forum|Topic=94494|LinkText=Fragen, Wünsche und Kritik zu mqtt2.template}}&lt;br /&gt;
* {{Link2Forum|Topic=116162|LinkText=Der MQTT-Workshop für MQTT2-Module}}&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:MQTT]]&lt;br /&gt;
[[Kategorie:IP Components|IP Komponenten]]&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39193</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39193"/>
		<updated>2024-03-19T21:44:40Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ link für debian Image eingebaut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt.&lt;br /&gt;
Verwendet man ein debian Image findet man hier Infos: https://forum.fhem.de/index.php?msg=1307865}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39185</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39185"/>
		<updated>2024-03-17T19:28:38Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ auf aktuelle Bookworm Version umgebaut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Die alte Datei wurde durch einen Dummy ersetzt}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
config=&amp;quot;/boot/firmware/config.txt&amp;quot;&lt;br /&gt;
# für Raspberry Pi OS vor Bookworm &lt;br /&gt;
# config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39181</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=39181"/>
		<updated>2024-03-17T11:42:29Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ Link zur UART Doku eingebaut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration. Siehe auch [https://www.raspberrypi.com/documentation/computers/configuration.html Raspberry Pi Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Es existiert aber ein Link, man kann arbeiten wie bisher.}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
# für Raspberry Pi OS&lt;br /&gt;
config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird darüber ab {{Link2Forum|Topic=135864|Message=1294588|LinkText=diesem Forenbeitrag}} diskutiert.}} &lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39150</id>
		<title>HM-LC-SW1-FM Schaltaktor 1-fach UP</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-LC-SW1-FM_Schaltaktor_1-fach_UP&amp;diff=39150"/>
		<updated>2024-03-01T13:02:40Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Homematic Funk-Schaltaktor 1-fach (Unterputz)&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=HM-LC-SW1-FM.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funk-Schaltaktor&lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Aktor&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230V AC&lt;br /&gt;
|HWPowerConsumption=0,5W&lt;br /&gt;
|HWPoweredBy=Netzspannung&lt;br /&gt;
|HWSize=53x53x30mm&lt;br /&gt;
|HWDeviceFHEM=[[CUL_HM]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Schalten eines angeschlossenen Verbrauchers mittels [[CUL]]/[[CUN]]/[[HMLAN Konfigurator]] und über einen mechanischen spannungsfesten Taster. &lt;br /&gt;
&lt;br /&gt;
== Hinweise zur Hardware-Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;: die Installation von Komponenten mit Netzspannung darf nur von Fachpersonal durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Will man die Funk-Schaltaktoren auch manuell betreiben, d.h. man upgradet eine vorhandene Elektroinstallation, so sind Taster notwendig. Schalter können notfalls mittels einer zusätzlichen Feder zu Taster umgebaut werden, Tastschalter sind leider nicht geeignet. &lt;br /&gt;
&lt;br /&gt;
Aber auch bei Tastern kann es bei einer Tastenbetätigung &amp;gt;4 Sekunden passieren, dass der Aktor in den Anlernmodus versetzt wird und auch in diesem verbleibt oder bei einer erneuten Betätigung sogar zurückgesetzt wird. Dies kann durch eine einmalige Registermanipulation erreicht werden - danach ist der Anlernmodus nach einer kurzen Zeit gesperrt, stattdessen stehen weitere Schaltfunktionen über einen langen Tastendruck zur Verfügung, wie es auch mit verknüpften externen Tastern möglich ist. Details zu dem Eingriff sind [[HomeMatic Register programmieren#confBtnTime - Kurz oder lang und der Konfigurationsmodus|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Je nach vorhandenen Schalterdosen empfiehlt es sich bestehende Schalterdosen nach hinten auszuweiten, d.h. die Abdeckung nach hinten heraus zu brechen, da die Aktoren und Kabel nicht gerade sparsam mit dem Platz umgehen. Alternativ könnte man den Aktor auch in eine zusätzliche Schalterdosen unterbringen und diese mit einem Federdeckel abschließen. Dies hat den Vorteil, dass man auch durch relativ dicke Tapete die LED und somit den Zustand des Aktors ablesen kann.&lt;br /&gt;
&lt;br /&gt;
Der Aktor kann auch gänzlich ohne Taster, also nur per &#039;&#039;set&#039;&#039;-Befehlen durch FHEM oder per gepeerten Geräten gesteuert werden, jedoch muss zumindest für das Anlernen zeitweise ein Taster angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&lt;br /&gt;
Das [[Pairing (HomeMatic)|Pairing]] sollte wie in [[HomeMatic Devices pairen]] beschrieben durchgeführt werden. Hierfür wird ein am Aktor temporär angeschlossener spannungsfester Taster zwingend benötigt.&lt;br /&gt;
&lt;br /&gt;
# Sicherstellen, dass &#039;&#039;autocreate&#039;&#039; aktiv ist&lt;br /&gt;
# Am CUL/HMLAN o.ä. &amp;lt;code&amp;gt;set HMLAN hmPairForSec 60&amp;lt;/code&amp;gt;&lt;br /&gt;
# Binnen 60 Sekunden Aktor in Anlernmodus bringen (Taster 4s festhalten bis LED blinkt) -&amp;gt; Device wird in fhem angelegt, z.B. als CUL_HM_HM_LC_SW1_FM_2BAD45&lt;br /&gt;
# &amp;lt;code&amp;gt;rename &amp;lt;Aktor&amp;gt; &amp;lt;AktorNameNeu&amp;gt;&amp;lt;/code&amp;gt; -&amp;gt; richtigen Namen zuordnen&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
&lt;br /&gt;
Ein exemplarischer Auszug aus der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define LichtTerasse CUL_HM 17AEA6&lt;br /&gt;
attr LichtTerasse devInfo 010100&lt;br /&gt;
attr LichtTerasse firmware 1.9&lt;br /&gt;
attr LichtTerasse hmClass receiver&lt;br /&gt;
attr LichtTerasse model HM-LC-SW1-FM&lt;br /&gt;
attr LichtTerasse room Terasse&lt;br /&gt;
attr LichtTerasse serialNr IEQ00xxxx&lt;br /&gt;
attr LichtTerasse subType switch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Schaltoperationen ===&lt;br /&gt;
&lt;br /&gt;
Der Aktor versteht folgende Aktionen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;name&amp;gt; on -&amp;gt; Schaltet den Aktor ein&lt;br /&gt;
set &amp;lt;name&amp;gt; off -&amp;gt; Schaltet den Aktor aus&lt;br /&gt;
set &amp;lt;name&amp;gt; toggle -&amp;gt; Ändert den Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log-Auszug ===&lt;br /&gt;
&lt;br /&gt;
In FHEM ist nach dem Schalten des HM-LC-SW1-FM folgendes Log zu sehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2012.02.05 16:51:44 2: CUL_HM set LichtTerasse on&lt;br /&gt;
2012.02.05 16:52:14 2: CUL_HM set LichtTerasse off&lt;br /&gt;
2012.02.05 16:52:15 2: CUL_HM set LichtTerasse toggle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nützliches Zubehör ==&lt;br /&gt;
&lt;br /&gt;
Wer den Schaltaktor im Sicherungskasten selbst einbauen möchte, z.B. um einen Stromstossschalter zu ersetzen, dem kann folgendes Zubehör empfohlen werden: Hutschienengehäuse CNMB-4V-Kit, Bestellnr. 532659 bei conrad. Das ist zwar sicher auch nicht VdE-konform, aber besser wie ohne. Alternativ kann auch der [[HM-LC-Sw1-DR 1fach Schaltaktor Hutschiene]] zur direkten Montage auf Hutschienen eingesetzt werde.&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&lt;br /&gt;
Um den HM-LC-SW1-FM in den Anlernmodus zu versetzen, soll man lt. Anleitung den (temporär) angeschlossenen Taster für 4 Sekunden gedrückt halten. Falls dies bei Ihnen nicht funktioniert, so versuchen Sie den Taster einfach mal ca. 7 bis 8 Sekunden gedrückt zu halten (bis die LED des SW1-FM kurz aufleuchtet).&lt;br /&gt;
&lt;br /&gt;
Wenn das Pairing nicht komplett durchläuft (Device zeigt als Status MissingACK und kann nicht von FHEM aus gesteuert werden), dann hilft ggf. ein weiteres Pairing über hmPairSerial.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Ein Integrationsbeispiel ist in [[Jalousie und Beleuchtung in mehreren Räumen]] zu finden. &lt;br /&gt;
&lt;br /&gt;
[https://files2.elv.com/public/07/0767/076793/Internet/76793_um.pdf Anleitung (PDF)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=ConBee&amp;diff=38871</id>
		<title>ConBee</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=ConBee&amp;diff=38871"/>
		<updated>2024-01-07T18:04:14Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Dokumentation und Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|Noch zu vervollständigen und zu verlinken}}&lt;br /&gt;
[[ConBee]] ist ein [[ZigBee]] USB Gateway ([[Interface]]), mit dem herstellerübergreifend ZigBee-Geräte bedient werden können. Unter der Bezeichnung RaspBee ist auch eine Variante als [[Raspberry Pi]] Modul erhältlich. Beide Geräte sind als &#039;&#039;ConBee II&#039;&#039; und &#039;&#039;RaspBee II&#039;&#039; in einer aktualisierten Version erhältlich. Im folgenden werden alle Version als &#039;&#039;ConBee&#039;&#039; bezeichnet und die Ausführungen gelten auch RaspBee; sofern es relevante Unterschiede gibt, wird das ausdrücklich erwähnt.&lt;br /&gt;
{{Infobox Hardware&lt;br /&gt;
|Bild=ConBee_II.jpg&lt;br /&gt;
|Bildbeschreibung=dresden Electronik, ConBee II&lt;br /&gt;
|HWProtocol=ZigBee&lt;br /&gt;
|HWType=[[Interface]]&lt;br /&gt;
|HWCategory=diverse Hersteller&lt;br /&gt;
|HWComm=Funk 2.4 GHz&lt;br /&gt;
|HWChannels=Zigbee Channel 11 15 20 25&lt;br /&gt;
|HWVoltage=5V=&lt;br /&gt;
|HWPowerConsumption=ca. 0,1 W&lt;br /&gt;
|HWPoweredBy=USB&lt;br /&gt;
|HWSize=40 x 17 x 8 (ohne USB Stecker)&lt;br /&gt;
|HWDeviceFHEM=HUEBridge.pm, HUEDevice.pm&lt;br /&gt;
|HWManufacturer=dresden elektronik, Vertrieb: [http://phoscon.de Phoscon] &lt;br /&gt;
}}&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Das ConBee Gateway benötigt/hat keine Cloud-Anbindung. Eine Liste der kompatiblen ZigBee Geräte und Hersteller findet sich [https://phoscon.de/de/conbee2/compatible hier].&lt;br /&gt;
&lt;br /&gt;
== Dokumentation und Setup ==&lt;br /&gt;
* Offizielle deconz [https://phoscon.de/de/conbee/install Installationsanleitung] inklusive docker Installation. Das Ergebnis der Installation ist vom verwendeten System abhängig.&lt;br /&gt;
* Beschreibung der Parameter findet man versteckt im [https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/deCONZ-command-line-parameters deconz Rest-Plugin Wiki]&lt;br /&gt;
Das Setup erzeugt auf einem Pi mit PiOS Lite sieben Services, die bis auf zwei alle disabled sind (&amp;lt;code&amp;gt;systemctl list-unit-files|grep deconz&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Um den minimalen Dienst (deconz) in Betrieb zu nehmen, sind noch folgende Schritte notwendig:&lt;br /&gt;
# Optionale Konfiguration (empfohlen): serielle Schnittstelle und WEB-Port (Standard: 80) einstellen (siehe [[#Problembehebung|Problembehebung]])&lt;br /&gt;
# Start und Test: &amp;lt;code&amp;gt;sudo systemctl start deconz&amp;lt;/code&amp;gt;, mit dem Browser Zugriff auf Phoscon App testen: http://gatewayIP:Portnummer&lt;br /&gt;
# Funktioniert alles, kann man den Service dauerhaft aktivieren: &amp;lt;code&amp;gt;sudo systemctl enable deconz&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Hinweise&#039;&#039;&#039;:  &lt;br /&gt;
* Das Programm deCONZ verwendet die Hardwareschnittstelle und kann nicht mehrfach gestartet werden und dabei die gleiche Hardwareschnittstelle verwenden!  &lt;br /&gt;
* Es gibt eine Ungereimtheit in der Beschreibung des Parameters &#039;&#039;platform&#039;&#039;: es scheint aktuell (April 2021) egal zu sein, ob man &amp;lt;code&amp;gt;-platform minimal&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;--platform minimal&amp;lt;/code&amp;gt; verwendet. &lt;br /&gt;
* Beim deCONZ Aufruf empfiehlt es sich generell, den --dev= Parameter anzuhängen (siehe [[#Problembehebung|Problembehebung]]). &lt;br /&gt;
* deconz.service und deconz-gui.service sind alternative Aufrufe der gleichen Binary - es kann nur einer von beiden Diensten gestartet werden.  &lt;br /&gt;
* Alternativ (nicht empfohlen) kann man das deconz Setup auf einem Desktop System ausführen und den Dienst deconz-gui konfigurieren und aktivieren. Der Zugriff auf die GUI erfolgt dann mit einem VNC Viewer (RealVNC bietet eine portable Version). &lt;br /&gt;
* Wer eine einfache Konfiguration möchte und sich mit docker auskennt, kann die docker Variante wählen. &lt;br /&gt;
Mit der Phoscon Web-App kann man &lt;br /&gt;
* Das Gateway verwalten: Firmware, Backup/Restore, Zeitzone, Sprache&lt;br /&gt;
* ZigBee Geräte anmelden und verknüpfen, Szenen einrichten ...&lt;br /&gt;
* Applikationen mit dem Gateway verbinden, dazu zählt auch das HUEBridge Device von FHEM&lt;br /&gt;
* Zugriff auf die alte WebApp erhalten (Hilfe Seite)&lt;br /&gt;
Mit der deCONZ GUI kann man&lt;br /&gt;
* Die Firmware der Geräte aktualisieren (OTA Plugin)&lt;br /&gt;
* Das Zigbee Netzwerk visualisieren&lt;br /&gt;
* EIne direkte Kommunikation zwischen zwei Geräten - Binding - einrichten&lt;br /&gt;
* ... (noch vervollständigen)&lt;br /&gt;
Um den Zugriff auf die deCONZ GUI zu erhalten, kann man &#039;&#039;&#039;X11 Forwarding&#039;&#039;&#039; verwenden, dazu braucht man nur einen X11 Server (Linux Desktop oder Windows VcXsrv, Xming; beides auf SourceForge.net verfügbar).&lt;br /&gt;
&lt;br /&gt;
Sieh dazu auch den Beitrag im [https://forum.fhem.de/index.php/topic,117470.msg1200344.html#msg1200344 Forum]&lt;br /&gt;
&lt;br /&gt;
Einzeiler für Linux Desktop : &amp;lt;code&amp;gt;ssh -X &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt; &amp;quot;sudo systemctl stop deconz; deCONZ --dev=/dev/ttyACM0;sudo systemctl start deconz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einzeiler für Windows 10 : &amp;lt;code&amp;gt;ssh -X &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt; &amp;quot;export DISPLAY=%COMPUTERNAME%:0.0;sudo systemctl stop deconz; deCONZ --dev=/dev/ttyACM0;sudo systemctl start deconz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp für Windows Einsteiger:&#039;&#039;&#039; &lt;br /&gt;
* Programme wie den X11 Server muss man herunterladen und installieren.&lt;br /&gt;
* Beispiel: VcXsrv wird gestartet mit xlaunch - alles Standard lassen nur im letzten Fenster: &amp;quot;disable access control&amp;quot; aktivieren&lt;br /&gt;
* CMD Box aufmachen mit: Windows Taste + r und dann CMD enter. &lt;br /&gt;
* Funktionstest &amp;lt;code&amp;gt;ssh -X pi@raspberrypi &amp;quot;export DISPLAY=%COMPUTERNAME%:0.0;xcalc&amp;quot;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Problembehebung ===&lt;br /&gt;
&#039;&#039;&#039;Service&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
deCONZ verwendet offenbar beim Start auch per default die Schnittstelle /dev/ttyAMA0 (raspbee Modul). Die Kommunikation eines dort steckenden anderen Moduls wird dabei gestört, die GUI reagiert eine Zeit lang nicht.&lt;br /&gt;
&lt;br /&gt;
Hat man andere Module an AMA0 (UART GPIO) oder an den Standard USB Schnittstellen (ACM0 usw.), muss der deCONZ Aufruf mit den richtigen Schnittstellen Parametern konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
Am zuverlässigsten ist es, die Definition per ID einzutragen. Der richtige Eintrag kann mit leicht abgefragt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lha /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration der Dienste erfolgt mit dem systemctl Editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo systemctl edit --full deconz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und die Zeile ExecStart um diesen Parameter ergänzen (Beispiel): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--dev=/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE1234567-if00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Grundsätzlich ist diese Art der Einbindung auch für [[Mehrere USB-Geräte einbinden|alle seriellen Geräte]] in FHEM dringend anzuraten, wenn andere Services wie deconz auf demselben Server betrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Docker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Im docker run Aufruf verändert man den device Parameter aus der [https://github.com/marthoc/docker-deconz Original Dokumentation] am Einfachsten wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--device=/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE1234567-if00:/dev/ttyACM0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
docker-compose.yml&amp;lt;syntaxhighlight lang=&amp;quot;docker&amp;quot;&amp;gt;&lt;br /&gt;
devices:&lt;br /&gt;
   - /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE1234567-if00:/dev/ttyACM0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Damit wird der Stick vom Host eindeutig mit serial/by-id eingebunden und im Container an der Standard Schnittstelle ttyACM0 bereitgestellt. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;X11 Server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte bei der Verbindung zum X11 Server die Fehlermeldung &#039;&#039;Authorization required&#039;&#039; kommen, kann man beim Start des VcXsrv Server einfach den Haken bei &#039;&#039;disable access control&#039;&#039; setzen.&lt;br /&gt;
&lt;br /&gt;
== Update in Docker Umgebung ==&lt;br /&gt;
Das Update der PhosCon App erfolgt durch ein update des docker containers (Image neu ziehen und Container neu machen -&amp;gt; run bzw. compose up).  &lt;br /&gt;
&lt;br /&gt;
Das Update der Firmware funktioniert nach dieser [https://github.com/marthoc/docker-deconz#updating-conbeeraspbee-firmware offiziellen Beschreibung].&lt;br /&gt;
&lt;br /&gt;
== Unterstützung in FHEM ==&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Alternativ kann man das Model ConBee II auch als Interface für  [[Zigbee2mqtt|zigbee2mqtt]] verwenden und dann die ZigBee-Geräte als [[MQTT2_DEVICE]] in FHEM einbinden.}} &lt;br /&gt;
ConBee wird über das Modul [[Hue|HUEBridge]] und über die deCONZ Software, die Wireless Light Control WebApp und die Phoscon WebApp (kommt zusammen mit deConz) in FHEM eingebunden.&lt;br /&gt;
&lt;br /&gt;
Sensoren werden nicht automatisch erzeugt und müssen manuell angelegt werden. &lt;br /&gt;
&lt;br /&gt;
Tipps:&lt;br /&gt;
* Die HUEBridge funktioniert (noch undokumentiert) auch mit Portangaben, falls nicht Standard Port 80 verwendet wird.&lt;br /&gt;
* Der SSL Port wird im Modul von der API abgefragt und kann in der HUEBridge nicht extra angegeben werden. Dazu darf der SSL Port nicht extern umgemappt werden, sondern der deconz Service muss wissen, auf welchem Port er läuft.&lt;br /&gt;
* Die Bridge muss einmalig mit dem Gateway gepairt werden. Das FHEM Bridge Device erzeugt einen Key, in der Phoscon App muss man im Menüpunkt Gateway/erweitert/App die Funktion {{Taste|verbinden}} wählen.&lt;br /&gt;
&lt;br /&gt;
== Binding einrichten ==&lt;br /&gt;
Um das Licht ohne &amp;quot;Umwege&amp;quot; direkt mit einem Taster/Schalter zu steuern, muss man beide direkt verbinden. Im Zigbee Umfeld wird dies Binding genannt. Beim ConBee Stick erfolgt das mit der deconz-gui.&lt;br /&gt;
[[Datei:Deconz-binding-zeichnung.png|mini|Beispiel Binding Taster -&amp;gt; Lampe]]&lt;br /&gt;
Die Binding Logik geht normalerweise vom steuernden (Taster) zum gesteuerten Device (Lampe).&lt;br /&gt;
# Panel Bind Dropbox anhaken, Kartenreiter (unten!) wird damit angezeigt und muss in den Vordergrund gebracht werden.&lt;br /&gt;
# Bei beiden Geräten die Home Automation Tabelle öffnen: linker grauer &amp;quot;Knopf&amp;quot; im Symbol.&lt;br /&gt;
# Per drag&amp;amp;drop die gewünschte Zeile in der Tabelle (z.B. 006 on/off) in das jeweilige (linke oder rechte) Feld (Source -&amp;gt; Destination) fallen lassen.  &lt;br /&gt;
# Den Bind Knopf drücken.&lt;br /&gt;
Voraussetzung zum Erfolg: Beide Geräte unterstützen ein Binding, damit kann man zumindest Grundfunktionen direkt ausführen.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Wenn alles gut aussieht, aber trotzdem scheinbar keine Kommunikation mit Zigbee Geräten stattfindet (Anlernen geht nicht, auch nicht mit Abstand von wenigen cm) sollte man den Stick mit einer USB Verlängerung (30-50 cm) anschließen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Internetseite des [http://www.dresden-elektronik.de Herstellers] und des [https://phoscon.de Vertreibers]&lt;br /&gt;
* [https://phoscon.de/de/conbee2/compatible Liste der kompatiblen Hersteller / Geräte].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:ZigBee]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_auf_Raspberry_PI_mit_COC_betreiben&amp;diff=38786</id>
		<title>FHEM auf Raspberry PI mit COC betreiben</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_auf_Raspberry_PI_mit_COC_betreiben&amp;diff=38786"/>
		<updated>2023-12-14T08:42:22Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* COC in Betrieb nehmen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um einen [[COC]] mit einem Raspberry Pi und FHEM zu nutzen, sind mehrere Schritte notwendig. Die folgende Anleitung zeigt diese entsprechend auf.&lt;br /&gt;
&lt;br /&gt;
== Vorausetzung ==&lt;br /&gt;
Erforderliche Hardware:&lt;br /&gt;
* Raspberry Pi&lt;br /&gt;
* Busware [[COC]]&lt;br /&gt;
&lt;br /&gt;
Erforderliche Software:&lt;br /&gt;
* Raspbian OS (Lite Version dringend empfohlen)&lt;br /&gt;
&lt;br /&gt;
Notwendige Vorbereitungen:&lt;br /&gt;
* Busware [[COC]] ist auf dem Raspberry Pi montiert&lt;br /&gt;
* Raspberry Pi ist ans Netzwerk angeschlossen und mit dem Internet verbunden.&lt;br /&gt;
&lt;br /&gt;
== Raspberry Pi Grundinstallation ==&lt;br /&gt;
# Bitte immer zuerst https://fhem.de/fhem.html#Installation lesen!&lt;br /&gt;
# Die empfohlene Grundinstallation des Raspberry Pi ist im Artikel &#039;&#039;&#039;[[Raspberry Pi]]&#039;&#039;&#039; beschrieben&lt;br /&gt;
::Dabei ist besonders der Abschnitt &#039;&#039;&#039;[[Raspberry Pi#Verwendung UART für Zusatzmodule|Verwendung UART für Zusatzmodule]]&#039;&#039;&#039; zu beachten&lt;br /&gt;
&lt;br /&gt;
== Zusatzeinstellungen ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Dieser Abschnit muss überprüft werden. Eigentlich sind diese Rechte nicht notwendig: FHEM ist schon in der Gruppe dialout, gpio Initialisierung erfolgt mit root Rechten}}&lt;br /&gt;
Zusätzlich zur Grundinstallation fügen wir den Benutzer fhem der Gruppe tty und gpio hinzu (Zugriffsrechte auf Serial- und USB-Ports und GPIO)&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo usermod -aG tty,gpio fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== COC in Betrieb nehmen ==&lt;br /&gt;
Hinweis: Offenbar gibt es im laufe der Jahre unterschiedliche Versionen des COC. Das folgende Script stammt aus der Zusammenarbeit in diesem {{Link2Forum|Topic=111106|LinkText=Forenthema}}. Offenbar wurden die Pins zur Aktivierung geändert, deshalb bitte die Unterlagen des [http://busware.de/ Herstellers] konsultieren! Dort steht aktuell ein anderes [http://busware.de/tiki-index.php?page=COC_Installation Script].&lt;br /&gt;
&lt;br /&gt;
Bitte die folgenden Befehlszeilen separat mit root Rechten (sudo) testen und erst nach Erfolg in den Systemstart einbauen!&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;resetting 868MHz extension...&amp;quot;&lt;br /&gt;
if test ! -d /sys/class/gpio/gpio17; then echo 17 &amp;gt; /sys/class/gpio/export; fi&lt;br /&gt;
if test ! -d /sys/class/gpio/gpio18; then echo 18 &amp;gt; /sys/class/gpio/export; fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio17/direction&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio18/direction&lt;br /&gt;
echo 1 &amp;gt; /sys/class/gpio/gpio18/value&lt;br /&gt;
echo 0 &amp;gt; /sys/class/gpio/gpio17/value&lt;br /&gt;
sleep 1&lt;br /&gt;
echo 1 &amp;gt; /sys/class/gpio/gpio17/value&lt;br /&gt;
sleep 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Damit der COC beim Start von FHEM initialisiert wird, muss der obige Code als Script ausgeführt werden.&lt;br /&gt;
* Bei systemd Systemen kann man nach diesem [[Fhem.service (systemd unit file)|&#039;&#039;&#039;Wiki Artikel&#039;&#039;&#039;]] vorgehen. Der obige Code wird dabei einfach als Inhalt für die dort erzeugten Scripte verwendet.&lt;br /&gt;
* Bei init.d Systemen muss die Datei &#039;&#039;&#039;/etc/init.d/fhem&#039;&#039;&#039; z.B. mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo nano /etc/init.d/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
:editiert, und der Scriptcode unterhalb von &amp;quot;Start)&amp;quot; eingefügt werden.&lt;br /&gt;
Nun wird der Raspberry PI vollständig neu gestartet:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo shutdown -r now&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In FHEM wird in der Weboberfläche die Definition durchgeführt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define COC CUL /dev/ttyAMA0@38400 1234&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Raspberry PI sollte nun via &#039;&#039;&#039;auto detect&#039;&#039;&#039; die Komponenten auffinden&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=38741</id>
		<title>FHEM startet nicht - Tipps zur Fehlersuche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=38741"/>
		<updated>2023-12-01T12:56:40Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Minimal Config starten */ Platte voll eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es gibt einen weiteren Artikel zur Fehlersuche. [[Hilfe! Mein FHEM funktioniert nicht!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kein Zugriff auf FHEMWEB/FHEM startet nicht - Was kann ich tun?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deine [[FHEMWEB]]-Seite ist nicht erreichbar? Ist FHEM tot, oder ist das Netzwerk kaputt? Was kann ich machen, um zu prüfen, woran es genau liegt?&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki-Artikel soll es darum gehen, wie Du für Dich prüfen kannst, ob ein Fehler bei FHEM, im Netzwerk oder ein anderes Problem vorliegt.&lt;br /&gt;
== Prüfen: Läuft überhaupt ein FHEM-Prozess? ==&lt;br /&gt;
Man kann sich unter einem Linuxsystem sämtliche laufende Prozesse auflisten lassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;ps&#039;&#039; listet je nach Argument alle laufende Prozesse auf. Die Liste kann man nun noch nach einem bestimmten Prozess filtern. Aufruf und Ausgabe einer Prozessliste mit einem Filter nach perl sieht z. B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cooltux@fhem01-cluster:~&amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11320 pts/0    S+     0:00 grep --color=auto perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wir sehen, wird hier lediglich der gerade ausgeführte Befehl &#039;&#039;ps&#039;&#039; gefunden (weil das Wort &#039;&#039;perl&#039;&#039; in der Aufrufzeile stand. Es wird hier überhaupt kein Perl-Prozess gelistet. Aktuell läuft also definitiv kein FHEM, das ja ein Perl-Programm/Prozess ist.&lt;br /&gt;
&lt;br /&gt;
Eine Prozessliste mit einem laufenden FHEM-Prozess könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[11:31 root@fhem01-cluster cooltux] &amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15852 ?        R    2119:09 /usr/bin/perl fhem.pl configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;21447 pts/0    S+     0:00 grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM (&#039;&#039;perl fhem.pl ...&#039;&#039;) ist in diesem Fall also aktiv.&lt;br /&gt;
&lt;br /&gt;
=== systemd ===&lt;br /&gt;
&lt;br /&gt;
Nutzt das Linux-System den systemd, kann mit folgendem Befehl der Status des FHEM-Prozesses geprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;service fhem status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Ausgabe könnte z.B. so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ● fhem.service - FHEM Home Automation&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Thu 2018-08-09 14:32:16 CEST; 20h ago&lt;br /&gt;
  Process: 27641 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 27643 (perl)&lt;br /&gt;
    Tasks: 1 (limit: 4915)&lt;br /&gt;
   CGroup: /system.slice/fhem.service&lt;br /&gt;
           └─27643 /usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
 &lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Starting FHEM Home Automation...&lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Started FHEM Home Automation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prüfen: Ist der laufende FHEM-Prozess überlastet? ==&lt;br /&gt;
Ich sollte mir anschauen, ob der FHEM-Prozess vielleicht zu sehr ausgelastet ist, der Prozess also 100 Prozent CPU Auslastung produziert?&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Linuxbefehl &#039;&#039;top&#039;&#039; wird uns hierbei behilflich sein:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:38 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:38:18 up 11 days, 18:58,  1 user,  load average: 1,07, 1,03, 1,00&lt;br /&gt;
 Tasks: 125 total,   2 running, 123 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s): 24,9 us,  0,9 sy,  0,0 ni, 74,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   833532 used,   111992 free,    41552 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46564 used,    55832 free.   496240 cached Mem&lt;br /&gt;
 PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 15852 fhem      20   0  103652  82160   5068 R 100,0  8,7   2125:41 perl                                                                                                               &lt;br /&gt;
 21683 root      20   0    5740   2560   2092 R   1,0  0,3   0:00.37 top                                                                                                                &lt;br /&gt;
 19129 cooltux   20   0   86204  22348   3668 S   0,3  2,4  64:16.90 insync-portable                                                                                                    &lt;br /&gt;
 21350 cooltux   20   0   11436   2848   2248 S   0,3  0,3   0:00.10 sshd                                                                                                               &lt;br /&gt;
     1 root      20   0   23292   2368   1380 S   0,0  0,3   0:54.23 systemd                                                                                                            &lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd                                                                                                           &lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.20 ksoftirqd/0                                                                                                        &lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H                                                                                                       &lt;br /&gt;
     7 root      20   0       0      0      0 S   0,0  0,0   8:20.71 rcu_sched                                                                                                          &lt;br /&gt;
     8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh                                                                                                             &lt;br /&gt;
     9 root      rt   0       0      0      0 S   0,0  0,0   0:05.45 migration/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier können wir nun eindeutig erkennen, dass unser FHEM die CPU mit 100 Prozent auslastet. FHEM hat also ein Problem!&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich ein FHEM/Perl-Prozess ohne Probleme:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:50 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:50:33 up 11 days, 19:10,  1 user,  load average: 0,84, 1,03, 1,00&lt;br /&gt;
 Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,6 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   818344 used,   127180 free,    43748 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46820 used,    55576 free.   489652 cached Mem&lt;br /&gt;
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 22074 fhem      20   0   86424  68516   7200 S   1,3  7,2   0:47.64 perl&lt;br /&gt;
 22294 root      20   0    5740   2564   2092 R   1,3  0,3   0:00.19 top&lt;br /&gt;
 22296 fhem      20   0   86424  63556   2240 S   1,3  6,7   0:00.04 perl&lt;br /&gt;
 22297 fhem      20   0    2088    408    328 S   0,7  0,0   0:00.02 ping&lt;br /&gt;
     7 root      20   0       0      0      0 S   0,3  0,0   8:21.23 rcu_sched&lt;br /&gt;
  1366 mysql     20   0  620608 157132   5736 S   0,3 16,6  70:12.59 mysqld&lt;br /&gt;
 19481 root      20   0       0      0      0 S   0,3  0,0   0:02.35 kworker/3:0&lt;br /&gt;
     1 root      20   0   23292   2408   1420 S   0,0  0,3   0:54.27 systemd&lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd&lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.42 ksoftirqd/0&lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Prüfen: Stimmen die Dateiberechtigungen? ==&lt;br /&gt;
Alle Dateien im Verzeichnis /opt/fhem/ und allen Unterverzeichnissen  gehören nach der Installation dem Benutzer fhem und der Gruppe dialout. Man kann es leicht prüfen:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig wird der Eigentümer durch Manipulation der Dateien falsch gesetzt, mit diesem Befehl kann man alle Dateien auf den Eigentümer fhem und dessen primäre Gruppe setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem: /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Setup Routine setzt den Besitz auf fhem:dialout &amp;lt;code&amp;gt;sudo chown -R fhem:dialout /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und wenn sich gar nichts mehr tut? ==&lt;br /&gt;
=== Die letzen Zeilen im existierenden FHEM Log anzeigen  ===&lt;br /&gt;
So lässt man sich auf Systemebene die letzen 20 Zeilen im Log anzeigen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tail -n 20 /opt/fhem/log/fhem-$(date &#039;+%Y-%m&#039;).log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fehlernachrichten von FHEM bei dessen Start analysieren  ===&lt;br /&gt;
In der Regel werden die Ausgaben von FHEM, auch die beim Start, gemeinsam mit vielen anderen Nachrichten in ein Logfile geschrieben. Dort kann natürlich nach Ursachen geforscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine einfachere Auswertung wird möglich, wenn man diese Meldungen zeitweilig in einem Terminalfenster (das Ding, um Kommandozeilenbefehle einzugeben) angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
Seit dem 01.08.2017 gibt es die Möglichkeit beim manuellen Starten von FHEM im Terminal den Schalter -d zu verwenden ({{Link2Forum|Topic=74774|Message=666766}}). Dieser startet FHEM mit den beiden gesetzten Attributen &amp;lt;code&amp;gt;attr global logfile -&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;attr global verbose 5&amp;lt;/code&amp;gt; und gibt somit alle Meldungen im Terminalfenster aus. Zuerst mit ins FHEM Verzeichnis wechseln. Root oder sudo ist nicht erforderlich!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss ein (mit 100 %) laufendes FHEM zunächst beendet werden! z.B.: &amp;lt;code&amp;gt;sudo systemctl stop fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ins FHEM Verzeichnis wechseln: &amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nach Konfiguration FHEM im debug Modus starten:&lt;br /&gt;
&lt;br /&gt;
fhem.cfg - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
configDB - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man genug analysiert hat, FHEM mit Ctrl-C/Strg-C stoppen&lt;br /&gt;
&lt;br /&gt;
== Es ist nach dem letzten Update passiert? ==&lt;br /&gt;
Beispielhaft für das Vorgehen wird das in diesem {{Link2Forum|Topic=118533|LinkText=Forumthread}} beschrieben. FHEM speichert vor dem Update die Dateien ins Verzeichnis restoreDir die aktualisiert werden. Es handelt sich dabei nicht um eine komplette Sicherung des Systems!&lt;br /&gt;
&lt;br /&gt;
Man kann sich über die gesicherten Versionen/Dateien einen Überblick verschaffen (Datum anpassen!):&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/update/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hat man die verursachende Datei ermittelt, kann man gezielt diese Datei wieder herstellen:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp /opt/fhem/restoreDir/update/2021-02-06/FHEM/NameDerDatei /opt/fhem/FHEM/&amp;lt;/code&amp;gt;&lt;br /&gt;
Es gibt bei einigen Modulen Abhängigkeiten von anderen Dateien, es ist dringend angeraten, dann den kompletten zusammengehörigen Satz wieder herzustellen!&lt;br /&gt;
&lt;br /&gt;
Will man einen kompletten Schritt zurück vor dem Update gehen, weil man den Fehler nicht einkreisen kann, stellt man so alles vor dem Update wieder her. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/update/2021-02-05/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die config Datei ist das Problem? ==&lt;br /&gt;
Bei jedem save wird in  /opt/fhem/restoreDirs eine Sicherung der fhem.cfg und das Statefile fhem.save durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile vom System kann man sich einen Überblick verschaffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollten Pfade mit Datums Angaben sein.&lt;br /&gt;
&lt;br /&gt;
Den exakten Zeitpunkt der gesicherten Dateien kann man sich so anzeigen lassen (Beispiel).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/save/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;lastKnownGood&amp;quot; Konfiguration kann man so wiederherstellen und anschließend FHEM wieder starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/save/2020-02-28/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Berechtigungen werden durch verwenden von User fhem eigentlich erhalten. &lt;br /&gt;
&lt;br /&gt;
Falls die Berechtigungen nicht stimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/log/fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minimal Config starten ==&lt;br /&gt;
Wenn gar nichts mehr geht, ist es manchmal ratsam eine minimal Konfiguration zu starten um die Hardware oder Netzwerkanbindung an sich zu testen.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist zunächst sicher zu stellen, dass kein FHEM Prozess läuft (siehe oben)&lt;br /&gt;
&lt;br /&gt;
Die fhem.cfg.demo (Bestandteil von FHEM) ist extra für den interaktiven Start gedacht, die Logausgaben landen in der Konsole. &lt;br /&gt;
&lt;br /&gt;
Die Demo kann interaktiv mit Ctrl+C beendet werden. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo perl fhem.pl fhem.cfg.demo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Oder man holt sich die Original minimal fhem.cfg&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo -su fhem wget -qO minimal.cfg https://svn.fhem.de/fhem/trunk/fhem/fhem.cfg&lt;br /&gt;
sudo perl fhem.pl minimal.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wäre es auch möglich ein [[Update]] zu machen oder Dateien wie im Update Wiki Artikel beschrieben direkt aus dem SVN zu holen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig fhem.pl mit erhöhten Rechten zu starten, da sonst fhem.pl nicht auf den user fhem umschalten kann - das würde zu Rechte Problemen führen!&lt;br /&gt;
&lt;br /&gt;
Für configDB User gibt es den {{Link2Forum|Topic=86225|LinkText= rescue Modus}}.&lt;br /&gt;
&lt;br /&gt;
== Ist die Platte voll? ==&lt;br /&gt;
So kann man anzeigen wie viel Platz frei / belegt ist.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
df -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Ist 100% belegt oder 0 verfügbar. Dann kann man suchen wo die großen Brocken sind:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo du -h -d 2 / |sort -h|tail&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Ist der FHEM Pfad das Problem kann man gezielter suchen:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
du -h /opt/fhem/backup&lt;br /&gt;
&lt;br /&gt;
du -h /opt/fhem/log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Und eventuell löschen, im Beispiel die ältesten 5 Backups Schritt für Schritt: &lt;br /&gt;
&lt;br /&gt;
# alle anzeigen, &lt;br /&gt;
# die ältesten 5 anzeigen, &lt;br /&gt;
# die ältesten 5 löschen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls -lha /opt/fhem/backup/ &lt;br /&gt;
ls -d /opt/fhem/backup/FHEM-*.tar.gz |head -5&lt;br /&gt;
ls -d /opt/fhem/backup/FHEM-*.tar.gz |head -5|xargs rm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38733</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38733"/>
		<updated>2023-11-25T13:20:09Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen RaspberryPi OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Es existiert aber ein Link, man kann arbeiten wie bisher.}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
# für Raspberry Pi OS&lt;br /&gt;
config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit RaspberryPI OS Bookworm geändert, aktuell wird hier diskutiert. https://forum.fhem.de/index.php?msg=1294588}}&lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38732</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38732"/>
		<updated>2023-11-25T13:19:01Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen Raspberry OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Es existiert aber ein Link, man kann arbeiten wie bisher.}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
# für Raspberry Pi OS&lt;br /&gt;
config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Das hat sich mit Bookworm geändert, aktuell wird hier diskutiert. https://forum.fhem.de/index.php?msg=1294588}}&lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38731</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38731"/>
		<updated>2023-11-25T13:18:20Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Troubleshooting */ Diskussion eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen Raspberry OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Es existiert aber ein Link, man kann arbeiten wie bisher.}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
# für Raspberry Pi OS&lt;br /&gt;
config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
{{Randnotiz|RNTyp=fehl|RNText=Das hat sich mit Bookworm geändert, aktuell wird hier diskutiert. https://forum.fhem.de/index.php?msg=1294588}}&lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38730</id>
		<title>Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi&amp;diff=38730"/>
		<updated>2023-11-25T12:27:35Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Verwendung UART für Zusatzmodule */ Notiz zu Bookworm eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beim [[Raspberry Pi]] handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe [http://de.wikipedia.org/wiki/Raspberry_Pi#Hardware Wikipedia].&lt;br /&gt;
Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspberry Pi OS Distribution (ab Mitte 2019 &#039;&#039;Buster&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Installation / Setup ==&lt;br /&gt;
=== Betriebssystem ===&lt;br /&gt;
====Vorbemerkung====&lt;br /&gt;
Raspberry Pi OS ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)&lt;br /&gt;
&lt;br /&gt;
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht. Einige dieser Kommandos funktionieren in der angegebenen Form nicht unter der Wheezy-Version [https://en.wikipedia.org/wiki/Raspberry_Pi_OS#Release_history] des RPi OS. Läuft der betreffende RPi noch unter Wheezy, ist ein Upgrade des RPi OS empfehlenswert.&lt;br /&gt;
&lt;br /&gt;
Alle Dateien müssen im Linux-Format (nur LF als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim Speichern achten!&lt;br /&gt;
&lt;br /&gt;
====SD-Karte vorbereiten====&lt;br /&gt;
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen, Projektseite [https://sourceforge.net/projects/win32diskimager/]. Für Mac OS gibt es den Pi Filler.&lt;br /&gt;
&lt;br /&gt;
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter [https://www.raspberrypi.org/documentation/installation/installing-images/README.md Writing an image to the SD card]&lt;br /&gt;
&lt;br /&gt;
Die SD Card enthält nun zwei Partitionen/Laufwerke, wobei das erste Laufwerk unter alle Betriebssystemen lesbar ist. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:&lt;br /&gt;
* eine leere Datei mit dem Namen ssh, um den (headless) Zugriff per ssh zu ermöglichen (Pi Filler macht dies automatisch). Hinweis: Eine spätere Aktivierung von SSH ist mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; (Punkt 5 &amp;quot;Interfacing Options&amp;quot;, dann Punkt 2 SSH) möglich, erfordert dann aber Tastatur und Monitor am RPi.&lt;br /&gt;
* eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt, wenn der Pi sofort mit WLAN starten soll.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;country=DE&lt;br /&gt;
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev&lt;br /&gt;
update_config=1&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;FRITZ!Box 7490&amp;quot;&lt;br /&gt;
        psk=&amp;quot;12345678901234567890&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* SD Karte auswerfen.&lt;br /&gt;
* SD Karte in Raspberry Pi stecken und booten.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch Monitor und Tastatur verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Anmeldung und Grundkonfiguration====&lt;br /&gt;
Default raspberrypi-os: Host raspberrypi, User pi, Passwort raspberry &lt;br /&gt;
&lt;br /&gt;
Default ubuntu: Host ubuntu, User ubuntu, Passwort ubuntu&lt;br /&gt;
&lt;br /&gt;
Anmeldung entweder lokal oder mit dem Befehl: ssh &amp;lt;user&amp;gt;@&amp;lt;hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort sollte geändert werden, dazu dem Sicherheitshinweis folgen und &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; eingeben.&lt;br /&gt;
&lt;br /&gt;
Alle unten genannten Befehle müssen mit erhöhten Rechten ausgeführt werden (z. B. sudo)!&lt;br /&gt;
&lt;br /&gt;
Als Erstes sollte: Zeitzone, Sprache und  Hostname angepasst werden. &lt;br /&gt;
Entweder Menügeführt mit &amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; &lt;br /&gt;
oder per Script / Shell Befehle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Zeitzone einstellen &amp;amp; Zeitsynchronisierung über das Internet aktivieren&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
# Konfigurieren lokale Sprache deutsch&lt;br /&gt;
sed -i -e &#039;s/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/&#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE&lt;br /&gt;
&lt;br /&gt;
# Hostname &lt;br /&gt;
hostnamectl set-hostname mymachine&lt;br /&gt;
&lt;br /&gt;
# System aktualisieren &lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
#Neustart&lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang sollte man Befehle nicht verketten, sondern immer auf die Ausgabe warten (es sei denn, man hat Erfahrung): also kein &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;lt;/code&amp;gt;. Ebenso sollte man nicht mit automatischen Bestätigungen arbeiten, also kein upgrade mit &amp;quot;-y&amp;quot;. Nach einer Installation ist ein aufräumen immer gut, also:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get autoremove&lt;br /&gt;
apt-get clean&lt;br /&gt;
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verwendung UART für Zusatzmodule====&lt;br /&gt;
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren&lt;br /&gt;
systemctl stop serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
systemctl mask serial-getty@ttyAMA0.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden. Hier ein bash Script, welches die Originaldatei entsprechend modifiziert:&lt;br /&gt;
{{Randnotiz|RNTyp=Info|RNText=Im aktuellen Raspberry OS Bookworm Image ist die config.txt in den Pfad /boot/firmware gewandert. Es existiert aber ein Link, man kann arbeiten wie bisher.}}&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen&lt;br /&gt;
# für Raspberry Pi OS&lt;br /&gt;
config=&amp;quot;/boot/config.txt&amp;quot;&lt;br /&gt;
# für Ubuntu&lt;br /&gt;
#config=&amp;quot;/boot/firmware/usercfg.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
bash -c &amp;quot;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; $config&lt;br /&gt;
enable_uart=1&lt;br /&gt;
dtoverlay=miniuart-bt&lt;br /&gt;
core_freq=250&lt;br /&gt;
EOF&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wer dem nicht traut, der editiert die Datei von Hand (Linux Editor!) und fügt am Ende die drei Zeilen aus dem Script ein, die vor EOF stehen.&lt;br /&gt;
&lt;br /&gt;
Die config Datei von ubuntu verwendet den Befehl include usercfg.txt. Mit Erscheinen des Pi 4 wurden die overlay Dateien umbenannt (Start mit Pi3- entfernt) die alten Namen funktionieren aber noch.&lt;br /&gt;
&lt;br /&gt;
Um die Konfiguration abzuschließen ist ein Neustart erforderlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#Neustart erforderlich &lt;br /&gt;
reboot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
&#039;&#039;&#039;Kontrolle der seriellen Schnittstelle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/ttyAMA0&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
  crw-rw---- 1 root dialout 204, 64 Jun  7 22:56 /dev/ttyAMA0&lt;br /&gt;
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!&lt;br /&gt;
&lt;br /&gt;
Kontrolle der Verlinkung von /dev/serial*&lt;br /&gt;
&lt;br /&gt;
Der Befehl &amp;lt;code&amp;gt;ls -l /dev/serial*&amp;lt;/code&amp;gt; muss folgende Ausgabe liefern.&lt;br /&gt;
* Bei Modellen mit BT und richtiger Konfiguration (funktioniert nur unter Raspberry Pi OS)&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  7 22:55 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
  lrwxrwxrwx 1 root root 5 Jun  7 22:55 /dev/serial1 -&amp;gt; ttyS0&lt;br /&gt;
* Bei den Modellen ohne BT und richtiger Konfiguration&lt;br /&gt;
  lrwxrwxrwx 1 root root 7 Jun  8 18:30 /dev/serial0 -&amp;gt; ttyAMA0&lt;br /&gt;
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft. &lt;br /&gt;
&lt;br /&gt;
Sollte die serielle Schnittstelle unerwartet nicht funktionieren, kann auch andere Software daran Schuld sein, weil diese einfach versucht, alle Schnittstellen abzufragen / zu initialisieren. Für die Fehlersuche ist es also wichtig zu wissen, welche Software so installiert wurde, speziell wenn diese serielle Schnitttstellen (USB) verwendet / verwenden will. Ein Beispiel (deconz/conbee) wird in {{Link2Forum|Topic=116428|Message=1107317|LinkText=diesem Forenbeitrag}} behandelt. &lt;br /&gt;
&lt;br /&gt;
Bei einem Raspberry 4 stört unter Umständen die Temperaturkontrolle des Lüfters, siehe auch Abschnitt bekannte Probleme: [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kontrolle Bluetooth&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit &amp;lt;code&amp;gt;hcitool dev&amp;lt;/code&amp;gt; wird das interne BT Gerät mit MAC Adresse angezeigt. Mit &amp;lt;code&amp;gt;hcitool scan&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;hcitool lescan&amp;lt;/code&amp;gt; kann nach sichtbaren Geräten gesucht werden.&lt;br /&gt;
&lt;br /&gt;
Weitergehende Informationen zur Anpassung der Konfiguration von Raspberry Pi OS sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.&lt;br /&gt;
&lt;br /&gt;
Sollte die Bluetooth Schnittstelle nach der Installation von FHEM nicht funktionieren, hilft es den Dienst abhängig zu starten, siehe diesen Wiki Artikel [[Fhem.service (systemd unit file)]] &lt;br /&gt;
&lt;br /&gt;
=== FHEM ===&lt;br /&gt;
Die Installation von FHEM kann nach der Raspberry Pi OS Installation sehr einfach über das Debian-Repository [http://debian.fhem.de] erfolgen. &lt;br /&gt;
* Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben. &lt;br /&gt;
* Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspberry Pi OS! &lt;br /&gt;
* Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig. &lt;br /&gt;
** Informationen hierzu liefert üblicherweise die {{Link2CmdRef}} zum jeweiligen Modul.&lt;br /&gt;
** Den weiteren Einstieg in FHEM findet man im Artikel [[Quick-Start]]&lt;br /&gt;
&lt;br /&gt;
==== Der einfache Weg zum aktuellen System ====&lt;br /&gt;
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort (insbesondere unter &#039;&#039;The easy way: use apt-get&#039;&#039;) Aktualisierungen gab. &lt;br /&gt;
* Dieser Befehlsblock erfordert erhöhte Rechte, also bitte als Erstes &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen!&lt;br /&gt;
* Beim Kopieren aufpassen! Jede Zeile muss einzeln ausgeführt werden!&lt;br /&gt;
Dieser Befehlsblock gilt ab der Version &#039;&#039;debian buster&#039;&#039; als veraltet (es gibt Sicherheitsbedenken), muss aber bis einschließlich &#039;&#039;debian stretch&#039;&#039; eingesetzt werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -qO - https://debian.fhem.de/archive.key | apt-key add -&lt;br /&gt;
echo &amp;quot;deb http://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Befehlsblock funktioniert erst ab &#039;&#039;debian buster&#039;&#039; (erfordert erhöhte Rechte &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Bei manchen debian Distributionen fehlt das Paket gpg -&amp;gt; nachinstallieren&lt;br /&gt;
apt update&lt;br /&gt;
apt install gpg&lt;br /&gt;
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/&lt;br /&gt;
wget -O- https://debian.fhem.de/archive.key | gpg --dearmor &amp;gt; /usr/share/keyrings/debianfhemde-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/debianfhemde-archive-keyring.gpg] https://debian.fhem.de/nightly/ /&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
apt update&lt;br /&gt;
apt install fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Das offizielle Release ====&lt;br /&gt;
Man kann FHEM mit dem Debian-Paket von [https://fhem.de/#Installation fhem.de] installieren. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch den manuellen Weg von https://debian.fhem.de/ wählen.&lt;br /&gt;
&lt;br /&gt;
==== Empfohlener Patch ====&lt;br /&gt;
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen &amp;quot;Patch&amp;quot; auszuführen: FHEM starten, wenn alle USB-Geräte ausgesteckt sind. Dann &amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt; in der Kommandozeile in FHEMWEB eingeben, &amp;lt;code&amp;gt;save&amp;lt;/code&amp;gt; ausführen und FHEM anschließen wieder mit eingesteckten USB-Geräten neu starten.&lt;br /&gt;
&lt;br /&gt;
==== Deinstallation ====&lt;br /&gt;
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get purge fhem&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusatzpakete bei FHEM-Erst- und Zweitinstallation ===&lt;br /&gt;
Nachdem der RPi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um das Grundgerüst von FHEM betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort, andere sind zur Nutzung bestimmter weiterer FHEM-Module (siehe {{Link2CmdRef}}) erforderlich. &lt;br /&gt;
&lt;br /&gt;
Hierzu wurden in letzter Zeit mehrere Hilfsmodule entwickelt, die insbesondere bei Wiederinstallation (etwa nach Absturz) wichtig sein können. So zeigt das Modul Installer die installierten Perl-Module an, siehe dazu {{Link2Forum|Topic=98381|LinkText=diesen Thread}}.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine frühere Installation auf einer anderen SD-Karte installieren möchte und nicht mehr weiß, welche Zusatzpakete man auf der alten Karte installiert hatte, hilft (diese und nachfolgende Hinweise sind aus dem Blog [https://heinz-otto.blogspot.com/2019/07/infos-zur-installation-von-modulen-und.html])&lt;br /&gt;
 zcat $(ls -tr /var/log/apt/history.log.*.gz)|grep -A1 Start-Date&lt;br /&gt;
weiter. Hier werden frühere Eingaben der Kommandozeile wiedergegeben. Es gibt einen analogen Befehl, um die mit CPAN installierten Pakete anzuzeigen. Dazu muss man das debian Paket perl-doc installiert haben und gibt dann ein&lt;br /&gt;
 for M in `perldoc -t perllocal|grep Module |sed -e &#039;s/^.*&amp;quot; //&#039;`; do V=`perldoc -t perllocal|awk &amp;quot;/$M/{y=1;next}y&amp;quot; |grep VERSION |head -n 1`; printf &amp;quot;%30s %s\n&amp;quot; &amp;quot;$M&amp;quot; &amp;quot;$V&amp;quot;; done |sort&lt;br /&gt;
Ebenso kann man herausfinden, ob und durch welches debian-Paket das Perl-Paket installiert wurde. Die zweite Version sucht nur in Paketen die -perl im Namen tragen und läuft damit wesentlich schneller:&lt;br /&gt;
 s=&#039;Device::SerialPort&#039; ## zu diesem Paket wird gesucht&lt;br /&gt;
 perl -M$s -e &#039;&#039; 2&amp;gt;/dev/null &amp;amp;&amp;amp;echo &amp;quot;Modul $s ist vorhanden&amp;quot;&#039;&#039;&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
 for i in $(dpkg -l |grep ^ii|grep &#039;\-perl&#039;| awk &#039;{ print $2 }&#039;|tr -d &amp;quot;\r&amp;quot;|tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;);do if dpkg -L $i|grep $s &amp;amp;&amp;gt; /dev/null;then echo $i enthält $s;fi;done&lt;br /&gt;
&lt;br /&gt;
Es gibt gute Gründe, die Installation von Perl Modulen über debian-Pakete der Installation über cpan zu bevorzugen. Dazu zählt die Updatefähigkeit und die Geschwindigkeit. Man kann im Internet nach den Paketen suchen, man kann aber auch einfach die Verfügbarkeit für das lokale System testen. Dazu braucht man das Tool apt-file, welches man zuerst installieren muss. Der letzte Befehl lädt den Infocache lokal und dauert etwas:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install apt-file&lt;br /&gt;
 sudo apt-file update&lt;br /&gt;
Die folgende Suche nutzt den Umstand, dass in der im Paket enthaltenen Liste der Dateien auch die Doku in der Form &amp;quot;/usr/share/man/man3/IO::File.3perl.gz&amp;quot; enthalten ist. Der search Befehl unten akzeptiert mehrere Modulnamen durch Zeilenumbruch getrennt. In dem Beispiel sind die Modulnamen in einem String durch Leerzeichen getrennt, die Trennung wird in Zeilenumbruch geändert, jede Zeile ergänzt und über stdin an den search Befehl von apt-file übergeben. Die Option -l bewirkt das nur die gefunden Pakete gelistet werden, werden mehrere der abgefragten Modulnamen in einem Paket gefunden, wird es nur einmal gelistet:&lt;br /&gt;
 s=&amp;quot;IO::File Digest::MD5&amp;quot; ##Such-String&lt;br /&gt;
 echo $s|tr &amp;quot; &amp;quot; &amp;quot;\n&amp;quot;|sed &#039;s/$/./;s/^/\//&#039;|apt-file search -l -f -&lt;br /&gt;
&lt;br /&gt;
Zuletzt eine Übersicht diverser Zusatzpakete.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Beschreibung&lt;br /&gt;
! style=&amp;quot;width:10%&amp;quot; | Paketname&lt;br /&gt;
! style=&amp;quot;width:50%&amp;quot; | Kontext&lt;br /&gt;
! style=&amp;quot;width:30%&amp;quot; | Installieren&lt;br /&gt;
|-&lt;br /&gt;
|Zeitserver&lt;br /&gt;
|ntpdate&lt;br /&gt;
|Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install ntpdate&lt;br /&gt;
sudo ntpdate -u de.pool.ntp.org&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl JSON&lt;br /&gt;
|JSON&lt;br /&gt;
|Wird von einigen Modulen benötigt, z.B. harmony, iTunes&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libjson-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Samba-Server&lt;br /&gt;
|samba&lt;br /&gt;
|Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche [https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm Kurzanleitung] aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install samba cifs-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
Danach muss der share definiert werden mittels&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mailversand&lt;br /&gt;
|sendemail (alt: sendEmail)&lt;br /&gt;
|Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.&lt;br /&gt;
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß [[E-Mail senden#Raspberry Pi]]&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install sendemail&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sudo apt-get install sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Wake-on-LAN&lt;br /&gt;
|etherwake&lt;br /&gt;
|Wird z.B. für das Modul WOL benötigt.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install etherwake&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Perl Telnet&lt;br /&gt;
|telnet&lt;br /&gt;
|Wurde vor Fritz!OS 6.2x z.B. für das Modul [[FRITZBOX]] benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libnet-telnet-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Socat&lt;br /&gt;
|socat&lt;br /&gt;
|Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;system(&amp;quot;echo &#039;set lampe on&#039; | /usr/bin/socat - TCP:1.2.3.4:7072&amp;quot;);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Libcrypt&lt;br /&gt;
|Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libcrypt-rijndael-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|libdatetime&lt;br /&gt;
|libdatetime&lt;br /&gt;
|Perl libdatetime, erforderlich für das Weather-Modul.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libdatetime-format-strptime-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean XML functions&lt;br /&gt;
|libxml simple&lt;br /&gt;
|Perl XML::SIMPLE, erforderlich für die XML Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt-get install libxml-simple-perl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|EnOcean Cryptographic functions&lt;br /&gt;
|libcrypt-random-source-perl&lt;br /&gt;
|Perl Crypt::Random, erforderlich für die Cryptographic Funktionen des ENOCEAN Moduls.&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo /usr/bin/perl -MCPAN -e &#039;install Crypt::Random&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Netzteil ===&lt;br /&gt;
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Kabel (Micro-USB) ===&lt;br /&gt;
Auch das verwendete Kabel kann einen (großen) Unterschied machen. Billige Kabel haben sehr dünne Kupferadern, die auf größeren Strecken (bereits ab 30cm!) einen Spannungsabfall verursachen können, der sonst nicht nachvollziehbare Probleme (Festplattenausfall, SD-Kartenausfall etc.) auslöst. Siehe beispielsweise diesen Thread mit einer Tabelle, die die Höhe des Spannungsabfalls explizit beschreibt: [https://forum.fhem.de/index.php/topic,127508.0.html Link zum Forum]  &lt;br /&gt;
&lt;br /&gt;
=== Echtzeituhr ===&lt;br /&gt;
Der RPi hat keine [http://de.wikipedia.org/wiki/Echtzeituhr Real-Time-Clock] (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer [http://de.wikipedia.org/wiki/Network_Time_Protocol NTP-Konfiguration] oder durch [[Raspberry Pi: RTC Hat|Installation einer Echtzeituhr]] umgangen.&lt;br /&gt;
&lt;br /&gt;
Dabei muss Sorge getragen werden, dass der [http://wiki.debian.org/NTP ntpd] schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die &amp;quot;alten&amp;quot; Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe {{Link2Forum|Topic=70741}})&lt;br /&gt;
&lt;br /&gt;
=== Last durch Backup (während update) ===&lt;br /&gt;
Bei einen [[Update]] von FHEM durch den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; kann durch Setzen des Attributs &amp;quot;&amp;lt;code&amp;gt;attr global backup_before_update 1&amp;lt;/code&amp;gt;&amp;quot; automatisch vorab ein [[Backup]] durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein &amp;quot;&amp;lt;code&amp;gt;attr global updateInBackground 1&amp;lt;/code&amp;gt;&amp;quot; wird ein Backup im Hintergrund ausgeführt (Quelle: {{Link2Forum|Topic=15729}}). &lt;br /&gt;
&lt;br /&gt;
Alternative Möglichkeiten: &lt;br /&gt;
* Backup ausschalten und manuell durchführen &lt;br /&gt;
* Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren&lt;br /&gt;
&lt;br /&gt;
== Watchdog einrichten ==&lt;br /&gt;
Man kann den RPi regelmäßig prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem {{Link2Forum|Topic=20553|LinkText=Forumsthema}} beschrieben.&lt;br /&gt;
{{Hinweis|Statt des Einsatzes derartiger Methoden ist zu empfehlen, nach der eigentliche Fehlerursache zu forschen und diese abzustellen. Haben Sie dennoch einen solchen Watchdog eingerichtet, sollten Sie bei Fragen zu Ihnen seltsam erscheinenden Phänomänen im Forum darauf hinweisen, auch wenn die Symptome scheinbar nichts mit dem Watchdog zu tun haben sollten.}}&lt;br /&gt;
&lt;br /&gt;
== Interne Links ==&lt;br /&gt;
* [[CUL am Raspberry Pi flashen]]&lt;br /&gt;
* [[Raspberry Pi und 1-Wire]]&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* {{Link2Forum|Topic=33460|Message=264679}} zum Umzug von Raspberry B auf Raspberry Pi 2&lt;br /&gt;
* [http://www.raspberrypi.org/ Offizielle Webseite der Raspberry Pi Foundation]&lt;br /&gt;
* [http://www.raspberrypi.org/downloads Offizielle Downloads der Raspberry Pi Foundation]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Fhem.service_(systemd_unit_file)&amp;diff=38523</id>
		<title>Fhem.service (systemd unit file)</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fhem.service_(systemd_unit_file)&amp;diff=38523"/>
		<updated>2023-08-01T09:44:20Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Typo im Code beseitigt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Datei fhem.service ist ein systemd unit file und wird bei der debian Installation von FHEM mit ausgeliefert. Änderungen an dieser Datei sind normalerweise nicht notwendig. Man sollte zumindest genau wissen was man tut! Der Artikel soll die Datei etwas beschreiben und ein paar Fälle behandeln die ein Anpassung notwendig machen.&lt;br /&gt;
==Unit File - ein paar kurze Erklärung==&lt;br /&gt;
Den aktuellen Inhalt kann man jederzeit anschauen:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl cat fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Stand Mai 2020 hat die Datei folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
=== Inhalt /etc/systemd/system/fhem.service ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# $Id: fhem.service 19235 2019-04-21 13:26:17Z betateilchen $&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=FHEM Home Automation&lt;br /&gt;
Wants=network.target&lt;br /&gt;
After=network.target&lt;br /&gt;
#Requires=postgresql.service&lt;br /&gt;
#After=postgresql.service&lt;br /&gt;
#Requires=mysql.service&lt;br /&gt;
#After=mysql.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
User=fhem&lt;br /&gt;
Group=dialout&lt;br /&gt;
WorkingDirectory=/opt/fhem&lt;br /&gt;
ExecStart=/usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
#ExecStart=/usr/bin/perl fhem.pl configDB&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erklärung ausgewählter Parameter ===&lt;br /&gt;
&#039;&#039;&#039;Wants=&#039;&#039;&#039; die angegebene Services werden benötigt, fhem startet aber trotzdem falls die Services nicht gestartet werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requires=&#039;&#039;&#039; wenn der Service nicht gestartet werden kann, wird fhem nicht gestartet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;After=&#039;&#039;&#039; bewirkt, dass fhem nach dem Service (der Gruppe) gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Das ist wichtig damit Services die für fhem notwendig sind schon gestartet sind. Benötig fhem z.B. Datenbanken sind die entsprechenden  Zeilen einzubauen oder durch entfernen des Kommentarzeichens (#) zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User=fhem&#039;&#039;&#039; bewirkt das der Services mit user fhem gestartet wird. Falls fhem mit dem user root gestartet wird, startet fhem.pl einen neuen Prozess unter dem User fhem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Group=dialout&#039;&#039;&#039; Es wird die Gruppe dialout zum Start benutzt.&lt;br /&gt;
&lt;br /&gt;
Beide Zeilen können für den normalen Start von FHEM auch auskommentiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Zusätzlicher Parameter ===&lt;br /&gt;
&#039;&#039;&#039;ExecStartPre=&#039;&#039;&#039; Hier kann ein Shell Befehl stehen, der vor dem Start des eigentlichen Service (ExecStart=) ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== unit file bearbeiten ===&lt;br /&gt;
Dieser Befehl editiert die (fhem.service) unit Datei mit dem Standard Editor (z.B. nano) und führt zum Abschluss auch ein daemon-reload durch.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl edit --full fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Tipp: Datei speichern &#039;&#039;&#039;ctrl+s&#039;&#039;&#039; und Editor verlassen &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Prozesse vor dem FHEM Start ausführen ==&lt;br /&gt;
Ziel ist es sicherzustellen, dass für den Start von FHEM alle Voraussetzungen erfüllt sind, z.B.&lt;br /&gt;
* Hardware aktiviert ([[COC]], [[FHEM_auf_Raspberry_PI_mit_COC_betreiben]], {{Link2Forum|Topic=106060|Message=1003767|LinkText=SCC Busware}}, [[HM-CFG-USB USB Konfigurations-Adapter|HM-CFG-USB]])&lt;br /&gt;
* Datenbank gestartet&lt;br /&gt;
* Systemprozess läuft (z.B. {{Link2Forum|Topic=110716|LinkText=Bluetooth gestartet}} &lt;br /&gt;
* eigenen Prozessen ist gestartet &lt;br /&gt;
* [[DWD OpenData|Sprache einstellen]]&lt;br /&gt;
Dazu gibt es mehrere Lösungswege:&lt;br /&gt;
* die Datei fhem.service modifizieren&lt;br /&gt;
* einen separaten Service implementieren&lt;br /&gt;
* Abhängigkeiten definieren&lt;br /&gt;
&lt;br /&gt;
=== Ein Script mit separater service unit starten ===&lt;br /&gt;
Wir erstellen quasi einen eigenen Service - Vorteil: Die fhem.service braucht man nicht verändern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Script bereitstellen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel hier in einem allgemeinerem Pfad:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /usr/local/bin/EnableXX.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Code (Beispiele am Ende) hier einfügen und die Datei speichern und Editor verlassen (ctrl+s ctrl+x).&lt;br /&gt;
&lt;br /&gt;
Hier kann meist der Original Scriptcode verwendet werden, der früher in das init.d Script eingefügt werden sollte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. unit file erzeugen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Man erstellt eine neues unit file.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl edit --full --force enablexx.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mit folgendem Inhalt&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=EnableXX&lt;br /&gt;
Before=fhem.service&lt;br /&gt;
#After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=bash /usr/local/bin/EnableXX.sh&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Die Zeile Before=fhem.service stellt sicher, dass der Start vor FHEM erfolgt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Service aktivieren&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#sudo systemctl daemon-reload # nur notwendig wenn nicht systemctl edit verwendet wurde&lt;br /&gt;
sudo systemctl enable enablexx&lt;br /&gt;
sudo systemctl start enablexx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Erfolg auch nach einem komplette Neustart testen!&lt;br /&gt;
&lt;br /&gt;
=== Ein Script zusammen mit FHEM starten ===&lt;br /&gt;
&#039;&#039;&#039;1. Script bereitstellen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dazu wird eine Scriptdatei erzeugt, Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/fhem/ExecStartPre.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Code (Beispiele am Ende) hier einfügen und die Datei speichern und Editor verlassen (ctrl+s ctrl+x). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. ExecStartPre aktivieren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um ein Script mit root Rechten in der fhem.service unit auszuführen, müssen drei Zeilen in der Datei geändert werden ([[Fhem.service (systemd unit file)#unit file bearbeiten|siehe oben]]).&lt;br /&gt;
&lt;br /&gt;
Vor der Zeile ExecStart= wir diese Zeile eingefügt:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
ExecStartPre= bash /opt/fhem/ExecStartPre.sh&lt;br /&gt;
ExecStart=...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die beiden Zeilen User und Group muss man auskommentieren, da die Unit sonst mit dem User fhem ausgeführt wird.&lt;br /&gt;
{{Randnotiz|RNTyp=Fehl|RNText=Achtung: Die Gruppenmitgliedschaft des Users fhem (z.B. gpio) ist beim Systemstart an der Stelle noch nicht wirksam.}}&lt;br /&gt;
 #User=fhem &lt;br /&gt;
 #Group=dialout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Änderungen aktivieren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Änderungen werden erst nach einem daemon-reload aktiv und nach einem restart wirksam.&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#sudo systemctl daemon-reload # nur notwendig wenn nicht systemctl edit verwendet wurde&lt;br /&gt;
sudo systemctl restart fhem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Den Erfolg auch nach einem komplette Neustart testen!&lt;br /&gt;
&lt;br /&gt;
=== Start von anderen Services abhängig machen ===&lt;br /&gt;
In der fhem.service unit kann man sicherstellen, dass ein Service fertig gestartet wurde bevor fhem startet. Dazu kann man im unit Abschnitt zwei Zeilen einfügen (bzw. Kommentar entfernen):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Wants=xxx.service &lt;br /&gt;
After=xxx.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Man kann auch erzwingen, dass FHEM nicht startet falls die Voraussetzungen nicht erfüllt sind. Dafür muss anstatt Wants= Requires= verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Einstellungen dies und das ==&lt;br /&gt;
&lt;br /&gt;
=== Start verzögern ===&lt;br /&gt;
Es ist immer besser eine direkte Abhängigkeit zu definieren. In unklaren Situationen oder als erste Abhilfe kann es notwendig sein, einfach den FHEM Start zu verzögern.&lt;br /&gt;
&lt;br /&gt;
Der default Wert für &#039;&#039;TimeoutStartSec=&#039;&#039; liegt bei 90 sec. Anzeige mit &amp;lt;code&amp;gt;systemctl show fhem.service -p TimeoutStartUSec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Soll die Startverzögerung länger sein, muss dieser Wert zusätzlich gesetzt werden. Ansonsten wird der Start mit einer Fehlermeldung abgebrochen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
ExecStartPre=/bin/sleep 10&lt;br /&gt;
#TimeoutStartSec=            # default 90, set for larger sleep time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart verzögern ===&lt;br /&gt;
Sollte man z.B. bei einem Neustart über die FHEM Oberfläche (shutdown restart) zwei Starts innerhalb von 1 Sekunde im Logfile beobachten, kann man den Neustart im unit file mit einem Parameter um 2 - 10 Sekunden ({{Link2Forum|Topic=93870|Message=924833|LinkText=siehe auch diesen Forenbeitrag}}) verzögern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
...&lt;br /&gt;
Restart=...&lt;br /&gt;
RestartSec=2&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hinweise und Tipps ==&lt;br /&gt;
=== Startreihenfolge beeinflussen ===&lt;br /&gt;
Wie man erzwingen kann, dass FHEM &#039;&#039;&#039;nach&#039;&#039;&#039; hciuart (Bluetooth Service) startet, ist in {{Link2Forum|Topic=110716|LinkText=diesem Forenbeitrag}} beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Ausgaben im Script ===&lt;br /&gt;
Ausgaben mit echo landen im /var/log/syslog. Das Log kann man mit diesem Befehl anzeigen. Ist das Logfile zu unübersichtlich kann man sich auch z.B. nur 15 Zeilen nach systemd Ausgabe des unit files anzeigen lassen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /var/log/syslog&lt;br /&gt;
cat /var/log/syslog|grep -A 15 &amp;quot;FHEM Home&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielcode ===&lt;br /&gt;
Diese Codebeispiel ist auf dem Raspberry Pi ausführbar und lässt vor dem Start von FHEM die grüne LED (ACT) blinken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1: 3 mal kurz und 3 mal lang&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Lass die ACT LED (grün) am Pi 3 mal kurz und 3 mal lang blinken&lt;br /&gt;
ANZAHL=3&lt;br /&gt;
#Status (Standard [mmc0] )sichern&lt;br /&gt;
trigger=$(cat /sys/class/leds/led0/trigger|grep -o &amp;quot;\[.*\]&amp;quot;|tr -d [+])&lt;br /&gt;
#umschalten auf manuell&lt;br /&gt;
echo &amp;quot;none&amp;quot; &amp;gt;/sys/class/leds/led0/trigger&lt;br /&gt;
#blinken&lt;br /&gt;
for ((i=1 ; i&amp;lt;=$(( $ANZAHL * 2 )) ; i++ )); do&lt;br /&gt;
  echo $(( $i % 2 )) &amp;gt;/sys/class/leds/led0/brightness&lt;br /&gt;
  sleep 0.3&lt;br /&gt;
done&lt;br /&gt;
for ((i=1 ; i&amp;lt;=$(( $ANZAHL * 2 )) ; i++ )); do&lt;br /&gt;
  echo $(( $i % 2 )) &amp;gt;/sys/class/leds/led0/brightness&lt;br /&gt;
  sleep 1&lt;br /&gt;
done&lt;br /&gt;
#Status wieder herstellen&lt;br /&gt;
echo $trigger &amp;gt;/sys/class/leds/led0/trigger&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Vorlage:FHEMWiki_News&amp;diff=38282</id>
		<title>Vorlage:FHEMWiki News</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Vorlage:FHEMWiki_News&amp;diff=38282"/>
		<updated>2023-04-09T14:16:01Z</updated>

		<summary type="html">&lt;p&gt;Otto123: Umzug neuer Server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
{{News|06.04.2023|FHEM Wiki ist auf einen neuen Server umgezogen und läuft jetzt auf aktueller Software. Es gibt neue Skins für Mobilgeräte Unterstützung. }}&lt;br /&gt;
{{News|25.01.2023|Neue Module - [[AutomowerConnect|74_AutomowerConnect.pm]] und [[AutomowerConnectDevice|75_AutomowerConnectDevice.pm]] zur Bedienung von Husqvarnas Mähroboter über Husqvarnas Open API {{Link2Forum|Topic=131661|LinkText=Forenbeitrag}}.}}&lt;br /&gt;
{{News|14.01.2023|FHEM Version 6.2 wurde freigegeben. Updatehinweise in  {{Link2Forum|Topic=131618|LinkText=diesem Forenbeitrag}}.}}&lt;br /&gt;
{{News|08.11.2021|FHEM Version 6.1 wurde freigegeben. Updatehinweise in  {{Link2Forum|Topic=123972|LinkText=diesem Forenbeitrag}}.}}&lt;br /&gt;
{{News|25.05.2021|Ein weiteres Modul zur Integration von Diensten der Synology Diskstation wird per Update verteilt: [[SSFile - Integration der Synology File Station|SSFile]].}}&lt;br /&gt;
{{News|28.02.2020|Das neue Modul [[SSCal - Integration des Synology Calendar Servers| SSCal]] ermöglicht die Integration des Synology Calendar Servers.}}&lt;br /&gt;
{{News|28.01.2020|Neues Modul für die IP-Türsprechanlage [[DoorBird]] per Update verteilt.}}}}&lt;br /&gt;
{{News|26.01.2020|FHEM Version 6.0 wurde freigegeben. Updatehinweise: {{Link2Forum|Topic=107782}}}}&lt;br /&gt;
{{News|17.12.2019|Mit dem Modul [[SSChatBot - Integration des Synology Chat Servers|SSChatBot]] kann der Synology Chat Server in FHEM integriert werden. Es können Mitteilungen zwischen FHEM und Chat ausgetauscht sowie Befehle in FHEM ausgeführt werden. }}&lt;br /&gt;
{{News|23.09.2019|Das Modul [[CanOverEthernet]] ermöglicht das Empfangen von Can-Over-Ethernet Paketen von Steuerungen der Firma Technische Alternative}}&lt;br /&gt;
{{News|05.04.2019|Das [[SamsungAV]] Modul ermöglicht die Steuerung von Samsung Fernsehern und Bluray-Playern.}}&lt;br /&gt;
{{News|06.03.2019|Mit dem Modul [[Arlo]] ist die Einbindung von Arlo Kameras über die Arlo Cloud möglich}}&lt;br /&gt;
{{News|26.01.2019|Das [[TRÅDFRI|tradfri]] Modul erweitert die Palette der [[ZigBee]] Module.}}&lt;br /&gt;
{{News|14.01.2019|Der [[FHEM Connector für Amazon Alexa|FHEM Connector]] Skill für Amazon Alexa ist verfügbar.}}&lt;br /&gt;
{{News|02.11.2018|Das Modul [[TA_CMI_UVR16x2_UVR1611|TA_CMI_JSON]] kann Werte des C.M.I. der Firma Technische Alternative auslesen und eignet sich so optimal zum Loggen von Daten zB der UVR16x2 oder UVR1611.}}&lt;br /&gt;
{{News|11.09.2018|Mit dem Modul [[AutoShuttersControl|AutoShuttersControl]] oder kurz ASC können typische Aufgabenstellungen im Zusammenhang mit Rollläden u.ä. automatisiert werden, wie zum Beispiel das Öffnen bei Sonnenaufgang, Schließen bei Sonnenuntergang oder das Anfahren von Lüftungspositionen beim Öffnen des zugehörigen Fensters.  }}&lt;br /&gt;
{{News|12.02.2018|Die Module [[Modul Babble|Babble]] und [[Talk2Fhem|Talk2Fhem]] erweitern die Sprachsteuerungsmöglichkeiten von FHEM}}&lt;br /&gt;
{{News|02.10.2017|[[FTUI eigene Widgets|Eigene Widgets für FHEM Tablet UI erstellen]]}}&lt;br /&gt;
{{News|30.08.2017|[[WINCONNECT]] - Windows PC steuern und Informationen abfragen/anzeigen. }}&lt;br /&gt;
{{News|24.08.2017|[[FHEMWEB/Widgets]] - Widgets (Frontendelemente) von FHEMWEB }}&lt;br /&gt;
{{News|24.08.2017|Neues Modul [[Modul_YAAHM|YAAHM]] wird per update verteilt. Es stellt eine Oberfläche bereit, um per Webinterface die zyklische Ausführung von Kommandos - mit Tages- und Wochenprofil - zu konfigurieren}}&lt;br /&gt;
{{News|24.07.2017|[[Telnet|Verbindung mit dem FHEM-Server per Telnet]]}}&lt;br /&gt;
{{News|20.07.2017|[[FHEM startet nicht - Tipps zur Fehlersuche]]}}&lt;br /&gt;
{{News|06.06.2017|[[‎Relaisplatine-Homebrew-MySensors|MySensors-Relaisplatine im Selbstbau]]}}&lt;br /&gt;
{{News|31.05.2017|[[Datenbankgestützte_Erstellung_der_Energiebilanz_einer_SMA_PV-Anlage_mit_Überschußeinspeisung|Datenbankgestützte Erstellung der Energiebilanz einer PV-Anlage mit Überschußeinspeisung]]}}&lt;br /&gt;
{{News|30.04.2017|[[DoorPiBoard]]: Eine Platine zur Umsetzung des [[DoorPi_und FHEM|DoorPi-Projektes]]}}&lt;br /&gt;
{{News|21.03.2017|Artikel zum alternativen Frontend [[:Kategorie:FHEM_Tablet_UI|Tablet UI]] aktualisiert und deutlich erweitert}}&lt;br /&gt;
{{News|02.03.2017|Neues Modul zur Ansteuerung von [[LGTV_WebOS|LG-TVs mit dem Betriebssystem WebOS]] wird per update verteilt}}&lt;br /&gt;
{{News|20.02.2017|Neues Modul [[SIP-Client|SIP]], ein SIP-Client für FHEM, wird per update verteilt}}&lt;br /&gt;
{{News|19.02.2017|FHEM Version 5.8 wurde freigegeben. Updatehinweise beachten: {{Link2Forum|Topic=67419}}}}&lt;br /&gt;
{{News|18.01.2017|Neues Modul [[DOIFtools]] mit Funktionen zur Unterstützung des Benutzers im Umgang mit [[DOIF]] wird per update verteilt}}&lt;br /&gt;
{{News|12.01.2017|Neues Modul zur Ansteuerung des Bluetooth 4.1 BLE Pflanzensensors [[XiaomiFlowerSens|Xiaomi Flower Care Smart Monitor]] wird per update ausgeliefert}}&lt;br /&gt;
{{News|01.01.2017|Diverse neue Wiki-Artikel mit Informationen und Hilfen zu [[DOIF#Links|DOIF]] }}&lt;br /&gt;
{{News|10.12.2016|FHEM Wiki ist auf einen neuen Server umgezogen und hat eine neue Standard-Internetadresse: https://wiki.fhem.de}}&lt;br /&gt;
{{News|21.11.2016|Neues Modul [[Modul_PostMe|PostMe]] stellt eine komfortable Oberfläche zur Listenverwaltung bereit}}&lt;br /&gt;
{{News|11.10.2016|Neue Module [[NUKI|NUKIbridge und NUKIDevice]] zur Ansteuerung des Nuki Smartlock werden per update verteilt}}&lt;br /&gt;
{{News|07.10.2016|Neues Modul [[TRAFFIC]] zur Erfassung der Fahrzeiten bei aktueller Verkehrslage mittels Google Maps Directions API wird per update verteilt}}&lt;br /&gt;
{{News|19.07.2016|Neues Modul zur Unterstützung der HomeMatic-Interfaces [[HM-MOD-RPI-PCB_HomeMatic_Funkmodul_für_Raspberry_Pi|Funkmodul für Raspberry Pi]] und [[HM-LGW-O-TW-W-EU_Funk-LAN_Gateway|Funk-LAN Gateway]] wird per update verteilt }}&lt;br /&gt;
{{News|12.07.2016|Neues Modul [[DbRep - Reporting und Management von DbLog-Datenbankinhalten]] wird per update verteilt }}&lt;br /&gt;
{{News|08.02.2016|Neues Modul [[Mediaportal|MEDIAPORTAL]] (Steuerung einer Mediaportal-Installation über Wifiremote) wird per update verteilt}}&lt;br /&gt;
{{News|16.11.2015|Neues Modul [[HP1000]] (Einbindung einer HP1000 Wetterstation) wird per update verteilt}}&lt;br /&gt;
{{News|16.11.2015|Neuer FHEM Befehl [[msg]] (Intelligentes Versenden/Routing von Nachrichten der Typen Audio,Text,Mail,Push,Light,Screen) wird per update verteilt}}&lt;br /&gt;
{{News|15.11.2015|FHEM Version 5.7 wurde veröffentlicht. Unbedingt Updatehinweise beachten: {{Link2Forum|Topic=44094}}}}&lt;br /&gt;
{{News|30.10.2015|FHEM Wiki unterstützt nun [[Syntax Highlighting]]}}&lt;br /&gt;
{{News|18.10.2015|Neues Modul [[TechemHKV]] (Empfang von Daten eines Techem Heizkostenverteilers) wird per update verteilt}}&lt;br /&gt;
{{News|02.10.2015|Kleiner FHEM-Einsteiger-Kurs als Wiki Artikel unter [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]]}}&lt;br /&gt;
{{News|24.09.2015|Umfangreiche Überarbeitung der Wiki Artikel über [[:Kategorie:panStamp|panStamp Hardware und Software]]}}&lt;br /&gt;
{{News|11.09.2015|Neues Modul [[AMAD]] (Steuern und Informationsanzeige von Android-Geräten) wird per update verteilt}}&lt;br /&gt;
{{News|15.06.2015|Neues Modul [[yowsup]] (WhatsApp Unterstützung) wird per update verteilt}}&lt;br /&gt;
{{News|03.04.2015|Neues Geräte-Modul [[JawboneUp]] wird per update verteilt}}&lt;br /&gt;
{{News|23.03.2015|Neue Geräte-Module [[Modbus]], [[ModbusAttr]] und [[Modbus#Writing_modules_for_devices_using_this_module_as_a_library|ModbusSET]] werden per update verteilt}}&lt;br /&gt;
{{News|10.02.2015|FHEM Wiki ist auf einen neuen Server umgezogen und [[FHEMWiki:Interna#Offene_Probleme|Aktualisierung der MediaWiki-Software]]}}&lt;br /&gt;
{{News|31.01.2015|Neues Geräte-Modul [[Pushbullet]] wird per update verteilt}}&lt;br /&gt;
{{News|14.01.2015|Neues Hilfs-Modul [[CALVIEW]] wird per update verteilt}}&lt;br /&gt;
{{News|08.01.2015|Neues Geräte-Modul [[Buderus_Web_Gateway|km200]] zur Anbindung eines Buderus Web-Gateways wird per update verteilt}}&lt;br /&gt;
{{News|18.12.2014|Neues Geräte-Modul [[SONOS]] wird per update verteilt}}&lt;br /&gt;
{{News|15.12.2014|Überarbeitetes und erweitertes Geräte-Modul [[HTTPMOD]] wird per update verteilt}}&lt;br /&gt;
{{News|10.12.2014|Neues Geräte-Modul [[Vitotronic_200_(Viessmann_Heizungssteuerung)|VCONTROL]] zur Anbindung einer Viessmann Heizung wird per update verteilt}}&lt;br /&gt;
{{News|17.11.2014|Neues Hilfs-Modul [[logProxy]] wird per update verteilt}}&lt;br /&gt;
{{News|09.11.2014|FHEM Version 5.6 wurde veröffentlicht}}&lt;br /&gt;
{{News|27.10.2014|Neues Geräte-Modul [[harmony]] zur FHEM-Anbindung Logitech Harmony Hub basierter Fernbedienungen wird per update verteilt}}&lt;br /&gt;
{{News|25.10.2014|Neues Geräte-Modul [[KostalPiko|KOSTALPIKO]] wird per update verteilt}}&lt;br /&gt;
{{News|24.10.2014|Neues Hilfs-Modul [[HourCounter]] wird per update verteilt}}&lt;br /&gt;
{{News|06.09.2014|Neues Hilfs-Modul [[CustomReadings]] per update verteilt}}&lt;br /&gt;
{{News|19.08.2014|Neues Hilfs-Modul [[DOIF]] wird per update verteilt}}&lt;br /&gt;
{{News|19.08.2014|Der Befehl [[update]] wurde überarbeitet: {{Link2Forum|Topic=26311}} }}&lt;br /&gt;
{{News|13.08.2014|Zusätzliche Domäne fhem.org aktiviert: {{Link2Forum|Topic=26113}} }}&lt;br /&gt;
{{News|29.09.2013|FHEM Version 5.5 wurde veröffentlicht}}&lt;br /&gt;
{{News|11.05.2013|Die meisten Daten aus dem FhemWiki sind wieder hergestellt.}}&lt;br /&gt;
{{News|04.05.2013|FHEM Wiki wird neu aufgebaut.}}&lt;br /&gt;
{{News|04.05.2013|FHEM Wiki Update zu  [[Special:Version|MediaWiki 1.20.5]].}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Kategorie:Vorlage]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38281</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38281"/>
		<updated>2023-04-09T07:15:57Z</updated>

		<summary type="html">&lt;p&gt;Otto123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für aktuelle Mitteilungen ---------         --&amp;gt;   &lt;br /&gt;
&amp;lt;!-- Banner für aktuelle Mitteilungen ---------&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Das Wiki begrüßt Dich auf neuem Server.&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für aktuelle Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für aktuelle Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38246</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38246"/>
		<updated>2023-04-06T08:51:09Z</updated>

		<summary type="html">&lt;p&gt;Otto123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für wichtige Mitteilungen ---------         --&amp;gt;   &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Das Wiki begrüßt Dich auf neuem Server.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38245</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38245"/>
		<updated>2023-04-06T08:50:22Z</updated>

		<summary type="html">&lt;p&gt;Otto123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für wichtige Mitteilungen ---------         --&amp;gt;   &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Das Wiki begrüßt Dich auf neuem Server.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38243</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Hauptseite&amp;diff=38243"/>
		<updated>2023-04-03T21:04:37Z</updated>

		<summary type="html">&lt;p&gt;Otto123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Banner für wichtige Mitteilungen ---------         --&amp;gt;   &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: green; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Am Donnerstag 6.4.2023 ab 9:00 Uhr wird dieses Wiki wegen Wartungsarbeiten nur lesbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Wiki kann zeitweise nicht erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um Verständnis.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Banner für wichtige Mitteilungen ---------              &lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: red; border: 1px solid maroon; border-radius: 8px; padding: 0 1em 1em 1em; font-size: bigger; text-align: center; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Es finden aktuell Wartungsarbeiten an der FHEM-Infrastruktur statt. Es kann daher zu kurzzeitigen Ausfällen und Beeinträchtigungen beim Zugriff auf FHEM-Dienste (Forum, SVN, Wiki, fhem.de, Alexa FHEM Connector) kommen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wir bitten um etwas Geduld. Sämtliche FHEM-Dienste werden im Laufe des Tages wieder wie gewohnt zur Verfügung stehen.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
     Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ende von Banner für wichtige Mitteilungen --------  --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h1 style=&amp;quot;font-family:sans-serif; font-size: 1.8em; border: none; text-align: center;&amp;quot;&amp;gt;&#039;&#039;&#039;FHEM Wiki - Informationsportal zum FHEM SmartHome-Server&#039;&#039;&#039;&amp;lt;/h1&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;flexbox&amp;quot;&amp;gt; &amp;lt;!-- Beginn der Inhaltsboxen --&amp;gt;&lt;br /&gt;
&amp;lt;div  class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 1; flex: 1 1 80%; background-color:#cce5ff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM?&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM&#039;&#039;&#039; ([https://register.dpma.de/DPMAregister/marke/register/3020152110040/DE R]) ist ein in Perl geschriebener, GPL v2 lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.B. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Um es zu verwenden, benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem Perl Interpreter und angeschlossene Interfaces wie CUL-, EnOcean-, Z-Wave-USB-Stick etc. für einen Zugang zu den Aktoren und Sensoren.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 4; 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]][https://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM][[Datei:Info_green.png|20px]]&amp;lt;br /&amp;gt;DAS Einsteiger-PDF. &#039;&#039;&#039;Pflichtlektüre!&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Quick-Start]], english version: [[Quick-Start/en|Quick-Start]] &lt;br /&gt;
* kleiner FHEM-Kurs, benötigt keine Hardware: [[Erste Schritte in FHEM]] / [[First steps in FHEM]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 6; background-color:#fff0e0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Unterstützte Hardware (Auszug)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Kategorie:Hardware Typen|Hardware Typen]] - Funktionsbezogene Übersicht (z.B. [[:Kategorie:Unterhaltungselektronik|Unterhaltungselektronik / Multimedia]], [[:Kategorie:Heizungssteuerung|Heizungssteuerung]], [[:Kategorie:Energieverbrauchsmessung|Energieverbrauchsmessung]], etc.)&lt;br /&gt;
* [[:Kategorie:Server Hardware|Server Hardware]] - Hardware, auf der FHEM installiert werden kann&lt;br /&gt;
* [[:Kategorie:EMS Components|EMS]], [[:Kategorie:FHT Components|FHT]], [[:Kategorie:HMS Components|HMS]] Komponenten&lt;br /&gt;
* [[:Kategorie:1-Wire|1-Wire System]]&lt;br /&gt;
* [[:Kategorie:EIB/KNX|EIB/KNX Komponenten]]&lt;br /&gt;
* [[:Kategorie:FS20 Components|FS20 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:panStamp|panStamp Komponenten]]&lt;br /&gt;
* [[:Kategorie:Z-Wave Components|Z-Wave Komponenten]]&lt;br /&gt;
* [[:Kategorie:ZigBee|Zigbee Komponenten]]&lt;br /&gt;
* [[:Kategorie:IP Components|Geräte mit Webinterface (&amp;quot;IP&amp;quot;)]]&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 5; 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;
* [[Wie kann ich...]]?&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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 7; background-color:#FFFFE7;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Developers Corner&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Informationen zur Modul-Entwicklung:&lt;br /&gt;
** [[DevelopmentModuleIntro|Development Module Introduction]]&lt;br /&gt;
** [[Meta|Development Module and Package Meta Data]]&lt;br /&gt;
** [[DevelopmentModuleAPI|Development Module API]]&lt;br /&gt;
** [[DevelopmentFHEMWEB-API|Development FHEMWEB API]]&lt;br /&gt;
** [[Blocking Call]]&lt;br /&gt;
** [[CoProcess]]&lt;br /&gt;
** [[HttpUtils]]&lt;br /&gt;
** [[DevIo]]&lt;br /&gt;
** [[Guidelines zur Dokumentation]]&lt;br /&gt;
** [[DevelopmentGuidelinesAV|Development Guidelines AV-Module]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Organisatorisches:&lt;br /&gt;
** [[How to write a patch]]&lt;br /&gt;
** [[SVN Nutzungsregeln]]&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;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 3; background-color:#d7ffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FHEM Wiki News&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20em;overflow:scroll;overflow-x:hidden;&amp;quot;&amp;gt;{{FHEMWiki_News}}&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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 2; background-color:#e7f8ff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Was ist FHEM Wiki?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;FHEM Wiki&#039;&#039;&#039; ergänzt die stets tagesaktuelle, von den zuständigen Entwicklern gepflegte {{Link2CmdRef}} (Befehls-Referenz) um weitergehende Informationen rund um FHEM. Im Wiki arbeiten Nutzer und Entwickler gemeinsam an zusätzlicher Dokumentation von FHEM und damit zusammenhängenden Themen.&lt;br /&gt;
&lt;br /&gt;
Das FHEMWiki stellt neben der {{Link2CmdRef}}, dem [http://forum.fhem.de/ Forum] und der [http://www.fhem.de FHEM] Seite die zentrale Informationsquelle rund um FHEM dar. Bedeutung und Zusammenspiel dieser Elemente [[Dokumentationsstruktur|ist hier]] erläutert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{NUMBEROFUSERS}} [[Special:Listusers|Benutzer]] haben sich seit Mai 2013 registriert und {{NUMBEROFARTICLES}} Artikel geschrieben. ({{NUMBEROFEDITS}} Seitenänderungen bislang).--&amp;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 class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 8; 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/8}}&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;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 9; flex: 1 1 80%; 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;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpagebox&amp;quot; style=&amp;quot;order: 10; 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;
* [[Spezial:Verwaiste Seiten|verwaiste Seiten]] in sinnvoller Weise verlinken&lt;br /&gt;
* [[Spezial:Sackgassenseiten|Sackgassenseiten]] wikifizieren (Links auf andere Seiten einfügen)&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;
&#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;
* [[FHEMWiki:Interna|Internes zu diesem Wiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- Ende der Flexbox --&amp;gt;&lt;br /&gt;
[[Kategorie:FHEM]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=37831</id>
		<title>Virtueller Controller VCCU</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=37831"/>
		<updated>2022-12-20T11:55:19Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Einrichten */ Ergänzung im Abschnitt VCCU&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie: Eine VCCU innerhalb FHEM ist nicht zu verwechseln mit einer virtualisierten CCU3! Für letztere gibt es eine eigene Modulfalmilie [[HMCCU]], hier geht es ausschließlich um Geräte des TYPE CUL_HM.}}Eine &#039;&#039;&#039;Virtuelle CCU&#039;&#039;&#039;, auch &#039;&#039;&#039;VCCU&#039;&#039;&#039; genannt, ist eine Zentrale für [[HomeMatic]]-Geräte. Die VCCU tritt beim [[Pairing (HomeMatic)|Pairing]] an die Stelle des &#039;&#039;I/O-Devices&#039;&#039; (auch &amp;quot;Schnittstelle&amp;quot; genannt, zum Beispiel [[CUL]] und [[HM-CFG-LAN]]).&lt;br /&gt;
&lt;br /&gt;
HomeMatic-Geräte werden üblicherweise mit einer Zentrale gepaired, um sie zentral verwalten zu können. Der Pairing-Partner ist im einfachsten Fall das I/O-Device ([[CUL]], [[HM-CFG-LAN]], …) selbst. Nachteilig dabei ist, dass der Ausfall der Schnittstelle bewirkt, dass alle gepairten Geräte nicht mehr bedient werden können. Dies lässt sich im Gegensatz zu ungepairten Protokollen (z.b. FS20) auch nicht durch doppelte Definition mit abweichenden IO-Devices lösen, da das Pairing nur mit einer &#039;&#039;hmId&#039;&#039; erfolgen kann. Daher kann auch durch mehrere Schnittstellen / IOs keine Redundanz erreicht werden. Ähnliches gilt für eine Vergrößerung der Funkabdeckung durch mehrere Schnittstellen. &lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann durch eine VCCU gelöst werden. Die VCCU ist eine virtuelle Zentrale; sie tritt beim Pairing an die Stelle der Schnittstelle. Sie erhält eine eigene &#039;&#039;hmId&#039;&#039;, mit der die HM Sensoren und Geräte gepaired werden. Die Funkschnittstelle(n) werden dann von der VCCU als reine &amp;quot;dumme&amp;quot; IOs verwaltet. Dieses bietet vielfältige Möglichkeiten, z.B. die Verwendung mehrerer IOs, aus denen die VCCU die &amp;quot;beste&amp;quot; nach diversen Kriterien (z.B. RSSI) auswählt. Dadurch kann sowohl die Redundanz als auch die Funkabdeckung erhöht werden.&lt;br /&gt;
&lt;br /&gt;
Durch das Pairen der Geräte mit einer virtuellen CCU ergeben sich folgende Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Die Verwendung mehrerer I/O-Devices wird möglich. Das sorgt für Redundanz (Ausfallsicherheit) und/oder Reichweiten-Vergrößerung.&lt;br /&gt;
* Der Tausch eines I/O-Devices ist transparent für gepairte Geräte.&lt;br /&gt;
* Die VCCU stellt virtuelle Kanäle zur Verfügung, mit denen HomeMatic-Geräte [[HomeMatic Peering Beispiele|gepeert]] werden können.&lt;br /&gt;
* &amp;quot;Geordnete&amp;quot; Termination von Nachrichten (da die üblichen Funkschnittstellen (wie CUL im HM-Mode oder HM-LAN-Konfigurator) relativ &amp;quot;dumm&amp;quot; sind, führen viele Zustände zu den bekannten &amp;quot;Help me&amp;quot; Einträgen im Log)&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil einer VCCU gegenüber dem direkten Pairing mit dem I/O-Device ist ein Mehraufwand bei der initialen Konfiguration vom FHEM.&lt;br /&gt;
&lt;br /&gt;
== Kurzbeschreibung ==&lt;br /&gt;
Ein virtueller Controller &#039;&#039;&#039;VCCU&#039;&#039;&#039; ist der Protokoll-Endpunkt der Zentrale und ersetzt dabei logisch (jedoch nicht physikalisch) z.b. den [[HM-CFG-LAN LAN Konfigurations-Adapter]] einer &amp;quot;klassischen&amp;quot; FHEM Konfiguration&lt;br /&gt;
&lt;br /&gt;
Es können einer VCCU einzelne oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere I/O Devices (z.B. CULs und HM-CFG-LANs) zu einem &#039;&#039;Pool&#039;&#039;. Den HM-Devices in FHEM (Aktoren, Sensoren) kann dann als I/O Device die &#039;&#039;VCCU&#039;&#039; zugeordnet werden, dies geschieht durch das Attribut &#039;&#039;IOgrp.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Durch diese Gruppierung der I/O Devices und dem Zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges I/O Device im Device Pool der VCCU ausfallen und das oder die verbliebenden I/O Devices übernehmen diese Funktion (abhängig von der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare I/O Device zum Senden/Empfangen verwenden.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil ist, dass durch die VCCU auch das I/O Device genutzt werden kann, welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere &amp;quot;bewegliche&amp;quot; Störfaktoren)&lt;br /&gt;
&lt;br /&gt;
== Mehrere VCCUs in einer Installation==&lt;br /&gt;
Theoretisch erlaubt FHEM die parallele Nutzung mehrerer VCCUs, praktisch ergeben sich dadurch jedoch keine Vorteile gegenüber einer einzigen VCCU. Insbesondere kann bereits eine VCCU verschiedene I/O-Devices bedienen, zum Beispiel einen [[CUL]] &#039;&#039;und&#039;&#039; ein [[HM-CFG-LAN]].&lt;br /&gt;
&lt;br /&gt;
Jede VCCUs muss eine eindeutige &#039;&#039;HomeMatic-ID&#039;&#039; haben, mit der HomeMatic-Geräte gepaired werden. Folglich kann jedes HomeMatic-Gerät nur mit &#039;&#039;einer&#039;&#039; VCCU gepaired werden.&lt;br /&gt;
&lt;br /&gt;
Die VCCU überschreibt die hmid eines  I/O Device mit seiner eignen, daher können nicht mehrere VCCUs dasselbe I/O Device verwenden.&lt;br /&gt;
&lt;br /&gt;
== Definition der VCCU==&lt;br /&gt;
=== hmId wählen ===&lt;br /&gt;
Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Bei Schnittstellen und Zentralen ist dies eine &#039;&#039;hmId&#039;&#039;. Da die VCCU eine (virtuelle) Zentrale ist, muss sie auch mit einer &#039;&#039;hmId&#039;&#039; versehen werden. Dies geschieht per define analog zur Anlage einer physischen Schnittstelle (siehe weiter unten)&lt;br /&gt;
&lt;br /&gt;
Eine VCCU gibt die &#039;&#039;hmId&#039;&#039; an die ihr zugewiesenen IOs (Funkschnittstellen) weiter. Damit haben alle von einer VCCU genutzten I/Os nach der Zuweisung dieselbe &#039;&#039;hmId&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Definiert man eine VCCU nachdem IOs für HomeMatic angelegt und in Verwendung sind, sollte man die &#039;&#039;hmId&#039;&#039; der bereits vorhandenen Funkschnittstelle verwenden, hierdurch kann man sich das Neupairen der HM Devices ersparen. &lt;br /&gt;
* Hat man bereits mehrere Funkschnittstellen im Einsatz, werden diese unterschiedliche &#039;&#039;hmIds&#039;&#039; haben, zumindest eine Schnittstelle wird nach der Zuweisung zur VCCU seine &#039;&#039;hmId&#039;&#039; also ändern. &lt;br /&gt;
* Für mit dieser Schnittstelle schon gepairte Devices ist ein Neupairen unumgänglich.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss in jedem Fall das attr IOgrp eines vor Anlage der VCCU gepairten Gerätes auf die VCCU angelegt/geändert werden., z.B. so&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
(Siehe weiter unten ein Tipp, wie dies leicht nachträglich erledigt werden kann)&lt;br /&gt;
&lt;br /&gt;
Mit der Anlage einer VCCU hat der Inhalt des vorhandenen Attributes IODev eines HM_Devices keine Wirkung mehr. Statt dessen setzt die VCCU ein Internal IODev automatisch je nach Verfügbarkeit und Funklage. Das Attribut IODev ist dann nicht mehr notwendig und kann auch nicht mehr gesetzt werden, wenn IOgrp gesetzt ist.  &lt;br /&gt;
&lt;br /&gt;
=== Einrichten ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Achtung, die Reihenfolge der Befehle muss exakt eingehalten werden.}}&lt;br /&gt;
Diese Befehlsfolge erzeugt eine VCCU, bitte die Reihenfolge genau so abarbeiten!&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=CUL_HM ist leider nicht Raw Definition fähig!}}&lt;br /&gt;
Die Werte in &amp;lt;&amp;gt; durch die echten Werte ersetzen und die &amp;lt;&amp;gt; weglassen! Beispiel: &amp;lt;code&amp;gt;attr VCCU IOgrp VCCU&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;IOList&#039;&#039; dient dazu festzulegen, welche physikalischen Schnittstellen (&amp;quot;IO&amp;quot;) von der VCCU genutzt werden, dies sind in der Regel &#039;&#039;&#039;alle&#039;&#039;&#039; HM-fähigen Schnittstellen einer Installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IOList&#039;&#039; beinhaltet die Komma-getrennte Liste der IOs (&#039;&#039;&#039;keine Leerzeichen&#039;&#039;&#039;!), so wie sie in FHEM angelegt sind.&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;Name der vccu&amp;gt; CUL_HM &amp;lt;hmId&amp;gt;&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; model CCU-FHEM&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOList &amp;lt;Name des io1&amp;gt;[,&amp;lt;Name des io2&amp;gt;,...]&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die folgende Darstellung mit zwei IOs im Raw Definition Format dient nur als Beispiel. &#039;&#039;&#039;Diese Abfolge ist nicht zum Anlegen der VCCU geeignet!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es seien z.B. in FHEM bereits die beiden Schnittstellen HMLAN0 und CUL0 angelegt:&lt;br /&gt;
&lt;br /&gt;
 define HMLAN0 HMLAN 192.168.168.2:1000&lt;br /&gt;
 attr HMLAN0 hmId 123456&lt;br /&gt;
 attr HMLAN0 hmLanQlen 1_min&lt;br /&gt;
 attr HMLAN0 icon hm_lan&lt;br /&gt;
&lt;br /&gt;
 define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 hmId 123456&lt;br /&gt;
 attr CUL0 icon cul_cul&lt;br /&gt;
 attr CUL0 rfmode HomeMatic&lt;br /&gt;
&lt;br /&gt;
Dann kann zusätzlich die VCCU mit derselben hmId angelegt werden und die beiden physikalischen Schnittstellen ihr zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 define VCCU CUL_HM 123456&lt;br /&gt;
 attr VCCU IOList CUL0,HMLAN0&lt;br /&gt;
 attr VCCU IOgrp VCCU&lt;br /&gt;
 attr VCCU model CCU-FHEM&lt;br /&gt;
 attr VCCU subType virtual&lt;br /&gt;
 attr VCCU webCmd virtual:update&lt;br /&gt;
&lt;br /&gt;
Wird die VCCU mit einer von vorhandenen Schnittstellen abweichenden &#039;&#039;hmId&#039;&#039; angelegt, so wird die &#039;&#039;hmId&#039;&#039; der ihr zugewiesenen Schnittstelle(n) automatisch angepasst. Dies hat in der Regel zur Folge, dass HM Devices neu gepairt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Dies trifft auch zu, wenn bereits vorhandene Schnittstellen unterschiedliche hmIDs haben, dann wird sich die hmID mindestens einer Schnittstelle ändern. (Der Einfachheit halber war im obigen Beispiel angenommen, dass auch vorher die beiden Schnittstellen bereits die gleiche ID hatten.)&lt;br /&gt;
&lt;br /&gt;
=== Auswirkungen auf IOs / Funkschnittstellen===&lt;br /&gt;
Sind IOs durch das Attribut IOList einer VCCU zugewiesen und werden die notwendigen Attribute im IO gesetzt, so wird die hmId durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in den Internals &#039;&#039;owner&#039;&#039; und &#039;&#039;owner_CCU&#039;&#039; des IO automatisch eingetragen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was passiert beim Austausch/Wegfall von IOs ===&lt;br /&gt;
Häufig wird das Thema VCCU erst angefasst, wenn das System schon eine Weile besteht und ein zweiter IO eingebaut, oder der alte IO ausgetauscht werden soll. Dabei entsteht folgende ungünstige Struktur in der fhem.cfg&lt;br /&gt;
 ...&lt;br /&gt;
 define erster IO&lt;br /&gt;
 ...&lt;br /&gt;
 define alle möglichen HM Geräte&lt;br /&gt;
 ...&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define neuer IO&lt;br /&gt;
Beim Start von FHEM wird die cfg Zeilenweise abgearbeitet und für jedes HM Gerät geprüft ob ein IO vorhanden ist, gegebenenfalls erfolgt ein Fehlereintrag im Log (unknown IODev specified). Wenn der neue IO erst am Ende der cfg definiert ist, ist er für alle davor liegenden HM Geräte nicht vorhanden. Das ist nur ein Schönheitsfehler beim Start von FHEM, im laufenden Betrieb spielt das keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Folgende Struktur wäre erstrebenswert&lt;br /&gt;
 ...&lt;br /&gt;
 define Homematic IO 1&lt;br /&gt;
 define Homematic IO 2&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define HM Geräte &lt;br /&gt;
 ...&lt;br /&gt;
Solange kein Modul die Einträge in der fhem.cfg entsprechend einsortiert, muss diese Korrektur von Hand erfolgen. Dies ist einer der wenigen Fälle, wo direktes Editieren der fhem.cfg z.B. mit dem eingebautem Editor unumgänglich ist. Soll der im Standard-WEBinterface von FHEM eingebaute Editor verwendet werden, muss zuerst das Attribut&lt;br /&gt;
 attr WEB editConfig 1&lt;br /&gt;
in FHEM gesetzt werden.&lt;br /&gt;
Anschließend die kompletten define Blöcke mit allem was dazu gehört entsprechend in die empfohlene Struktur bringen. &lt;br /&gt;
Datei sichern und rereadcfg eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Pairen von HM Devices===&lt;br /&gt;
Ein erneutes Pairen nach dem Anlegen einer VCCU in bestehenden Installationen ist nicht notwendig!&lt;br /&gt;
 &lt;br /&gt;
Neue HM Devices sollten vorzugsweise direkt mit der VCCU gepairt werden, hierzu werden die normalen Befehle&lt;br /&gt;
  hmPairForSec&lt;br /&gt;
also z.b. &lt;br /&gt;
  set VCCU hmPairForSec 600&lt;br /&gt;
oder&lt;br /&gt;
  hmPairSerial&lt;br /&gt;
verwendet. &lt;br /&gt;
&lt;br /&gt;
Es ist alternativ weiter möglich - auch nach Anlage einer VCCU - HM Devices mit diesen Kommandos direkt an ein IO zu pairen, d.h. diese Kommandos haben auch nach Anlage einer VCCU noch eine Funktion an der physikalischen Schnittstelle (im Gegensatz z.b. zum attr IODev).&lt;br /&gt;
&lt;br /&gt;
Da die VCCU und alle IOs die selbe &#039;&#039;hmId&#039;&#039; teilen, hat diese &#039;&#039;&#039;nicht&#039;&#039;&#039; die Wirkung, dass das Geräte etwa nicht mit der VCCU, sondern nur mit dem gepairten IO angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
Ist der Pairvorgang nicht sofort (oder nur teilweise) erfolgreich, kann/muss er ohne Weiteres 2 bis 3 mal wiederholt werden. Dann sollte das Gerät erfolgreich gepairt sein. Mit hmInfo configCheck kann das einfach überprüft werden. Mitunter kann es auch sinnvoll sein, das Gerät in den Auslieferungszustand zu bringen (siehe Handbuch, oft Knopf mindestens 5 Sekunden drücken, bis es blinkt, dann loslassen und nochmals 5 Sekunden drücken, bis es schneller blinkt) und danach erneut zu pairen.&lt;br /&gt;
&lt;br /&gt;
==== Autocreate ====&lt;br /&gt;
Sofern Autocreate eingeschaltet ist und das Pairing wie oben beschrieben an die VCCU erfolgt, wird unter anderem für das Device folgendes Attribut angelegt:&lt;br /&gt;
&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:&amp;lt;PhysischesIO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
z.B.&lt;br /&gt;
&lt;br /&gt;
 attr Thermostat_Bad IOgrp VCCU:HMLAN1&lt;br /&gt;
&lt;br /&gt;
Das attr &amp;lt;device&amp;gt; IOgrp:... zeigt an, welches physikalische IO zum Zeitpunkt des Autocreates verwendet wurde, vermutlich ist das das IO mit der besseren Funklage (wenn mehrere existieren). Dasselbe IO wird mit&lt;br /&gt;
 IOgrp VCCU:HMLAN1&lt;br /&gt;
auch als prefered eingetragen. D.h. die VCCU wird später zuerst prüfen ob HMLAN1 verfügbar ist (condition=ok) und es dann verwenden, andere IOs werden nur verwendet, wenn HMLAN1 nicht verfügbar ist.&lt;br /&gt;
Dieser Eintrag kann manuell geändert werden, Details im folgenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
== Dynamisches IO ==&lt;br /&gt;
Ohne VCCU sendet das System Befehle an ein HM Device in der Regel immer über das gleiche IO-Device. Fällt es aus, wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Außerdem kann eine &#039;&#039;bewegliche&#039;&#039; Fernbedienung ihre Verbindung zu einem IO verlieren, obwohl sie über ein anderes IO gut kommunizieren könnten.&lt;br /&gt;
&lt;br /&gt;
Die VCCU adressiert beide Probleme:&lt;br /&gt;
&lt;br /&gt;
Durch das Attibut IOgrp  &lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;preferredIO&amp;gt;&lt;br /&gt;
kann bestimmt werden, wie die VCCU die IO Devices genau nutzt. Insbesondere ist optional ein Preferd IO Device definierbar: bei stationären Devices - der häufigste Fall - sollte man das beste IO auswählen und als Default nutzen. Ein weiteres IO wird bei Ausfall des Ersten genutzt.&lt;br /&gt;
&lt;br /&gt;
Das preferredIO ist jedoch optional und kann insbesondere bei beweglichen HM Devices (Fernbedienungen) weggelassen werden.&lt;br /&gt;
&lt;br /&gt;
Es können auch mehrere preferredIO definiert werden, diese werden in der definierten Reihenfolge genutzt&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;prefIO1&amp;gt;,&amp;lt;prefIO2&amp;gt;,&amp;lt;prefIO3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:HMLAN1&lt;br /&gt;
wird die VCCU zuerst versuchen Befehle an &amp;lt;device&amp;gt; mit HMLAN1 zu senden, falls seine condition=ok. &lt;br /&gt;
Falls nicht wird (einer) der verbleibende(n) IOs verwendet, hier der mit dem besten RSSI.&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU&lt;br /&gt;
wird durch die VCCU der IO mit dem besten RSSI zum Device gewählt, falls seine condition=ok ist. &lt;br /&gt;
&lt;br /&gt;
Da dies für jedes angelegte HM Device einzeln definiert werden kann/muss, kann so auch eine Verteilung des Funkverkehrs vorgenommen werden, z.b. um die 1%-Regel (HighLoad) zu berücksichtigen, dennoch bleibt die Redundanz bei Ausfall einer Schnittstelle erhalten.&lt;br /&gt;
&lt;br /&gt;
=== Bemerkungen ===&lt;br /&gt;
Die besprochene Steuerung betrifft das &#039;&#039;&#039;Senden&#039;&#039;&#039;. Empfangen und verarbeitet werden Nachrichten immer von allen verfügbaren Quellen. Kanäle senden nicht selbständig und haben daher auch kein Attribut IOgrp.&lt;br /&gt;
&lt;br /&gt;
=== IOgrp bei nachträglicher Einrichtung einer VCCU ===&lt;br /&gt;
Wie erwähnt wird beim Verwenden von Autocreate das Attribut IOgrp mit angelegt.&lt;br /&gt;
Bei HM Devices die vor der Einrichtung einer VCCU angelegt wurden, fehlt das Attribut aber.&lt;br /&gt;
Es wird empfohlen, das Attribut IOgrp in solchen Devices zu nachträglich setzen. Kanäle senden nicht selbständig, haben daher kein Attribut IOgrp.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;IODev&#039;&#039;&#039; wird dann automatisch gelöscht, wenn es gesetzt war, Usereinträge haben keine Funktion.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setzen der IOgrp auf (fast) allen Devices mit einem einzigen Befehl ====&lt;br /&gt;
In einer bestehenden FHEM-Installation mit mehreren/vielen Devices, kann das Setzen der &#039;&#039;IOgrp&#039;&#039; aufwendig sein. &lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl werden alle Geräte mit einer 6 stelligen DEF (HEX Zahl) um das notwendige Attribut erweitert. Die DEF 000000 (ActionDetector) wird ausgespart.&lt;br /&gt;
&lt;br /&gt;
Zunächst kann man den Filter testen und damit die Auswirkung auf Geräte prüfen.&lt;br /&gt;
:&amp;lt;code&amp;gt;list TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte nur &#039;&#039;&#039;VCCU&#039;&#039;&#039; durch den echten Namen der VCCU ersetzen!&lt;br /&gt;
:&amp;lt;code&amp;gt;attr TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6} IOgrp VCCU&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend nicht vergessen, die Konfiguration mit &#039;&#039;&#039;save&#039;&#039;&#039; zu speichern.&lt;br /&gt;
&lt;br /&gt;
== Virtuelle Kanäle der VCCU==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText= Die virtuellen Kanäle der VCCU funktionieren nicht als:&lt;br /&gt;
# virtueller Fensterkontakt&lt;br /&gt;
# virtueller Temperaturfühler&lt;br /&gt;
# virtueller HM-CC-TC&lt;br /&gt;
# virtueller TeamLead für Rauchmelder&lt;br /&gt;
Siehe Beispiel in [[HM-CC-RT-DN]] im Abschnitt externe Sensoren}}&lt;br /&gt;
: &#039;&#039;→ Siehe auch: [[HomeMatic#IO_Entities]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine VCCU kann bis zu 50 virtuelle Kanäle, sogenannte &#039;&#039;&#039;IO-Entities&#039;&#039;&#039;, bedienen. Diese können als Sender/Sensoren oder Empfänger genutzt werden. Man kann diese Kanäle mit einem realen Kanal peeren und Aktionen triggern. &lt;br /&gt;
&lt;br /&gt;
Man peert beispielsweise einen Dimmer mit einer IO-Entity um &amp;quot;Tastendrücke&amp;quot; in der Zentrale auslösen zu können. Sowohl kurze (short) als auch lange (long) Tastendrücke können so an den Dimmer gesendet werden.&lt;br /&gt;
Auch mehrere Aktoren können mit einer IO-Entity gepeert werden, beispielsweise um alle Lichter der Gruppe mit einem &amp;quot;press&amp;quot; gleichzeitig zu schalten. &lt;br /&gt;
&lt;br /&gt;
=== Anlegen ===&lt;br /&gt;
  set VCCU virtual &amp;lt;Anzahl Button&amp;gt;&lt;br /&gt;
z.B.&lt;br /&gt;
  set VCCU virtual 10&lt;br /&gt;
legt 10 Kanäle für die VCCU an, die Kanäle 1-10. Evtl. vorhandene Kanäle größer 10 werden gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Kommandos ===&lt;br /&gt;
: &#039;&#039;→ Siehe auch: {{Link2CmdRef|Anker=CUL_HM-set-virtual}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verfügbare Kommandos auflisten:&lt;br /&gt;
&lt;br /&gt;
  get vccu_Btn1 cmdList&lt;br /&gt;
&lt;br /&gt;
Insbesondere gibt es:&lt;br /&gt;
  set vccu_Btn1 press short&lt;br /&gt;
  set vccu_Btn1 press long&lt;br /&gt;
  set vccu_Btn1 postEvent &amp;lt;condition&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
 [[Kategorie:HomeMatic supportDevice]]&lt;br /&gt;
 &lt;br /&gt;
 [[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37665</id>
		<title>FHEM startet nicht - Tipps zur Fehlersuche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37665"/>
		<updated>2022-11-14T11:46:32Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Minimal Config starten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es gibt einen weiteren Artikel zur Fehlersuche. [[Hilfe! Mein FHEM funktioniert nicht!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kein Zugriff auf FHEMWEB/FHEM startet nicht - Was kann ich tun?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deine [[FHEMWEB]]-Seite ist nicht erreichbar? Ist FHEM tot, oder ist das Netzwerk kaputt? Was kann ich machen, um zu prüfen, woran es genau liegt?&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki-Artikel soll es darum gehen, wie Du für Dich prüfen kannst, ob ein Fehler bei FHEM, im Netzwerk oder ein anderes Problem vorliegt.&lt;br /&gt;
== Prüfen: Läuft überhaupt ein FHEM-Prozess? ==&lt;br /&gt;
Man kann sich unter einem Linuxsystem sämtliche laufende Prozesse auflisten lassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;ps&#039;&#039; listet je nach Argument alle laufende Prozesse auf. Die Liste kann man nun noch nach einem bestimmten Prozess filtern. Aufruf und Ausgabe einer Prozessliste mit einem Filter nach perl sieht z. B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cooltux@fhem01-cluster:~&amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11320 pts/0    S+     0:00 grep --color=auto perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wir sehen, wird hier lediglich der gerade ausgeführte Befehl &#039;&#039;ps&#039;&#039; gefunden (weil das Wort &#039;&#039;perl&#039;&#039; in der Aufrufzeile stand. Es wird hier überhaupt kein Perl-Prozess gelistet. Aktuell läuft also definitiv kein FHEM, das ja ein Perl-Programm/Prozess ist.&lt;br /&gt;
&lt;br /&gt;
Eine Prozessliste mit einem laufenden FHEM-Prozess könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[11:31 root@fhem01-cluster cooltux] &amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15852 ?        R    2119:09 /usr/bin/perl fhem.pl configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;21447 pts/0    S+     0:00 grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM (&#039;&#039;perl fhem.pl ...&#039;&#039;) ist in diesem Fall also aktiv.&lt;br /&gt;
&lt;br /&gt;
=== systemd ===&lt;br /&gt;
&lt;br /&gt;
Nutzt das Linux-System den systemd, kann mit folgendem Befehl der Status des FHEM-Prozesses geprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;service fhem status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Ausgabe könnte z.B. so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ● fhem.service - FHEM Home Automation&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Thu 2018-08-09 14:32:16 CEST; 20h ago&lt;br /&gt;
  Process: 27641 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 27643 (perl)&lt;br /&gt;
    Tasks: 1 (limit: 4915)&lt;br /&gt;
   CGroup: /system.slice/fhem.service&lt;br /&gt;
           └─27643 /usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
 &lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Starting FHEM Home Automation...&lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Started FHEM Home Automation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prüfen: Ist der laufende FHEM-Prozess überlastet? ==&lt;br /&gt;
Ich sollte mir anschauen, ob der FHEM-Prozess vielleicht zu sehr ausgelastet ist, der Prozess also 100 Prozent CPU Auslastung produziert?&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Linuxbefehl &#039;&#039;top&#039;&#039; wird uns hierbei behilflich sein:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:38 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:38:18 up 11 days, 18:58,  1 user,  load average: 1,07, 1,03, 1,00&lt;br /&gt;
 Tasks: 125 total,   2 running, 123 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s): 24,9 us,  0,9 sy,  0,0 ni, 74,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   833532 used,   111992 free,    41552 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46564 used,    55832 free.   496240 cached Mem&lt;br /&gt;
 PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 15852 fhem      20   0  103652  82160   5068 R 100,0  8,7   2125:41 perl                                                                                                               &lt;br /&gt;
 21683 root      20   0    5740   2560   2092 R   1,0  0,3   0:00.37 top                                                                                                                &lt;br /&gt;
 19129 cooltux   20   0   86204  22348   3668 S   0,3  2,4  64:16.90 insync-portable                                                                                                    &lt;br /&gt;
 21350 cooltux   20   0   11436   2848   2248 S   0,3  0,3   0:00.10 sshd                                                                                                               &lt;br /&gt;
     1 root      20   0   23292   2368   1380 S   0,0  0,3   0:54.23 systemd                                                                                                            &lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd                                                                                                           &lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.20 ksoftirqd/0                                                                                                        &lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H                                                                                                       &lt;br /&gt;
     7 root      20   0       0      0      0 S   0,0  0,0   8:20.71 rcu_sched                                                                                                          &lt;br /&gt;
     8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh                                                                                                             &lt;br /&gt;
     9 root      rt   0       0      0      0 S   0,0  0,0   0:05.45 migration/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier können wir nun eindeutig erkennen, dass unser FHEM die CPU mit 100 Prozent auslastet. FHEM hat also ein Problem!&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich ein FHEM/Perl-Prozess ohne Probleme:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:50 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:50:33 up 11 days, 19:10,  1 user,  load average: 0,84, 1,03, 1,00&lt;br /&gt;
 Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,6 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   818344 used,   127180 free,    43748 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46820 used,    55576 free.   489652 cached Mem&lt;br /&gt;
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 22074 fhem      20   0   86424  68516   7200 S   1,3  7,2   0:47.64 perl&lt;br /&gt;
 22294 root      20   0    5740   2564   2092 R   1,3  0,3   0:00.19 top&lt;br /&gt;
 22296 fhem      20   0   86424  63556   2240 S   1,3  6,7   0:00.04 perl&lt;br /&gt;
 22297 fhem      20   0    2088    408    328 S   0,7  0,0   0:00.02 ping&lt;br /&gt;
     7 root      20   0       0      0      0 S   0,3  0,0   8:21.23 rcu_sched&lt;br /&gt;
  1366 mysql     20   0  620608 157132   5736 S   0,3 16,6  70:12.59 mysqld&lt;br /&gt;
 19481 root      20   0       0      0      0 S   0,3  0,0   0:02.35 kworker/3:0&lt;br /&gt;
     1 root      20   0   23292   2408   1420 S   0,0  0,3   0:54.27 systemd&lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd&lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.42 ksoftirqd/0&lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Prüfen: Stimmen die Dateiberechtigungen? ==&lt;br /&gt;
Alle Dateien im Verzeichnis /opt/fhem/ und allen Unterverzeichnissen  gehören nach der Installation dem Benutzer fhem und der Gruppe dialout. Man kann es leicht prüfen:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig wird der Eigentümer durch Manipulation der Dateien falsch gesetzt, mit diesem Befehl kann man alle Dateien auf den Eigentümer fhem und dessen primäre Gruppe setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem: /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Setup Routine setzt den Besitz auf fhem:dialout &amp;lt;code&amp;gt;sudo chown -R fhem:dialout /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und wenn sich gar nichts mehr tut? ==&lt;br /&gt;
=== Die letzen Zeilen im existierenden FHEM Log anzeigen  ===&lt;br /&gt;
So lässt man sich auf Systemebene die letzen 20 Zeilen im Log anzeigen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tail -n 20 /opt/fhem/log/fhem-$(date &#039;+%Y-%m&#039;).log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fehlernachrichten von FHEM bei dessen Start analysieren  ===&lt;br /&gt;
In der Regel werden die Ausgaben von FHEM, auch die beim Start, gemeinsam mit vielen anderen Nachrichten in ein Logfile geschrieben. Dort kann natürlich nach Ursachen geforscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine einfachere Auswertung wird möglich, wenn man diese Meldungen zeitweilig in einem Terminalfenster (das Ding, um Kommandozeilenbefehle einzugeben) angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
Seit dem 01.08.2017 gibt es die Möglichkeit beim manuellen Starten von FHEM im Terminal den Schalter -d zu verwenden ({{Link2Forum|Topic=74774|Message=666766}}). Dieser startet FHEM mit den beiden gesetzten Attributen &amp;lt;code&amp;gt;attr global logfile -&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;attr global verbose 5&amp;lt;/code&amp;gt; und gibt somit alle Meldungen im Terminalfenster aus. Zuerst mit ins FHEM Verzeichnis wechseln. Root oder sudo ist nicht erforderlich!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss ein (mit 100 %) laufendes FHEM zunächst beendet werden! z.B.: &amp;lt;code&amp;gt;sudo systemctl stop fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ins FHEM Verzeichnis wechseln: &amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nach Konfiguration FHEM im debug Modus starten:&lt;br /&gt;
&lt;br /&gt;
fhem.cfg - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
configDB - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man genug analysiert hat, FHEM mit Ctrl-C/Strg-C stoppen&lt;br /&gt;
&lt;br /&gt;
== Es ist nach dem letzten Update passiert? ==&lt;br /&gt;
Beispielhaft für das Vorgehen wird das in diesem {{Link2Forum|Topic=118533|LinkText=Forumthread}} beschrieben. FHEM speichert vor dem Update die Dateien ins Verzeichnis restoreDir die aktualisiert werden. Es handelt sich dabei nicht um eine komplette Sicherung des Systems!&lt;br /&gt;
&lt;br /&gt;
Man kann sich über die gesicherten Versionen/Dateien einen Überblick verschaffen (Datum anpassen!):&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/update/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hat man die verursachende Datei ermittelt, kann man gezielt diese Datei wieder herstellen:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp /opt/fhem/restoreDir/update/2021-02-06/FHEM/NameDerDatei /opt/fhem/FHEM/&amp;lt;/code&amp;gt;&lt;br /&gt;
Es gibt bei einigen Modulen Abhängigkeiten von anderen Dateien, es ist dringend angeraten, dann den kompletten zusammengehörigen Satz wieder herzustellen!&lt;br /&gt;
&lt;br /&gt;
Will man einen kompletten Schritt zurück vor dem Update gehen, weil man den Fehler nicht einkreisen kann, stellt man so alles vor dem Update wieder her. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/update/2021-02-05/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die config Datei ist das Problem? ==&lt;br /&gt;
Bei jedem save wird in  /opt/fhem/restoreDirs eine Sicherung der fhem.cfg und das Statefile fhem.save durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile vom System kann man sich einen Überblick verschaffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollten Pfade mit Datums Angaben sein.&lt;br /&gt;
&lt;br /&gt;
Den exakten Zeitpunkt der gesicherten Dateien kann man sich so anzeigen lassen (Beispiel).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/save/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;lastKnownGood&amp;quot; Konfiguration kann man so wiederherstellen und anschließend FHEM wieder starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/save/2020-02-28/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Berechtigungen werden durch verwenden von User fhem eigentlich erhalten. &lt;br /&gt;
&lt;br /&gt;
Falls die Berechtigungen nicht stimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/log/fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minimal Config starten ==&lt;br /&gt;
Wenn gar nichts mehr geht, ist es manchmal ratsam eine minimal Konfiguration zu starten um die Hardware oder Netzwerkanbindung an sich zu testen.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist zunächst sicher zu stellen, dass kein FHEM Prozess läuft (siehe oben)&lt;br /&gt;
&lt;br /&gt;
Die fhem.cfg.demo (Bestandteil von FHEM) ist extra für den interaktiven Start gedacht, die Logausgaben landen in der Konsole. &lt;br /&gt;
&lt;br /&gt;
Die Demo kann interaktiv mit Ctrl+C beendet werden. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo perl fhem.pl fhem.cfg.demo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Oder man holt sich die Original minimal fhem.cfg&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo -su fhem wget -qO minimal.cfg https://svn.fhem.de/fhem/trunk/fhem/fhem.cfg&lt;br /&gt;
sudo perl fhem.pl minimal.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wäre es auch möglich ein [[Update]] zu machen oder Dateien wie im Update Wiki Artikel beschrieben direkt aus dem SVN zu holen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig fhem.pl mit erhöhten Rechten zu starten, da sonst fhem.pl nicht auf den user fhem umschalten kann - das würde zu Rechte Problemen führen!&lt;br /&gt;
&lt;br /&gt;
Für configDB User gibt es den {{Link2Forum|Topic=86225|LinkText= rescue Modus}}.&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Cmdalias&amp;diff=37634</id>
		<title>Cmdalias</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Cmdalias&amp;diff=37634"/>
		<updated>2022-11-04T09:34:24Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* grep */ Ergänzung zu grep eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:cmdalias}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von Benutzer-definierten Befehlen in FHEM&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=cmdalias&lt;br /&gt;
|ModForumArea=FHEM&lt;br /&gt;
|ModTechName=98_cmdalias.pm&lt;br /&gt;
|ModOwner={{Link2FU|8|Rudolf König}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der FHEM-Befehl [[cmdalias]] dient zur Erstellung von benutzerdefinierten Befehlen. &lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
Die jeweiligen Befehlsketten können mit &#039;&#039;cmdalias&#039;&#039; verkürzt oder sogar verändert werden.&lt;br /&gt;
Ein schönes Beispiel dafür ist, dass sogar [[:Kategorie:FHEM Befehl|interne Befehle]] wie &amp;quot;shutdown restart&amp;quot; ersetzt werden können durch einen alias der genau so heißt aber zusätzlich vorher noch z.B. ein &amp;quot;save&amp;quot; ausführt.&lt;br /&gt;
&lt;br /&gt;
== Einbindung in FHEM ==&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Die folgenden Codebeispiele sind, sofern nicht anders erwähnt, als Einzeiler &#039;&#039;&#039;ohne&#039;&#039;&#039; Zeilenumbrüche einzugeben.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define &amp;lt;name&amp;gt; cmdalias &amp;lt;cmd&amp;gt; [parameter] AS newcommand...&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispieldefinition&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define s1 cmdalias shutdown update AS save;;shutdown&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define s2 cmdalias set lamp .* AS { Log 1, &amp;quot;$EVENT&amp;quot;;; fhem(&amp;quot;set $EVENT&amp;quot;) }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufruf in FHEM ==&lt;br /&gt;
Die aliase können entweder in der FHEM Befehlzeile oder direkt im Telnet eingegeben werden.&lt;br /&gt;
[[Datei:cmdalias_eingabe_telnet.png|mini|left|x200px|Ausgabe Telnet]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt;[[Datei:cmdalias_eingabe_fhemweb.png|mini|right|x200px|Ausgabe in FHEMWEB]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== setex ===&lt;br /&gt;
Schaltet ein Device nur dann, wenn Status ungleich des aktuellen Status ist&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_setex cmdalias setex .* AS set $EVTPART0:FILTER=STATE!=$EVTPART1 $EVTPART1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ls ===&lt;br /&gt;
Verkürzter Aufruf von list mit Wildcard Suche&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_ls cmdalias ls .* AS list .*$EVENT.*&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== grep ===&lt;br /&gt;
Durchsuchen der FHEM Dateien nach einem Schlüsselwort&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_grep cmdalias grep .* AS {qx(grep -i \&#039;$EVENT\&#039; *.cfg FHEM/99*.pm)}&amp;lt;/syntaxhighlight&amp;gt;Mit Anzeige des zugehörigen define&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
defmod c_grep cmdalias grep .* AS {qx(grep -inE \&#039;$EVENT|define\&#039; *.cfg FHEM/99*.pm|grep -i -B 1 \&#039;$EVENT\&#039;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hostname ===&lt;br /&gt;
Hostname des FHEM Rechners anzeigen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_hostname cmdalias hostname AS {(split(&#039;\.&#039;, qx(hostname)))[0]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== svnupdate ===&lt;br /&gt;
{{Randnotiz|RNTyp=Warn|RNText=&#039;&#039;&#039;Warnhinweis zu svnupdate&#039;&#039;&#039;&amp;lt;br&amp;gt;Für das Update einer FHEM-Installation sollte grundsätzlich der dafür vorgesehene FHEM-Befehl [[update]] verwendet werden. Bei Nutzung des hier vorgeschlagenen &amp;quot;svn update&amp;quot; werden die Funktionen des FHEM-Befehls update nicht aufgerufen (Anzeige CHANGE.txt, Backup, Generierung aktuelle commandref, Aufräum- und Verschiebeaktionen bei der FHEM-Installation,..). Funktioneinschränkungen und -störungen von FHEM könnten die Folge sein. Bitte svn-update nur bei genauer Kenntnis der Folgewirkungen nutzen. Bei Anfragen im Forum ist auf die Nutzung von svn-update hinzuweisen. }}&lt;br /&gt;
Direktes FHEM Update mit Hilfe der aktuellen SVN Version &lt;br /&gt;
Hinweis: Subversion Client muss installiert sein! Installation unter Debian/Ubuntu durch &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;sudo apt-get install subversion&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Danach einmal die FHEM Version auschecken mit &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;cd /opt&lt;br /&gt;
   svn checkout https://svn.fhem.de/fhem/trunk/fhem fhem&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_svnupdate cmdalias svnupdate AS { `svn update /opt/fhem/` }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== atexec ===&lt;br /&gt;
Triggert einen AT Timer&lt;br /&gt;
Aufruf mit &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;atexec &amp;lt;at-device-name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_atexec cmdalias atexec .* AS { if($defs{$EVENT}) { if($defs{$EVENT}-&amp;gt;{TYPE} eq &amp;quot;at&amp;quot;) { at_Exec($defs{$EVENT});; 0;; } else { return &amp;quot;$EVENT is not of TYPE at!&amp;quot;;; }} else { return &amp;quot;Device $EVENT does not exist!&amp;quot;;; }}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dellog ===&lt;br /&gt;
Leert das aktuelle FHEM Logfile&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_dellog cmdalias dellog AS {qx(truncate $currlogfile --size 0);;Log 1, &amp;quot;Logfile gelöscht&amp;quot;;;}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== lastloglines ===&lt;br /&gt;
Zeigt die letzten Zeilen aus dem FHEM Logfile an. Mit dem Aufruf &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;lastloglines 10&amp;lt;/syntaxhighlight&amp;gt; werden die letzten 10 Einträge angezeigt. Der Alias wird mit der folgenden Definition angelegt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_lastloglines cmdalias lastloglines .* AS {qx(tail -n $EVENT $currlogfile)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== showignoreddevices ===&lt;br /&gt;
Auflisten von Geräten, die in FHEM das Attribut &amp;quot;ignore&amp;quot; gesetzt haben:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_showignoreddevices cmdalias showignoreddevices AS { join(&amp;quot;\n&amp;quot;, grep { $attr{$_}{ignore} } sort keys %attr ) }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== shownotypedevices ===&lt;br /&gt;
Auflisten von Geräten ohne TYPE Definition (sollte nur bei einer fehlerhaften Definition eine Ausgabe erstellen):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_shownotypedevices cmdalias shownotypedevices AS { join(&amp;quot;\n&amp;quot;, grep { !defined($defs{$_}{TYPE}) } keys %defs) }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hmdead ===&lt;br /&gt;
Auflisten von Geräten die als &amp;quot;dead&amp;quot; von HMInfo markiert wurden&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;defmod c_hmdead cmdalias hmdead AS list Activity=dead&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== v5 ===&lt;br /&gt;
Setzen des &amp;quot;Verbose Level&amp;quot; in FHEM auf 5&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_v5 cmdalias v5 .* AS {fhem (&amp;quot;attr &amp;quot;.($EVENT||=&amp;quot;global&amp;quot;).&amp;quot; verbose 5&amp;quot;)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== v3 ===&lt;br /&gt;
Setzen des &amp;quot;Verbose Level&amp;quot; in FHEM auf 3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_v3 cmdalias v3 .* AS {fhem (&amp;quot;attr &amp;quot;.($EVENT||=&amp;quot;global&amp;quot;).&amp;quot; verbose 3&amp;quot;)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Änderung von Geräte Aktionen ===&lt;br /&gt;
In diesem Beispiel wird dem Gerät MiLight_1 nicht erlaubt ausgeschaltet zu werden&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_aliasMiLight_1 cmdalias set MiLight_1 off AS set HMSchaltaktor_1 off&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== say ===&lt;br /&gt;
Verkürzter Befehlsaufruf des TTS Moduls&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_say cmdalias say .* AS set MyTTS tts &#039;$EVENT&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mqttmsg ===&lt;br /&gt;
Schickt eine Nachricht an einen Mosquitto Message Broker&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_mqttmsg cmdalias mqttmsg .* AS {qx(/usr/bin/mosquitto_pub -h 192.168.1.101 -t \&#039;$EVTPART0\&#039; -m \&#039;$EVTPART1\&#039;)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufruf mit: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;mqttmsg &amp;lt;TOPIC&amp;gt; &amp;lt;MESSAGE&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: IP des Brokers muss angepasst werden!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== roomadd ===&lt;br /&gt;
{{Randnotiz|RNText=Beachte auch die seit Updatestand 28.01.2018 vorhandene Option -a beim Befehl {{Link2CmdRef|Anker=attr|Label=attr}} (siehe {{Link2Forum|Topic=83414}}) }}&lt;br /&gt;
Erstellt einen neuen Raum und füllt diesen mit Geräten entsprechend der angegeben Device-Spezifikation.&lt;br /&gt;
Aufruf: &amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;roomadd &amp;lt;devspec&amp;gt; &amp;lt;new_room&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_roomadd cmdalias roomadd .* AS { for my $name (devspec2array(&amp;quot;$EVTPART0&amp;quot;)){ my $old_room = AttrVal($name,&#039;room&#039;,&#039;&#039;);; if (index($old_room, $EVTPART1) == -1) {my $new_room = AttrVal($name,&#039;room&#039;,&#039;&#039;) . &amp;quot;,$EVTPART1&amp;quot;;; fhem(&amp;quot;attr $name room $new_room&amp;quot;)} } }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== roomrename ===&lt;br /&gt;
Umbenennen eines FHEM Raumes &#039;&#039;&#039;Aufruf roomrename &amp;lt;oldroom&amp;gt; &amp;lt;newroom&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_roomrename cmdalias roomrename .* AS { for my $name (devspec2array(&amp;quot;room=$EVTPART0&amp;quot;)){ map {s/$EVTPART0/$EVTPART1/;; fhem(&amp;quot;attr $name room $_&amp;quot;)} AttrVal($name,&#039;room&#039;,&#039;&#039;) } }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== roomdelete ===&lt;br /&gt;
{{Randnotiz|RNText=Beachte auch die seit Updatestand 28.01.2018 vorhandene Option -r beim Befehl {{Link2CmdRef|Anker=attr|Label=attr}} (siehe {{Link2Forum|Topic=83414}}) }}&lt;br /&gt;
Löschen eines FHEM Raumes &#039;&#039;&#039;Aufruf: roomdelete &amp;lt;roomName&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_roomdelete cmdalias roomdelete .* AS { for my $name (devspec2array(&amp;quot;room=$EVENT&amp;quot;)){ map { /^$EVENT$/ ? fhem(&amp;quot;deleteattr $name room&amp;quot;) : do{s/,$EVENT|$EVENT,//;; fhem(&amp;quot;attr $name room $_&amp;quot;)} } AttrVal($name,&#039;room&#039;,&#039;&#039;) } }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== regroup ===&lt;br /&gt;
Umfangreicher alias zum automatischen Setzen verschiedener Gruppen in FHEM Räumen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_regroup cmdalias regroup .* AS { my @EVTPART=split(&#039; &#039;,$EVENT);; $EVTPART[2] =~ s/\|/:FILTER=/g if($EVTPART[2]);; for my $name (devspec2array(&amp;quot;group=&amp;quot;.($EVTPART[0] ? $EVTPART[0] : &#039;.*&#039;).($EVTPART[2] ? &amp;quot;:FILTER=$EVTPART[2]&amp;quot; : &#039;&#039;))){ map { ($_ &amp;amp;&amp;amp; /^$EVTPART[0]$/ &amp;amp;&amp;amp; !$EVTPART[1]) ? fhem(&amp;quot;deleteattr $name group&amp;quot;) : do{ if(!$EVTPART[1]){$EVTPART[0]=&amp;quot;,$EVTPART[0]|$EVTPART[0],&amp;quot;;; $EVTPART[1]=&#039;&#039;;;} s/$EVTPART[0]/$EVTPART[1]/;; fhem(&amp;quot;attr $name group $_&amp;quot;)} } AttrVal($name,&#039;group&#039;,0) } }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Gruppen, in welchen sich die devices sonst noch befinden, bleiben unberührt. Als FILTER kann alles was der normale FHEM-devspec Filter verarbeiten kann angegeben werden. Es sollte nur aufgepasst werden, wenn ein &amp;quot;Device&amp;quot; mehrere ähnliche Gruppenbennungen wie &amp;quot;attr name group test2,test&amp;quot; hat. Wenn man hier ein &#039;regroup test test3&#039; macht, könnte es passieren, dass man dadurch bei diesem device die Gruppe &#039;test2&#039; nach &#039;test32&#039; umbenennt. In dem Beispiel müsste man den Befehl z.B. mit &#039;regroup test$ test3&#039; angeben, damit das nicht passiert.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&amp;lt;pre&amp;gt;regroup &amp;lt;oldGroup&amp;gt; [&amp;lt;newGroup&amp;gt; [&amp;lt;FILTER&amp;gt;][|&amp;lt;FILTER2&amp;gt;]...]&lt;br /&gt;
&lt;br /&gt;
# Allen devices ohne group die Gruppe &#039;myGroup&#039; setzen:&lt;br /&gt;
regroup 0 myGroup&lt;br /&gt;
&lt;br /&gt;
# Nur den devices im Raum &#039;myRoom&#039; welche keine group haben die Gruppe &#039;myGroup&#039; setzen:&lt;br /&gt;
regroup 0 myGroup room=myRoom&lt;br /&gt;
&lt;br /&gt;
# Alle devices aus &#039;oldGroup&#039; in &#039;newGroup&#039; verschieben&lt;br /&gt;
regroup oldGroup newGroup&lt;br /&gt;
&lt;br /&gt;
# Nur die devices im Raum &#039;myRoom&#039; aus &#039;oldGroup&#039; in &#039;newGroup&#039; verschieben&lt;br /&gt;
regroup oldGroup newGroup room=myRoom&lt;br /&gt;
&lt;br /&gt;
# Gruppe &#039;myGroup&#039; löschen&lt;br /&gt;
regroup myGroup&lt;br /&gt;
&lt;br /&gt;
# Nur die devices im Raum &#039;myRoom&#039; aus der Gruppe &#039;myGroup&#039; löschen.&lt;br /&gt;
regroup myGroup 0 room=myRoom&lt;br /&gt;
&lt;br /&gt;
# Devices aus allen Gruppen welche mit &#039;licht&#039; beginnen aus Raum &#039;Obergeschoss&#039; entfernen.&lt;br /&gt;
regroup licht.* 0 room=Obergeschoss&lt;br /&gt;
&lt;br /&gt;
# Devices aus dem Raum &#039;myRoom&#039;  aus allen Gruppen entfernen und in die Gruppe &#039;myGroup&#039; verschieben.&lt;br /&gt;
regroup .* myGroup room=myRoom&lt;br /&gt;
&lt;br /&gt;
# Devices ohne Gruppe aus dem Raum &#039;myRoom&#039; mit dem TYPE &#039;CUL_HM&#039; und welche ebenfalls &#039;Licht&#039; im Namen enthalten die Gruppe &#039;myGroup&#039; hinzufügen&lt;br /&gt;
regroup 0 myGroup room=myRoom|TYPE=CUL_HM|NAME=.*Licht.*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== autocreate ===&lt;br /&gt;
Schnelles (de)aktivieren der [[autocreate]] Funktion:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define c_autocreate_off cmdalias set autocreate off AS attr autocreate disable 1&lt;br /&gt;
define c_autocreate_on cmdalias set autocreate on AS attr autocreate disable 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optional kann noch das autocreate Icon definiert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;attr autocreate devStateIcon disabled:ios-off:on active:ios-on-blue:off&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== renamehm ===&lt;br /&gt;
{{Randnotiz|RNText=Dieser Alias ist mittlerweile nicht mehr erforderlich, da [[HomeMatic]] Devices den Befehl (&#039;&#039;set&#039;&#039;) [[rename|deviceRename]] anbieten}}&lt;br /&gt;
Sehr viele HomeMatic Devices haben zusätzlichen Kanäle (z.B: HM-ES-PMSw1-PI legt die Kanäle HM_12345B, HM_12345B_Pwr, HM_12345B_SenF, HM_12345B_SenI, HM_12345B_SenPwr, HM_12345B_SenU, HM_12345B_Sw als separate Devices an). Um diese umzubenennen kann man mit der folgenden Funktion den Prefix von HM_12345B auf einen beliebigen Ändern. Diese wird nach Definition via &amp;quot;&amp;lt;code&amp;gt;renamehm HM_12345B NEW_DEVICE_PREFIX&amp;lt;/code&amp;gt;&amp;quot; ausgeführt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_renamehm cmdalias renamehm .* AS { for my $name (devspec2array(&amp;quot;$EVTPART0.*&amp;quot;)){ my $newname=$name;;$newname =~ s/$EVTPART0/$EVTPART1/gi;; fhem(&amp;quot;rename $name $newname&amp;quot;);;} }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== alias2siriname ===&lt;br /&gt;
Mit dem folgenden Alias wird das Attribut siriName aller sich im Raum Homekit befindlichen Geräte auf den selben Wert des Attributes alias gesetzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define c_alias2siriname cmdalias alias2siriname .* AS { for (devspec2array(&amp;quot;room=Homekit*&amp;quot;)) { my $a = AttrVal($_,&amp;quot;alias&amp;quot;,undef);; fhem &amp;quot;attr $_ siriName $a&amp;quot; if (defined $a) }}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Thread über das Modul im {{Link2Forum|Topic=15648|LinkText=FHEM Forum}}&lt;br /&gt;
* Thread mit {{Link2Forum|Topic=42211|LinkText=weiteren Informationen}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37578</id>
		<title>FHEM startet nicht - Tipps zur Fehlersuche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37578"/>
		<updated>2022-10-18T15:54:24Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Minimal Config starten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es gibt einen weiteren Artikel zur Fehlersuche. [[Hilfe! Mein FHEM funktioniert nicht!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kein Zugriff auf FHEMWEB/FHEM startet nicht - Was kann ich tun?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deine [[FHEMWEB]]-Seite ist nicht erreichbar? Ist FHEM tot, oder ist das Netzwerk kaputt? Was kann ich machen, um zu prüfen, woran es genau liegt?&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki-Artikel soll es darum gehen, wie Du für Dich prüfen kannst, ob ein Fehler bei FHEM, im Netzwerk oder ein anderes Problem vorliegt.&lt;br /&gt;
== Prüfen: Läuft überhaupt ein FHEM-Prozess? ==&lt;br /&gt;
Man kann sich unter einem Linuxsystem sämtliche laufende Prozesse auflisten lassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;ps&#039;&#039; listet je nach Argument alle laufende Prozesse auf. Die Liste kann man nun noch nach einem bestimmten Prozess filtern. Aufruf und Ausgabe einer Prozessliste mit einem Filter nach perl sieht z. B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cooltux@fhem01-cluster:~&amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11320 pts/0    S+     0:00 grep --color=auto perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wir sehen, wird hier lediglich der gerade ausgeführte Befehl &#039;&#039;ps&#039;&#039; gefunden (weil das Wort &#039;&#039;perl&#039;&#039; in der Aufrufzeile stand. Es wird hier überhaupt kein Perl-Prozess gelistet. Aktuell läuft also definitiv kein FHEM, das ja ein Perl-Programm/Prozess ist.&lt;br /&gt;
&lt;br /&gt;
Eine Prozessliste mit einem laufenden FHEM-Prozess könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[11:31 root@fhem01-cluster cooltux] &amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15852 ?        R    2119:09 /usr/bin/perl fhem.pl configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;21447 pts/0    S+     0:00 grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM (&#039;&#039;perl fhem.pl ...&#039;&#039;) ist in diesem Fall also aktiv.&lt;br /&gt;
&lt;br /&gt;
=== systemd ===&lt;br /&gt;
&lt;br /&gt;
Nutzt das Linux-System den systemd, kann mit folgendem Befehl der Status des FHEM-Prozesses geprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;service fhem status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Ausgabe könnte z.B. so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ● fhem.service - FHEM Home Automation&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Thu 2018-08-09 14:32:16 CEST; 20h ago&lt;br /&gt;
  Process: 27641 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 27643 (perl)&lt;br /&gt;
    Tasks: 1 (limit: 4915)&lt;br /&gt;
   CGroup: /system.slice/fhem.service&lt;br /&gt;
           └─27643 /usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
 &lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Starting FHEM Home Automation...&lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Started FHEM Home Automation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prüfen: Ist der laufende FHEM-Prozess überlastet? ==&lt;br /&gt;
Ich sollte mir anschauen, ob der FHEM-Prozess vielleicht zu sehr ausgelastet ist, der Prozess also 100 Prozent CPU Auslastung produziert?&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Linuxbefehl &#039;&#039;top&#039;&#039; wird uns hierbei behilflich sein:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:38 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:38:18 up 11 days, 18:58,  1 user,  load average: 1,07, 1,03, 1,00&lt;br /&gt;
 Tasks: 125 total,   2 running, 123 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s): 24,9 us,  0,9 sy,  0,0 ni, 74,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   833532 used,   111992 free,    41552 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46564 used,    55832 free.   496240 cached Mem&lt;br /&gt;
 PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 15852 fhem      20   0  103652  82160   5068 R 100,0  8,7   2125:41 perl                                                                                                               &lt;br /&gt;
 21683 root      20   0    5740   2560   2092 R   1,0  0,3   0:00.37 top                                                                                                                &lt;br /&gt;
 19129 cooltux   20   0   86204  22348   3668 S   0,3  2,4  64:16.90 insync-portable                                                                                                    &lt;br /&gt;
 21350 cooltux   20   0   11436   2848   2248 S   0,3  0,3   0:00.10 sshd                                                                                                               &lt;br /&gt;
     1 root      20   0   23292   2368   1380 S   0,0  0,3   0:54.23 systemd                                                                                                            &lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd                                                                                                           &lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.20 ksoftirqd/0                                                                                                        &lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H                                                                                                       &lt;br /&gt;
     7 root      20   0       0      0      0 S   0,0  0,0   8:20.71 rcu_sched                                                                                                          &lt;br /&gt;
     8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh                                                                                                             &lt;br /&gt;
     9 root      rt   0       0      0      0 S   0,0  0,0   0:05.45 migration/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier können wir nun eindeutig erkennen, dass unser FHEM die CPU mit 100 Prozent auslastet. FHEM hat also ein Problem!&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich ein FHEM/Perl-Prozess ohne Probleme:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:50 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:50:33 up 11 days, 19:10,  1 user,  load average: 0,84, 1,03, 1,00&lt;br /&gt;
 Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,6 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   818344 used,   127180 free,    43748 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46820 used,    55576 free.   489652 cached Mem&lt;br /&gt;
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 22074 fhem      20   0   86424  68516   7200 S   1,3  7,2   0:47.64 perl&lt;br /&gt;
 22294 root      20   0    5740   2564   2092 R   1,3  0,3   0:00.19 top&lt;br /&gt;
 22296 fhem      20   0   86424  63556   2240 S   1,3  6,7   0:00.04 perl&lt;br /&gt;
 22297 fhem      20   0    2088    408    328 S   0,7  0,0   0:00.02 ping&lt;br /&gt;
     7 root      20   0       0      0      0 S   0,3  0,0   8:21.23 rcu_sched&lt;br /&gt;
  1366 mysql     20   0  620608 157132   5736 S   0,3 16,6  70:12.59 mysqld&lt;br /&gt;
 19481 root      20   0       0      0      0 S   0,3  0,0   0:02.35 kworker/3:0&lt;br /&gt;
     1 root      20   0   23292   2408   1420 S   0,0  0,3   0:54.27 systemd&lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd&lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.42 ksoftirqd/0&lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Prüfen: Stimmen die Dateiberechtigungen? ==&lt;br /&gt;
Alle Dateien im Verzeichnis /opt/fhem/ und allen Unterverzeichnissen  gehören nach der Installation dem Benutzer fhem und der Gruppe dialout. Man kann es leicht prüfen:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig wird der Eigentümer durch Manipulation der Dateien falsch gesetzt, mit diesem Befehl kann man alle Dateien auf den Eigentümer fhem und dessen primäre Gruppe setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem: /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Setup Routine setzt den Besitz auf fhem:dialout &amp;lt;code&amp;gt;sudo chown -R fhem:dialout /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und wenn sich gar nichts mehr tut? ==&lt;br /&gt;
=== Die letzen Zeilen im existierenden FHEM Log anzeigen  ===&lt;br /&gt;
So lässt man sich auf Systemebene die letzen 20 Zeilen im Log anzeigen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tail -n 20 /opt/fhem/log/fhem-$(date &#039;+%Y-%m&#039;).log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fehlernachrichten von FHEM bei dessen Start analysieren  ===&lt;br /&gt;
In der Regel werden die Ausgaben von FHEM, auch die beim Start, gemeinsam mit vielen anderen Nachrichten in ein Logfile geschrieben. Dort kann natürlich nach Ursachen geforscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine einfachere Auswertung wird möglich, wenn man diese Meldungen zeitweilig in einem Terminalfenster (das Ding, um Kommandozeilenbefehle einzugeben) angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
Seit dem 01.08.2017 gibt es die Möglichkeit beim manuellen Starten von FHEM im Terminal den Schalter -d zu verwenden ({{Link2Forum|Topic=74774|Message=666766}}). Dieser startet FHEM mit den beiden gesetzten Attributen &amp;lt;code&amp;gt;attr global logfile -&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;attr global verbose 5&amp;lt;/code&amp;gt; und gibt somit alle Meldungen im Terminalfenster aus. Zuerst mit ins FHEM Verzeichnis wechseln. Root oder sudo ist nicht erforderlich!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss ein (mit 100 %) laufendes FHEM zunächst beendet werden! z.B.: &amp;lt;code&amp;gt;sudo systemctl stop fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ins FHEM Verzeichnis wechseln: &amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nach Konfiguration FHEM im debug Modus starten:&lt;br /&gt;
&lt;br /&gt;
fhem.cfg - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
configDB - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man genug analysiert hat, FHEM mit Ctrl-C/Strg-C stoppen&lt;br /&gt;
&lt;br /&gt;
== Es ist nach dem letzten Update passiert? ==&lt;br /&gt;
Beispielhaft für das Vorgehen wird das in diesem {{Link2Forum|Topic=118533|LinkText=Forumthread}} beschrieben. FHEM speichert vor dem Update die Dateien ins Verzeichnis restoreDir die aktualisiert werden. Es handelt sich dabei nicht um eine komplette Sicherung des Systems!&lt;br /&gt;
&lt;br /&gt;
Man kann sich über die gesicherten Versionen/Dateien einen Überblick verschaffen (Datum anpassen!):&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/update/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hat man die verursachende Datei ermittelt, kann man gezielt diese Datei wieder herstellen:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp /opt/fhem/restoreDir/update/2021-02-06/FHEM/NameDerDatei /opt/fhem/FHEM/&amp;lt;/code&amp;gt;&lt;br /&gt;
Es gibt bei einigen Modulen Abhängigkeiten von anderen Dateien, es ist dringend angeraten, dann den kompletten zusammengehörigen Satz wieder herzustellen!&lt;br /&gt;
&lt;br /&gt;
Will man einen kompletten Schritt zurück vor dem Update gehen, weil man den Fehler nicht einkreisen kann, stellt man so alles vor dem Update wieder her. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/update/2021-02-05/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die config Datei ist das Problem? ==&lt;br /&gt;
Bei jedem save wird in  /opt/fhem/restoreDirs eine Sicherung der fhem.cfg und das Statefile fhem.save durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile vom System kann man sich einen Überblick verschaffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollten Pfade mit Datums Angaben sein.&lt;br /&gt;
&lt;br /&gt;
Den exakten Zeitpunkt der gesicherten Dateien kann man sich so anzeigen lassen (Beispiel).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/save/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;lastKnownGood&amp;quot; Konfiguration kann man so wiederherstellen und anschließend FHEM wieder starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/save/2020-02-28/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Berechtigungen werden durch verwenden von User fhem eigentlich erhalten. &lt;br /&gt;
&lt;br /&gt;
Falls die Berechtigungen nicht stimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/log/fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minimal Config starten ==&lt;br /&gt;
Wenn gar nichts mehr geht, ist es manchmal ratsam eine minimal Konfiguration zu starten um die Hardware oder Netzwerkanbindung an sich zu testen.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist zunächst sicher zu stellen, dass kein FHEM Prozess läuft (siehe oben)&lt;br /&gt;
&lt;br /&gt;
Die fhem.cfg.demo (Bestandteil von FHEM) ist extra für den interaktiven Start gedacht, die Logausgaben landen in der Konsole. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo perl fhem.pl fhem.cfg.demo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Oder man holt sich die Original minimal fhem.cfg&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo -su fhem wget -qO minimal.cfg https://svn.fhem.de/fhem/trunk/fhem/fhem.cfg&lt;br /&gt;
sudo perl fhem.pl minimal.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wäre es auch möglich ein [[Update]] zu machen oder Dateien wie im Update Wiki Artikel beschrieben direkt aus dem SVN zu holen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig fhem.pl mit erhöhten Rechten zu starten, da sonst fhem.pl nicht auf den user fhem umschalten kann - das würde zu Rechte Problemen führen!&lt;br /&gt;
&lt;br /&gt;
Für configDB User gibt es den {{Link2Forum|Topic=86225|LinkText= rescue Modus}}.&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=37534</id>
		<title>HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-MOD-RPI-PCB_HomeMatic_Funkmodul_f%C3%BCr_Raspberry_Pi&amp;diff=37534"/>
		<updated>2022-09-02T11:18:52Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Anbindung mit ESP8266 */ Tasmota eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=HM-MOD-RPI-PCB.jpg&lt;br /&gt;
|Bildbeschreibung=HomeMatic Funkmodul für Raspberry Pi &lt;br /&gt;
|HWProtocol=HomeMatic&lt;br /&gt;
|HWType=Gateway&lt;br /&gt;
|HWCategory=HomeMatic&lt;br /&gt;
|HWComm=868,3/869,525 MHz&lt;br /&gt;
|HWChannels=n/a&lt;br /&gt;
|HWVoltage=1,8–3,6 V&amp;amp;nbsp;DC&lt;br /&gt;
|HWPowerConsumption=50 mA max.&lt;br /&gt;
|HWPoweredBy=RasPi&lt;br /&gt;
|HWSize=19x41x14mm&lt;br /&gt;
|HWDeviceFHEM=[[HMUARTLGW]]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3 &lt;br /&gt;
}}&lt;br /&gt;
Das [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi]] ist eine Platine, die auf die GPIO-Schnittstelle des [[Raspberry Pi]] aufgesteckt werden und damit als [[Interface]] zu [[HomeMatic]] Geräten dienen kann. &lt;br /&gt;
&lt;br /&gt;
== Aufbau, Einsatz und grundsätzliche Funktionsweise ==&lt;br /&gt;
Das Modul besteht aus zwei Teilplatinen, die von eQ-3 über den Internetshop von ELV (als Bausatz ab etwa 20€, fertig montiert ab etwa 30€) verkauft werden. &lt;br /&gt;
&lt;br /&gt;
Das eigentliche Funkmodul wird mit HM-MOD-RPI-UART bezeichnet (und trägt den Aufdruck UART, im obigen Bild hinten teilweise verdeckt und mit der umrandeten 7 versehen), sie hat fünf einpolige Buchsen mit dem Rastermaß 2mm. Die Zusatzplatine zum Anschluss an die GPIO wird mit TRX1 bezeichnet (im obigen Bild vorn sichtbar mit dem Aufdruck HM-MOD-RPI-PCB), sie hat zwei sechspolige Buchsen mit dem Rastermaß 2,54mm.  Die Zusatzplatine enthält im Wesentlichen Stützkondensatoren und erlaubt einen direkten Anschluss an die GPIO eines Raspberry Pi.&lt;br /&gt;
* Der vorgesehene Einsatz als Aufsteckmodul auf den GPIO Port des Raspberry erfordert eine Modell abhängige Konfiguration. Diese wird im Setupbereich des Wiki Artikel zum [[Raspberry_Pi]] beschrieben.&lt;br /&gt;
  &lt;br /&gt;
{{Randnotiz|RNText=Neben der hier beschriebenen Option das HM-MOD-RPI-PCB zu verwenden, besteht auch die Möglichkeit, damit auf demselben Raspberry eine virtuelle CCU zu betreiben, welche dann mit [[HMCCU]] eingebunden werden kann. Hierfür stehen mehrere Virtualisierungsvarianten zur Verfügung; eine kurze Darstellung, wie das mittels YAHM funktioniert, ist in diesem {{Link2Forum|Topic=79670|Message=718289|Forenbeitrag}} zu finden.}}Mit dieser Platine in Verbindung mit dem FHEM-Modul [[HMUARTLGW]] ist nur der Betrieb von BidCoS-Geräten möglich. Zur Einbindung von Geräten, die HM-IP verwenden, ist derzeit (Stand Juni 2018) noch zwingend eine (ggf. virtualisierte) CCU2 oder neuer erforderlich.&lt;br /&gt;
&lt;br /&gt;
Das Funkmodul stellt auf dem 868MHz-Frequenzband eine Verbindung zu Homematic-Geräten her. Das Modul wird über die serielle Schnittstelle an ein Gerät gekoppelt, dass diese serielle Schnittstelle auswerten und die Information dann weiterverarbeiten kann. Hier kommen beispielsweise in Frage: Raspberry Pi, WeMos mini, ESP8266-Module, USB-serielle Adapter. Bereits das UART-Funkmodul erlaubt eine serielle Anbindung (die entsprechenden Schnittstellen Tx und Rx sind vorhanden, sie basieren auf 3,3V), es kann aber auch die  zusätzliche TRX1-Platine seriell verbunden werden. Des weiteren gibt es im Forum ein {{Link2Forum|Topic=56606}}, in dem PeMue eine eigene Platinenversion (Schaltplan, Stückliste und vieles mehr) vorstellt.&lt;br /&gt;
&lt;br /&gt;
=== Platine 1 -PCB-Modul ===&lt;br /&gt;
[[Datei:Hm-uart trx1.png|thumb|right|200px|Verkabelung beim HM-MOD-PCB]]&lt;br /&gt;
Am einfachsten ist es sicherlich, das kombinierte PCB-Modul (also beide Platinen UART und TRX1 durch eine Pfostenleiste miteinander verlötet) direkt auf die GPIO des Raspberry Pi aufzustecken. Das Bild rechts zeigt die entsprechende Verkabelung. Dabei ist zu beachten, dass sich nicht zwei Module die GPIO teilen können. Steckt schon ein Modul im Raspberry Pi, muss der Anschluss per USB, in einem zweiten Raspberry Pi oder per WLAN gewählt werden.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Platine 2 -UART-Modul ===&lt;br /&gt;
[[Datei:Verkabelung-HM-MOD-uart.png|thumb|right|200px|Verkabelung beim HM-MOD-UART]]&lt;br /&gt;
Will man das TRX1-Modul nicht verwenden, so kann man auch das UART-Modul direkt mit Rx/Tx des Raspberry Pi verbinden. Das Bild rechts zeigt die entsprechende Verkabelung. Hier sollten allerdings Stützkondensatoren an die Stromversorgung des UART angebracht werden, da Spannungsschwankungen sonst zu schwer interpretierbaren Fehlern führen können. Die Anschlüsse sind dem nachstehenden Bild zu entnehmen, allerdings ist hier nicht die UART-Platine, sondern das TRX1-Gegenstück zu sehen!&lt;br /&gt;
&lt;br /&gt;
Sowohl serielle Schnittstelle des Raspberry Pi als auch das UART-Modul arbeiten mit 3,3V arbeitet, so dass man keine Spannungsteiler benötigt. Mehr Informationen zu den GPIOs findet man unter diesem [http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_GPIO.html Link].&lt;br /&gt;
&lt;br /&gt;
=== Zusammenbau und Verwendung ===&lt;br /&gt;
Man sollte die Antenne aus dem Gehäuse schauen lassen oder gar eine externe Antenne anbringen. Idealerweise sollte das Ende der Drahtantenne mit einem Klecks Heißkleber oder ähnlichem isoliert werden; eine Berührung vor allem mit dem Innenleben des Raspberry Pi muss vermieden werden!&lt;br /&gt;
&lt;br /&gt;
Beide Platinen können zusammengebaut oder auch nur das UART Modul getrennt verwendet werden. &lt;br /&gt;
[[Datei:HM-MOD-UART-Unten.jpg|thumb|left|200px|Montage des Moduls HM-MOD-UART unten]]&lt;br /&gt;
[[Datei:HM-MOD-UART-Oben.jpg|thumb|right|200px|Montage des Moduls HM-MOD-UART oben]]&lt;br /&gt;
Die originale Montage in der Anleitung von eq3 sieht den Zusammenbau PCB Modul unten und UART Modul oben vor (Bild rechts). Damit schließen die kleineren Pi-Gehäuse nicht richtig: das Gesamtmodul klemmt am Deckel.&lt;br /&gt;
&lt;br /&gt;
Man kann ohne weiteres das UART-Modul unter dem PCB-Modul montieren (Bild links), damit wird die Gesamthöhe geringer und es passt problemlos in jedes Gehäuse. Bitte vorher die genaue Situation prüfen: Es kann sein, dass damit Kühlkörper oder ähnliches seitens der Pi-Platine stören.&lt;br /&gt;
&lt;br /&gt;
Man kann auch das PCB Modul kürzen und das UART Modul mit kurzen Drähten in einer Ebene verbinden (kein Bild).&lt;br /&gt;
&lt;br /&gt;
Bitte auf die richtige Lage (Bilder) beim Zusammenbau und auf Lötzinnbrücken achten. Da die Anschlüsse durchkontaktiert sind, bewirkt eine falsche Positionierung des UART-Moduls im schlimmsten Fall einen Kurzschluss. Man erkennt auf beiden Bildern, dass beim UART-Modul die Pinleiste einmal auf der einen und ein andermal auf der anderen Seite des Moduls angelötet werden muss! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Das Modul muss, um verwendet zu werden, mit einer Hardware verbunden werden. Hier kommen mehrere Möglichkeiten in Betracht, die jeweils vor und Nachteile aufweisen. Sie werden jetzt nacheinander präsentiert.  &lt;br /&gt;
&lt;br /&gt;
=== Anbindung an die GPIO im Raspberry ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
Man kann das  HM-MOD-RPI-PCB Modul direkt in die GPIOs eines Raspberry stecken. Das hat den Vorteil, dass das Gerät (mehr oder weniger) sofort betriebsbereit ist, aber den Nachteil, dass am RPi vorher mehrere Installationen zu erfolgen haben. &lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;&amp;lt;big&amp;gt;notwendige Konfiguration der Schnittstelle&amp;lt;/big&amp;gt;&#039;&#039;&#039; ist hier beschrieben: [[Raspberry_Pi#Verwendung_UART_f.C3.BCr_Zusatzmodule|Verwendung UART für Zusatzmodule]].&lt;br /&gt;
* Der Einsatz in FHEM für CUL_HM erfolgt mit dem Modul [[HMUARTLGW]]&lt;br /&gt;
* Die automatische Erkennung der USB Geräte muss deaktiviert werden: &lt;br /&gt;
::&amp;lt;code&amp;gt;attr initialUsbCheck disable 1&amp;lt;/code&amp;gt;&lt;br /&gt;
: Nach dem Setzen des Attributes muss die Änderung gespeichert werden (siehe [[save]])!&lt;br /&gt;
&lt;br /&gt;
=== Anbindung über das Netzwerk===&lt;br /&gt;
Wenn das  HM-MOD-RPI-PCB Modul an einen RPi angeschlossen ist, kann man dieses Modul danach auch im Netzwerk verfügbar machen. Dieser Pi kann beliebige Aufgaben erledigen, nur das HM-MOD-RPI-PCB Modul selbst darf nicht lokal verwendet werden. Somit kann man bei einem Umzug des FHEM Servers das HM-MOD-RPI-PCB Modul einfach weiterhin nutzen oder einen vorhandene RaspberryPi zum &amp;quot;HMLAN&amp;quot; umbauen. Sollte man aber ausschließlich Zugriff auf das HM-MOD-RPI-PCB Modul im Netzwerk benötigen, empfiehlt sich auch aus Kostengründen (Stromverbrauch) eine andere Lösung.&lt;br /&gt;
&lt;br /&gt;
Achtung! Auch über das Netzwerk darf immer &#039;&#039;&#039;nur eine Instanz auf das freigegebene Modul zugreifen&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration der Schnittstelle ist in jedem Fall gleich: [[Raspberry Pi#Verwendung UART für Zusatzmodule|Verwendung UART für Zusatzmodule]]. &lt;br /&gt;
&lt;br /&gt;
Die [[HM-MOD-RPI-PCB HomeMatic Funkmodul für Raspberry Pi#Definition in FHEM 2|Definition in FHEM]] erfolgt dann mit dem Parameter &amp;lt;code&amp;gt;uart:// .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit ser2net =====&lt;br /&gt;
[https://forum.fhem.de/index.php/topic,124384.0.html &#039;&#039;&#039;Achtung!&#039;&#039;&#039; Mit der Version 4 hat sich die Konfiguration geändert!]&lt;br /&gt;
&lt;br /&gt;
Diese Installation auf dem Pi mit dem  HM-MOD-RPI-PCB Modul bitte im Kontext &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt; ausführen. &lt;br /&gt;
&lt;br /&gt;
Bis zur ser2net &#039;&#039;&#039;Version 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install ser2net&lt;br /&gt;
echo &amp;quot;4000:raw:0:/dev/ttyAMA0:115200 NONE 1STOPBIT 8DATABITS HANGUP_WHEN_DONE&amp;quot; &amp;gt;&amp;gt; /etc/ser2net.conf&lt;br /&gt;
# Den Dienst neu starten&lt;br /&gt;
systemctl restart ser2net&amp;lt;/pre&amp;gt;Ab der ser2net &#039;&#039;&#039;Version 4&#039;&#039;&#039; erfolgt die Konfiguration im anderen Format /etc/ser2net.yaml.  [https://man.archlinux.org/man/community/ser2net/ser2net.yaml.5.en manpage]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /etc/ser2net.yaml /etc/ser2net.yaml.sav&lt;br /&gt;
cat &amp;lt;&amp;lt;EOI &amp;gt; /etc/ser2net.yaml&lt;br /&gt;
%YAML 1.1&lt;br /&gt;
---&lt;br /&gt;
# HM_MOD-RPI-PCB&lt;br /&gt;
connection: &amp;amp;con01&lt;br /&gt;
    accepter: tcp,4000&lt;br /&gt;
    connector: serialdev,&lt;br /&gt;
              /dev/ttyAMA0,&lt;br /&gt;
              115200n81,local&lt;br /&gt;
EOI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Zur Kommunikation zwischen FHEM und ser2net auf einem anderen Gerät im Netzwerk kann (mindestens ab Debian Bullseye) zusätzlich die Option &amp;quot;NOBREAK&amp;quot; im Connector (siehe [https://www.mankier.com/8/ser2net manpage]) erforderlich sein.&lt;br /&gt;
&lt;br /&gt;
In der Service unit müssen Abhängigkeiten eingefügt werden, sonst startet der Dienst nach einem System reboot nicht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl edit --full ser2net&amp;lt;/code&amp;gt; siehe auch  [[Fhem.service (systemd unit file)|Wiki (systemd unit file)]]&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Serial port to network proxy&lt;br /&gt;
Documentation=man:ser2net(8)&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
EnvironmentFile=-/etc/default/ser2net&lt;br /&gt;
ExecStart=/usr/sbin/ser2net -n -c $CONFFILE -P /run/ser2net.pid&lt;br /&gt;
Type=exec&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Variante mit socat =====&lt;br /&gt;
Installation auf dem Pi wo das Modul steckt bitte so installieren. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo apt-get install socat&amp;lt;/code&amp;gt;&lt;br /&gt;
Zum Test kann man socat in der Kommandozeile starten&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den dauerhaften Betrieb muss der Start von socat automatisch erfolgen. &lt;br /&gt;
Auf einem Debian Jessie mit systemd legt man z.B. einen Dienst durch folgende Datei an:&lt;br /&gt;
/etc/systemd/system/hmlangw.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Text&amp;quot;&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 Type=forking&lt;br /&gt;
   &lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/usr/bin/socat TCP4-LISTEN:2000,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200&lt;br /&gt;
 User=root&lt;br /&gt;
 Restart=always&lt;br /&gt;
 RestartSec=10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dann kann mit &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo systemctl enable hmlangw &amp;lt;/code&amp;gt;&lt;br /&gt;
der Service zum Autostart konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit USB-Adapter ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Bitte beachten: Es sind immer wieder Exemplare mit [[CP2102]] im Umlauf, die mehr als 3.3V Spannung liefern! Vor dem Verbinden mit dem HM-Modul sollte daher geprüft werden, ob der interne Spannungswandler ordnungsgemäß funktioniert und wirklich nur 3.3V liefert. Bei den blauen Micro-Modulen kann man den Fehler nach dieser Anleitung beheben: [https://www.silabs.com/community/interface/forum.topic.html/cp2102_3_3v_outputi-EaVr Beitrag von PBudmark vom 08.07.2017].}}&lt;br /&gt;
[[Datei:PL2102 Modul.png|200px|thumb|right|Mod zur Herstellung der korrekten Spannung]]&lt;br /&gt;
Das UART-Modul kann ebenfalls mit einem USB-Adapter an ein USB-fähiges Gerät angeschlossen werden. Allerdings ist hier wieder auf den Spannnungspegel zu achten, unbedingt einen USB-Adapter mit 3,3 Volt Pegel nehmen! Der Vorteil ist hier, dass hohe Geschwindigkeiten möglich sind und nicht wie bei WLAN Latenzen auftreten, aber es muss eben ein USB-Anschluss verfügbar sein.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich bewährt haben sich z.B. Modelle mit einem [[CP2102]], der auch ausreichend Stromreserven zum Betrieb des Moduls bietet. Dabei ist die serielle Schnittstelle wie üblich zu kreuzen, also&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung&#039;&#039;&#039;&lt;br /&gt;
  3.3V &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
  GND  &amp;lt;-&amp;gt; GND&lt;br /&gt;
  Rx   &amp;lt;-&amp;gt; Tx&lt;br /&gt;
  Tx   &amp;lt;-&amp;gt; Rx&lt;br /&gt;
&lt;br /&gt;
=== Anbindung mit ESP8266 ===&lt;br /&gt;
Hier ist der Vorteil, dass vor Ort nur WLAN verfügbar sein muss. Nachteilig kann sich auswirken, dass WLAN hohe Latenzen aufweisen kann und daher manchmal der Eindruck entsteht, das Modul sei gerade abwesend. &lt;br /&gt;
&lt;br /&gt;
Zum Anschluss kann ein beliebiger ESP8266 verwendet werden. Mit einigen Versionen (Beispiele im Forum: {{Link2Forum|Topic=102141|Message=956606|LinkText=ESP07}} sowie {{Link2Forum|Topic=102141|LinkText=Wemos mini pro}}) ist eine Anbindung anscheinend nicht oder nur schwer möglich - wobei dies auch an nicht funktionsfähigen Clonen liegen kann oder beim Wemos daran, dass dort die USB-Schnittstelle mit Tx/Rx nicht kalkulierbare Störungen auslöst. Ein Problem bei Wlan Anbindung kann die vergrößerte roundtrip delay darstellen. &lt;br /&gt;
&lt;br /&gt;
Es gibt verschiedene ESP Firmware-Möglichkeiten:  &lt;br /&gt;
* [https://github.com/jeelabs/esp-link &#039;&#039;&#039;ESPLink&#039;&#039;&#039;] ist eine sehr stabile und nicht mehr aktiv weiterentwickelte Firmware, die die serielle Schnittstelle direkt mit WLAN verbindet und ohne größere Schwierigkeiten eingerichtet werden kann und funktioniert. Sie nutzt die serielle Schnittstelle des ESP. Allerdings erlaubt ESPLink nicht die Nutzung anderer GPIOs, so können beispielsweise keine anderen Sensoren mit angeschlossen bzw. ausgelesen werden. Verwendet man ESP-Link, so muss neben der WLAN Konfiguration nur das Pin Assignment konfiguriert werden. Alle Pins auf disabled stellen.&lt;br /&gt;
* [https://www.letscontrolit.com/wiki/index.php/ESPEasy &#039;&#039;&#039;ESPEasy&#039;&#039;&#039;] (neue Version: ESPMega) wird beständig weiterentwickelt und gestattet es, weitere Sensoren anzuschließen und deren Werte auszulesen. Insbesondere kann man mit ESPEasy auch zwei weitere Pins nutzen, um eine serielle Schnittstelle zu simulieren (so genannter &#039;&#039;serieller Server&#039;&#039;). Man spricht auch von einer &#039;&#039;swapped&#039;&#039; Schnittstelle. Die {{Link2Forum|Topic=62651|LinkText=Platine von amunra}} nutzt eine solche Schnittstelle.  Allerdings gibt es mit einigen ESP8266-Geräten Schwierigkeiten, diese serielle Schnittstelle zu nutzen. So ist etwa ein serieller Server mit neueren ESP-Versionen anscheinend nicht lauffähig (siehe dazu {{Link2Forum|Topic=75422|LinkText=diesen Thread}}). Es gibt eine ältere Firmware-Version von PeMue, die  unmittelbar funktionsfähig scheint, siehe dazu {{Link2Forum|Topic=86592|LinkText=diesen Forenthread}}. &lt;br /&gt;
* &#039;&#039;&#039;Tasmota&#039;&#039;&#039; kann mit der Komponente TCP_Bridge ebenfalls das Modul ansteuern. Hier im [https://forum.fhem.de/index.php/topic,125817.msg1233521.html Forum] gibt es dazu eine ausführliche Anleitung und den Erfahrungsbericht.  &lt;br /&gt;
[[Datei:Esp-pin Konfiguration HMUART.png|200px|mini|esp-link Pin-Konfiguration beim swapped Server]]&lt;br /&gt;
Bei der seriellen Schnittstelle (da die ESP auf 3,3V laufen, sind keine Spannungsteiler erforderlich) findet man die Verschaltung unten. Bei der &#039;&#039;swapped&#039;&#039; Schnittstelle wird auf die digitalen Pins D7/D8 zurückgegriffen (siehe auch unten). Die letztere Verschaltung erfordert eine entsprechende Implementierung der Schnittstelle in der Firmware selbst, die beispielsweise bei ESPEasy unter Umständen nicht gegeben ist oder selbst kompiliert werden muss.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verschaltung bei einem WeMos D1 mini&#039;&#039;&#039;&lt;br /&gt;
  (UART) &amp;lt;-&amp;gt; (Wemos swapped) &amp;lt;-&amp;gt; (Wemos seriell)&lt;br /&gt;
   3.3V  &amp;lt;-&amp;gt; 3.3V            &amp;lt;-&amp;gt; 3.3V&lt;br /&gt;
   GND   &amp;lt;-&amp;gt; GND             &amp;lt;-&amp;gt; GND&lt;br /&gt;
   Rx    &amp;lt;-&amp;gt; D8              &amp;lt;-&amp;gt; Tx (D10 oder Tx)&lt;br /&gt;
   Tx    &amp;lt;-&amp;gt; D7              &amp;lt;-&amp;gt; Rx (D9 oder Rx)&lt;br /&gt;
   &lt;br /&gt;
Es gibt eine ausführliche Erläuterung für die Software unter [https://forum.fhem.de/index.php?action=dlattach;topic=56606.0;attach=68630], siehe auch [https://www.esp8266.com/viewtopic.php?f=32&amp;amp;t=18669 diese Grafik der Pins des Wemos]&lt;br /&gt;
&lt;br /&gt;
Im Forum gibt es mehr Informationen zu diesen Adaptern, zum Beispiel {{Link2Forum|Topic=62651|LinkText=&amp;quot;(amunra)-Platine für HM-MOD-UART-RPI...&amp;quot;}} oder {{Link2Forum|Topic=79559|LinkText=&amp;quot;3. Sammelbestellung - Homematic WLAN Gateway&amp;quot;}}.&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-CFG-WLAN-k.jpeg|thumb|left|200px|Anschluß an Wemos]]&lt;br /&gt;
Auf dem linken Foto ist der Anschluss des gesamten Moduls (Rastermaß 2,54mm statt 2mm!) an den Wemos zur Wifi-Einbindung abgebildet.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit einem LAN-TTL-Wandler ===&lt;br /&gt;
[[Datei:Hm-uart und usr-tcp232-T2.png|thumb|right|400px|Anschluß an die gängige Variante USR-TCP232-T2]]Auf gängigen Marktplätzen sind für etwas weniger als 10 Euro Module erhältlich, die einen seriellen Anschluss im LAN bereitstellen können. Nähere Hinweise sind in den Artikeln [[Serial TTL to Ethernet Module]] sowie [[1W-IF-ETH]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Die Module melden sich per DHCP&amp;lt;ref&amp;gt;jedenfalls neuere firmware-Versionen&amp;lt;/ref&amp;gt; im Netzwerk an, die Konfiguration erfolgt je nach Variante über ein Web-Interface, ein Windows-Tool oder eine Management-Software.&lt;br /&gt;
&lt;br /&gt;
=== Betrieb mit MapleCUx ===&lt;br /&gt;
Auch die seriellen Schnittstellen, die ein MapleCUL oder [[MapleCUN]] bereitstellen, können zum Anschluß des Moduls verwendet werden. Der MapleCUN stellt beide seriellen Schnittstellen je unter einem eigenen Port ins Netz.&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Die Funktion in FHEM hängt ab von der verwendeten Hardware. Die eigentliche Funktion wird mit dem Modul [[HMUARTLGW]] hergestellt. Alle dortigen Hinweise zur Konfiguration sind zu beachten! Man sollte sich auch mit den Grundlagen der [[HomeMatic]] Kommunikation vertraut machen.&lt;br /&gt;
&lt;br /&gt;
Je nach physischem Anschluss erfolgt eine Anbindung in FHEM in unterschiedlicher Weise. Folgende Beispiele sind &#039;&#039;&#039;abweichend&#039;&#039;&#039; von der &#039;&#039;&#039;&amp;lt;big&amp;gt;[[HMUARTLGW#Define|Standardkonfiguration]]!&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wurde ein USB-Adapter auf dem FHEM-Gerät selbst verwendet, definiert man das Gerät in FHEM wie folgt.&lt;br /&gt;
  define USB_HmUART HMUARTLGW /dev/ttyUSBx&lt;br /&gt;
Wurde dagegen das Gerät über WLAN oder LAN durch das UART-Modul angebunden, erfolgt die Einbindung in FHEM durch&lt;br /&gt;
  define WLAN_HmUART HMUARTLGW uart://&amp;lt;IP-Adresse&amp;gt;:&amp;lt;Portnummer&amp;gt;&lt;br /&gt;
Portnummern:&lt;br /&gt;
*ser2net 4000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*socat 2000 (bzw. entsprechend gewählter Einstellung)&lt;br /&gt;
*esp-link 23 &lt;br /&gt;
*MapleCUN 2324 bzw. 2325 &lt;br /&gt;
*USR-TCP232-T2 entspr. Konfiguration.&lt;br /&gt;
&lt;br /&gt;
=== Logbeispiel ===&lt;br /&gt;
Typischerweise meldet sich das Modul beim Start so:&lt;br /&gt;
   2016.10.06 17:11:16 3: Opening myHmUART device /dev/ttyAMA0&lt;br /&gt;
   2016.10.06 17:11:16 3: Setting myHmUART serial parameters to 115200,8,N,1&lt;br /&gt;
   2016.10.06 17:11:16 3: myHmUART device opened&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_BL&lt;br /&gt;
   2016.10.06 17:11:17 3: HMUARTLGW myHmUART currently running Co_CPU_App&lt;br /&gt;
&lt;br /&gt;
=== Verwendung AES in FHEM===&lt;br /&gt;
Das Modul beherrscht AES.&lt;br /&gt;
Für weitere Informationen gibt es einen separaten Wiki Eintrag [[AES Encryption]]&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls mit FHEM ===&lt;br /&gt;
Die Module werden mit einer Firmware 1.2.1 ausgeliefert. Dies Firmware ist nicht für einen stabilen Betrieb geeignet, die Firmware 1.4.1 ist die minimal lauffähige Version.&lt;br /&gt;
&lt;br /&gt;
Bitte den Befehl zum download inklusive der Anführungszeichen in die FHEM Kommandozeile eingeben!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Firmware herunterladen&#039;&#039;&#039;&lt;br /&gt;
* Version 1.4.1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/28045df83480122f90ab92f7c6e625f9bf3b61aa/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Alternativ die aktuellste (für den Betrieb mit dem Modul HMUARTLGW &#039;&#039;&#039;NICHT&#039;&#039;&#039; empfohlen)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;wget -qO ./FHEM/firmware/coprocessor_update.eq3 https://raw.githubusercontent.com/eq-3/occu/HEAD/firmware/HM-MOD-UART/coprocessor_update.eq3&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(Firmware neuer als 1.4.1 dient nur bei CCU-Klonen mit Mischbetrieb BidCOs, klassisch HomeMatic und HomeMatic IP, siehe {{Link2Forum|Topic=70752|LinkText=diesen Forenthread}}).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flashen der neuen Firmware&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Erstmal überzeugen das die Firmware da ist: Z.B. mit dem Befehl in der FHEM Kommandozeile, die Ausgabe erfolgt in der Weboberfläche!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;{qx(ls -lha ./FHEM/firmware)}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenn alles ok - Befehl zum flashen ausführen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;set myHmUART updateCoPro /opt/fhem/FHEM/firmware/coprocessor_update.eq3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update des UART-Moduls ohne FHEM ===&lt;br /&gt;
Sollte das Update über FHEM nicht funktionieren oder FHEM nicht verfügbar sein, kann die Firmware auch wie folgt eingespielt werden (Quelle: [http://heinz-otto.blogspot.com/2016/07/raspberry-pi-homematic-modul.html Ottos Technik Blog])&lt;br /&gt;
&lt;br /&gt;
  sudo su&lt;br /&gt;
  apt-get update &amp;amp;&amp;amp; apt-get -y install libusb-1.0-0-dev build-essential git&lt;br /&gt;
  systemctl stop fhem&lt;br /&gt;
  git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
  cd hmcfgusb/&lt;br /&gt;
  make&lt;br /&gt;
  # Firmware runterladen&lt;br /&gt;
  wget https://raw.githubusercontent.com/eq-3/occu/ee68faf77e42ed5e3641790b43a710a3301cea7e/firmware/HM-MOD-UART/coprocessor_update.eq3&lt;br /&gt;
  # eigentliches flashen:&lt;br /&gt;
  ./flash-hmmoduart -U /dev/ttyAMA0 coprocessor_update.eq3&lt;br /&gt;
&lt;br /&gt;
=== Bekannte Probleme ===&lt;br /&gt;
* Sollten beim Flashen der Firmware hartnäckige Probleme auftreten (kein Erfolg aber auch gar keine Fehlermeldungen) ist das Modul vom Strom zu trennen, ein Neustart des Pi reicht nicht!&lt;br /&gt;
* Ein {{Link2Forum|Topic=41203|Message=340320|LinkText=Beitrag}} aus dem genannten Forenthread: &#039;&#039;Das Ding ist anscheinend wirklich einfach das Funkmodul aus der CCU2 (wird zumindest in der eQ-3 SW als CCU2 angesprochen) und spricht ein für FHEM vollkommen neues Protokoll.&#039;&#039;&lt;br /&gt;
* Beim Raspberry 4 gibt es eine Einstellung zur Temperaturkontrolle, die muss deaktiviert werden. Siehe diesen {{Link2Forum|Topic=123223|Message=1178032|LinkText=Beitrag im Forum}}.&lt;br /&gt;
* Bei Verwendung mit einem USR TCP232-T2 Wandler kann es in der Default-Einstellung des Wandlers dazu kommen, dass obsolete Kommunikation gepuffert und nach einem Wiederverbinden unnötig an FHEM gesendet wird (siehe {{Link2Forum|Topic=123948|LinkText=dieses Foren-Thema}}). Im FHEM-Log gibt es in diesem Fall die Meldung &amp;quot;HMUART failed to enter App!&amp;quot;   Abhilfe schafft das Aktivieren der Option &amp;quot;Buffer Data before connected&amp;quot; unter &amp;quot;Expand Function&amp;quot; im WebUI des TCP-232.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* {{Link2Forum|Topic=41203|LinkText=Forenthread}} mit Nachfrage zur Unterstützung dieses Geräts in FHEM&lt;br /&gt;
* {{Link2Forum|Topic=54511|LinkText=Modul für HomeMatic UART-Modul (RPi) und HomeMatic LAN Gateway}}&lt;br /&gt;
* [http://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html Produktseite] bei ELV&lt;br /&gt;
* {{DocLink|elv|/Assets/Produkte/10/1040/104029/Downloads/104029_lan_gateway_um.pdf Bedienungsanleitung}}&lt;br /&gt;
* {{Link2Forum|Topic=56606|LinkText=Forenthread}} Hardware Thread mit vielen Varianten der Anbindung. In Post #26 gibt es die Detailbeschreibung in der angehängten PDF.&lt;br /&gt;
:&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=37524</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=37524"/>
		<updated>2022-08-12T07:51:30Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Raspberry Pi */ sendEmail Aufruf für attachments korrigiert&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;
{{Randnotiz|RNTyp=y|RNText=Anleitung zur Einrichtung von Exim4 auf Debian mit GMX als Smarthost:[[Media:Anleitung_Exim4_Debian_GMX.pdf|PDF]]}}&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;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;
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;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Pakete 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;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 root:arnold@gmx.net:mail.gmx.net:465&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub 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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
{{Randnotiz|RNTyp=o|RNText=In früheren Distributionen wurde das Paket sowie der Aufruf uU. mit großem &amp;quot;E&amp;quot; geschrieben: &#039;&#039;sendEmail&#039;&#039;.}}Auf einem [[Raspberry Pi]] muß noch sendemail nachinstalliert werden. Diese Anleitung funktioniert ab der Stretch-Version von Raspbian bzw. &#039;&#039;&#039;Debian&#039;&#039;&#039; sowie unter &#039;&#039;&#039;Ubuntu&#039;&#039;&#039; seit ca. Version 16.04.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl perl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann die korrekte Funktion im Terminal (ohne &amp;lt;code&amp;gt;{qx()}&amp;lt;/code&amp;gt; ) oder auch in der FHEM Kommandozeile testen (Hinweis: manche Provider (z.B. gmail) lassen diesen Zugang erst nach Freischaltung zu!).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{qx(sendemail -f &#039;Ab\@send.er&#039; -t &#039;Emp\@faeng.er&#039; -u &#039;subject&#039; -m &#039;text&#039; -a &#039;DateinameOderLeer&#039; -s &#039;smtpFQDN:port&#039; -xu &#039;MailUser&#039; -xp &#039;PasswortOhneKlammeraffen&#039;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Bei Gmail muss seit dem 30.6.2022 ein separates Passwort erzeugt werden, die alte Einstellung über &amp;quot;Zugriff durch weniger sichere Apps&amp;quot; funktioniert nicht mehr. Siehe Support Seite Google: https://support.google.com/accounts/answer/185833}}&lt;br /&gt;
&lt;br /&gt;
Beispiel mit Gmail über Linux Terminalfenster:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sendemail -f &#039;Der.Absender@gmail.com&#039; -t &#039;Der.Empfaenger@gmail.com&#039; -u &#039;subject&#039; -m &#039;text&#039; -a &#039;&#039; -s &#039;smtp.gmail.com:587&#039; -xu &#039;Der.Absender&#039; -xp DASSUPERGEHEIMEPASSW0RT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
# $provider für SMTP Server anpassen. &lt;br /&gt;
# Einmal in der FHEM Kommandozeile, user und password anpassen:&lt;br /&gt;
# {setKeyValue(&amp;quot;myEmailKonto&amp;quot;,&#039;user@domain&#039;);;setKeyValue(&amp;quot;myEmailPasswrd&amp;quot;,&#039;password&#039;)}&lt;br /&gt;
sub 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 $attach = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $error;&lt;br /&gt;
 my $konto = getKeyValue(&amp;quot;myEmailKonto&amp;quot;); &lt;br /&gt;
 my $passwrd = getKeyValue(&amp;quot;myEmailPasswrd&amp;quot;); &lt;br /&gt;
 my $from = $konto; # or use different KeyValue if konto is not the from email address&lt;br /&gt;
 my $provider = &amp;quot;smtp.1und1.de&amp;quot;; # smtp.domain.tld:port see provider documentation&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail RCP: $rcpt&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Subject: $subject&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Text: $text&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Anhang: $attach&amp;quot;;&lt;br /&gt;
 if (not defined($attach)){$attach=&#039;&#039;}&lt;br /&gt;
 $ret .= qx(sendemail -f &#039;$from&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -a $attach -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=auto -o message-charset=utf-8);&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;
}&lt;br /&gt;
###############################################################################&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zugangsdaten für den Email-Account müssen dabei FHEM-intern gespeichert werden. Dazu gibt man einmalig über die Kommandozeile folgendes ein (user@domain und password müssen auf den Email Account geändert werden):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;  {setKeyValue(&amp;quot;myEmailKonto&amp;quot;,&#039;user@domain&#039;);;setKeyValue(&amp;quot;myEmailPasswrd&amp;quot;,&#039;password&#039;)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die TLS Verschlüsselung (ehem. SSL) nicht zu nutzen, muss in der viertletzten Zeile tls=no verwendet und der Port des Mailproviders auf 25 eigetragen werden. Sollte anschließend keine Mail verschickt werden, siehe Probleme.&lt;br /&gt;
&lt;br /&gt;
Falls der Body-Text in einem (Android-)Mailer auf dem Handy nicht gezeigt wird, kann der Parameter &#039;&#039;&#039;-o message-content-type=html&#039;&#039;&#039; helfen.&lt;br /&gt;
&lt;br /&gt;
Die Funktion kann beispielsweise folgendermaßen aufgerufen werden:&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Bei allen Feldern können generell doppelte &amp;quot; oder einfache &#039; Anführungszeichen verwendet werden. Innerhalb von &amp;quot;&amp;quot; müssen Sonderzeichen wie @ aber maskiert werden, da sie sonst als Steuerzeichen interpretiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;email\@email.domain&amp;quot; oder &#039;email@email.domain&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Direkt in der FHEM Kommandozeile (ohne Anhang)&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{DebianMail(&amp;quot;email\@email.domain&amp;quot;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Die ordnungsgemäße Ausführung wird mit 71 quittiert.&lt;br /&gt;
Beispiele mehrere Anhänge (Es ist wichtig Dateinamen mit Leerzeichen in separate Anführungszeichen zu setzen)&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{DebianMail(&amp;quot;email\@email.domain&amp;quot;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;,&amp;quot;Anhang1 Anhang2 Anhang3&amp;quot;)}&lt;br /&gt;
{DebianMail(&#039;email@email.domain&#039;,&#039;Subject&#039;,&#039;Text&#039;,&amp;quot;&#039;with spaces Anhang1&#039; &#039;with spaces Anhang2&#039;&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;oder (mehr als einen Empfänger, diese können durch Leerzeichen, Semikolon oder Komma getrennt sein)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
define Sonstiges at *01:00:00 {\&lt;br /&gt;
DebianMail(&#039;email@email.domain,email2@email.domain&#039;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;,&amp;quot;&#039;Anhang1&#039; &#039;Anhang2&#039; ...&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Eine erweiterte - nicht blockierende - Version des Scripts ist [[SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Mail mit Snapshot im Anhang und Aufnahmelink versenden (sendEmail)|hier]] zu finden}}&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;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&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&lt;br /&gt;
&amp;lt;/syntaxhighlight&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/ Homepage von sendEmail]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile):&lt;br /&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 $NAME:$EVENT&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 $NAME&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;$NAME: $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 / sendemail (Schreibweise alt / neu )  ===&lt;br /&gt;
Erhält man Fehler bez. TLS (&#039;&#039;ERROR =&amp;gt; TLS setup failed: SSL connect attempt failed error: ...&#039;&#039; ), sind eventuell die ca-certificates veraltet oder nicht installiert. Prüfung:&lt;br /&gt;
:&amp;lt;code&amp;gt;apt-cache policy ca-certificates&amp;lt;/code&amp;gt;&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 ssh) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -vv -f &#039;Absender@AbsDomain.de&#039; -t &#039;Empfänger@EmpfDomain.de&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;smtp.AbsDomain.de&#039; -xu &#039;AbsenderBenutzername&#039; -xp &#039;AbsenderPasswort&#039; -o tls=yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keine Mail mit TLS Verschlüsselung ===&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Diese Information trifft nur auf alte Systeme zu, aktuell (2021) befindet sich in Zeile 1933 der korrekte Code}}&lt;br /&gt;
Prüfung mit &amp;lt;code&amp;gt;grep -n SSLv /usr/bin/sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
&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;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Speedtest&amp;diff=37516</id>
		<title>Speedtest</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Speedtest&amp;diff=37516"/>
		<updated>2022-08-08T16:32:26Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Installation des CLI Binary von ookla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Testet die Internetgeschwindigkeit&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=speedtest&lt;br /&gt;
|ModForumArea=Sonstiges&lt;br /&gt;
|ModTechName=32_speedtest.pm&lt;br /&gt;
|ModOwner=Andre / justme1968 ({{Link2FU|430|Forum}} / [[Benutzer_Diskussion:Justme|Wiki]])}}&lt;br /&gt;
[[Speedtest]] ist ein Modul, mit dem in regelmäßigen Abständen die Internet-Geschwindigket (Download, Upload, Ping) gemessen werden kann. Dabei wird auf das externe Python-Script [https://github.com/sivel/speedtest-cli speedtest-cli] zurückgegriffen. &lt;br /&gt;
&lt;br /&gt;
Mit dem Stand vom 05.10.2020 kann alternativ auch das offizielle CLI Binary von ookla verwendet werden. Dies liefert in der Regel genauere Werte, vor allem bei höheren Bandbreiten.  &lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Für diese Anleitung ist notwendig:&lt;br /&gt;
* Debian-Derivat (Debian, Ubuntu, Raspbian, ...)&lt;br /&gt;
* Linux-Grundkenntnisse&lt;br /&gt;
* Paket- und Quellenverwaltung apt-get&lt;br /&gt;
* wget&lt;br /&gt;
&lt;br /&gt;
Alle in diesen Kapitel genannten Befehle müssen auf der Kommandozeile abgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Installation von speedtest-cli ===&lt;br /&gt;
Voraussetzung:&lt;br /&gt;
* Python 2.4 - 3.4&lt;br /&gt;
{{Hinweis|Sollte [https://www.python.org/ Python] und/oder [https://www.gnu.org/software/wget/ wget] nicht installiert sein, kann das mit folgenden zwei Befehlen erledigt werden:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install python wget&lt;br /&gt;
}}&lt;br /&gt;
Zuerst muss das speedtest-cli - Script heruntergeladen werden. Der folgende Befehl erledigt das mit Hilfe von wget und speichert die Datei im Verzeichnis &#039;&#039;/usr/local/bin&#039;&#039;:&lt;br /&gt;
 sudo wget -O /usr/local/bin/speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py&lt;br /&gt;
&lt;br /&gt;
Anschließend muss die Datei noch als &amp;quot;ausführbar&amp;quot; markiert werden:&lt;br /&gt;
 sudo chmod +x /usr/local/bin/speedtest-cli&lt;br /&gt;
&lt;br /&gt;
Ob alles funktioniert hat, kann man dann mit einem einfachen Aufruf überprüfen:&lt;br /&gt;
 speedtest-cli --help&lt;br /&gt;
&lt;br /&gt;
Weitere Installationsanleitungen sind auf der [https://github.com/sivel/speedtest-cli speedtest-cli - Webseite] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Installation des CLI Binary von ookla ===&lt;br /&gt;
&lt;br /&gt;
Entweder das offizielle Setup Script von ookla verwenden: https://www.speedtest.net/apps/cli, oder das für die Hardware passende CLI Binary von direkt herunterladen und auspacken.&lt;br /&gt;
&lt;br /&gt;
Beispiel für &#039;&#039;&#039;RasperryPi&#039;&#039;&#039;:&lt;br /&gt;
* &amp;lt;code&amp;gt; wget -O speedtest.tgz &amp;lt;nowiki&amp;gt;https://install.speedtest.net/app/cli/ookla-speedtest-1.1.1-linux-armhf.tgz&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
* &amp;lt;code&amp;gt; tar -xzvf speedtest.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;mv speedtest /usr/local/bin/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und setzen des Attributs &amp;lt;code&amp;gt;ookla&amp;lt;/code&amp;gt; mit dem Wert 1.&lt;br /&gt;
&lt;br /&gt;
Falls damit der folgende Fehler im FHEM-Log angezeigt wird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2020.10.07 11:52:14.721 5: speedtest done&lt;br /&gt;
  what():  basic_string::_M_construct null not valid&lt;br /&gt;
terminate called after throwing an instance of &#039;std::logic_error&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
muss das FHEM-Start -Script angepasst werden. Beispiel in {{Link2Forum|Topic=114118|Message=1090706|LinkText=diesem Forenbeitrag}}.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Das Modul wird folgendermaßen definiert:&lt;br /&gt;
 define &amp;lt;name&amp;gt; speedtest [interval] [server]&lt;br /&gt;
&lt;br /&gt;
=== Optionen ===&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;interval&amp;gt;&amp;lt;/code&amp;gt;: Optional. Der Wert bestimmt, in welchen Zeitabständen ein Geschwindigkeitstest durchgeführt wird. Wird kein Intervall angegeben, wird der Standard-Wert (3600s) verwendet. Minimum sind 1800 Sekunden.&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;server&amp;gt;&amp;lt;/code&amp;gt;: Optional. Hier kann die ID eines Speedtest-Servers eingetragen werden, gegen den die Geschwindigkeits-Tests gefahren werden. Ist kein Wert angegeben, wird der &amp;quot;nächstgelegene&amp;quot; Server verwendet.&lt;br /&gt;
 &lt;br /&gt;
{{Hinweis|Eine Liste aller verfügbaren Speedtest-Server kann mittels &amp;lt;code&amp;gt;speedtest-cli --list&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;speedtest-cli --list {{!}} grep Germany&amp;lt;/code&amp;gt; angezeigt werden}}&lt;br /&gt;
&lt;br /&gt;
=== Readings ===&lt;br /&gt;
* &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt; (ms)&lt;br /&gt;
* &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt; (MBit/s)&lt;br /&gt;
* &amp;lt;code&amp;gt;upload&amp;lt;/code&amp;gt; (MBit/s)&lt;br /&gt;
&lt;br /&gt;
=== Set ===&lt;br /&gt;
* &amp;lt;code&amp;gt;statusRequest&amp;lt;/code&amp;gt;: Startet einen manuellen Durchlauf des definierten Tests&lt;br /&gt;
&lt;br /&gt;
=== Attribute ===&lt;br /&gt;
Bei der Definition des Moduls können folgende Attribute gesetzt werden:&lt;br /&gt;
* &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Hier kann das Verzeichnis des speedtest-cli-Scripts angegeben werden (z.B.: /usr/local/bin).&lt;br /&gt;
* &amp;lt;code&amp;gt;checks-till-disable&amp;lt;/code&amp;gt;: Über dieses Attribut lässt sich festlegen, wie häufig speedtest-cli ausgeführt werden soll, bevor der automatische Aufruf deaktiviert wird. Nach Ablauf des Zählers wird das Modul automatisch auf disable gesetzt. Bei jedem Durchlauf wird der Zähler um 1 reduziert.&lt;br /&gt;
* &amp;lt;code&amp;gt;disable&amp;lt;/code&amp;gt;: Ist dieses Attribut auf 1 gesetzt, ist die automatische Ausführung deaktiviert. Das manuelle Ausführen über &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; ist trotzdem möglich.&lt;br /&gt;
* &amp;lt;code&amp;gt;ookla&amp;lt;/code&amp;gt;: Ist dieses Attribut auf 1 gesetzt, wird das CLI Binary von ookla verwendet.&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
[[File:speedtest01.png|mini|right|200px|Ein speedtest-Device nach dem Geschwindigkeits-Test]]&lt;br /&gt;
&lt;br /&gt;
=== Definition des Moduls ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define MySpeedtest speedtest 1800 5255&lt;br /&gt;
attr MySpeedtest path /usr/local/bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logging in eine Datei ===&lt;br /&gt;
Das Speichern der Ergebnisse in ein Logfile erreicht man z.B. so:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define FileLog_MySpeedtest FileLog ./log/MySpeedtest-%Y%m.log MySpeedtest:.*&lt;br /&gt;
attr FileLog_MySpeedtest logtype text&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Plot (FileLog)====&lt;br /&gt;
Ein zugehörige SVG-Plot könnte wie folgt aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Display speedtest results&lt;br /&gt;
&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;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
set yrange [0:1]&lt;br /&gt;
set y2range [0:12]&lt;br /&gt;
set y3range [0:120]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Mbit/s&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Mbit/s&amp;quot;&lt;br /&gt;
set y3label &amp;quot;ms&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#FileLog 4:speedtest.download\x3a::&lt;br /&gt;
#FileLog 4:speedtest.upload\x3a::&lt;br /&gt;
#FileLog 4:speedtest.ping\x3a::&lt;br /&gt;
&lt;br /&gt;
plot&lt;br /&gt;
     using 1:2 ls l0 axes x1y2 title &#039;download (Mbit/s)&#039; with lines,&lt;br /&gt;
     using 1:2 ls l1 axes x1y1 title &#039;upload (Mbit/s)&#039; with lines,&lt;br /&gt;
     using 1:2 ls l2 axes x1y3 title &#039;ping (ms)&#039; with lines&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Weblink dazu wird wie folgt definiert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define wl_speedtest SVG FileLog_speedtest:speedtest3:CURRENT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Logging mit Hilfe von [[DbLog]] ===&lt;br /&gt;
Das Loggen in eine Datenbank erfolgt, wenn ein Reading explizit oder generell alle Readings bei der Definition von [[DbLog]] angegeben worden sind und bei der Definition des Moduls [[Speedtest]] die Readings nicht über &#039;&#039;DbLogExclude&#039;&#039; ausgeschlossen wurden.&lt;br /&gt;
&lt;br /&gt;
==== Plot (DbLog) ====&lt;br /&gt;
Definition des Plots bei Verwendung von DbLog:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
define wl_speedtest SVG myDbLog:speedtest:HISTORY&lt;br /&gt;
attr wl_speedtest label &amp;quot;DL $data{currval1} / UL $data{currval2} / ping $data{currval3}&amp;quot;&lt;br /&gt;
attr wl_speedtest plotfunction speedtest&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Definition der Datei speedtest.gplots:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Display speedtest results&lt;br /&gt;
&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;&amp;lt;L1&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
set yrange [0:1]&lt;br /&gt;
set y2range [0:12]&lt;br /&gt;
set y3range [0:120]&lt;br /&gt;
&lt;br /&gt;
set ylabel &amp;quot;Mbit/s&amp;quot;&lt;br /&gt;
set y2label &amp;quot;Mbit/s&amp;quot;&lt;br /&gt;
set y3label &amp;quot;ms&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#myDbLog &amp;lt;SPEC1&amp;gt;:download:::$val=~s/([\d.]*).*/$1/eg&lt;br /&gt;
#myDbLog &amp;lt;SPEC1&amp;gt;:upload:::$val=~s/([\d.]*).*/$1/eg&lt;br /&gt;
#myDbLog &amp;lt;SPEC1&amp;gt;:ping:::$val=~s/([\d.]*).*/$1/eg&lt;br /&gt;
&lt;br /&gt;
plot&lt;br /&gt;
     using 1:2 ls l0 axes x1y2 title &#039;download (Mbit/s)&#039; with lines,&lt;br /&gt;
     using 1:2 ls l1 axes x1y1 title &#039;upload (Mbit/s)&#039; with lines,&lt;br /&gt;
     using 1:2 ls l2 axes x1y3 title &#039;ping (ms)&#039; with lines&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Für den Betrieb ist Python notwendig. Daher läuft das Script nicht ohne Weiteres auf einer FritzBox.&lt;br /&gt;
* Zwischenzeitlich wurde das Script umbenannt. Das Modul erwartet nach wie vor den ursprünglichen Namen. Daher ist wie oben beschrieben darauf zu achten, dass das abgelegte Script &amp;lt;code&amp;gt;speedtest-cli&amp;lt;/code&amp;gt; heißt und notfalls dementsprechend umbenannt wird.&lt;br /&gt;
* Das Modul bricht ggf. mit einer Perl-Fehlermeldung im FHEM-Log ab, obwohl das Script von der Konsole aus einwandfrei läuft. Dies tritt z.B. bei Verwendung von Rasbian mit installierten Python 2.7 und Python 3 auf. Zur Behebung muss im Script &amp;lt;code&amp;gt;speedtest-cli&amp;lt;/code&amp;gt; die erste Zeile auf &amp;lt;code&amp;gt;#!/usr/bin/env python&#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;/code&amp;gt; geändert werden.&lt;br /&gt;
* Auf manchen Systemen muss in aktuellen speedtest-cli Versionen die Zeile &amp;lt;code&amp;gt;&#039;(%s; U; %s; en-us)&#039; % (platform.system(), platform.architecture()[0]),&amp;lt;/code&amp;gt; auskommentiert werden.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Im Folgenden sind ein paar Ansatzpunkte genannt, um beim Troubleshooting zu unterstützen:&lt;br /&gt;
* Das Script läuft auf der Kommandzeile problemlos, das Modul bringt aber Fehler:&lt;br /&gt;
** Script ist nicht ausführbar (&amp;lt;code&amp;gt;chmod +x speedtest-cli&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Der FHEM-User (&#039;&#039;fhem&#039;&#039;) hat keine Berechtigung das Script auszuführen&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
; Ist das Log frei von Fehlermeldungen?&lt;br /&gt;
; Werden im Modul Readings angezeigt?&lt;br /&gt;
; Kommen die Readings im Log (Filelog oder DbLog) an?&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* SVG-Plot zeigt nichts an:&lt;br /&gt;
** Verweis auf Filelog oder DbLog falsch&lt;br /&gt;
** Falsches gplot-File angegeben&lt;br /&gt;
** Übergabe der Plotfunktion (bei DbLog) nicht korrekt&lt;br /&gt;
** Falsche Groß-/Kleinschreibung verwendet (case sensitive)&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Ist der Inhalt des gplot-Files korrekt&lt;br /&gt;
* Ist die Definition der Quelle korrekt (Filelog, DbLog oder LogProxy)?&lt;br /&gt;
* Ist die Regexpr korrekt?&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* Fehlermeldung &#039;&#039;isn&#039;t numeric in sprintf at ./FHEM/98_SVG.pm&#039;&#039;&lt;br /&gt;
** Dieses kommt grundsätzlich immer dann vor, wenn SVG versucht einen Wert einzulesen, der neben der Zahl auch die Einheit enthält. Dieses kann bei der Verwendung von DbLog vorkommen, weil DbLog nicht weiß, wie es Wert und Einheit trennen soll. Abhilfe schafft eine entsprechende Regular Expression, die nur den Zahlenwert liefert.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Beschreibung des Scripts [http://binarynature.blogspot.de/2013/03/measure-internet-connection-speed-from-linux-command-line.html binarynature.blogspot.de]&lt;br /&gt;
* [https://pypi.python.org/pypi/speedtest-cli speedtest-cli auf pypi.python.org]&lt;br /&gt;
* [https://github.com/sivel/speedtest-cli speedtest-cli auf github.com]&lt;br /&gt;
* Forumseintrag über die Entwicklung des Moduls {{Link2Forum|Topic=13419|Message=83189|LinkText=Thema: Internetgeschwindigkeit überwachen}}&lt;br /&gt;
* Forumseintrag darüber, dass das Binary nicht auf der Fritzbox läuft {{Link2Forum|Topic=27242|Message=201516|LinkText=Thema: Internetgeschwindigkeit - speedtest}}&lt;br /&gt;
* Forumseintrag über aus der Idee wird ein Modul {{Link2Forum|Topic=13483|Message=83538|LinkText=Thema: Internetgeschwindigkeit überwachen}}&lt;br /&gt;
* Forumsbeitrag zum Einsatz unter Windows {{Link2Forum|Topic= 111602|LinkText=Thema: Speedtest für windows}}&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
Besten Dank an wkarl, Puschel74, justme1968 für Idee, Modulerstellung/Pflege und Installationsanleitung.&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37498</id>
		<title>FHEM startet nicht - Tipps zur Fehlersuche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHEM_startet_nicht_-_Tipps_zur_Fehlersuche&amp;diff=37498"/>
		<updated>2022-07-17T11:54:26Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Fehlernachrichten von FHEM bei dessen Start analysieren */ alte Version entfernt um Verwirrung zu vermeiden&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es gibt einen weiteren Artikel zur Fehlersuche. [[Hilfe! Mein FHEM funktioniert nicht!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kein Zugriff auf FHEMWEB/FHEM startet nicht - Was kann ich tun?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deine [[FHEMWEB]]-Seite ist nicht erreichbar? Ist FHEM tot, oder ist das Netzwerk kaputt? Was kann ich machen, um zu prüfen, woran es genau liegt?&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki-Artikel soll es darum gehen, wie Du für Dich prüfen kannst, ob ein Fehler bei FHEM, im Netzwerk oder ein anderes Problem vorliegt.&lt;br /&gt;
== Prüfen: Läuft überhaupt ein FHEM-Prozess? ==&lt;br /&gt;
Man kann sich unter einem Linuxsystem sämtliche laufende Prozesse auflisten lassen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl &#039;&#039;ps&#039;&#039; listet je nach Argument alle laufende Prozesse auf. Die Liste kann man nun noch nach einem bestimmten Prozess filtern. Aufruf und Ausgabe einer Prozessliste mit einem Filter nach perl sieht z. B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cooltux@fhem01-cluster:~&amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;11320 pts/0    S+     0:00 grep --color=auto perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wir sehen, wird hier lediglich der gerade ausgeführte Befehl &#039;&#039;ps&#039;&#039; gefunden (weil das Wort &#039;&#039;perl&#039;&#039; in der Aufrufzeile stand. Es wird hier überhaupt kein Perl-Prozess gelistet. Aktuell läuft also definitiv kein FHEM, das ja ein Perl-Programm/Prozess ist.&lt;br /&gt;
&lt;br /&gt;
Eine Prozessliste mit einem laufenden FHEM-Prozess könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[11:31 root@fhem01-cluster cooltux] &amp;gt; ps ax | grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15852 ?        R    2119:09 /usr/bin/perl fhem.pl configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;21447 pts/0    S+     0:00 grep perl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FHEM (&#039;&#039;perl fhem.pl ...&#039;&#039;) ist in diesem Fall also aktiv.&lt;br /&gt;
&lt;br /&gt;
=== systemd ===&lt;br /&gt;
&lt;br /&gt;
Nutzt das Linux-System den systemd, kann mit folgendem Befehl der Status des FHEM-Prozesses geprüft werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;service fhem status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Ausgabe könnte z.B. so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ● fhem.service - FHEM Home Automation&lt;br /&gt;
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)&lt;br /&gt;
   Active: active (running) since Thu 2018-08-09 14:32:16 CEST; 20h ago&lt;br /&gt;
  Process: 27641 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 27643 (perl)&lt;br /&gt;
    Tasks: 1 (limit: 4915)&lt;br /&gt;
   CGroup: /system.slice/fhem.service&lt;br /&gt;
           └─27643 /usr/bin/perl fhem.pl fhem.cfg&lt;br /&gt;
 &lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Starting FHEM Home Automation...&lt;br /&gt;
 Aug 09 14:32:16 fhem-host systemd[1]: Started FHEM Home Automation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prüfen: Ist der laufende FHEM-Prozess überlastet? ==&lt;br /&gt;
Ich sollte mir anschauen, ob der FHEM-Prozess vielleicht zu sehr ausgelastet ist, der Prozess also 100 Prozent CPU Auslastung produziert?&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Linuxbefehl &#039;&#039;top&#039;&#039; wird uns hierbei behilflich sein:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:38 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:38:18 up 11 days, 18:58,  1 user,  load average: 1,07, 1,03, 1,00&lt;br /&gt;
 Tasks: 125 total,   2 running, 123 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s): 24,9 us,  0,9 sy,  0,0 ni, 74,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   833532 used,   111992 free,    41552 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46564 used,    55832 free.   496240 cached Mem&lt;br /&gt;
 PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 15852 fhem      20   0  103652  82160   5068 R 100,0  8,7   2125:41 perl                                                                                                               &lt;br /&gt;
 21683 root      20   0    5740   2560   2092 R   1,0  0,3   0:00.37 top                                                                                                                &lt;br /&gt;
 19129 cooltux   20   0   86204  22348   3668 S   0,3  2,4  64:16.90 insync-portable                                                                                                    &lt;br /&gt;
 21350 cooltux   20   0   11436   2848   2248 S   0,3  0,3   0:00.10 sshd                                                                                                               &lt;br /&gt;
     1 root      20   0   23292   2368   1380 S   0,0  0,3   0:54.23 systemd                                                                                                            &lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd                                                                                                           &lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.20 ksoftirqd/0                                                                                                        &lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H                                                                                                       &lt;br /&gt;
     7 root      20   0       0      0      0 S   0,0  0,0   8:20.71 rcu_sched                                                                                                          &lt;br /&gt;
     8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh                                                                                                             &lt;br /&gt;
     9 root      rt   0       0      0      0 S   0,0  0,0   0:05.45 migration/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier können wir nun eindeutig erkennen, dass unser FHEM die CPU mit 100 Prozent auslastet. FHEM hat also ein Problem!&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich ein FHEM/Perl-Prozess ohne Probleme:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
 [11:50 root@fhem01-cluster cooltux] &amp;gt; top&lt;br /&gt;
 top - 11:50:33 up 11 days, 19:10,  1 user,  load average: 0,84, 1,03, 1,00&lt;br /&gt;
 Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 %Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,6 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st&lt;br /&gt;
 KiB Mem:    945524 total,   818344 used,   127180 free,    43748 buffers&lt;br /&gt;
 KiB Swap:   102396 total,    46820 used,    55576 free.   489652 cached Mem&lt;br /&gt;
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND&lt;br /&gt;
 22074 fhem      20   0   86424  68516   7200 S   1,3  7,2   0:47.64 perl&lt;br /&gt;
 22294 root      20   0    5740   2564   2092 R   1,3  0,3   0:00.19 top&lt;br /&gt;
 22296 fhem      20   0   86424  63556   2240 S   1,3  6,7   0:00.04 perl&lt;br /&gt;
 22297 fhem      20   0    2088    408    328 S   0,7  0,0   0:00.02 ping&lt;br /&gt;
     7 root      20   0       0      0      0 S   0,3  0,0   8:21.23 rcu_sched&lt;br /&gt;
  1366 mysql     20   0  620608 157132   5736 S   0,3 16,6  70:12.59 mysqld&lt;br /&gt;
 19481 root      20   0       0      0      0 S   0,3  0,0   0:02.35 kworker/3:0&lt;br /&gt;
     1 root      20   0   23292   2408   1420 S   0,0  0,3   0:54.27 systemd&lt;br /&gt;
     2 root      20   0       0      0      0 S   0,0  0,0   0:01.09 kthreadd&lt;br /&gt;
     3 root      20   0       0      0      0 S   0,0  0,0   3:37.42 ksoftirqd/0&lt;br /&gt;
     5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Prüfen: Stimmen die Dateiberechtigungen? ==&lt;br /&gt;
Alle Dateien im Verzeichnis /opt/fhem/ und allen Unterverzeichnissen  gehören nach der Installation dem Benutzer fhem und der Gruppe dialout. Man kann es leicht prüfen:&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig wird der Eigentümer durch Manipulation der Dateien falsch gesetzt, mit diesem Befehl kann man alle Dateien auf den Eigentümer fhem und dessen primäre Gruppe setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown -R fhem: /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Setup Routine setzt den Besitz auf fhem:dialout &amp;lt;code&amp;gt;sudo chown -R fhem:dialout /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Und wenn sich gar nichts mehr tut? ==&lt;br /&gt;
=== Die letzen Zeilen im existierenden FHEM Log anzeigen  ===&lt;br /&gt;
So lässt man sich auf Systemebene die letzen 20 Zeilen im Log anzeigen&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tail -n 20 /opt/fhem/log/fhem-$(date &#039;+%Y-%m&#039;).log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fehlernachrichten von FHEM bei dessen Start analysieren  ===&lt;br /&gt;
In der Regel werden die Ausgaben von FHEM, auch die beim Start, gemeinsam mit vielen anderen Nachrichten in ein Logfile geschrieben. Dort kann natürlich nach Ursachen geforscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine einfachere Auswertung wird möglich, wenn man diese Meldungen zeitweilig in einem Terminalfenster (das Ding, um Kommandozeilenbefehle einzugeben) angezeigt bekommt.&lt;br /&gt;
&lt;br /&gt;
Seit dem 01.08.2017 gibt es die Möglichkeit beim manuellen Starten von FHEM im Terminal den Schalter -d zu verwenden ({{Link2Forum|Topic=74774|Message=666766}}). Dieser startet FHEM mit den beiden gesetzten Attributen &amp;lt;code&amp;gt;attr global logfile -&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;attr global verbose 5&amp;lt;/code&amp;gt; und gibt somit alle Meldungen im Terminalfenster aus. Zuerst mit ins FHEM Verzeichnis wechseln. Root oder sudo ist nicht erforderlich!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss ein (mit 100 %) laufendes FHEM zunächst beendet werden! z.B.: &amp;lt;code&amp;gt;sudo systemctl stop fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ins FHEM Verzeichnis wechseln: &amp;lt;code&amp;gt;cd /opt/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nach Konfiguration FHEM im debug Modus starten:&lt;br /&gt;
&lt;br /&gt;
fhem.cfg - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
configDB - Nutzer: &amp;lt;code&amp;gt;perl fhem.pl -d configDB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man genug analysiert hat, FHEM mit Ctrl-C/Strg-C stoppen&lt;br /&gt;
&lt;br /&gt;
== Es ist nach dem letzten Update passiert? ==&lt;br /&gt;
Beispielhaft für das Vorgehen wird das in diesem {{Link2Forum|Topic=118533|LinkText=Forumthread}} beschrieben. FHEM speichert vor dem Update die Dateien ins Verzeichnis restoreDir die aktualisiert werden. Es handelt sich dabei nicht um eine komplette Sicherung des Systems!&lt;br /&gt;
&lt;br /&gt;
Man kann sich über die gesicherten Versionen/Dateien einen Überblick verschaffen (Datum anpassen!):&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/update&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/update/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hat man die verursachende Datei ermittelt, kann man gezielt diese Datei wieder herstellen:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp /opt/fhem/restoreDir/update/2021-02-06/FHEM/NameDerDatei /opt/fhem/FHEM/&amp;lt;/code&amp;gt;&lt;br /&gt;
Es gibt bei einigen Modulen Abhängigkeiten von anderen Dateien, es ist dringend angeraten, dann den kompletten zusammengehörigen Satz wieder herzustellen!&lt;br /&gt;
&lt;br /&gt;
Will man einen kompletten Schritt zurück vor dem Update gehen, weil man den Fehler nicht einkreisen kann, stellt man so alles vor dem Update wieder her. &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/update/2021-02-05/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die config Datei ist das Problem? ==&lt;br /&gt;
Bei jedem save wird in  /opt/fhem/restoreDirs eine Sicherung der fhem.cfg und das Statefile fhem.save durchgeführt. &lt;br /&gt;
&lt;br /&gt;
Auf der Kommandozeile vom System kann man sich einen Überblick verschaffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lha /opt/fhem/restoreDir/save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dort sollten Pfade mit Datums Angaben sein.&lt;br /&gt;
&lt;br /&gt;
Den exakten Zeitpunkt der gesicherten Dateien kann man sich so anzeigen lassen (Beispiel).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -lhaR /opt/fhem/restoreDir/save/2020-02-28&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;lastKnownGood&amp;quot; Konfiguration kann man so wiederherstellen und anschließend FHEM wieder starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo -su fhem cp -R /opt/fhem/restoreDir/save/2020-02-28/* /opt/fhem/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Berechtigungen werden durch verwenden von User fhem eigentlich erhalten. &lt;br /&gt;
&lt;br /&gt;
Falls die Berechtigungen nicht stimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/fhem.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo chown fhem: /opt/fhem/log/fhem.save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minimal Config starten ==&lt;br /&gt;
Wenn gar nichts mehr geht, ist es manchmal ratsam eine minimal Konfiguration zu starten um die Hardware oder Netzwerkanbindung an sich zu testen.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist zunächst sicher zu stellen, dass kein FHEM Prozess läuft (siehe oben)&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo perl fhem.pl fhem.cfg.demo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Oder man holt sich die Original minimal fhem.cfg&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/fhem&lt;br /&gt;
sudo -su fhem wget -qO minimal.cfg https://svn.fhem.de/fhem/trunk/fhem/fhem.cfg&lt;br /&gt;
sudo perl fhem.pl minimal.cfg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wäre es auch möglich ein [[Update]] zu machen oder Dateien wie im Update Wiki Artikel beschrieben direkt aus dem SVN zu holen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Es ist wichtig fhem.pl mit erhöhten Rechten zu starten, da sonst fhem.pl nicht auf den user fhem umschalten kann - das würde zu Rechte Problemen führen!&lt;br /&gt;
&lt;br /&gt;
Für configDB User gibt es den {{Link2Forum|Topic=86225|LinkText= rescue Modus}}.&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=E-Mail_senden&amp;diff=37488</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=37488"/>
		<updated>2022-07-04T10:54:30Z</updated>

		<summary type="html">&lt;p&gt;Otto123: /* Synology DiskStation */ Hinweis Gmail APP Passwort&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;
{{Randnotiz|RNTyp=y|RNText=Anleitung zur Einrichtung von Exim4 auf Debian mit GMX als Smarthost:[[Media:Anleitung_Exim4_Debian_GMX.pdf|PDF]]}}&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;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;
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;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install ssmtp_2.64-4_mpc85xx.ipk  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden die Pakete 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;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/ssmtp/revaliases&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 root:arnold@gmx.net:mail.gmx.net:465&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub 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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&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;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&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;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi ===&lt;br /&gt;
{{Randnotiz|RNTyp=o|RNText=In früheren Distributionen wurde das Paket sowie der Aufruf uU. mit großem &amp;quot;E&amp;quot; geschrieben: &#039;&#039;sendEmail&#039;&#039;.}}Auf einem [[Raspberry Pi]] muß noch sendemail nachinstalliert werden. Diese Anleitung funktioniert ab der Stretch-Version von Raspbian bzw. &#039;&#039;&#039;Debian&#039;&#039;&#039; sowie unter &#039;&#039;&#039;Ubuntu&#039;&#039;&#039; seit ca. Version 16.04.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl perl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann die korrekte Funktion im Terminal (ohne &amp;lt;code&amp;gt;{qx()}&amp;lt;/code&amp;gt; ) oder auch in der FHEM Kommandozeile testen (Hinweis: manche Provider (z.B. gmail) lassen diesen Zugang erst nach Freischaltung zu!).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{qx(sendemail -f &#039;Ab\@send.er&#039; -t &#039;Emp\@faeng.er&#039; -u &#039;subject&#039; -m &#039;text&#039; -a &#039;DateinameOderLeer&#039; -s &#039;smtpFQDN:port&#039; -xu &#039;MailUser&#039; -xp &#039;PasswortOhneKlammeraffen&#039;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Bei Gmail muss seit dem 30.6.2022 ein separates Passwort erzeugt werden, die alte Einstellung über &amp;quot;Zugriff durch weniger sichere Apps&amp;quot; funktioniert nicht mehr. Siehe Support Seite Google: https://support.google.com/accounts/answer/185833}}&lt;br /&gt;
&lt;br /&gt;
Beispiel mit Gmail über Linux Terminalfenster:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sendemail -f &#039;Der.Absender@gmail.com&#039; -t &#039;Der.Empfaenger@gmail.com&#039; -u &#039;subject&#039; -m &#039;text&#039; -a &#039;&#039; -s &#039;smtp.gmail.com:587&#039; -xu &#039;Der.Absender&#039; -xp DASSUPERGEHEIMEPASSW0RT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
######## DebianMail  Mail auf dem RPi versenden ############ &lt;br /&gt;
# $provider für SMTP Server anpassen. &lt;br /&gt;
# Einmal in der FHEM Kommandozeile, user und password anpassen:&lt;br /&gt;
# {setKeyValue(&amp;quot;myEmailKonto&amp;quot;,&#039;user@domain&#039;);;setKeyValue(&amp;quot;myEmailPasswrd&amp;quot;,&#039;password&#039;)}&lt;br /&gt;
sub 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 $attach = shift; &lt;br /&gt;
 my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
 my $error;&lt;br /&gt;
 my $konto = getKeyValue(&amp;quot;myEmailKonto&amp;quot;); &lt;br /&gt;
 my $passwrd = getKeyValue(&amp;quot;myEmailPasswrd&amp;quot;); &lt;br /&gt;
 my $from = $konto; # or use different KeyValue if konto is not the from email address&lt;br /&gt;
 my $provider = &amp;quot;smtp.1und1.de&amp;quot;; # smtp.domain.tld:port see provider documentation&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail RCP: $rcpt&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Subject: $subject&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Text: $text&amp;quot;;&lt;br /&gt;
 #Log 1, &amp;quot;sendEmail Anhang: $attach&amp;quot;;&lt;br /&gt;
 if (not defined($attach)){$attach=&#039;&#039;}&lt;br /&gt;
 $ret .= qx(sendemail -f &#039;$from&#039; -t &#039;$rcpt&#039; -u &#039;$subject&#039; -m &#039;$text&#039; -a &#039;$attach&#039; -s &#039;$provider&#039; -xu &#039;$konto&#039; -xp &#039;$passwrd&#039; -o tls=auto -o message-charset=utf-8);&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;
}&lt;br /&gt;
###############################################################################&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zugangsdaten für den Email-Account müssen dabei FHEM-intern gespeichert werden. Dazu gibt man einmalig über die Kommandozeile folgendes ein (user@domain und password müssen auf den Email Account geändert werden):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;  {setKeyValue(&amp;quot;myEmailKonto&amp;quot;,&#039;user@domain&#039;);;setKeyValue(&amp;quot;myEmailPasswrd&amp;quot;,&#039;password&#039;)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die TLS Verschlüsselung (ehem. SSL) nicht zu nutzen, muss in der viertletzten Zeile tls=no verwendet und der Port des Mailproviders auf 25 eigetragen werden. Sollte anschließend keine Mail verschickt werden, siehe Probleme.&lt;br /&gt;
&lt;br /&gt;
Falls der Body-Text in einem (Android-)Mailer auf dem Handy nicht gezeigt wird, kann der Parameter &#039;&#039;&#039;-o message-content-type=html&#039;&#039;&#039; helfen.&lt;br /&gt;
&lt;br /&gt;
Die Funktion kann beispielsweise folgendermaßen aufgerufen werden:&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Bei allen Feldern können generell doppelte &amp;quot; oder einfache &#039; Anführungszeichen verwendet werden. Innerhalb von &amp;quot;&amp;quot; müssen Sonderzeichen wie @ aber maskiert werden, da sie sonst als Steuerzeichen interpretiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;email\@email.domain&amp;quot; oder &#039;email@email.domain&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Direkt in der FHEM Kommandozeile (ohne Anhang)&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{DebianMail(&amp;quot;email\@email.domain&amp;quot;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;)}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Die ordnungsgemäße Ausführung wird mit 71 quittiert.&lt;br /&gt;
Oder im notify mit mehreren Anhängen&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\  DebianMail(&amp;quot;email\@email.domain&amp;quot;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;,&amp;quot;&#039;Anhang1&#039; &#039;Anhang2&#039; ...&amp;quot;);;\ }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder (mehr als einen Empfänger, diese können durch Leerzeichen, Semikolon oder Komma getrennt sein)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
define Sonstiges at *01:00:00 {\&lt;br /&gt;
DebianMail(&#039;email@email.domain,email2@email.domain&#039;,&amp;quot;Subject&amp;quot;,&amp;quot;Text&amp;quot;,&amp;quot;&#039;Anhang1&#039; &#039;Anhang2&#039; ...&amp;quot;);;\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Eine erweiterte - nicht blockierende - Version des Scripts ist [[SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Mail mit Snapshot im Anhang und Aufnahmelink versenden (sendEmail)|hier]] zu finden}}&lt;br /&gt;
Es ist wichtig, die Dateinamen mit &#039; &#039; zu klammern, da hierdurch auch Leerzeichen im Pfad/Dateinamen möglich sind.&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;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&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&lt;br /&gt;
&amp;lt;/syntaxhighlight&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/ Homepage von sendEmail]&lt;br /&gt;
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile):&lt;br /&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 $NAME:$EVENT&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 $NAME&amp;quot;;;\&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;system(&amp;quot;wmail \&amp;quot;$NAME: $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 / sendemail (Schreibweise alt / neu )  ===&lt;br /&gt;
Erhält man Fehler bez. TLS (&#039;&#039;ERROR =&amp;gt; TLS setup failed: SSL connect attempt failed error: ...&#039;&#039; ), sind eventuell die ca-certificates veraltet oder nicht installiert. Prüfung:&lt;br /&gt;
:&amp;lt;code&amp;gt;apt-cache policy ca-certificates&amp;lt;/code&amp;gt;&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 ssh) getestet werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;sendEmail -vv -f &#039;Absender@AbsDomain.de&#039; -t &#039;Empfänger@EmpfDomain.de&#039; -u &#039;subject&#039; -m &#039;body&#039; -s &#039;smtp.AbsDomain.de&#039; -xu &#039;AbsenderBenutzername&#039; -xp &#039;AbsenderPasswort&#039; -o tls=yes&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keine Mail mit TLS Verschlüsselung ===&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Diese Information trifft nur auf alte Systeme zu, aktuell (2021) befindet sich in Zeile 1933 der korrekte Code}}&lt;br /&gt;
Prüfung mit &amp;lt;code&amp;gt;grep -n SSLv /usr/bin/sendEmail&amp;lt;/code&amp;gt;&lt;br /&gt;
&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;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Otto123</name></author>
	</entry>
</feed>