<?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=Blecher-at</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=Blecher-at"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Blecher-at"/>
	<updated>2026-04-30T23:55:19Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi:_GPIOs_schalten&amp;diff=23829</id>
		<title>Raspberry Pi: GPIOs schalten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi:_GPIOs_schalten&amp;diff=23829"/>
		<updated>2017-12-27T23:06:57Z</updated>

		<summary type="html">&lt;p&gt;Blecher-at: /* Perl-Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit FHEM lassen sich auch die &#039;&#039;&#039;GPIOs&#039;&#039;&#039; des [[Raspberry Pi]] steuern. Generell gibt es einige Möglichkeiten, eine entsprechende Steuerung zu verwirklichen. Als Informationsquelle empfiehlt sich hier die [http://elinux.org/RPi_Low-level_peripherals Low-Level Peripherals Seite des Embedded Linux Wiki]&lt;br /&gt;
&lt;br /&gt;
== Bash Script ==&lt;br /&gt;
Zum schalten der GPIOs via Bash kann folgendes Script (fhem-gpio.sh) verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
PORT=$1;&lt;br /&gt;
if ! [ -d /sys/class/gpio/gpio$PORT ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;$PORT&amp;quot; &amp;gt; /sys/class/gpio/export&lt;br /&gt;
  echo &amp;quot;out&amp;quot; &amp;gt; /sys/class/gpio/gpio$PORT/direction&lt;br /&gt;
fi&lt;br /&gt;
STATE=$2;&lt;br /&gt;
if [ $STATE -ge 1 ]&lt;br /&gt;
then&lt;br /&gt;
  STATE=1&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$STATE&amp;quot; &amp;gt; /sys/class/gpio/gpio$PORT/value&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Aufruf des Scripts erfolgt dann mit Angabe der Pinnummer sowie des Zustands des Pins, z.&amp;amp;nbsp;B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;fhem-gpio.sh 17 1 # Pin 17 in High-Zustand versetzen&lt;br /&gt;
fhem-gpio.sh 17 0 # Pin 17 in Low-Zustand versetzen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wichtig: Das Script muss leider unter root (z.B. per sudo) aufgerufen werden.&lt;br /&gt;
Der Einfachheithalber kann das Script unter /usr/sbin kopiert werden.&lt;br /&gt;
&lt;br /&gt;
== Perl-Modul ==&lt;br /&gt;
Das Modul &#039;&#039;&#039;RPI_GPIO&#039;&#039;&#039; für den Zugriff auf die GPIO Pins des Raspberry wird bereits mit FHEM mitgeliefert. Die Ansteuerung der GPIOs erfolgt über das Filesystem (sysFs). Daher werden in den meisten Anwendungsfällen keine weiteren Programme/Treiber benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die [http://wiringpi.com/download-and-install/ WiringPi] Bibliothek wird nur benötigt, wenn die internen Pullups/Pulldowns genutzt werden sollen oder dem FHEM User keine direkten Zugriffsrechte auf das GPIO Verzeichnis gegeben werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Die GPIOs werden über die BCM GPIO Nummerierung angesprochen und &#039;&#039;&#039;NICHT&#039;&#039;&#039; über die WiringPi Nummerierung.&amp;lt;br&amp;gt;&lt;br /&gt;
Installationsschritte sind in der Commandref zu finden. {{Link2Forum|Topic=16519|LinkText=Diskussions Thread im Forum}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Benutzer „fhem“ muss zugriff auf die sysfs dateien haben. dafür gibt es mehrere Möglichkeiten:&lt;br /&gt;
* Der Benutzer „fhem“ wird der Gruppe „gpio“ hinzugefügt (funktioniert nur unter manchen distributionen, z.B. raspian): &amp;lt;code&amp;gt;sudo adduser fhem gpio&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es werden udev-regeln erstellt (das macht raspian automatisch mit der gpio gruppe). siehe hierzu https://stackoverflow.com/a/30940526&lt;br /&gt;
* Verwendung vom &amp;quot;WiringPi&amp;quot; tool (s.u.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WiringPi installieren: (normalerweise nicht notwendig)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install git-core&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;git clone git://git.drogon.net/wiringPi&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;cd wiringPi&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;./build&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo reboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Known issues mit WiringPi&#039;&#039;&#039;&lt;br /&gt;
* active_low wird nicht korrekt exportiert, und damit sieht es so aus als wurde das setting ignoriert. Das ist ein Fehler im WiringPi. [https://github.com/blecher-at/WiringPi Gefixte Version]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WiringPi für andere Hardware als RaspberryPI&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zhaolei/WiringOP Orange PI]&lt;br /&gt;
[https://github.com/blecher-at/WiringOP-Zero Orange PI Zero]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FHEM - RPI_GPIO Device erstellen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define [Name] RPI_GPIO [port]&amp;lt;/code&amp;gt; z.B.: &amp;lt;code&amp;gt;define GPIO17 RPI_GPIO 17&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um den Port schalten zu könenn ist es nötig den RPI_GPIO als output zu definieren.&lt;br /&gt;
&amp;lt;code&amp;gt;attr GPIO17 direction output&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&amp;quot;set GPIO17 on&amp;quot; # Pin 17 in High-Zustand versetzen&lt;br /&gt;
&amp;quot;set GPIO17 off&amp;quot; # Pin 17 in Low-Zustand versetzen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dummy-Schalter ==&lt;br /&gt;
Über einen Dummy-Schalter kann das Bash-Script dann getriggert werden. &lt;br /&gt;
&lt;br /&gt;
Im Fall von [[FS20 Allgemein|FS20]] sähe eine entsprechende Schalter-Definition beispielsweise so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;define gpio_17 FS20 [Hauscode] [Devicecode]&lt;br /&gt;
attr gpio_17 dummy 1&lt;br /&gt;
define act_on_gpio_17 notify gpio_17 {\&lt;br /&gt;
 if (&amp;quot;$EVENT&amp;quot; ne &amp;quot;off&amp;quot;) {\&lt;br /&gt;
  system(&amp;quot;sudo fhem-gpio.sh 17 1 &amp;amp;&amp;quot;)\&lt;br /&gt;
 } else {\&lt;br /&gt;
  system(&amp;quot;sudo fhem-gpio.sh 17 0 &amp;amp;&amp;quot;)\&lt;br /&gt;
 }\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* [http://elinux.org/RPi_Low-level_peripherals http://elinux.org/RPi_Low-level_peripherals]&lt;br /&gt;
* [http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm]&lt;br /&gt;
* [http://wiringpi.com/download-and-install/ http://wiringpi.com/download-and-install/]&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:GPIOs schalten}}&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Blecher-at</name></author>
	</entry>
</feed>