http://wiki.fhem.de/w/api.php?action=feedcontributions&user=Krikan&feedformat=atomFHEMWiki - Benutzerbeiträge [de]2024-03-29T10:13:49ZBenutzerbeiträgeMediaWiki 1.39.3http://wiki.fhem.de/w/index.php?title=EnOcean-FUD61NPN-Funk-Universal-Dimmaktor&diff=38365EnOcean-FUD61NPN-Funk-Universal-Dimmaktor2023-05-16T07:26:00Z<p>Krikan: Todo ergänzt: Fehlerhinweis aus Forum prüfen und ggfs. einarbeiten</p>
<hr />
<div>{{Todo|Fehlerhinweis : Hinweis aus {{Link2Forum|Topic=133487}} auf nicht funktionierenden Anlernvorgang prüfen und gegenbenenfalls Wiki-Seite anpassen. }}<br />
<br />
{{Infobox Hardware<br />
|Bild=PlatzHalter.png<br />
|Bildbeschreibung=<br />
|HWProtocol=EnOcean<br />
|HWType=Aktor, Empfänger; Sender, Sensor<br />
|HWCategory=EnOcean<br />
|HWComm=EnOcean Funk, 868Mhz<br />
|HWChannels=1 bidirektional<br />
|HWVoltage=230V~<br />
|HWPowerConsumption=Eigenverbrauch ca. 0,7W<br />
|HWPoweredBy=230V<br />
|HWSize=45x55x33mm<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#EnOcean EnOcean]<br />
|HWManufacturer=Eltako<br />
}}<br />
<br />
{{Randnotiz|RNText=Seite gilt nur für die '''bidirektionale''' Variante des Aktors (am Beispiel Variante ab KW 11/14)}}<br />
<br />
'''[[EnOcean-FUD61NPN-Funk-Universal-Dimmaktor]]''' ist ein Aktor<br />
* für<br />
** Unterputzmontage<br />
* zum<br />
** Dimmen<br />
<br />
== Features ==<br />
Dimm-Aktor für Lampen bis 300 W, dimmbare Energiesparlampen ESL und dimmbare 230 V-LED-Lampen (Details siehe Anleitung)<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
Funktionsfähigkeit erfordert, dass die Bestätigungstelegramme am Aktor eingeschaltet sind<br />
<br />
=== Definition/Anlernvorgang ===<br />
Der Aktor kann nicht vollautomatisch per autocreate in FHEM angelegt werden. <br />
Die Einbindung in FHEM kann entweder über die Nutzung der inoffiziellen, gerätespezifischen EEP (empfohlen) '''oder''' über die manuelle Vorgehensweise erfolgen. <br />
<br />
===== Nutzung der inoffziellen EEP =====<br />
* FHEM-Device <name> (hier: EnO_FUD61) mit dem passenden inoffiziellen EEP und der Sender-ID des FUD61 (siehe Rückseite des Aktors; hier: 01036620) durch Eingabe in das [[Konfiguration#Befehl-Eingabefeld|Befehls-Eingabefeld]] und anschließendem Auslösen von {{Taste|Enter}} definieren.<br />
: Aktoren mit Produktionswoche bis ca. Mitte 2016:<br />
: <code>define EnO_FUD61 EnOcean 01036620 G5-38-08</code><br />
: Aktoren mit Produktionswoche ab ca. Mitte 2016 ({{Link2Forum|Topic=57591|Message=490825}}):<br />
: <code>define EnO_FUD61 EnOcean 01036620 H5-38-08</code><br />
: Hierdurch wird ein FHEM-Device mit allen notwendigen Attributen für den FUD61 angelegt, das nur noch am Aktor angelernt werden muss.<br />
* Am Aktor <br />
** Oberer Funktions-Drehschalter: auf LRN<br />
** Unterer Funktions-Drehschalter: auf AUTO (zum Einlernen PC)<br />
* FHEM Eingabefeld: <code>set EnO_FUD61 teach</code><br />
* Am Aktor nach dem Einlernen beide Drehschalter in die ursprüngliche Position<br />
<br />
===== Alternative: manuelle Vorgehensweise =====<br />
* FHEM-Device <name> (hier: EnO_FUD61) mit der Sender-ID des FUD61 (siehe Rückseite des Aktors; hier: 01036620) definieren:<br />
: <code>define EnO_FUD61 EnOcean 01036620</code><br />
* Das Attribut subDef mit einer freien SenderId des TCMs anlegen ODER falls keine freie Sender-ID bekannt ist, das Attribut komplett weglassen, damit die Vergabe automatisch durch FHEM erfolgt:<br />
: <code>attr EnO_FUD61 subDef AABBCC05</code> <--- nur Anlegen, wenn eine freie SenderID des Gateways bekannt ist<br />
* Die Attribute subType, gwCmd und manufID wie nachfolgend anlegen:<br />
: <code> attr EnO_FUD61 subType gateway</code><br />
: <code> attr EnO_FUD61 gwCmd dimming</code><br />
: <code> attr EnO_FUD61 manufID 00D</code><br />
* Bei Aktoren mit Produktionswoche ab ca. Mitte 2016 zusätzlich folgendes Attribut anlegen ({{Link2Forum|Topic=57591|Message=490825}}):<br />
: <code> attr EnO_FUD61 model Eltako_TF</code><br />
* Am Aktor<br />
** Oberer Funktions-Drehschalter: auf LRN<br />
** Unterer Funktions-Drehschalter: auf AUTO (zum Einlernen PC)<br />
* FHEM Eingabefeld: <code>set EnO_FUD61 teach</code><br />
* Am Aktor nach dem Einlernen beide Drehschalter in die ursprüngliche Position<br />
<br />
=== FHEM Config-Auszug ===<br />
Ein exemplarischer Auszug aus der [[Konfiguration]]:<br />
<pre><br />
define EnO_FUD61 EnOcean 01036620 <--- SenderID des FUD61NPN (Aktors)<br />
attr EnO_FUD61 subDef AABBCC05 <--- AABBCC05 ist eine der SenderID's des TCM<br />
attr EnO_FUD61 eep A5-38-08<br />
attr EnO_FUD61 subType gateway<br />
attr EnO_FUD61 gwCmd dimming<br />
attr EnO_FUD61 manufID 00D<br />
attr EnO_FUD61 webCmd on:off:dim<br />
</pre><br />
<br />
=== Logbeispiel ===<br />
2015-03-29_18:32:13 EnO_FUD61 dim: 63<br />
2015-03-29_18:32:13 EnO_FUD61 dimValueLast: 63<br />
2015-03-29_18:32:13 EnO_FUD61 dimValueStored: 87<br />
2015-03-29_18:32:14 EnO_FUD61 block: unlock<br />
2015-03-29_18:32:16 EnO_FUD61 rampTime: 0<br />
2015-03-29_18:32:16 EnO_FUD61 on<br />
2015-03-29_18:32:16 EnO_FUD61 dim: 87<br />
2015-03-29_18:32:16 EnO_FUD61 dimValueLast: 87<br />
2015-03-29_18:32:19 EnO_FUD61 dimValueStored: 1<br />
2015-03-29_18:32:19 EnO_FUD61 block: unlock<br />
2015-03-29_18:32:20 EnO_FUD61 block: unlock<br />
2015-03-29_18:32:21 EnO_FUD61 off<br />
2015-03-29_18:32:22 EnO_FUD61 rampTime: 0<br />
2015-03-29_18:32:22 EnO_FUD61 off<br />
2015-03-29_18:32:22 EnO_FUD61 dim: 0<br />
2015-03-29_18:35:06 EnO_FUD61 block: unlock<br />
2015-03-29_18:35:08 EnO_FUD61 rampTime: 0<br />
2015-03-29_18:35:08 EnO_FUD61 off<br />
2015-03-29_18:35:08 EnO_FUD61 dim: 0<br />
<br />
== Einsatzbeispiel ==<br />
=== Fahrzeit mit höherer Auflösung senden ===<br />
FHEM sendet die Fahrzeit im Standard mit einer Auflösung von 1 s. Bei neueren Eltako Jalousieaktoren (FSB61 mit verschlüsseltem Funk) kann die Fahrzeit mit einer Auflösung von 1/10 s gesendet werden. Um die Fahrzeit mit höherer Genauigkeit innerhalb von FHEM zu berechnen und zu senden, ist das Attribut <code>settingAccuracy</code> auf <code>high</code> zu setzen. Die Eingabe der Fahrzeit oder der Position erfolgt weiterhin ohne Dezimalstellen!<br />
<br />
=== Anzeige eines alternativen Bedienelementes ===<br />
[[Datei:knobwidget.JPG|thumb|right]]<br />
Anstelle des standardmäßigen Sliders zur Einstellung der Dimmstufe durch den set-Befehl "dim" kann mittels des Attributs <code>widgetOverride</code> ein anderes Bedienelement vorbelegt werden. Hier ein Beispiel für ein knob-Bedienelement:<br />
<br />
attr FUD_61 widgetOverride dim:knob,min:0,max:100,step:1,linecap:round,angleOffset:-125,angleArc:250<br />
attr FUD_61 webCmd dim <------- Bedienelement wird auch in der Raumansicht angezeigt <br />
<br />
Ideen und Beispiele für knob-Bedienelemente mit den notwendigen Parametern finden sich beispielsweise [http://anthonyterrien.com/knob/ hier].<br />
<br />
=== Ansteuerung eines ausschließlich indirekt angelernten Dimmers ===<br />
Ein Dimmer bei dem keine physischen Taster direkt angelernt sind, sondern die Steuerung ausschließlich indirekt über FHEM (Taster->FHEM->Dimmer) erfolgt, kann folgendermaßen eingebunden werden: <br />
* [[Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern|Enocean Dimmer mit kurzem und langem Tastendruck ansteuern]]<br />
Bitte auch die [[Diskussion:Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern|Diskussionsseite]] zu den Beweggründen dieses Vorgehens beachten. Dies ist keinesfalls zwingend. Bei Ausfall des FHEM-Server ist keine Steuerung des Dimmers mehr möglich.<br />
<br />
== Links ==<br />
* Datenblatt: [http://www.eltako.com/fileadmin/downloads/de/Datenblatt/FUNK_datenblatt_FUD61NPN.pdf PDF]<br />
* Anleitung: [http://www.eltako.com/fileadmin/downloads/de/_bedienung/FUD61NPN_30100835-8_dt.pdf PDF]<br />
<br />
[[Kategorie:EnOcean Components]]<br />
[[Kategorie:Dimmer]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Vorlage:FHEMWiki_News&diff=38197Vorlage:FHEMWiki News2023-03-08T14:54:55Z<p>Krikan: Freigabe FHEM 6.2</p>
<hr />
<div>{|<br />
{{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}}.}}<br />
{{News|14.01.2023|FHEM Version 6.2 wurde freigegeben. Updatehinweise in {{Link2Forum|Topic=131618|LinkText=diesem Forenbeitrag}}.}}<br />
{{News|08.11.2021|FHEM Version 6.1 wurde freigegeben. Updatehinweise in {{Link2Forum|Topic=123972|LinkText=diesem Forenbeitrag}}.}}<br />
{{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]].}}<br />
{{News|28.02.2020|Das neue Modul [[SSCal - Integration des Synology Calendar Servers| SSCal]] ermöglicht die Integration des Synology Calendar Servers.}}<br />
{{News|28.01.2020|Neues Modul für die IP-Türsprechanlage [[DoorBird]] per Update verteilt.}}}}<br />
{{News|26.01.2020|FHEM Version 6.0 wurde freigegeben. Updatehinweise: {{Link2Forum|Topic=107782}}}}<br />
{{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. }}<br />
{{News|23.09.2019|Das Modul [[CanOverEthernet]] ermöglicht das Empfangen von Can-Over-Ethernet Paketen von Steuerungen der Firma Technische Alternative}}<br />
{{News|05.04.2019|Das [[SamsungAV]] Modul ermöglicht die Steuerung von Samsung Fernsehern und Bluray-Playern.}}<br />
{{News|06.03.2019|Mit dem Modul [[Arlo]] ist die Einbindung von Arlo Kameras über die Arlo Cloud möglich}}<br />
{{News|26.01.2019|Das [[TRÅDFRI|tradfri]] Modul erweitert die Palette der [[ZigBee]] Module.}}<br />
{{News|14.01.2019|Der [[FHEM Connector für Amazon Alexa|FHEM Connector]] Skill für Amazon Alexa ist verfügbar.}}<br />
{{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.}}<br />
{{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. }}<br />
{{News|12.02.2018|Die Module [[Modul Babble|Babble]] und [[Talk2Fhem|Talk2Fhem]] erweitern die Sprachsteuerungsmöglichkeiten von FHEM}}<br />
{{News|02.10.2017|[[FTUI eigene Widgets|Eigene Widgets für FHEM Tablet UI erstellen]]}}<br />
{{News|30.08.2017|[[WINCONNECT]] - Windows PC steuern und Informationen abfragen/anzeigen. }}<br />
{{News|24.08.2017|[[FHEMWEB/Widgets]] - Widgets (Frontendelemente) von FHEMWEB }}<br />
{{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}}<br />
{{News|24.07.2017|[[Telnet|Verbindung mit dem FHEM-Server per Telnet]]}}<br />
{{News|20.07.2017|[[FHEM startet nicht - Tipps zur Fehlersuche]]}}<br />
{{News|06.06.2017|[[Relaisplatine-Homebrew-MySensors|MySensors-Relaisplatine im Selbstbau]]}}<br />
{{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]]}}<br />
{{News|30.04.2017|[[DoorPiBoard]]: Eine Platine zur Umsetzung des [[DoorPi_und FHEM|DoorPi-Projektes]]}}<br />
{{News|21.03.2017|Artikel zum alternativen Frontend [[:Kategorie:FHEM_Tablet_UI|Tablet UI]] aktualisiert und deutlich erweitert}}<br />
{{News|02.03.2017|Neues Modul zur Ansteuerung von [[LGTV_WebOS|LG-TVs mit dem Betriebssystem WebOS]] wird per update verteilt}}<br />
{{News|20.02.2017|Neues Modul [[SIP-Client|SIP]], ein SIP-Client für FHEM, wird per update verteilt}}<br />
{{News|19.02.2017|FHEM Version 5.8 wurde freigegeben. Updatehinweise beachten: {{Link2Forum|Topic=67419}}}}<br />
{{News|18.01.2017|Neues Modul [[DOIFtools]] mit Funktionen zur Unterstützung des Benutzers im Umgang mit [[DOIF]] wird per update verteilt}}<br />
{{News|12.01.2017|Neues Modul zur Ansteuerung des Bluetooth 4.1 BLE Pflanzensensors [[XiaomiFlowerSens|Xiaomi Flower Care Smart Monitor]] wird per update ausgeliefert}}<br />
{{News|01.01.2017|Diverse neue Wiki-Artikel mit Informationen und Hilfen zu [[DOIF#Links|DOIF]] }}<br />
{{News|10.12.2016|FHEM Wiki ist auf einen neuen Server umgezogen und hat eine neue Standard-Internetadresse: https://wiki.fhem.de}}<br />
{{News|21.11.2016|Neues Modul [[Modul_PostMe|PostMe]] stellt eine komfortable Oberfläche zur Listenverwaltung bereit}}<br />
{{News|11.10.2016|Neue Module [[NUKI|NUKIbridge und NUKIDevice]] zur Ansteuerung des Nuki Smartlock werden per update verteilt}}<br />
{{News|07.10.2016|Neues Modul [[TRAFFIC]] zur Erfassung der Fahrzeiten bei aktueller Verkehrslage mittels Google Maps Directions API wird per update verteilt}}<br />
{{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 }}<br />
{{News|12.07.2016|Neues Modul [[DbRep - Reporting und Management von DbLog-Datenbankinhalten]] wird per update verteilt }}<br />
{{News|08.02.2016|Neues Modul [[Mediaportal|MEDIAPORTAL]] (Steuerung einer Mediaportal-Installation über Wifiremote) wird per update verteilt}}<br />
{{News|16.11.2015|Neues Modul [[HP1000]] (Einbindung einer HP1000 Wetterstation) wird per update verteilt}}<br />
{{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}}<br />
{{News|15.11.2015|FHEM Version 5.7 wurde veröffentlicht. Unbedingt Updatehinweise beachten: {{Link2Forum|Topic=44094}}}}<br />
{{News|30.10.2015|FHEM Wiki unterstützt nun [[Syntax Highlighting]]}}<br />
{{News|18.10.2015|Neues Modul [[TechemHKV]] (Empfang von Daten eines Techem Heizkostenverteilers) wird per update verteilt}}<br />
{{News|02.10.2015|Kleiner FHEM-Einsteiger-Kurs als Wiki Artikel unter [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]]}}<br />
{{News|24.09.2015|Umfangreiche Überarbeitung der Wiki Artikel über [[:Kategorie:panStamp|panStamp Hardware und Software]]}}<br />
{{News|11.09.2015|Neues Modul [[AMAD]] (Steuern und Informationsanzeige von Android-Geräten) wird per update verteilt}}<br />
{{News|15.06.2015|Neues Modul [[yowsup]] (WhatsApp Unterstützung) wird per update verteilt}}<br />
{{News|03.04.2015|Neues Geräte-Modul [[JawboneUp]] wird per update verteilt}}<br />
{{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}}<br />
{{News|10.02.2015|FHEM Wiki ist auf einen neuen Server umgezogen und [[FHEMWiki:Interna#Offene_Probleme|Aktualisierung der MediaWiki-Software]]}}<br />
{{News|31.01.2015|Neues Geräte-Modul [[Pushbullet]] wird per update verteilt}}<br />
{{News|14.01.2015|Neues Hilfs-Modul [[CALVIEW]] wird per update verteilt}}<br />
{{News|08.01.2015|Neues Geräte-Modul [[Buderus_Web_Gateway|km200]] zur Anbindung eines Buderus Web-Gateways wird per update verteilt}}<br />
{{News|18.12.2014|Neues Geräte-Modul [[SONOS]] wird per update verteilt}}<br />
{{News|15.12.2014|Überarbeitetes und erweitertes Geräte-Modul [[HTTPMOD]] wird per update verteilt}}<br />
{{News|10.12.2014|Neues Geräte-Modul [[Vitotronic_200_(Viessmann_Heizungssteuerung)|VCONTROL]] zur Anbindung einer Viessmann Heizung wird per update verteilt}}<br />
{{News|17.11.2014|Neues Hilfs-Modul [[logProxy]] wird per update verteilt}}<br />
{{News|09.11.2014|FHEM Version 5.6 wurde veröffentlicht}}<br />
{{News|27.10.2014|Neues Geräte-Modul [[harmony]] zur FHEM-Anbindung Logitech Harmony Hub basierter Fernbedienungen wird per update verteilt}}<br />
{{News|25.10.2014|Neues Geräte-Modul [[KostalPiko|KOSTALPIKO]] wird per update verteilt}}<br />
{{News|24.10.2014|Neues Hilfs-Modul [[HourCounter]] wird per update verteilt}}<br />
{{News|06.09.2014|Neues Hilfs-Modul [[CustomReadings]] per update verteilt}}<br />
{{News|19.08.2014|Neues Hilfs-Modul [[DOIF]] wird per update verteilt}}<br />
{{News|19.08.2014|Der Befehl [[update]] wurde überarbeitet: {{Link2Forum|Topic=26311}} }}<br />
{{News|13.08.2014|Zusätzliche Domäne fhem.org aktiviert: {{Link2Forum|Topic=26113}} }}<br />
{{News|29.09.2013|FHEM Version 5.5 wurde veröffentlicht}}<br />
{{News|11.05.2013|Die meisten Daten aus dem FhemWiki sind wieder hergestellt.}}<br />
{{News|04.05.2013|FHEM Wiki wird neu aufgebaut.}}<br />
{{News|04.05.2013|FHEM Wiki Update zu [[Special:Version|MediaWiki 1.20.5]].}}<br />
|}<br />
<noinclude>[[Kategorie:Vorlage]]</noinclude></div>Krikanhttp://wiki.fhem.de/w/index.php?title=Version&diff=38196Version2023-03-08T14:49:34Z<p>Krikan: Modulowner angwpasst</p>
<hr />
<div>{{SEITENTITEL:version}}<br />
{{Infobox Modul<br />
|ModPurpose=Befehl zur Bestimmung der Version von FHEM-Modulen<br />
|ModType=cmd<br />
|ModCmdRef=version<br />
|ModForumArea=Sonstiges<br />
|ModTechName=98_version.pm<br />
|ModOwner={{Link2FU|14770|betateilchen}}<br />
}}<br />
[[version]] ist ein Befehl zur Bestimmung der Versionsnummer und des Aktualisierungsdatums einzelner oder aller benutzen Module. Dieser Befehl war vor Revision 10462 direkt in fhem.pl integriert. Seit dieser Revision ist version nun ein eigenständiges Modul, welches in einer eigenen Moduldatei realisiert wird.<br />
<br />
Der Befehl kann direkt über das [[FHEMWEB|Webfrontend]] eingegeben werden.<br />
<br />
Ohne Angabe von Parametern wird eine komplette Liste aller benutzten Module mit den entsprechenden Detailinformation, sowie den Revisionsstand seit dem letzten Update ausgegeben. Aktuell wird in FHEM bei der Eingabe des Befehls <code>version</code> folgender beispielhafte Output erzeugt:<br />
<br />
<pre style="width:600px;"><br />
Latest Revision: 11163 <br />
<br />
File Rev Last Change <br />
<br />
fhem.pl 11144 2016-03-29 09:10:53Z rudolfkoenig <br />
90_at.pm 11151 2016-03-30 07:56:17Z rudolfkoenig <br />
98_autocreate.pm 11094 2016-03-20 09:41:03Z rudolfkoenig <br />
00_CUL.pm 10855 2016-02-15 11:30:02Z rudolfkoenig <br />
10_CUL_HM.pm 11160 2016-03-30 18:39:12Z martinp876 <br />
...<br />
</pre><br />
<br />
Wird mit dem Aufruf ein Modulname (Schreibweise beachten! Auf das obige Beispiel bezogen z.B. ''weblink'') mitgegeben, wird nur eine Zeile für das entsprechende Modul ausgegeben. Auch hier sind allerdings komplexere Filter möglich, so kann man mit<br />
:<code>version CUL.*</code> <br />
beispielsweise die folgende Ausgabe erzeugen:<br />
<pre style="width:600px;"><br />
File Rev Last Change <br />
<br />
00_CUL.pm 9002 2015-07-29 05:46:10Z rudolfkoenig <br />
09_CUL_FHTTK.pm 7529 2015-01-11 18:52:43Z matscher <br />
10_CUL_HM.pm 9474 2015-10-17 09:27:25Z martinp876 <br />
14_CUL_WS.pm 8497 2015-04-30 09:23:21Z rudolfkoenig<br />
</pre><br />
oder mit<br />
:<code>version fhem</code> <br />
folgende Ausgabe:<br />
<pre style="width:600px;"><br />
File Rev Last Change <br />
<br />
fhem.pl 11144 2016-03-29 09:10:53Z rudolfkoenig<br />
</pre></div>Krikanhttp://wiki.fhem.de/w/index.php?title=PRESENCE&diff=38195PRESENCE2023-03-08T14:47:38Z<p>Krikan: Modulowner angepasst</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Anwesenheitserkennung<br />
|ModType=h<br />
|ModForumArea=Unterstützende Dienste<br />
|ModTechName=73_PRESENCE.pm<br />
|ModOwner=Jörg/JoWiemann ({{Link2FU|94|Forum}} / [[Benutzer Diskussion:JoWiemann|Wiki]])<br />
}}<br />
<br />
Das [[PRESENCE]] Modul bietet für die Anwesenheitserkennung mehrere Varianten an: <br />
<br />
* '''lan-ping''' - Das Überwachen via PING Checks, die durch den FHEM Server versandt werden.<br />
* '''fritzbox''' - Das Überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)<br />
* ''' Bluetooth'''<br />
:- '''local-bluetooth''' - Das Überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)<br />
:- '''lan-bluetooth''' - Das Überwachen von Bluetoothgeräten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.<br />
* '''function''' - Das Überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurückgibt (0 oder 1)<br />
* '''shell-script''' - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.<br />
<br />
<br />
= Überwachen mittels Ping im WLAN/LAN =<br />
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}<br />
Um ein Gerät via Ping zu überwachen, muss folgende Definition durchgeführt werden:<br />
:<code>define Handy PRESENCE lan-ping 192.168.0.30</code><br />
<br />
Dadurch wird die IP-Addresse 192.168.0.30 alle 30&nbsp;Sekunden geprüft, ob sie erreichbar ist. Wenn sie erreichbar ist, ist der Status "present" (anwesend), ansonsten "absent" (abwesend).<br />
<br />
Der Timeout kann verändert werden, indem ein Wert (in Sekunden) an das Define anhängt wird:<br />
:<code>define Handy PRESENCE lan-ping 192.168.0.30 '''60'''</code><br />
<br />
Nun würde das Handy alle 60 Sekunden geprüft werden.<br />
<br />
Nur wenn bei einem iPhone/iPad die Funktion "über WLAN synchronisieren" aktiviert ist, ist es auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um die Akkulaufzeit zu verlängern.<br />
<br />
Sollte die Fehlermeldung <br />
:<code> PRESENCE (Handy) - ping command returned with output: ping: icmp open socket: Operation not permitted </code> <br />
im Log auftauchen und lan-ping dadurch nicht funktionieren, liegt ein Berechtigungsproblem vor. Kein Grund den User fhem zu root zu machen!<br />
Prüfe zu erst als User root ob die Capabilities gesetzt sind.<br />
:<code>getcap /bin/ping</code><br />
Sollte folgendes Ergeben zu Tage fördern.<br />
:<code>/bin/ping = cap_net_raw+ep</code><br />
Ist dem nicht so, setzen wir die benötigten Capabilities<br />
:<code>setcap cap_net_raw+ep /bin/ping</code><br />
Mehr Informationen zum Thema Capabilities [https://manpages.debian.org/jessie/manpages-de/capabilities.7.de.html].<br />
<br />
<br />
= FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl =<br />
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}<br />
Eine sehr häufige und auch zuverlässige Methode ist auf einer FritzBox die Abfrage mittels ctlmgr_ctl Befehl. Über diesen lassen sich alle Geräte abfragen ob sie aktiv sind. Ist ein Gerät aktiv, so gilt es als anwesend.<br />
<br />
Dieser Modus kann allerdings nur in FHEM Installationen direkt auf einer FritzBox verwendet werden. Des weiteren muss FHEM unter dem User root laufen. Um ein Gerät zu überwachen, wird lediglich der Gerätename benötigt, so wie er unter dem Menüpunkt "Heimnetz" auftaucht. <br />
<br />
Die erforderliche Definition:<br />
:<code>define Handy PRESENCE fritzbox iPhone-4S</code><br />
<br />
<br />
= Überwachung mittels Perl-Code =<br />
Es ist möglich zum Überwachen von Geräten eine eigene Perl-Funktion zu verwenden die dann vom PRESENCE Modul im Hintergrund aufgerufen wird.<br />
<br />
define <name> PRESENCE function {...} [ <check-interval> [ <present-check-interval> ] ]<br />
<br />
Sobald die Funktion den Rückgabewert 1 hat, ist das Gerät anwesend, bei 0 abwesend.<br />
<br />
== Beispiel DHCP Überwachung auf Airport Basestation ==<br />
Die hier vorgestellte Überwachung der DHCP Lease auf Airport Basestations per SNMP ist absolut robust gegenüber dem Ruhezustand von iOS und setzt keine weitere Konfiguration auf dem iPhone voraus. Das Abmelden beim Verlassen des Empfangsbereiches der Basestation geschieht mit etwa 5-10 Minuten Verzögerung und ist somit auch vor kurzzeitigen Empfangsproblemen sicher. Das nebenstehende Bild (???) verdeutlicht noch mal die Unterschiede zwischen einer IP-Basierten Ping-Überwachung und der Überwachung auf Ebene der Basestation oder FritzBox.<br />
<br />
Bevor der folgende Code verwendet werden kann ist das Perl Modul Net:SNMP zu installieren (z.&nbsp;B. mit: <code>cpan install use Net::SNMP</code>).<br />
<br />
Zuerst ist folgender Code in 99_myUtils.pm einzufügen, sollte diese noch nicht vorhanden sein muss diese aus dem Template welches unter Edit Files zu finden ist erzeugt werden.<br />
'''Achtung, das ist nicht der komplette Inhalt der 99_myUtils!''' Das ist nur die einzelne Routine<br />
<br />
<pre><br />
use Net::SNMP;<br />
sub<br />
snmpCheck($$)<br />
{<br />
my ($airport,$client)= @_;<br />
<br />
my $community = "public";<br />
my $host = $airport;<br />
my $oid = ".1.3.6.1.2.1.3.1.1.2";<br />
#my $oid = ".1.3.6.1.2.1.3.1.1.2.25.1.10.0.1";<br />
<br />
my ( $session, $error ) = Net::SNMP->session(<br />
-hostname => $host,<br />
-community => $community,<br />
-port => 161,<br />
-version => 1<br />
);<br />
<br />
if( !defined($session) ) {<br />
return 0;<br />
return "Can't connect to host $host.";<br />
}<br />
<br />
my @snmpoids = ();<br />
<br />
my $response = $session->get_next_request($oid);<br />
my @nextid = keys %$response;<br />
while ( @nextid && $nextid[0] && $nextid[0] =~ m/^$oid/ ) {<br />
push( @snmpoids, $nextid[0] );<br />
<br />
$response = $session->get_next_request( $nextid[0] );<br />
@nextid = keys %$response;<br />
}<br />
<br />
if( !defined($response = $session->get_request( @snmpoids ) ) ) {<br />
return 0;<br />
}<br />
<br />
foreach my $value (values %$response) {<br />
return 1 if( $value eq $client )<br />
}<br />
<br />
return 0;<br />
}<br />
</pre><br />
<br />
Danach lässt sich das Mobilgerät so überwachen:<br />
:<code>define iPhone PRESENCE function {snmpCheck("10.0.1.1","0x44d77429f35c")} 30 30</code><br />
<br />
wobei 10.0.1.1 durch die IP-Adresse der Basestation und 0x44d77429f35c durch die MAC Adresse des Geräts als HEX-Zahl ersetzt werden muss.<br />
<br />
== Beispiel Anwesenheitserkennung mittels UniFi Controller ==<br />
<br />
Die Anwesenheitserkennung bei Geräten in Verbindung mit UniFi-Produkten funktioniert selbst dann, wenn sich die Geräte im PowerSave-Modus befinden. <br />
<br />
Beachte: Die Geräte werden erst ungefähr nach 5 Minuten, nachdem das Gerät das WLAN verlassen hat als disconnected angezeigt.<br />
<br />
<code>define <NAME> PRESENCE function {ReadingsVal("<UniFi>","<NamedDevice>","") eq "connected" ? 1:0}</code><br />
<br />
<br />
= Überwachen mittels Events =<br />
Der Vorteil gegenüber der Function-Variante ist, dass diese Variante ohne Blocking.pm-Overhead direkt ausgeführt werden kann und in "Echtzeit" abläuft (siehe {{Link2Forum|Topic=40287|Message=562823}}).<br />
<br />
<code>define <NAME> PRESENCE event UniFi:NamedDevice:.disconnected UniFi:NamedDevice:.connected</code><br />
<br />
Dabei wird <UniFi> mit dem Namen des Unifi-Devices in FHEM ersetzt, <NamedDevice> mit dem Namen des zu überwachenden Devices im Unifi-Controller ersetzt.<br />
<br />
= Überwachen mittels Bluetooth =<br />
== Vorbereitung und Informationen ==<br />
=== Getestete Hardware/Software ===<br />
* '''Raspbian System''' - wheezy, Jessie (interner BT-Controller)<br />
* '''BT-Dongle''' - CSL NET BT USB2.0 Stick, Bluetooth V4.0, Nano <br />'''Achtung''': Es muss ein BT V4.0 oder höher verwendet werden. Nur dieser unterstützt ''LowEnergy''<br />
* '''BT-TAG''' - Gtag von Gigaset, TrackR, UDOO Neo, PebbleBee, iTag von Unitec, X4-LIFE Multifunkti BL-Anhänger, iTag Wireless Anti, Trackr bravo, GhostyuBeacon iBc41<br />
<br />
=== BT-Dongle am RaspberryPI installieren ===<br />
Um den BT-Dongle ''(hier: CSL NET BT USB2.0)'' am RaspberryPI verwenden zu können, müssen die notwendigen Pakete über die Paketverwaltung von debian nachinstalliert werden.<br />
Wer bereits ein BT-Dongle installiert hat, kann diesen Schritt überspringen.<br />
<pre><br />
apt-get install bluetooth<br />
</pre><br />
Nach erfolgreicher Installation der Pakete sollte der RaspberryPI neu gestartet werden.<br />
<pre><br />
sudo reboot<br />
</pre><br />
<br />
Nach dem erfolgten Reboot bitte das Log des RaspberryPI auf folgende Einträge prüfen:<br />
<pre><br />
Feb 12 19:52:55 fhem kernel: [ 4.773600] Bluetooth: Core ver 2.20<br />
Feb 12 19:52:55 fhem kernel: [ 4.773748] NET: Registered protocol family 31<br />
Feb 12 19:52:55 fhem kernel: [ 4.773765] Bluetooth: HCI device and connection manager initialized<br />
Feb 12 19:52:55 fhem kernel: [ 4.773797] Bluetooth: HCI socket layer initialized<br />
Feb 12 19:52:55 fhem kernel: [ 4.773821] Bluetooth: L2CAP socket layer initialized<br />
Feb 12 19:52:55 fhem kernel: [ 4.773890] Bluetooth: SCO socket layer initialized<br />
Feb 12 19:52:55 fhem kernel: [ 4.797531] usbcore: registered new interface driver btusb<br />
</pre><br />
Sobald der BT-Dongle erkannt wurde ''leuchtet'' (wenn vorhanden) auch die ''blaue/gelbe'' LED am Dongle auf.<br />
<br />
=== BT-Tags aktivieren ===<br />
Jetzt kann der BT-Tag aktiviert werden. Bei einigen BT-Tags muss dafür die '''Batteriesicherung''' gezogen werden.<br />
<br />
Ein BT-Tag wird mit folgendem Befehl auf der Konsole gesucht:<br />
<syntaxhighlight lang="bash"><br />
sudo hcitool lescan<br />
<br />
Ausgabe z.B.:<br />
LE Scan ...<br />
7C:2F:80:A1:XA:XD (unknown)<br />
7C:2F:80:A1:XA:XD Gigaset G-tag<br />
7C:2F:80:A1:X4:X1 (unknown)</syntaxhighlight><br />
Eine Übersicht über die möglichen Befehle von hcitool gibt es mit der Eingabe von:<br />
<pre><br />
sudo hcitool<br />
<br />
Ausgabe z.B.:<br />
hcitool - HCI Tool ver 5.23<br />
Usage:<br />
hcitool [options] <command> [command parameters]<br />
Options:<br />
--help Display help<br />
-i dev HCI device<br />
Commands:<br />
dev Display local devices<br />
inq Inquire remote devices<br />
scan Scan for remote devices<br />
name Get name from remote device<br />
info Get information from remote device<br />
spinq Start periodic inquiry<br />
epinq Exit periodic inquiry<br />
cmd Submit arbitrary HCI commands<br />
con Display active connections<br />
cc Create connection to remote device<br />
dc Disconnect from remote device<br />
sr Switch master/slave role<br />
cpt Change connection packet type<br />
rssi Display connection RSSI<br />
lq Display link quality<br />
tpl Display transmit power level<br />
afh Display AFH channel map<br />
lp Set/display link policy settings<br />
lst Set/display link supervision timeout<br />
auth Request authentication<br />
enc Set connection encryption<br />
key Change connection link key<br />
clkoff Read clock offset<br />
clock Read local or remote clock<br />
lescan Start LE scan<br />
lewladd Add device to LE White List<br />
lewlrm Remove device from LE White List<br />
lewlsz Read size of LE White List<br />
lewlclr Clear LE White list<br />
lecc Create a LE Connection<br />
ledc Disconnect a LE Connection<br />
lecup LE Connection Update <br />
</pre><br />
<br />
Falls beim SCAN kein BT-Tag gefunden wird, sollte das BT Interface neu gestartet werden. Dazu ist kein Reboot des RaspBerryPI notwendig.<br />
<syntaxhighlight lang="bash"><br />
sudo hciconfig hci0 down<br />
sudo hciconfig hci0 up<br />
sudo hcitool dev<br />
</syntaxhighlight><br />
<br />
== Überwachung durch den FHEM Server direkt ==<br />
[[Datei:Bluetooth-Adresse-iPhone.png|thumb|Bluetooth-Adresse eines iPhones]]<br />
Jenach Aufstellungsort des FHEM Servers kann es sinnvoll sein, eine Bluetooth-Überwachung direkt durch den FHEM Server durchzuführen. Hierbei gilt allerdings zu beachten, dass Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden kann. Das heisst, dass in den meisten Fällen damit nur ein Raum überwacht werden kann.<br />
<br />
Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks, die bereits Bluetooth 4.0 unterstützen, können höhere Reichweiten über Zimmerwände hinaus erreichen. Vorausgesetzt, das Mobilgerät unterstützt Bluetooth 4.0.<br />
<br />
Um eine Überwachung per Bluetooth durchführen zu können, benötigt man die Bluetooth-Adresse eines Gerätes. Diese ähnelt vom Aufbau einer MAC-Adresse. Generell wird die Adresse in den Telefon-Informationen bei Smartphones angezeigt.<br />
<br />
Um eine Anwesenheitserkennung via Bluetooth durchzuführen, wird folgende Definition in der [[Konfiguration]] benötigt:<br />
:<code>define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX</code><br />
<br />
== Überwachung durch verteilte Agenten in der Wohnung (presenced/lepresenced/collectord) ==<br />
[[Datei:Raspberry-Pi-mit-WLAN-und-Bluetooth-Stick.jpg|thumb|left|Raspberry Pi mit Bluetooth- und WLAN-USB-Stick]]<br />
Um eine zuverlässige und flächendeckende Bluetooth-Anwesenheitserkennung durchzuführen, ist es unerlässlich, mehrere Bluetooth-Empfänger zu verwenden, die auf mehrere oder alle Räume verteilt sind.<br />
<br />
Hierfür bietet sich zum Beispiel ein [[Raspberry Pi]] mit einem Mini-Bluetooth-USB-Stick und evtl. einem WLAN-USB-Stick an. Jeder Raum wird mit solch einem Raspberry ausgestattet und ist im WLAN Netz verfügbar.<br />
<br />
Dieses Netz aus Raspberrys wird mit dem presenced / lepresenced Programm ausgestattet. Beide Programme sind Perl-Skripte, die als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation mit Standardmodulen benötigt.<br />
<br />
=== Unterschied presenced / lepresenced / collectord ===<br />
presenced und lepresenced sind Programme, welche in regelmäßigen Abständen nach Bluetooth-Geräten suchen. Sobald ein Gerät, welches vorab definiert wurde, gefunden wird, wechselt der Status des Geräts in FHEM auf Anwesend. Der Unterschied zwischen presenced und lepresenced ist, dass lepresenced insbesondere für [https://de.wikipedia.org/wiki/Bluetooth_Low_Energy Bluetooth-LE-Devices] ist und presenced für "normale" Bluetooth-Geräte. <br />
<br />
collectord wiederum ist ein Programm, welches mehrere Pis verbindet und auf allen den aktuellen Status von presenced/lepresenced abfragt. Ist das gesuchte Bluetooth-Gerät auf einem der Pi anwesend, so wird es auch in der definierten Hauptinstanz auf anwesend gesetzt. Zusätzlich wird der Pi auf dem das Gerät gefunden wurde als Reading angegeben. Sofern alle Räume einen Empfangspegel (RSSI) ermitteln können, wird bei mehreren anwesenden Räumen der Raum mit dem besten Empfangspegel selektiert (siehe {{Link2Forum|Topic=54482}}).<br />
<br />
=== Installation von (le)presenced ===<br />
Diese Anleitung ist sowohl für presenced, als auch für lepresenced gültig. Einfachheitshalber wird nur lepresenced erwähnt, sämtliche Schritte gehen jedoch auch mit presenced, wobei einfach die genannten Daten durch presenced ersetzt werden müssen.<br />
<br />
Die Software lepresenced kann aktuell über drei Varianten installiert werden. Dabei ist die bevorzugte Variante (Variante 1) die Installation über das bereitgestellte .deb-Paket.<br />
Die Variante 2 setzt voraus, dass im FHEM contrib Verzeichnis (/opt/fhem/contrib) die aktuelle Version des .deb-Pakets liegt. Die Variante 3 ist dafür gedacht, wenn man keine .deb-Pakete installieren kann/will oder es aus anderen Gründen nicht funktioniert. Es wird davon abgeraten die Variante 3 zu verwenden. Vollständigkeitshalber wird sie aber aufgeführt.<br />
<br />
===== Installation per .deb-Paket =====<br />
<br />
Die bevorzugte Variante ist die Installation von lepresenced durch die passenden .deb Pakete.<br />
{{Randnotiz|RNText=Bei einem Upgrade einer älteren Version reicht es, das neue .deb Paket mit<br />
:<code>sudo dpkg -i lepresenced-X.XX-X.deb</code><br />
zu aktualisieren}} <br />
<br />
'''1.Variante:'''<br />
Herunterladen der aktuellen lepresenced-0.83-3.deb (Stand August 2017) Datei über den Webbrowser <br />
[https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/ SVN-Repository]. Im SVN die passende Datei auswählen und in der folgende Webseite den Link unter:<br />
<pre><br />
Download in other formats:<br />
Original Format <br />
</pre><br />
anklicken und die Datei herunterladen.<br />
Die Datei kann jetzt auf den RPi kopiert und mit folgenden Befehlen ausgeführt werden (ggf. Berechtigungen anpassen). <br />
<br />
Alternativ per wget Befehl direkt auf den RPi (aktuelle Versionsnummer beachten)<br />
https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/lepresenced-0.83-3.deb<br />
<br />
'''2.Variante:''' (zu Verwenden, wenn es Probleme bei Variante 1 gibt)<br />
Herunterladen aus dem fhem contrib Verzeichnis:<br />
Hierzu muss das contrib auf dem aktuellen Stand sein. Dazu wird die Installation von subversion (normal bereits vorhanden) benötigt.<br />
<br />
sudo apt-get install subversion<br />
<br />
Danach kann per <br />
sudo svn checkout https://svn.fhem.de/fhem/trunk/fhem/contrib svnrepo<br />
<br />
Das aktuelle Repository auf den Pi heruntergeladen werden. Danach sollte im gewählten Verzeichnis die eingecheckten Dateien verfügbar sein.<br />
/opt/fhem/svnrepo/PRESENCE/deb <br />
<br />
<br />
''' Installation der Variante 1 oder 2 '''<br />
<br />
Egal welche Variante gewählt wurde, nun kann mit folgenden Befehlen das Paket installiert werden. Bitte Pfade ggf. anpassen.<br />
<br />
'''Wichtig''': Das '''Paket''' hat eine ca. Größe von '''6,5Kb'''. Ab und an gibt es wohl Probleme mit der Installation, wodurch die Datei 11,5kb groß wird.<br />
Diese Datei lässt sich nicht Installieren. In diesem Fall das Paket bitte mit der Variante 1 und dem Bereich "Download in other formats" herunterladen.<br />
<br />
sudo dpkg -i lepresenced-0.83-3.deb<br />
<br />
sudo apt-get -f install<br />
<br />
Die Ausgabe der Installation sollte am Ende ein [ ok ] Starting lepresenced (via systemctl): lepresenced.service. ausgeben.<br />
<br />
<pre><br />
Paketlisten werden gelesen... Fertig<br />
Abhängigkeitsbaum wird aufgebaut. <br />
Statusinformationen werden eingelesen.... Fertig<br />
Abhängigkeiten werden korrigiert ... Fertig<br />
Die folgenden zusätzlichen Pakete werden installiert:<br />
bluez-hcidump<br />
Die folgenden NEUEN Pakete werden installiert:<br />
bluez-hcidump<br />
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.<br />
1 nicht vollständig installiert oder entfernt.<br />
Es müssen 157 kB an Archiven heruntergeladen werden.<br />
Nach dieser Operation werden 490 kB Plattenplatz zusätzlich benutzt.<br />
Möchten Sie fortfahren? [J/n]<br />
Holen: 1 http://archive.raspberrypi.org/debian/ jessie/main bluez-hcidump armhf 5.23-2+rpi2 [157 kB]<br />
Es wurden 157 kB in 0 s geholt (921 kB/s).<br />
Vormals nicht ausgewähltes Paket bluez-hcidump wird gewählt.<br />
(Lese Datenbank ... 42033 Dateien und Verzeichnisse sind derzeit installiert.)<br />
Vorbereitung zum Entpacken von .../bluez-hcidump_5.23-2+rpi2_armhf.deb ...<br />
Entpacken von bluez-hcidump (5.23-2+rpi2) ...<br />
Trigger für man-db (2.7.0.2-5) werden verarbeitet ...<br />
bluez-hcidump (5.23-2+rpi2) wird eingerichtet ...<br />
lepresenced (0.82-1) wird eingerichtet ...<br />
[ ok ] Starting lepresenced (via systemctl): lepresenced.service.<br />
</pre><br />
<br />
<br />
'''3.Variante:'''<br />
<br />
Bei dieser Variante wird das aktuellste lepresenced Skript aus github heruntergeladen. Das bedeutet, dass jegliche Konfiguration wie automatischer Start, Berechtigungen etc. <br />
manuell konfiguriert werden muss. Diese Variante eignet sich nur für diejenigen, die keine .deb-Pakete installieren wollen/können oder die genau Wissen, was sie tun!<br />
<pre><br />
https://github.com/mhop/fhem-mirror/blob/master/fhem/contrib/PRESENCE/lepresenced<br />
</pre><br />
<br />
Zur "Installation" des Skripts folgendermaßen vorgehen:<br />
Unter /fhem manuell den Ordner „script“ anlegen:<br />
<pre><br />
mkdir script<br />
</pre><br />
Datei lepresenced reinkopieren und ausführbar machen:<br />
<pre><br />
sudo chmod +x /opt/fhem/script/lepresenced<br />
sudo chgrp -cR dialout lepresenced<br />
</pre><br />
Skript erstmalig starten:<br />
<pre><br />
sudo ./lepresenced --loglevel LOG_EMERG -d<br />
</pre><br />
Kommt beim Starten des Skript eine Fehlermeldung, müssen die Abhängigkeiten aufgelöst werden.<br />
<pre><br />
Can't locate Net/Server/Daemonize.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 / usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /opt/fhem/lepresenced line 17.<br />
BEGIN failed--compilation aborted at /opt/fhem/lepresenced line 17.<br />
</pre><br />
Um die Abhängigkeiten aufzulösen muss folgendes nachinstalliert werden und anschließend ein Reboot durchgeführt werden.<br />
<pre><br />
sudo apt-get install libnet-server-*<br />
</pre><br />
<br />
===== Einrichtung eines Bluetooth-Geräts über FHEM =====<br />
<br />
Nach dem letzten Schritt sind alle Bedingungen für eine abschließende Konfiguration eines BT-Geräts in FHEM abgeschlossen worden.<br />
Jetzt kann der zum Beispiel ein G-Tag dem FHEM-Server bekannt gemacht werden:<br />
<pre><br />
-- Name Modul Modus MAC vom Gtag IP vom PI Port Abfragezeit in Sekunden<br />
define MeinGtAG PRESENCE lan-bluetooth xx:xx:xx:xx:xx:xx 127.0.0.1:5333 120<br />
</pre><br />
<br />
'''Wichtig ist den angegeben Port zu unterscheiden. Für presenced muss der Port 5111 genommen werden, für lepresenced der Port 5333.'''<br />
Den absent und present Mode kann man einfach testen, in dem man den Gtag mit Alufolie einwickelt.<br />
<br />
Diese Variante sollte eingesetzt werden, wenn nur ein Pi nach Bluetooth-Geräten sucht. Möchte man mehr als ein Gerät nutzen um zum Beispiel eine größere Fläche abzudecken so muss mit collectored gearbeitet werden.<br />
<br />
<br />
=== Alle Räume gemeinsam ansprechen mittels collectord ===<br />
Um zwei presenced- oder lepresenced Installationen zu verbinden wird der collectord Daemon von Markus Bloch benötigt. Dieser kennt alle presenced-Installationen im Netzwerk und führt eine koordinierte Suche nach den gewünschten Geräten durch. Sobald ein Gerät in einem Raum erkannt wurde, meldet der collectord den Status einschließlich der Angabe des Raumes, in dem das Gerät erkannt wurde.<br />
<br />
<br />
[[Datei:Presence_Collectord_Uebersicht.jpg|200px|thumb|left|Schematische Darstellung Presence und Collectord, Danke an dtavb]]<br />
Auf Basis folgender Skizze wird die Einrichtung und der Betrieb der Anwesenheitserkennung und Überwachung <p></p><br />
mit dem PRESENCE-Modul sowie dem Skript (.deb-Paket) lepresenced beschrieben. Zusätzlich wird für die Verbindung <p></p><br />
mehrere lepresenced Instanzen der collectord verwendet.<p></p><br />
Diese Skizze dient als Basis für alle genannten Konfigurationen innerhalb dieses Artikels.<br />
{{NeuerTextBlock}}<br />
<br />
==== Aufbau ====<br />
; RPi1 (Hauptinstanz): <br />
: FHEM Installation<br />
: presence/lepresenced Installation <br />
: collectord installation<br />
: Sämtliche Bluetooth-Geräte in FHEM definiert<br />
; RPi2 (Zweitsystem): <br />
: FHEM installation<br />
: presence/lepresenced Installation<br />
: Sämtliche Bluetooth-Geräte in FHEM definiert<br />
<br />
<br />
==== Installation per .deb-Paket ====<br />
collectord wird heruntergeladen und installiert:<br />
https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/collectord-1.8.deb (Stand Januar 2018)<br />
<pre><br />
sudo dpkg -i collectord-1.8.deb<br />
</pre><br />
<br />
Nach der Installation befindet sich im Verzeichnis: /etc/collectord.conf die Konfigurationsdatei für das collectord. Weitere Einstellungen können unter /etc/default/collectord vorgenommen werden.<br />
<br />
==== Konfiguration auf Shellebene ==== <br />
<pre><br />
sudo vi /etc/collectord.conf<br />
</pre><br />
<br />
Diese Datei muss jetzt nach folgender Vorlage angepasst werden.<br />
<pre><br />
# room definition<br />
#[room-name] # name of the room<br />
#address=192.168.0.10 # ip-address or hostname<br />
#port=5111 # tcp port which should be used (5111 is default)<br />
#presence_timeout=120 # timeout in seconds for each check when devices are present<br />
#absence_timeout=20 # timeout in seconds for each check when devices are absent<br />
<br />
[RPi1] # Name (wird als Reading room bei den BT-Tags angezeigt) der presence Instanze<br />
address=127.0.0.1 # Lokale Adresse RPi1 , da hier das Collectord später laufen soll!<br />
port=5333 # Port der Presence Installation <br />
presence_timeout=60 # Selbstgewaehlte Pruefintervalle<br />
absence_timeout=60 # Selbstgewaehlte Pruefintervalle<br />
<br />
[RPi2] # Name (wird als Reading room bei den BT-Tags angezeigt) der presence Instanze<br />
address=192.168.178.127 # IP-Adresse der Instanz, wo nur das Presence laueft, also RPi2<br />
port=5333 # Port der Presence Installation <br />
presence_timeout=60 # Selbstgewaehlte Pruefintervalle<br />
absence_timeout=60 # Selbstgewaehlte Pruefintervalle<br />
</pre><br />
<br />
Hinweis: <br />
* Es dürfen keine [Namen] mit Leerzeichen verwendet werden<br />
* Der angegebene Port richtet sich danach, ob auf dem Pi presenced (Port 5111) oder lepresenced (Port 5333) nach dem Bluetooth-Gerät sucht<br />
<br />
==== Konfiguration in FHEM ==== <br />
;RPi1<br />
define Gtag PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222 60 ''Hinweis: (Der Port ist der, des collectord!! Standard 5222)''<br />
;RPi2<br />
define Gtag PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 192.168.178.127:5222 60 ''Hinweis: (Der Port ist der, des collectord!! Standard 5222 - die IP-Adresse von die von RPi1)''<br />
<br />
<br />
Nach der Konfiguration kann der Daemon gestartet werden.<br />
Sobald das Bluetoothgerät irgendwo in der Wohnung erkannt wurde, meldet der Collectord dies sofort <br />
an FHEM und teilt den Raum mit in dem es erkannt worden ist. Diese Information wird im Reading "rooms" des jeweiligen BT-Gerätes dargestellt.<br />
<br />
Zum testen sollte collectord einmalig manuell gestartet werden. Dies hat den Vorteil, dass man nochmal den Port des collectord prüfen kann, dieser steht in der Zeile <pre>created socket on 0.0.0.0 with port 5222</pre> und man sehen kann, ob der collectord richtig startet, oder Fehler auswirft. Gestartet wird mit folgendem Kommando:<br />
<pre><br />
sudo collectord -vv -c /etc/collectord.conf<br />
</pre><br />
Die Ausgabe sieht wie folgt aus:<br />
<pre><br />
2017-04-02 17:52:55 - =================================================<br />
2017-04-02 17:52:55 - started with PID 15554<br />
2017-04-02 17:52:55 - reading configuration file<br />
2017-04-02 17:52:55 - no config errors found<br />
2017-04-02 17:52:56 - created socket on 0.0.0.0 with port 5222<br />
2017-04-02 17:53:20 - new connection from 127.0.0.1:48656<br />
2017-04-02 17:53:20 - created thread 1 for processing device 7C:2F:80:E1:14:31 in room RPi2 for peer 127.0.0.1 (UUID: d0beb79dd4771532eb5e207c7bf31788)<br />
2017-04-02 17:53:20 - created thread 2 for processing device 7C:2F:80:E1:14:31 in room RPi1 for peer 127.0.0.1 (UUID: d0beb79dd4771532eb5e207c7bf31788)<br />
2017-04-02 17:53:20 - new connection from 127.0.0.1:48662<br />
2017-04-02 17:53:20 - new connection from 127.0.0.1:48664<br />
2017-04-02 17:53:20 - created thread 3 for processing device 7C:2F:80:ED:BC:F7 in room RPi2 for peer 127.0.0.1 (UUID: 7495a112063d5db45e6335d3fe305e36)<br />
2017-04-02 17:53:20 - created thread 4 for processing device 7C:2F:80:ED:BC:F7 in room RPi1 for peer 127.0.0.1 (UUID: 7495a112063d5db45e6335d3fe305e36)<br />
2017-04-02 17:53:20 - created thread 5 for processing device 7C:2F:80:E1:2A:4D in room RPi2 for peer 127.0.0.1 (UUID: c228f8d4d33b06787f995c7903c02760)<br />
2017-04-02 17:53:20 - created thread 6 for processing device 7C:2F:80:E1:2A:4D in room RPi1 for peer 127.0.0.1 (UUID: c228f8d4d33b06787f995c7903c02760)<br />
2017-04-02 17:53:22 - new connection from 192.168.xxx.xxx:51638<br />
2017-04-02 17:53:22 - created thread 7 for processing device 7C:2F:80:E1:14:31 in room RPi2 for peer 192.168.xxx.xxx (UUID: 5db7012e709d6dc2fcd8159fc0344e40)<br />
2017-04-02 17:53:22 - created thread 8 for processing device 7C:2F:80:E1:14:31 in room RPi1 for peer 192.168.xxx.xxx (UUID: 5db7012e709d6dc2fcd8159fc0344e40)<br />
2017-04-02 17:53:22 - new connection from 192.168.xxx.xxx:51640<br />
2017-04-02 17:53:22 - created thread 9 for processing device 7C:2F:80:ED:BC:F7 in room RPi2 for peer 192.168.xxx.xxx (UUID: c4b4d7c654132cf88e8c1fec3a956d3d)<br />
2017-04-02 17:53:23 - created thread 10 for processing device 7C:2F:80:ED:BC:F7 in room RPi1 for peer 192.168.xxx.xxx (UUID: c4b4d7c654132cf88e8c1fec3a956d3d)<br />
2017-04-02 17:53:29 - new connection from 192.168.xxx.xxx:51642<br />
2017-04-02 17:53:29 - created thread 11 for processing device 7C:2F:80:E1:2A:4D in room RPi2 for peer 192.168.xxx.xxx (UUID: ecd7081e5ae3a0d8e735c8750cb116a1)<br />
2017-04-02 17:53:29 - created thread 12 for processing device 7C:2F:80:E1:2A:4D in room RPi1 for peer 192.168.xxx.xxx (UUID: ecd7081e5ae3a0d8e735c8750cb116a1)<br />
</pre><br />
<br />
Wenn das Log wie oben abgebildet aussieht wurde alles richtig gemacht und unter dem Device in FHEM erscheint ein neues Reading "rooms" mit dem Wert der erkannten PRESENCE-Installation.<br />
<br />
'''Verhalten presence timeout im zusammenhang mit dem Attribut "absenceThreshold" der PRESENCE Konfiguration in FHEM'''<br />
<br><br />
In der collectord.conf sind <code>presence_timeout</code> und <code>absence_timeout</code> für den jeweiligen Raum konfiguriert.<br />
Das bedeutet, sobald irgendein Gerät in diesem jeweiligen Raum anwesend/abwesend ist, wird das jeweilige Timeout an den verbundenen presenced/lepresenced geschickt um damit das Check-Interval entsprechend zu ändern.<br />
<br />
In der PRESENCE-Definition kann man ebenfalls ein <code>absence_timeout</code>/<code>presence_timeout</code> setzen. Sobald sich der Zustand ändert, wird auch das jeweilige Timeout an den collectord gesandt. Dies hat aber auf die Checks in den jeweiligen Räumen und damit der collectord.conf keinen Einfluss. Der collectord schickt ein Statusupdate an PRESENCE nur, wenn das vorgegebene Timeout (von PRESENCE) erreicht ist und keine Statusänderung stattfand. Sobald eine Änderung des Status erfolgt wird natürlich sofort der Status an PRESENCE geschickt.<br />
<br />
Das Attribut absenceThreshold/presenceThreshold funktioniert nachwievor. Hier ist nur wichtig wie man die Timeouts sowohl in PRESENCE als auch collectord.conf setzt.<br />
<br />
'''Das Reading "room" bei einer PRESENCE Definition und der Zusammenhang zu collectord'''<br />
<br><br />
Wenn ein BT LE Empfänger in mehr als einem Raum detektiert wird, führt der collectord (ab Version 1.8) eine RSSI-Erkennung durch. Sofern alle Räume den Empfangspegel (RSSI) ermitteln können, wird der Raum mit dem besten Empfangspegel als Raum für das "room"-Reading ausgewählt. Der lepresenced in aktueller Version von PatrickR gibt immer den Empfangspegel aus.<br />
<br />
==== Automatischer Start ====<br />
Wenn der collectord per .deb Paket installiert wurde, startet er automatisch bei einem Reboot mit (via systemd/init-Skript).<br />
<br><br />
<br />
Der Collectord wird standardmäßig mit dem Port 5222 gestartet. Um diese anzupassen sind zwei Schritte notwendig:<br><br />
'''1.)''' Anpassen der /usr/bin/collectord <br />
Hier bitte den Parameter my $opt_p von 5222 auf 5XXX abändern.<br />
<br />
Da der collectord mittlerweile per systemd beim reboot des RPi gestarte wird muss auch diese Konfiguration auf den neuen Port angepasst werden.<br><br />
'''2.)''' Anpassen der /etc/default/collectord<br />
<pre><br />
# collectord startup defaults:<br />
# The TCP port collectord will listen for incoming connections (default: 5222)<br />
PORT=5111<br />
# The location of the configuration file (default: /etc/collectord.conf<br />
CFGFILE=/etc/collectord.conf<br />
</pre><br />
<br />
Manuell starten als Daemon (Parameter <code>-d</code>) mit:<br />
<pre><br />
sudo collectord -c /etc/collectord.conf -d -v -l /var/log/collectord.log<br />
</pre><br />
<br />
== Batterieüberwachung ==<br />
<br />
<br />
=== Batterieüberwachung mit dem Modul BleTagBattery ===<br />
{{Infobox Modul<br />
|ModPurpose=Anwesenheitserkennung<br />
|ModType=h<br />
<!-- |ModCmdRef= --><br />
|ModTechName=74_BleTagBattery<br />
|ModOwner=mumpitzstuff<br />
}}<br />
Mit dem Modul BleTagBattery - kann der Batteriestatus aller BT-LE Devices gelesen werden.<br />
Es werden die Readings batteryLevel und battery angelegt für diejenigen BT-LE Tags, die an einer PRESENCE-Installation registriert wurden.<br />
<br />
Vorraussetzung und Installation:<br />
<br />
Bluez und Gattool<br />
sudo apt-get install bluez<br />
<br />
Das Gattool ist in den Installationen von Bluez inbegriffen.<br />
<br />
<br />
Hinzufügen des githup für das Modul<br />
update add http://raw.githubusercontent.com/mumpitzstuff/fhem-BleTagBattery/master/controls_bletagbattery.txt<br />
update all<br />
restart fhem: shutdown restart<br />
BT-LE tags muss an einer PRESENCE-Installation des type "lan-bluetooth" registriert sein.<br />
<br />
<br />
Nach dem Neustart von FHEM kann das Modul definiert werden:<br />
define a new device: define <name of device> BleTagBattery<br />
<br />
Das Modul versucht in der Standardkonfiguration alle 6 Stunden die BT-LE Devices zu erreichen und das Reading batteryLevel und battery zu aktualisieren.<br />
Das Update kann auch manuell mit dem folgenden Befehl erzwungen werden<br />
<br />
set <name of device> statusRequest.<br />
<br />
Weiter Informationen und Disskussionen können dem eigentlichen [https://forum.fhem.de/index.php?topic=68104.0 Forumsbeitrag] entnommen werden,<br />
<br />
=== Batterieüberwachung (aktuell nur G-Tags) ===<br />
<br />
Leider überträgt der G-Tag nach der Einrichtung als Device in FHEM kein Reading mit seinem aktuellen Batteriestatus.<br />
Dem wurde mit Hilfe des Forum Abhilfe geschaffen.<br />
Im Folgenden wird erläutert wie die Batterieüberwachung eingerichtet werden kann.<br />
<br />
'''Voraussetzung:'''<br />
<br />
bc - Basiscalculator [https://packages.debian.org/de/sid/bc Bc-Paket]<br />
<pre> sudo apt-get install bc </pre><br />
<br />
Anlegen eines Shellskript auf dem Raspberry System. <br />
Die Parameter <<MAC-Adresse>> und <<TagName>> müssen durch die Werte des auszulesenden G-Tags ersetzt werden.<br />
<pre><br />
#!/bin/bash<br />
stringZ=$(sudo gatttool -b 5C:2B:80:C1:14:41 --char-read --handle=0x001b)<br />
stringZ=${stringZ:33:2}<br />
stringZ=$(echo "$stringZ" | tr a-f A-F)<br />
decimal=$(echo "ibase=16; $stringZ" | bc)<br />
perl /opt/fhem/fhem.pl 7072 "setreading MeinGtag Batterie $decimal"<br />
</pre><br />
<br />
Dem Device in FHEM (hier MeinGtag) ein userReading mit dem Namen '''Batterie''' hinzufügen.<br />
Das Shellskript mit folgendem Befehl starten:<br />
<pre><br />
./GtagBatterie.sh<br />
</pre><br />
'''Wichtig ist hierbei,''' dass Skript mit "./" und nicht mit "sh" aufzurufen. Beim Aufruf mit "sh GtagBatterie.sh" produziert es einen Fehler<br />
<pre>GtagBatterie.sh: 3: GtagBatterie.sh: Bad substitution </pre><br />
<br />
Das Reading wird auf den ausgelesenen Wert der Batterie gesetzt. <br />
<br />
Hinweis: Es sollte für jeden G-Tag ein eigenes Skript abgelegt werden. Das Skript kann per crontab oder fhem Kommando (system) regelmäßig aufgerufen werden.<br />
<br />
=== Batterieüberwachung (alle Devices vom Typ "MODE=lan-bluetooth") ===<br />
<br />
Es gibt eine weitere Möglichkeit um den Batteriestatus von LE Devices abzurufen und in FHEM als Reading darzustellen.<br />
Dabei wird der Batteriezustand für alle LE Devices, die bereits in FHEM konfiguriert sind und per lepresenced überwacht werden, automatisch in einem shell-Script ermittelt.<br />
Näheres dazu im Forumartikel {{Link2Forum|Topic=56960|LinkText=Erweiterung: Anwesenheitserkennung/Batterieüberwachung}}.<br />
<br />
Vorteile:<br />
* Automatische Ermittlung aller in FHEM konfigurierten LE Devices<br />
* Möglichkeit, diese Devices alternativ manuell im Script einzutragen<br />
* Es werden nur Devices abgefragt, die im Status "present" sind, also mit ziemlicher Sicherheit auch verfügbar sind<br />
* Ein eventuell auf dem FHEM telnet-Port gesetztes Passwort kann im Script hinterlegt werden<br />
<br />
'''Voraussetzung:'''<br />
<br />
'''Funktionierendes lepresenced''' - siehe [[Anwesenheitserkennung#Anleitung_f.C3.BCr_ein_LE_Device_.28z.B._Gtags.2CPebbles_etc..29|Anleitung für ein LE Device (z.B. Gtags,Pebbles etc.)]]<br />
<br />
'''socat''' - TCP port forwarder<br />
<pre><br />
sudo apt-get update && sudo apt-get install socat<br />
</pre><br />
<br />
<br />
'''gawk''' - Zum extrahieren der Daten<br />
<pre><br />
sudo apt-get update && sudo apt-get install gawk<br />
</pre><br />
<br />
'''gatttool''' - Bestandteil von bluez <br />
<br />
gatttool ist auf den meisten Distributionen im bluez-Paket, allerdings nicht bei Opensuse. Dort muss man das Sourcepaket von bluez installieren und selbst kompilieren.<br />
gatttool sollte dann nach /usr/bin oder /usr/local/bin kopiert werden,<br />
<br />
<br />
Zusätzlich zu den notwendigen Erweiterungen werden für die Ausführung von gatttool '''Root-Rechte benötigt'''!<br />
<br />
Das Script selbst gibt es hier: [https://raw.githubusercontent.com/micky0867/lebattery/master/lebattery lebattery]<br />
<br />
Am Besten unter /opt/fhem/script/lebattery speichern und ausführbar machen:<br />
<syntaxhighlight lang="bash"><br />
sudo su -<br />
mkdir /opt/fhem/script<br />
cd /opt/fhem/script<br />
wget https://raw.githubusercontent.com/micky0867/lebattery/master/lebattery<br />
chmod 755 lebattery<br />
</syntaxhighlight><br />
<br />
Je nach Bedarf können im Script noch die folgenden 3 Parameter angepasst werden:<br />
<syntaxhighlight lang="bash"><br />
# If allowed_telnetPort is protected by a password, add the password here<br />
TELNETPASSWORD=""<br />
# Attribute for batterylevel in FHEM<br />
ATTRIBUT="batterylevel"<br />
# Use this, if you dont want the script to determine the tags on its own<br />
LETAGS=""<br />
</syntaxhighlight><br />
<br />
Das Skript wird dann unter root folgendermaßen gestartet:<br />
<pre><br />
/opt/fhem/script/lebattery -v<br />
</pre><br />
<br />
Ausgabe des Skripts, wenn es mit dem Verbose Parameter -v gestartet wird.<br />
<br />
Beide Devices sind vom Typ NUT mini, das Device mit dem FHEM-Namen '''nut_Micky''' ist im Status '''absent'''. Das zweite Device ist im Status '''present'''.<br />
<pre><br />
Determining address for nut_Micky ...<br />
nut_Micky is in state absent, no further action required<br />
<br />
Determining address for nut_Test ...<br />
Fetching batterylevel for nut_Test (F3:44:04:81:54:89) ...<br />
Setting batterylevel for nut_Test to 100%<br />
</pre><br />
<br />
Mein crontab-Eintrag (User root) sieht so aus:<br />
<pre><br />
3 3 * * * /opt/fhem/script/lebattery -v >/opt/fhem/script/lebattery.log 2>&1<br />
</pre><br />
Damit wird jeden Morgen um 3 Minuten nach 3 Uhr der Zustand der Batterien aller Devices ermittelt und in FHEM abgespeichert.<br> <br />
Bevor man das mit crontab macht, sollte man allerdings zunächst sicher stellen, dass es auch ohne crontab funktioniert....<br />
<br />
Bei Problemen kann man auch erstmal schauen, ob das mit dem gattool überhaupt funktioniert:<br />
<pre><br />
gatttool -t <Typ> -b <MAC-Adresse> --char-read --uuid 0x2a19<br />
<br />
handle: 0x0017 value: 64<br />
</pre><br />
In diesem Fall hat die Batterie noch 100% (hex 64).<br><br />
Der Typ ist abhängig vom Hersteller und kann public (G-Tags) bzw. random (Nut) sein. Im Zweifelsfall beides ausprobieren.<br />
<br />
= Beispiele =<br />
== Anwesenheitserkennung / Anwesenheitsbenachrichtigung mit G-Tags ==<br />
Ein Skript zur Nutzung der Gigaset G-TAGs zur Alarmierung bei öffnen und schließen von Türen und zur Anwesenheitserkennung, um die Alarmierung zu aktivieren bzw. deaktivieren. <br />
Es kann verwendet werden um die Anwesenheit von mehrern Personen im Haushalt zu erkennen. Dabei wird eingeschränkt, dass nur bestimmte Personen die Alarmierung aktivieren können ( Eltern/Kind -Beziehung ).<br />
Des Weiteren werden im Beispiel die Eltern benachrichtigt wenn eins der Kinder das Haus verlässt und die Eltern nicht anwesend sind.<br />
<br />
{{Randnotiz|RNText=Namen der G-Tags in den Skripten bitte anpassen!}}<br />
<br />
Für die ''Notify'' und die ''RESIDENTS-Erweiterung'' wird ein Dummy benötigt.<br />
<pre><br />
define Alarm dummy<br />
attr Alarm devStateIcon aktiv:secur_locked@red inaktiv:secur_open@lightgreen<br />
attr Alarm eventMap on:aktiv off:inaktiv<br />
attr Alarm setList on off<br />
attr Alarm webCmd aktiv:inaktiv<br />
attr Alarm room Alarm<br />
</pre><br />
<br />
<br />
=== Mit Notify ===<br />
<pre><br />
gtag.*.presence:.* {Anwesenheit_check("$EVTPART1", "$NAME")}<br />
</pre><br />
<br />
Code für die 99_myUtils.pm<br />
<pre><br />
### GTAG ANWESENHEITS CHECK<br />
sub Anwesenheit_check($$) {<br />
my ($EVENT, $NAME) = @_;<br />
<br />
# gtag_rot - Alias Marco<br />
# gtag_schwarz - Alias Ulli<br />
# gtag_gruen - Alias Frida<br />
# gtag_orange - Alias Hannah<br />
<br />
my $RESIDENT = "rr_"; # Alle GTAGs sind Standardmäßig Residents Roommate<br />
# $RESIDENT = "rg_" if (($NAME eq "gtag_orange") xor ($NAME eq "gtag_weis")); # Hier nur Gäste (Roomguest) Auskommentiert, da ich es so nicht brauche<br />
my $ROOMMATE = ("$RESIDENT" . "$NAME"); # Residentsname zusammenbauen<br />
my $ALIASNAME = AttrVal($ROOMMATE,'alias',$ROOMMATE); # ALIAS des Roommates auslesen<br />
<br />
my $GTAG1 = Value('gtag_rot'); # ELTERN<br />
my $GTAG2 = Value('gtag_schwarz'); # ELTERN<br />
<br />
my $STATUS = "wahrscheinlich gerade los";<br />
$STATUS = "anwesend" if ($EVENT eq "present"); # Status: anwesend<br />
$STATUS = "unterwegs" if ($EVENT eq "absent"); # Status: unterwegs<br />
<br />
Log 1, "$ALIASNAME ist $STATUS."; # LOG Eintrag erzeugen<br />
<br />
if (($EVENT eq "present" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_gruen" xor $NAME eq "gtag_orange")) {<br />
fhem("set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME ist da..."); # Telegram<br />
# fhem("set Infopush msg 'ALARMIERUNG BLEIBT AKTIV' '$ALIASNAME ist da...'"); # Pushover<br />
}<br />
elsif (($EVENT eq "present" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_rot" xor $NAME eq "gtag_schwarz")) {<br />
fhem("set teleBot send ALARMIERUNG INAKTIV: $ALIASNAME ist da...; set Alarm inaktiv"); # Telegram<br />
# fhem("set Infopush msg 'ALARMIERUNG INAKTIV' '$ALIASNAME ist da...'; set Alarm inaktiv"); # Pushover<br />
}<br />
elsif (($EVENT eq "absent" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_gruen" xor $NAME eq "gtag_orange")) {<br />
fhem("set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME hat das Haus verlassen."); # Telegram<br />
# fhem("set Infopush msg 'ALARMIERUNG BLEIBT AKTIV' '$ALIASNAME hat das Haus verlassen.'"); # Pushover<br />
} <br />
elsif (($EVENT eq "absent" && Value("Alarm") eq "inaktiv") && ($GTAG1 eq "absent" && $GTAG2 eq "absent")) {<br />
fhem("set Alarm aktiv; set teleBot send ALARMIERUNG AKTIV: $ALIASNAME hat das Haus verlassen."); # Telegram<br />
# fhem("set Alarm aktiv; set Infopush msg 'ALARMIERUNG AKTIV' '$ALIASNAME hat das Haus verlassen.' '' 0 ''"); # Pushover<br />
}<br />
}<br />
</pre><br />
<br />
<br><br />
<br />
=== Mit Notify und Integration des RESIDENTS-MODUL ===<br />
<br />
Der hier beschriebene Code erweitert die Funktionen unter dem Punkt 5.93.<br />
Das Notify muss daher mit der folgenden Zeile erweitert werden.<br />
<br />
<pre><br />
define Alarm_AnwesenheitCheck notify gtag.*.presence:.* { Anwesenheit_check("$EVTPART1", "$NAME"), Anwesenheit_check_resi("$NAME") }<br />
</pre><br />
<br />
Zusätzlicher Code für die 99_myUtils.pm um die RESIDENTS Funktion nutzen zu können:<br />
<pre><br />
### RESIDENTS<br />
sub Anwesenheit_check_resi($) {<br />
my ($NAME) = @_;<br />
my $ALIASNAME = AttrVal($NAME,'alias',$NAME); # ALIASNAME des GTAGs auslesen<br />
<br />
my $RESIDENT = "rr_"; # Als Standard sind alle GTAGs Roommates<br />
$RESIDENT = "rg_" if (($NAME eq "gtag_orange") xor ($NAME eq "gtag_weis")); # Hier nur GTAG Namen der Gäste (Roomguest)<br />
my $ROOMMATE = ("$RESIDENT" . "$ALIASNAME"); # Residentsname zusammenbauen<br />
<br />
if (ReadingsVal($NAME,'presence',$NAME) eq "absent") {<br />
fhem("set $ROOMMATE absent"); # Resisents Status von Roommates setzen<br />
}<br />
elsif(ReadingsVal($NAME,'presence',$NAME) eq "present") {<br />
fhem("set $ROOMMATE home"); # Resisents Status von Roommates setzen<br />
}<br />
}<br />
</pre><br />
<br><br />
<br />
=== Mit Notify und Fenster/Tür. -Kontakt Überwachung ===<br />
<br />
Erweiterung für die Überwachung von Fenster/Tür. -Kontakten. Dazu sind zwei weitere Notifys notwendig die auf die Trigger der Kontakte regagieren<br />
und so eine weitere Funktion in der 99_myUtils.pm ansprechen. Die Notifys triggern auf Kontakte die mit dem Namen Kontakt* beginnen.<br />
Sollten die eigenen Fenster/Tür. -Kontakt anderen Namen besitzen, müssen die Skripte dementsprechend angepasst werden.<br />
<pre><br />
define Alarm_Kontaktmeldung notify Kontakt.*:contact:.* {Kontakt_Meldung("$EVTPART1", "$NAME")}<br />
</pre><br />
<pre><br />
define Alarm_Sabotagealarm notify Kontakt.*.sabotageError:.on {Kontakt_Sabotage("$EVTPART1", "$NAME")}<br />
</pre><br />
<br />
Zusätzlicher Code für die 99_myUtils.pm um die TÜRKONTAKTE-Meldung nutzen zu können:<br />
<pre><br />
### TÜRKONTAKTE-Meldung/Zustand<br />
sub Kontakt_Meldung($$) {<br />
my ($EVENT, $NAME) = @_;<br />
my $ALIASNAME = AttrVal($NAME,'alias',$NAME);<br />
Log 1, "$ALIASNAME wurde $EVENT";<br />
if (ReadingsVal("Alarm", "state", "on") eq "on") {<br />
fhem("set teleBot send $ALIASNAME wurde $EVENT"); # Nachricht über Telegram<br />
# fhem("set Infopush msg '$ALIASNAME' '$ALIASNAME wurde $EVENT'"); # Nachricht über Pushover<br />
}<br />
}<br />
<br />
### TÜRKONTAKTE-Sabotagealarm<br />
<br />
sub Kontakt_Sabotage($$) {<br />
my ($EVENT, $NAME) = @_;<br />
my $ALIASNAME = AttrVal($NAME,'alias',$NAME);<br />
Log 1, "$ALIASNAME meldet Sabotagealarm";<br />
fhem("set teleBot send Alarm: $ALIASNAME meldet Sabotagealarm"); # Nachricht über Telegram<br />
# fhem("set Infopush msg 'Alarmanlage' '$ALIASNAME meldet Sabotagealarm' '' 2 ' ' 60 600 "); # Nachricht über Pushover<br />
}<br />
</pre><br />
<br><br />
<br />
=== Hinweis zur Benutzung / Fehlerhandling ===<br />
<br />
Der Alarm dummy hat den Zustand on:off. Die Bezeichnungen und Namen müssen 1:1 übernommen werden damit das Script funktioniert.<br />
Andernfalls müssen die Bezeichnungen für z.B. absent:unterwegs und present:anwesend - angepasst werden.<br />
Die Benachrichtigung kann aktuell per ''[[TelegramBot|Telegram]]'' sowie ''Pushover'' ('''Achtung mit zweiterem sind Abokosten verbunden!''') realisiert werden.<br />
Diskussion zum Thema im Forum unter: {{Link2Forum|Topic=64080}}<br />
<br><br />
<br />
= Problemlösungen =<br />
<br />
'''Absent - Grundlos / Zufällig''' 2022<br />
<br />
Zufällige oder Grundlose absent-Meldungen einzelner G-Tags können mit einem FIX behoben werden. Dazu ist es notwendig die BT-Firmware downzugraden.<br />
<br />
Auf GIT das .deb Paket herunterladen und auf das jeweiligen System kopieren<br />
<br />
wget <nowiki>https://github.com/winterheart/broadcom-bt-firmware/releases/download/v12.0.1.1105_p3/broadcom-bt-firmware-10.1.0.1115.deb</nowiki><br />
<br />
Anschliessend installieren und das System neu starten.<br />
<br />
sudo dpkg -i broadcom-bt-firmware-10.1.0.1115.deb<br />
{{Randnotiz|RNText= Dieser FIX scheint nicht bei jedem zu funktionieren! Es gibt auch System die Problemlos ohne FIX arbeiten. Bei einem Update/Upgrade des RPI muss der FIX - wenn notwendig - wieder erneut installiert werden.}}<br />
<br />
Danach sollten die Tags wieder Problemlos erkannt werden und nicht nach wenigen Tagen wieder auf "absent" stehen.<br />
<br />
Falls es '''Probleme beim Starten des Skripts''' gibt bzw. man das Skript ohne Reboot des Systems neustarten möchte, kann man dies per kill Befehl erledigen.<br />
<br />
Das Thema wurde u.a in [https://forum.fhem.de/index.php?topic=75559.new;topicseen#new diesem] Beitrag beschrieben. <br />
<syntaxhighlight lang="bash"><br />
ps -ef | grep lepresenced<br />
sudo kill <pid><br />
</syntaxhighlight><br />
<br />
Debuglevel lepresenced setzen:<br />
{{Randnotiz|RNText=Um Debug-Meldungen zu bekommen (Vorsicht bei SD-Karten-Systemen wie dem RPi) - Hierbei werden die Schreibzyklen auf die SD-Karte erhöht.}}<br />
<br />
Der Log Level muss im lepresenced-Skript selbst verändert werden. Um den Log-Level auf INFO/WARNING/DEBUG zu setzen, das Skript lepresenced mit einem Editor öffnen und die Stellen, wo LOG_WARNING zu finden ist, durch den nötigen LOG-Eintrag ersetzen.<br />
<br />
<pre><br />
lepresenced --loglevel LOG_DEBUG<br />
</pre><br />
Nur das wichtigste Loggen:<br />
<pre><br />
lepresenced --loglevel LOG_WARNING<br />
</pre><br />
Keinerlei LOG-Einträge<br />
<pre><br />
lepresenced --loglevel LOG_EMERG<br />
</pre><br />
<br />
Bei '''Problemen mit der Batterieüberwachung''' der Tags kann die Pi Firmware mit folgenden Befehl auf eine ältere Version zurückgesetzt werden.<br />
Fehlermeldung beim Aufruf des lebattery oder anderen Batterietestskripten:<br />
<pre>connect: Connection refused (111)</pre><br />
<br />
Lösung (vorübergehend) <br />
<pre><br />
sudo rpi-update 8521fd34c8f66b6d109acce943f6e25ec93ec005<br />
</pre><br />
<br />
Mehr dazu unter: {{Link2Forum|Topic=56960|Message=589165}}<br />
<br />
'''Das BT-Device ist ständig "absent"'''<br><br />
Eine Mögliche Lösung kann sein, das Paket bluez-hcidump zu installieren. Das Werkzeug hcidump erlaubt die Beobachtung von Bluetooth-Aktivitäten.<br />
Dies ist nicht notwendig, wenn bereits bluez installiert ist, da dies Teil des bluez Paketes ist<br />
<pre><br />
sudo apt-get install bluez-hcidump<br />
</pre><br />
<br />
'''Fehler in Logdateien /var/log/syslog und /var/log/kernel'''<br />
Jul 29 15:08:11 raspberrypi kernel: [ 4905.634211] bt_err_ratelimited: 1 callbacks suppressed<br />
Jul 29 15:08:11 raspberrypi kernel: [ 4905.634231] Bluetooth: hci0 advertising data length corrected<br />
Jul 29 15:08:12 raspberrypi kernel: [ 4906.647350] Bluetooth: hci0 advertising data length corrected<br />
Jul 29 15:08:13 raspberrypi kernel: [ 4907.532081] Bluetooth: hci0 advertising data length corrected<br />
Jul 29 15:08:13 raspberrypi kernel: [ 4907.655564] Bluetooth: hci0 advertising data length corrected<br />
<br />
<br />
Die Ursache des Problems ist noch nicht ergründet, allerdings betrifft dies aktuell nur den RPi3. Die Fehlermeldungen werden in verschiedene Logs geschrieben. Darunter maßgeblich "syslog" und "kern.log". <br />
<br />
Lösung (vorübergehend):<br />
Unterbinden der Einträge durch Anlage eines blocklist Eintrag:<br />
<br />
1. Unter "/etc/rsyslog.d" eine Datei erzeugen mit dem Namen "01-blocklist.conf"<br />
2. Inhalt: (Die Ausdrücke in den "" sind diejenigen, die aus dem log verschwinden sollen. - bei mir waren es die untenstehenden")<br />
:msg,contains,"Bluetooth: hci0 advertising data length corrected" stop<br />
:msg,contains,"bt_err_ratelimited:" stop<br />
3. Dienst neu starten "sudo service rsyslog restart"<br />
<br />
Weiter Infos werden im offiziellen Thema {{Link2Forum|Topic=28753|Message=499184|LinkText=hier}} diskutiert.<br />
<br />
Seit Version 0.82 kann es beim Start zu folgenden Meldungen im Log kommen. <br />
Sep 06 16:13:45 raspberrypi systemd[1]: Started lepresenced.<br />
Sep 06 16:13:45 raspberrypi lepresenced[16010]: [tid:1] main::bluetooth_scan_thread: Received 'Set scan parameters failed: Input/output error', ...tting...<br />
Sep 06 16:13:46 raspberrypi lepresenced[16010]: [tid:1] main::bluetooth_scan_thread: hcitool exited, retrying...<br />
<br />
Diese Meldungen können ignoriert werden. Abhilfe schafft sich lepresenced selbst, indem es sich resettet.<br />
<br />
'''Moderne iPhones und Android Geräte wechseln in den Schlaf-Modus''', um Energie zu sparen. Somit sind die Geräte zur Anwesenheitserkennung nicht per Ping zu erreichen.<br />
Durch das Programm hping3, lassen sich zyklisch Pakete an die Geräte senden, um sie wieder "aufzuwecken".<br />
<br />
Mehr im Forum [https://forum.fhem.de/index.php/topic,76342.0.html]<br />
<br />
= Versionsänderungen lepresenced =<br />
<pre><br />
--Version 0.81 (BasisVersion)<br />
--Version 0.82 (stable 08/2017)<br />
-Neue Kommandozeilenoption "--debug": Startet lepresenced im Vordergrund und gibt ausführliche Debug-Informationen auf STDOUT aus.<br />
-Sanity Check: lepresenced prüft beim Starten die Verfügbarkeit von hciconfig, hcitool und hcidump.<br />
-Model: lepresenced übermittelt das Reading model nun als lan-lepresenced. Das erlaubt die Erkennung von lepresenced in der FHEM-Statistik (sofern aktiviert).<br />
--Version 0.83 (stable 09/2017)<br />
- Behebung von Systemstart Fehlern<br />
- Weitere Debug-Möglichkeiten. U. a. wird nun mitgezählt, ob hcitool lescan ("legacy") und hcidump eine identische Zahl an Beacons empfangen<br />
</pre><br />
<br />
= Ansprechpartner =<br />
# {{Link2FU|117|markusbloch }} (Markus) für das PRESENCE-Modul und collectord<br />
# {{Link2FU|5068|PatrikR}} (Patrick) für lepresenced <br />
# [[Benutzer Diskussion:Devender|Devender]] ({{Link2FU|20043|Dirk}}) für Wiki und Doku<br />
<br />
[[Kategorie:Anwesenheitserkennung]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FB_CALLLIST&diff=38194FB CALLLIST2023-03-08T14:46:39Z<p>Krikan: Modulowner angepasst</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Erstellung einer rollierenden Anrufliste aus einer [[FB_CALLMONITOR]] Definition<br />
|ModType=h<br />
|ModForumArea=Frontends<br />
|ModCmdRef=FB_CALLLIST<br />
|ModTechName=72_FB_CALLLIST.pm<br />
|ModOwner=Jörg/JoWiemann ({{Link2FU|94|Forum}} / [[Benutzer Diskussion:JoWiemann|Wiki]])<br />
}}<br />
<br />
[[FB_CALLLIST]] erstellt aus einer [[FB_CALLMONITOR]]-Definition eine rollierende Anrufliste, welche durch Attribute an die eigenen Bedürfnisse angepasst werden kann.<br />
<br />
== Voraussetzungen ==<br />
Es wird eine [[FB_CALLMONITOR]] Definition benötigt, von der ''FB_CALLLIST'' die Events entsprechend verarbeiten kann. <br />
<br />
Die [[FB_CALLMONITOR]]-Definition muss dabei für jedes Gespräch mind. das Reading "event" triggern. Bei evtl. gesetztem Attribut <code>event-on-change-readings</code> muss sichergestellt sein, dass das Readings "event" zusätzlich in dem Attribut <code>event-on-update-reading</code> eingetragen ist, da sonst parallel laufende Gespräche nicht sauber verarbeitet werden können.<br />
<br />
== Anwendung ==<br />
[[Datei:FB_CALLLIST Anrufliste.png|400px|thumb|right|Beispielhafte Anrufliste mit FB_CALLLIST]] <br />
FB_CALLLIST kann sehr flexibel eingesetzt werden um Anrufe in Form einer Liste in FHEM darzustellen. Die Anrufliste wird dabei in allen geöffnetet Browser-Fenstern per Longpoll-Mechanismus aktuell gehalten. Das bedeutet, dass bei neuen Anrufevents Änderungen an der Liste sofort an alle geöffneten Browser weitergegeben werden. Dies ist besonders nützlich bei der Verwendung auf Status-Displays.<br />
<br />
=== Define ===<br />
<br />
Man definiert eine FB_CALLLIST-Instanz wie folgt:<br />
<br />
define &lt;Name&gt; FB_CALLLIST &lt;FB_CALLMONITOR-Definition&gt;<br />
<br />
Man benötigt als Übergabeparameter lediglich den Namen einer FB_CALLMONITOR-Definition. Aus den Events dieser Definition wird FB_CALLLIST eine Anrufliste erzeugen. <br />
<br />
Es ist auch möglich als Übergabeparameter einen Definitionsnamen zu wählen, der nicht vom Typ FB_CALLMONITOR stammt. In dem Fall wird eine Warnmeldung im Log erzeugt.<br />
<br />
=== Attribute ===<br />
Die Liste kann durch eine Vielzahl an Attributen an die eigenen Bedürfnisse angepasst werden. Dies betrifft insbesondere folgende Funktionalitäten:<br />
<br />
* Begrenzung der Anzahl anzuzeigender Anrufe (Attribute <code>number-of-calls</code>, <code>expire-calls-after</code>)<br />
* Zuordnung von eigenen Bezeichnern für Rufnummern und Telefonie-Geräte (Attribute: <code>connection-mapping</code>, <code>internal-number-filter</code>, <code>external-mapping</code>)<br />
* Anzeige nur bestimmter Anrufe (Attribut: <code>answMachine-is-missed-call</code>, <code>list-type</code>)<br />
* Optische Anpassungen (Attribute: <code>icon-mapping</code>, <code>language</code>, <code>list-order</code>, <code>no-heading</code>, <code>no-table-header</code>, <code>show-icons</code>, <code>time-format-string</code>, <code>visible-columns</code>)<br />
<br />
Eine genaue Beschreibung der einzelnen Attribute und ihrer Funktion findet man in der {{Link2CmdRef|Anker=FB_CALLLIST_attr}}.<br />
<br />
== Anwendungsbeispiele ==<br />
=== Tablet-UI Integration ===<br />
[[Datei:FB CALLLIST Anzeigebeispiel Tablet-UI.png|200px|thumb|right|Anzeigebeispiel Tablet-UI]] <br />
Man kann die Anrufliste einfach in Tablet-UI integrieren. Dazu ist es jedoch notwendig das Attribut {{Link2CmdRef|Anker=FB_CALLLIST_create-readings|Label= create-readings}} zu aktivieren. Damit die Anrufliste als Readings zur Verfügung stehen, welche dann in Tablet-UI eingebunden werden können.<br />
<br />
Beispielhaft kann man dann mit folgendem HTML-Code eine Anzeige der Anrufliste realisieren. In diesem Fall werden die ersten zwei Zeilen der Anrufliste im Tablet-UI abgebildet. Die Bezeichnung <code>FritzBoxCallList</code> ist dabei der Name der FB_CALLLIST-Definition in FHEM.<br />
<br />
<syntaxhighlight lang="html5"><br />
<li data-row="8" data-col="2" data-sizex="4" data-sizey="1"><br />
<header class="headerTransparent">ANRUFE</header><br />
<table width="100%" class=""><br />
<tr><br />
<td><br />
<!-- Zuordnung des Status zu entsprechendem Icon --><br />
<div class="narrow" data-type="symbol" data-device="FritzBoxCallList"<br />
data-get="1-state" data-states='["=>","=> X","=> ((o))","=> [=]","=> O_O"]'<br />
data-icons='["oa-phone_call_end_in","oa-phone_missed_in","oa-phone_ring fa-blink","oa-phone_ring_in fa-blink","oa-phone_answersing"]'<br />
data-colors='["green","firebrick","firebrick","green","#aa6900"]'></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-timestamp" data-part="5" class=""></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-timestamp" data-part="1" class="inline"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-timestamp" data-part="2" class="inline"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-timestamp" data-part="3" class="inline"></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-name"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-number"></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="1-duration"></div><br />
</td><br />
</tr><br />
<tr><br />
<td><br />
<div class="narrow" data-type="symbol" data-device="FritzBoxCallList"<br />
data-get="2-state" data-states='["=>","=> X","=> ((o))","=> [=]","=> O_O"]'<br />
data-icons='["oa-phone_call_end_in","oa-phone_missed_in","oa-phone_ring fa-blink","oa-phone_ring_in fa-blink","oa-phone_answersing"]'<br />
data-colors='["green","firebrick","firebrick","green","#aa6900"]'></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-timestamp" data-part="5" class=""></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-timestamp" data-part="1" class="inline"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-timestamp" data-part="2" class="inline"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-timestamp" data-part="3" class="inline"></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-name"></div><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-number"></div><br />
</td><br />
<td><br />
<div data-type="label" data-device="FritzBoxCallList" data-get="2-duration"></div><br />
</td><br />
</tr><br />
</table><br />
</li><br />
<br />
<br />
</syntaxhighlight><br />
<br />
== Links ==<br />
<br />
* {{Link2CmdRef|Anker=FB_CALLLIST}} (EN)<br />
* {{Link2CmdRef|Lang=de|Anker=FB_CALLLIST}} (DE)<br />
<br />
[[Kategorie:FritzBox]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Yamaha_AV-Receiver&diff=38193Yamaha AV-Receiver2023-03-08T14:45:16Z<p>Krikan: Modulowner angepasst</p>
<hr />
<div>{{Todo|Anwendungsbeispiele ergänzen; Informationen, die in der Infobox stehen, entfernen}}<br />
{{Infobox Modul<br />
|ModPurpose=Steuerung netzwerkfähiger AV-Receiver von Yamaha<br />
|ModType=d<br />
|ModCmdRef=YAMAHA_AVR<br />
|ModForumArea=Multimedia<br />
|ModTechName=71_YAMAHA_AVR.pm<br />
|ModOwner=Beta-User ({{Link2FU|9229|Forum}}/[[Benutzer Diskussion:Beta-User|Wiki]])<br />
}}<br />
Für AV-Receiver des Herstellers Yamaha gibt es in FHEM bereits ein entsprechendes Modul mit dem alle netzwerkfähigen Modelle gesteuert werden können.<br />
<br />
Für die genaue Benutzung in FHEM siehe dazu die {{Link2CmdRef|Lang=de|Anker=YAMAHA_AVR}} zu dem Modul YAMAHA_AVR.<br />
<br />
== Links ==<br />
<br />
* {{Link2CmdRef|Lang=de|Anker=YAMAHA_AVR}}-Eintrag zu YAMAHA_AVR<br />
* [http://www.yamaha.com Herstellerseite von Yamaha]<br />
<br />
[[Kategorie:Unterhaltungselektronik]]<br />
[[Kategorie:IP_Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FB_CALLMONITOR&diff=38192FB CALLMONITOR2023-03-08T14:44:13Z<p>Krikan: </p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Protokollieren von (Telefonie-)Ereignissen auf einer [[AVM Fritz!Box|Fritz!Box]]<br />
|ModType=h<br />
<!-- |ModCategory=?? --><br />
<!-- |ModCmdRef ... ist nötig wegen Unterstrich im Seitennamen --><br />
|ModCmdRef=FB_CALLMONITOR<br />
|ModTechName=72_FB_CALLMONITOR.pm<br />
|ModOwner=Jörg/JoWiemann ({{Link2FU|94|Forum}} / [[Benutzer Diskussion:JoWiemann|Wiki]])<br />
}}<br />
<br />
[[FB_CALLMONITOR]] ist ein Hilfsmodul, das Telefonie-Ereignisse auf einer (über Netzwerk erreichbaren) [[AVM Fritz!Box|Fritz!Box]] protokolliert.<br />
<br />
== Voraussetzungen ==<br />
Die CallMonitor-Funktion auf der Fritz!Box muss aktiviert sein (z.B. durch Eingabe von <code>#96*5*</code> auf einem direkt an der Fritz!Box angeschlossenen Telefon).<br />
<br />
Es ist zu beachten, dass der FB_CALLMONITOR keine internen Anrufe erfasst, da diese Anrufe nicht durch die FritzBox gemeldet werden. Es können daher nur externe Anrufe kommen und gehend in FHEM verarbeitet werden.<br />
<br />
== Anwendung ==<br />
=== Define ===<br />
Siehe {{Link2CmdRef|Anker=FB_CALLMONITOR}}<br />
<br />
=== Attribute ===<br />
Siehe {{Link2CmdRef|Anker=FB_CALLMONITOR}}<br />
<br />
=== Funktionen ===<br />
* Protokollierung von Anrufen <br />
* Nachschlagen von Telefonnummern in einer konfigurierbaren Auswahl von Telefonbüchern (online oder lokal)<br />
<br />
<br />
== Anwendungsbeispiel(e) ==<br />
* {{Link2Forum|Topic=19238|LinkText=Callmonitor für Anfänger}} im FHEM -Forum (Beispiel und Diskussion). <br />Daraus entstandene Wiki-Seite: [[Callmonitor mit Anruferliste und Zusatzfunktionen]].<br />
* {{Link2Forum|Topic=19238|Message=138430|LinkText=Anzeigebeispiel}} im [[Dashboard]]<br />
<br />
== Links ==<br />
* [http://www.wehavemorefun.de/fritzbox/Callmonitor Schnittstellenbeschreibung]<br />
<br />
[[Kategorie:FritzBox]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FB_CALLMONITOR&diff=38191FB CALLMONITOR2023-03-08T14:43:18Z<p>Krikan: Modulowner aktualisiert</p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Protokollieren von (Telefonie-)Ereignissen auf einer [[AVM Fritz!Box|Fritz!Box]]<br />
|ModType=h<br />
<!-- |ModCategory=?? --><br />
<!-- |ModCmdRef ... ist nötig wegen Unterstrich im Seitennamen --><br />
|ModCmdRef=FB_CALLMONITOR<br />
|ModTechName=72_FB_CALLMONITOR.pm<br />
|ModOwner=Jörg/JoWiemann ({{Link2FU|94|Forum}} / [[Benutzer Diskussion:JoWiemann|Wiki]])}}<br />
}}<br />
<br />
[[FB_CALLMONITOR]] ist ein Hilfsmodul, das Telefonie-Ereignisse auf einer (über Netzwerk erreichbaren) [[AVM Fritz!Box|Fritz!Box]] protokolliert.<br />
<br />
== Voraussetzungen ==<br />
Die CallMonitor-Funktion auf der Fritz!Box muss aktiviert sein (z.B. durch Eingabe von <code>#96*5*</code> auf einem direkt an der Fritz!Box angeschlossenen Telefon).<br />
<br />
Es ist zu beachten, dass der FB_CALLMONITOR keine internen Anrufe erfasst, da diese Anrufe nicht durch die FritzBox gemeldet werden. Es können daher nur externe Anrufe kommen und gehend in FHEM verarbeitet werden.<br />
<br />
== Anwendung ==<br />
=== Define ===<br />
Siehe {{Link2CmdRef|Anker=FB_CALLMONITOR}}<br />
<br />
=== Attribute ===<br />
Siehe {{Link2CmdRef|Anker=FB_CALLMONITOR}}<br />
<br />
=== Funktionen ===<br />
* Protokollierung von Anrufen <br />
* Nachschlagen von Telefonnummern in einer konfigurierbaren Auswahl von Telefonbüchern (online oder lokal)<br />
<br />
<br />
== Anwendungsbeispiel(e) ==<br />
* {{Link2Forum|Topic=19238|LinkText=Callmonitor für Anfänger}} im FHEM -Forum (Beispiel und Diskussion). <br />Daraus entstandene Wiki-Seite: [[Callmonitor mit Anruferliste und Zusatzfunktionen]].<br />
* {{Link2Forum|Topic=19238|Message=138430|LinkText=Anzeigebeispiel}} im [[Dashboard]]<br />
<br />
== Links ==<br />
* [http://www.wehavemorefun.de/fritzbox/Callmonitor Schnittstellenbeschreibung]<br />
<br />
[[Kategorie:FritzBox]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEMWiki:Administratoren&diff=38190FHEMWiki:Administratoren2023-03-08T14:39:05Z<p>Krikan: Markus bei Benutzerkontenantrag entfernt</p>
<hr />
<div>{| class="wikitable" style="background-color: #FFFFF0; border: 1px solid maroon;"<br />
|-<br />
| style="width:50%" | <!-- Spalte 1 (links) --><br />
=== Benutzerkonto beantragen === <br />
Neue Benutzerkonten im FHEM-Wiki können nur von den Administratoren angelegt werden. Dazu muss der Antragsteller eine<br />
* E-Mail an '''einen''' der Administratoren schicken mit<br />
* dem gewünschten Benutzernamen (wenn die erste Stelle ein Buchstabe ist, wird das immer ein Großbuchstabe - das macht die Wiki-Software so und lässt sich auch nicht ändern)<br />
<!-- * einem sicheren(!) Startpasswort (sofern kein Startpasswort mitgegeben wird, bekommt ihr ein automatisch generiertes zugeteilt) --><br />
* und seiner E-Mail-Adresse <br />
<br />
Nur mit '''vollständigen''' Angaben wird ein Benutzerkonto angelegt. Nochmal zum Abschreiben:<br />
<pre><br />
Benutzername: <br />
E-Mail Adresse: <br />
</pre><br />
Bitte schreibt die Administratoren (einen nach dem anderen!) in der untenstehenden Reihenfolge an. Erst wenn der Antrag am dritten Tag noch nicht bearbeitet wurde, den nächsten in der Liste anschreiben. Ignorieren dieser Empfehlung führt '''nicht''' zu einer Beschleunigung des Antrags ... eher im Gegenteil!<br />
<hr /><br />
Administratoren:<br><br />
1. [[Benutzer: Ph1959de|Ph1959de]] (Peter) - [[Datei:Ph1959deMail.png]]<br />
: ... keine Antwort? Drei Tage warten ... <br />
2. [[Benutzer: Krikan|Krikan]] (Christian) - [[Datei:CgfhemwikiMail.png]]<br />
: ... keine Antwort? Drei Tage warten ...<br />
<!-- <br />
2. [[Benutzer:Soulman|soulman]] (Christian) - soulman (at) fhemwiki (punkt) de <br />
: ... keine Antwort? Drei Tage warten ... <br />
--><br />
<!-- <br />
3. [[Benutzer:Akw|akw]] (Arno) - [http://www.arnowillig.de/contact/ Arno]<br />
--><br />
| style="width:50%" | <!-- Spalte 2 (rechts) --><br />
=== Request user account === <br />
New user accounts on FHEM-Wiki need to be created by one of the administrators. To get an account, the requestor needs to <br />
* send an email to '''one''' of the administrators with<br />
* the desired user name (if the first position is a letter, it will always be uppercase - this is forced by the Wiki-Software and can not be circumvented)<br />
<!-- * a secure(!) start password (if you don't specify a password, you'll get an automatically generated one) --><br />
* and his email address<br />
<br />
'''All''' of the above items are mandatory. You need a template? <br />
<pre><br />
Username: <br />
E-Mail Address: <br />
</pre><br />
<br />
Please contact the administrators (one after the other!) in the sequence given below. Only if your request has not been fulfilled after three days you may contact the next person on the list. Ignoring these instructions will '''not''' speed up processing of your request ... it will rather delay it even more!<br />
<hr /><br />
Administrators:<br><br />
1. [[Benutzer: Ph1959de|Ph1959de]] (Peter) - [[Datei:Ph1959deMail.png]]<br />
: ... No answer? Wait for three days ... <br />
2. [[Benutzer: Krikan|Krikan]] (Christian) - [[Datei:CgfhemwikiMail.png]]<br />
: ... No answer? Wait for three days ...<br />
<!-- <br />
2. [[Benutzer:Soulman|soulman]] (Christian) - soulman (at) fhemwiki (punkt) de <br />
: ... No answer? Wait for three days ...<br />
--><br />
<!-- <br />
3. [[Benutzer:Akw|akw]] (Arno) - [http://www.arnowillig.de/contact/ Arno]<br />
--><br />
|}<br />
=== Administratoren ===<br />
Neben den für Anträge auf Benutzerkonten zuständigen Administratoren gibt es noch weitere Benutzer mit Administratorrechten. Nachfolgend eine Liste aller derzeitigen Administratoren des FHEM Wiki:<br />
{{Special:ListUsers/sysop}}<br />
<br />
[[Kategorie:FHEM Wiki]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Benutzer_Diskussion:Siggi&diff=37538Benutzer Diskussion:Siggi2022-09-08T03:00:33Z<p>Krikan: /*Willkommen*/</p>
<hr />
<div>{{Ph1959de/Hallo}}</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave_Firmware_Update&diff=34206Z-Wave Firmware Update2020-11-10T17:35:13Z<p>Krikan: /* Über ZWDongle oder ZWCUL unter FHEM */ -> Popp-Firmwaredateien</p>
<hr />
<div>Grundsätzlich bietet sowohl [[Z-Wave#Definition des Gateways /Controllers|ZWDongle]] wie [[ZWCUL]] die Möglichkeit an, die Firmware von [[Z-Wave]]-Geräten zu aktualisieren.<br />
<br />
Leider bieten die wenigsten Hersteller entsprechende Firmware-files offen zum Download an. Sofern überhaupt Files zum freien Download verfügbar sind, sind diese in der Regel nur über die herstellereigenen Tools verwendbar, meist wird das jeweilige Hersteller-Interface (also z.B. ein Fibaro Home Center) benötigt, das dann die Daten direkt herunterlädt und auf die Geräte OTA aufspielt.<br />
<br />
Auf dieser Seite werden die verschiedenen Möglichkeiten dargestellt, wie Firmware-updates - möglichst ohne größere Eingriffe in das Z-Wave-Netz - durchgeführt werden können, auf welchem Weg ggf. updates erhältlich sind und ob solche überhaupt verfügbar sind.<br />
<br />
== Varianten für Firmwareupdates ==<br />
=== Über ZWDongle oder ZWCUL unter FHEM ===<br />
Firmware-Updatedateien sind für diverse POPP-Geräte verfügbar: https://zwave.de/zwave-ota/<br />
=== Mittels Hersteller-Bridge ===<br />
[[Datei:Fibaro_HCL_fw-update-page.png|300px|thumb|right|Seite für das Vorbereiten der Firmware-updates]]In einigen Fällen ist es möglich, die Hersteller-Bridge (Fibaro Home Center oder Z-Way) als "secondary controller" in das Z-Wave-Netz zu includieren. Ein Beispiel mit einem <br />
{{Link2Forum|Topic=115218|LinkText=Fibaro Home Center lite}} ist im Forum zu finden, eventuell sind dafür zusätzliche Einstellungen am ZWDongle erforderlich (insbes. die sucNodeId auf dessen ZWave-ID zu stellen). <br />
<br />
=== Externe Tools ===<br />
Manche Hersteller (insbes. AEOTEC) liefern Firmware-Dateien als unter Windows ausführbare Dateien an.<br />
<br />
== Quellen für Firmwareupdates ==<br />
=== Aktuell vorhandene Version abfragen ===<br />
Welche Firmware-Version derzeit auf einem Device läuft, erfährt man in FHEM mit <br />
get <device> version<br />
Die letzte Zahl gibt dabei die Firmware-Version an.<br />
<br />
Nachfolgend sind die Informationen zu den verfügbaren updates zusammengetragen, es besteht kein Anspruch auf Vollständigkeit oder Aktualität - es wird um Mithilfe bei der Verbesserung gebeten!<br />
<br />
=== AEOTEC ===<br />
Dieser Hersteller bietet über die [https://aeotec.freshdesk.com/support/solutions/6000084017 Einstiegsseite] für einige Geräte ausführbare Dateien für Windows an. Diese benötigen das .NET-framework, es kann z.B. unmittelbar das für FHEM verwendete USB-Dongle eingesetzt werden (getestet mit einem [[Z-Wave-ZME UZB1 USB Dongle]]), eine vorherige Exklusion ist nicht erforderlich.<br />
<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| ZW096 || Smart Switch 6 || 1.02 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| ZW100 || MultiSensor 6 || 1.13 || 30.10.2020 || [https://aeotec.freshdesk.com/support/solutions/articles/6000036562-how-to-update-multisensor-6-z-wave-firmware- aeotec] <br />
|-<br />
| ZW111 || Nano Dimmer || 2.02 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer] <br />
|-<br />
| ZW116 || Nano Switch with energy reading || 3.00 || vor 30.10.2020 || [https://aeotec.freshdesk.com/support/solutions/articles/6000197021--zw116-v3-00-how-to-update-nano-switch-with-energy-reading-z-wave-firmware- aeotec] <br />
|-<br />
| ZW132 || Dual Nano Switch with energy reading || 2.02 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer] <br />
|- <br />
| ZW139 || Nano Switch without energy reading || 2.00 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer] <br />
|- <br />
| ZW140 || Dual Nano Switch without energy reading || 2.00 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer] <br />
|- <br />
| ZWA005 || TriSensor || 2.21 || 30.10.2020 || [https://aeotec.freshdesk.com/support/solutions/articles/6000236093-how-to-update-trisensor-z-wave-firmware- aeotec] <br />
|-<br />
<br />
|-<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
<br />
=== Fibar Group ===<br />
[[Datei:Fibaro_HCL_fw-update-page-leichte-neukonfig.png|300px|thumb|right|Seite für das Vorbereiten der Firmware-updates]]Fibar bietet derzeit updates nur über die herstellereigenen ''Home Center'' an. Diese können als ''secondary controller'' in das Z-Wave-Netz inkludiert werden. Nach der Inklusion (bzw. nach einem Suchlauf (=> tbd: erforderlich? Details?) sollten alle vorhandenen Geräte auch im Home Center zu sehen sein, dabei ist darauf zu achten, dass man das Zurücksetzen der Geräte durch das Home Center nicht zuläßt. Dazu verwendet man den Button ''Leichte Geräteneukonfiguration'' im Menüpunkt ''Module - Erweitert''.<br />
<br />
<br />
<br />
Das update eines FGR-223 war völlig unproblematisch, der FGS-223 ist als Problemfall bekannt, verschiedene Lösungsansätze sind in diesem [https://forum.fibaro.com/topic/51291-impossible-to-update-34-on-fgs223/ Thread auf dem Fibaro-Forum] zu finden. Beim Autor führte letztlich vor allem der Versuch zum Erfolg, das update nicht über den Hauptkanal durchzuführen, sondern über ein "Teilgerät", das eine sehr viel höhere ID aufwies wie das Hauptgerät (ID 79 statt 12), siehe nebenstehende Abbildung FGS-223.[[Datei:HCL-FGS-223-update.png|300px|thumb|right|FGS-223]] Eine vorherige Exklusion war jedoch nicht erforderlich.<br />
<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| FGS 222 || FIBARO System FGS222 Double Relay Switch 2x1.5kW || Lib 3 Prot 3.52 App 2.2 || 08.11.2020 || Home Center lite <br />
|-<br />
| FGRM 222 || FIBARO System FGRM222 Roller Shutter Controller 2 || Lib 3 Prot 3.52 App 22.22 || 08.11.2020 || Home Center lite <br />
|-<br />
| FGS 223 || FIBARO System FGS223 Double Relay || Lib 3 Prot 4.24 App 3.4 HW 3 FWCounter 0 || 08.11.2020 || Home Center lite - Improved response to controlling device via buttons connected to S1/S2. Optimized number of status reports being send by the module.<br />
|-<br />
| FGR 223 || FIBARO System FGRM223 Roller Shutter Controller 3 || Lib 3 Prot 6.02 App 5.1 HW 3 FWCounter 1 FW 5.1 || 08.11.2020 || Home Center lite <br />
|-<br />
|-<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
<br />
=== GoControl ===<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| LB60-Z || Smart Bulb || 5.12 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
<br />
=== HomeSeer ===<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| HS-WD100+ || Wall Dimmer || 5.19 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| HS-WS100+ || Wall Switch|| 5.17 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| HSM200 || Multisensor|| 1.10 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
<br />
=== Leviton ===<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| DZ15S-1BZ || Wall Switch || 1.2 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| DZ1KD-1BZ || Wall Dimmer || 1.2 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| DZ6HD-1BZ || Wall Dimmer || 1.2 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| DZPA1-2BW || Plug-in Switch || 1.2 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| DZPD3-2BW || Plug-in Dimmer || 1.2 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
<br />
=== Qubino ===<br />
{| class="wikitable sortable"<br />
|+ Übersicht über verfügbare Updates (EU-Version, soweit nicht anders vermerkt) <br />
|-<br />
! Kürzel !! class="unsortable" | Name !! class="unsortable" | aktuellste bekannte Version !! class="unsortable" | Stand !! class="unsortable" | Bemerkungen/Quelle<br />
|-<br />
| - || SmartMeter || 7.6 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
| - || Weather Station || 1.3 || vor 30.10.2020 || [http://help.homeseer.com/help/Z-Flash/static/#.firmware_included_with_z_flash homeseer]<br />
|-<br />
<br />
| colspan="5" | ''Tabelle muss noch vervollständigt werden''<br />
|-<br />
|}<br />
[[Kategorie:Z-Wave Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave&diff=34010Z-Wave2020-10-13T18:24:09Z<p>Krikan: jeedom-Link aktualisiert</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=ZWDongle<br />
|ModPurpose=Einbindung Z-Wave-Gateways<br />
|ModType=d<br />
|ModCmdRef=ZWDongle<br />
|ModForumArea=ZWave<br />
|ModTechName=00_ZWDongle.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
{{Infobox Modul<br />
|Name=ZWave<br />
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle<br />
|ModType=d<br />
|ModCmdRef=ZWave<br />
|ModForumArea=ZWave<br />
|ModTechName=10_ZWave.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
</div><br />
<br />
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])<br />
<br />
Auf dieser Seite werden Grundlagen eines '''Z-Wave''' Systems und dessen Einrichtung in FHEM beschrieben.<br />
== Z-Wave ==<br />
=== Nodes - Controller und Slaves ===<br />
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten '''Nodes''' (Knoten). Es setzt sich zusammen aus dem steuernden '''Controller''' (Zentrale) und min. 1 bis max. 231 gesteuerten '''Slaves''' (Geräten). <br />
<br />
=== Home-Id und Node-ID ===<br />
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:<br />
# '''Home-ID:''' Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.<br />
# '''Node-ID:''' Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. <br />
<br />
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der '''Inklusion''' (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. <br />
<br />
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).<br />
<br />
=== Primär- und Sekundärcontroller ===<br />
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der '''Primärcontroller'''. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum '''Sekundärcontroller'''. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die '''Exklusion''' (Ausschluss) eines Nodes aus dem Netz vornehmen.<br />
<br />
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.<br />
<br />
=== Acknowledge ===<br />
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.<br />
<br />
=== Vermaschtes Netzwerk mit Routing ===<br />
Z-Wave nutzt als Netzwerktopologie ein '''mesh network''' (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird '''Routing''' genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.<br />
<br />
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber ''nicht'' SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren ("Selbstheilung")[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].<br />
<br />
=== Command Classes ===<br />
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene '''Command Classes''' (Kommandoklassen) zusammengefasst sind.<br />
<br />
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die '''Class Basic'''. <br />
<br />
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die '''Class Configuration'''.<br />
<br />
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die '''Class Association'''.<br />
<br />
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.<br />
<br />
=== Hinweise zur Z-Wave-Geräteauswahl ===<br />
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.<br />
<br />
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.<br />
<br />
Gateway<br />
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.<br />
<br />
Endgeräte<br />
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder<br />
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder<br />
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)<br />
<br />
'''Kurz''': Produkte mit Z-Wave Plus-Zertifizierung einsetzen.<br />
<br />
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.<br />
<br />
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.<br />
<br />
== Z-Wave in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. <br />
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:<br />
* Herstellerseite des ZWave-Gerätes<br />
* http://www.zwave.de/handbuecher/ (deutsch)<br />
* http://products.z-wavealliance.org (englisch)<br />
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.<br />
<br />
== Definition des Gateways / Controllers ==<br />
{{Randnotiz|RNText='''Tester für ZWave@culfw gesucht!'''<br />
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}<br />
=== Autocreate des Gateways ===<br />
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. <br />
<br />
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:<br />
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])<br />
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})<br />
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})<br />
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)<br />
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)<br />
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})<br />
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x; Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])<br />
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&t=21327#p55404]) <br />
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})<br />
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
<br />
Folgende Gateways sind '''nicht''' mit FHEM einsetzbar:<br />
* Merten Funk-USB-Datenschnittstelle CONNECT<br />
<br />
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.<br />
<br />
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema <code>ZWDongle_<[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]></code> angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. <br />
<br />
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: <code>define ZWDongle_1 ZWDongle COM1@115200</code>). <br />
<br />
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum "Everything" zu finden.<br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
Aeon Labs Z-Stick an der Fritzbox: <br />
define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200<br />
<br />
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):<br />
define ZWDongle_1 ZWDongle /dev/ttyACM1@115200<br />
<br />
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.<br />
<br />
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.<br />
<br />
=== homeId und nodeList des Gateways ===<br />
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die <code>homeId</code> notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der <code>homeId</code> nicht zwingend. Jedoch sollte durch Abfrage der <code>homeId</code> direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.<br />
<br />
Die <code>homeId</code> und <code>CtrlNodeId</code> des Gateways wird mit folgendem Befehl ausgelesen (<ZWDongle> ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):<br />
get <ZWDongle> homeId<br />
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:<br />
ZWDongle_1 homeId => HomeId:e345c456 CtrlNodeId:01 <br />
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.<br />
<br />
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:<br />
get <ZWDongle> nodeList<br />
ergibt beispielsweise:<br />
ZWDongle_1 nodeList => ZWDongle_1 UNKNOWN_2<br />
<br />
<br />
== Definition von Geräten / Slaves ==<br />
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===<br />
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.<br />
<br />
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:<br />
set <ZWDongle> addNode on<br />
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:<br />
set <ZWDongle> addNode onNw<br />
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. <br />
<br />
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut <code>classes</code> des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum "ZWave" zu finden. <br />
<br />
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls <code>set <ZWDongle> addNode off</code> aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:<br />
* <code><nowiki>created ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.<br />
* <code><nowiki>addNode failed</nowiki></code> = Inklusion ist fehlgeschlagen<br />
<br />
Eine erfolgreiche Inklusion ist zudem am Event "ZW_ADD_NODE_TO_NETWORK protocolDone" im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen. Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events "ZW_ADD_NODE_TO_NETWORK failed". Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.<br />
<br />
HINWEISE:<br /><br />
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.<br />
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit <code><nowiki>set <ZWave-Devicename> neighborUpdate</nowiki></code> bzw. <code><nowiki>set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate</nowiki></code> neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.<br />
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut <code>classes</code> manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.<br />
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.<br />
<br />
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.<br />
<br />
=== Assoziation ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.<br />
<br />
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.<br />
<br />
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, '''muss''' der Controller (<ZWDongle>-Device, <code>CtrlNodeId</code> = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes <code><name></code> aufgenommen werden:<br />
<br />
set <name> associationAdd <associationGroup> <CtrlNodeId><br />
<br />
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. <br />
<br />
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.<br />
<br />
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe <associationGroup>:<br />
get <name> association <associationGroup><br />
<br />
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:<br />
get <name> associationAll<br />
<br />
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.<br />
<br />
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.<br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. <br />
<br />
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:<br />
set <name> configByte <Parameternummer> <Parameterwert><br />
Für weitere Parametergrößen gibt es die Befehle <code>configWord</code> und <code>configLong</code><br />
<br />
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:<br />
get <name> config <Parameternummer><br />
<br />
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden: <br />
get <name> model<br />
Die Readings <code>model</code>, <code>modelID</code> und <code>modelConfig</code> werden dadurch erzeugt. In <code>model</code> sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:<br />
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]<br />
<br />
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:<br />
get <name> configAll<br />
<br />
Außerdem wird durch den <code>get <name> model</code> -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link "Details in pepper DB" und/oder "Details in alliance DB" zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.<br />
<br />
Der Aufruf von <code>get <name> model</code> ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.<br />
<br />
=== Entfernen eines Z-Wave-Geräts / Exklusion ===<br />
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.<br />
<br />
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:<br />
set <ZWDongle> removeNode on<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):<br />
set <ZWDongle> removeNode onNw<br />
<br />
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. <br />
<br />
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:<br />
set <ZWDongle> removeNode off<br />
<br />
Das FHEM-Device muss nach der Exklusion manuell durch <code>delete <name></code> gelöscht werden.<br />
<br />
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.<br />
<br />
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===<br />
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:<br />
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion<br />
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM <br />
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration<br />
<br />
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:<br />
get <ZWDongle> nodeList<br />
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als "UNKNOWN_x" ausgegeben, wobei x die ID des betreffenden Gerätes ist.<br />
<br />
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als "UNKNOWN_2") in FHEM durch autocreate definiert:<br />
set <ZWDongle> createNode 2<br />
<br />
Batteriebetriebene Geräte müssen bei Absetzen des <code>createNode</code>-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf "permanent wach" stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den <code>createNode</code>-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und <code>autocreate</code> legt das FHEM-Device an; der Aufruf von <code>createNode</code> entfällt dann.<br />
<br />
== Geräte-Besonderheiten ==<br />
=== batteriebetriebene Geräte ===<br />
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in<br />
<br />
* Wakeup-Geräte<br />
* FLIRS-Geräte<br />
<br />
==== Wakeup-Geräte ====<br />
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.<br />
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht "wakeup notification". Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.<br />
<br />
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form<br />
:<code>Scheduled for sending after WAKEUP</code> <br />
::oder<br />
:<code>Scheduled get requests for sending after WAKEUP</code><br />
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten "wakeup notification" an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der "wakeup notification"-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der "wakeup notification" ist das batteriebetriebene Gerät grundsätzlich in der Lage ("wach genug"), Telegramme korrekt zu empfangen und zu verarbeiten.<br />
<br />
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal <code>cmdsPending</code> des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls <code>[[list]] <device></code> erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch <code>shutdown restart</code>) geht der Sendstack der Geräte daher verloren.<br />
<br />
Das Wakeup-Interval und der Empfänger der "wakeup notification" wird wie folgt konfiguriert:<br />
<nowiki>set <name> wakeupInterval <time> <NodeId></nowiki><br />
<nowiki><time></nowiki> ist die Zeit in Sekunden zwischen den Intervallen und <nodeID> der gewünschte Empfänger der "wakeup notification"; in der Regel ist dies '''immer''' der Controller <CtrlNodeId>. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die "wakeup notification" wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die "wakeup notification" geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten '''automatisch''' den Befehl <code><nowiki>set <name> wakeupInterval 86400 <ControllerNodeId></nowiki></code> ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit <code><nowiki>get <name> wakeupIntervalCapabilities</nowiki></code> vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage <code><nowiki>get <name> wakeupInterval</nowiki></code> überprüfen.<br />
<br />
Ein Aufwachen und Versand der "wakeup notification" von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.<br />
<br />
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf "wach" bzw. permanent "wach" stellen. Dann aus dem Attribut <code>classes</code> <code>WAKE_UP</code> entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des "wach"-Modus <code>WAKE_UP</code> wieder im Attribut <code>classes</code> aufnehmen.<br />
<br />
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit <code>set <name> config...</code> sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden <code>get <name> config...</code> oder -falls vorhanden- mit <code>get <name> configAll</code> überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.<br />
<br />
==== FLIRS-Geräte ====<br />
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. <br />
<br />
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit "wakeup notification". Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.<br />
<br />
=== Aeon Labs / Aeotec ===<br />
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home<br />
<br />
==== Multi Sensor 5 ====<br />
* aktuellste Firmware installieren<br />
* Attribut <code>classes</code> um <code>BASIC</code> ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit <code>set <name> configGroup1Reports 225</code> oder <code>set <name> configLong 101 225</code>, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch <code><nowiki>set <name> configGroup1Interval <time/s></nowiki></code> festgelegt (Standard 720 Sek).<br />
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]<br />
siehe {{Link2Forum|Topic=34505|Message=268913}}<br />
<br />
==== Multisensor 6 ====<br />
siehe {{Link2Forum|Topic=40393}}<br />
* arbeitet bei USB-Anschluß als Router<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* die <code>configGroupxInterval</code> und <code>configxxxReportingThreshold</code> Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem <code>wakeup</code> übertragen<br />
<br />
==== Aeotec LED Bulb ZW098-C55 ====<br />
siehe {{Link2Forum|Topic=40504}}<br />
<br />
=== Danfoss ===<br />
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====<br />
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem <code>at</code> abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):<br />
define Atdanfoss at +*00:30 get <name> battery<br />
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). <br />
<br />
=== devolo ===<br />
Ausführliche Handbücher auf http://products.z-wavealliance.org<br />
<br />
==== MT02648 Tür-/Fenster Kontakt 3in1 ====<br />
siehe {{Link2Forum|Topic=41337}}<br />
<br />
=== DüWI ===<br />
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise <code>define Status_Abfrage at +*00:03:00 get <name> swmStatus</code>) beheben.<br />
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.<br />
<br />
=== Everspring ===<br />
==== AN145 Sockelmodul E27 ====<br />
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}<br />
<br />
=== Fibaro ===<br />
Association Group für Übermittlung von Statusinformationen an den Controller:<br />
* "alte" ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3<br />
: <code><nowiki>set <name> associationAdd 3 <CtrlNodeId></nowiki></code><br />
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (<code><nowiki>set <name> associationDel 1 <CtrlNodeId></nowiki></code>). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.<br />
* ZWave Plus-Geräte: Association Group 1 ("lifeline")<br />
<br />
==== FGSS-001 / FGSD-002 Rauchmelder ====<br />
* nicht untereinander vernetzbar<br />
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen<br />
<br />
==== FGS-222 Relais Unterputzeinsatz ====<br />
Bei der Inklusion werden von FHEM 3 Devices angelegt:<br />
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)<br />
* Device für Endpoint 1 (Steuerung Kanal 1)<br />
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)<br />
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.<br />
<br />
Details: {{Link2Forum|Topic=50176}}<br />
<br />
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}<br />
<br />
==== FGK-101 Tür/Fensterkontakt ====<br />
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}<br />
<br />
=== GE ===<br />
==== GE (Model t.b.d) ====<br />
Dieser Schalter unterstützt keine Statusrückmeldungen.<br />
<br />
=== Merten ===<br />
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.<br />
<br />
=== Philio ===<br />
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====<br />
siehe {{Link2Forum|Topic=28046}}<br />
<br />
=== Popp ===<br />
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====<br />
siehe {{Link2Forum|Topic=39856}}<br />
==== POPE005107 Z-Wave Außensirene ====<br />
siehe {{Link2Forum|Topic=42736}}<br><br />
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein <code>userReadings</code> findet sich auch im verlinkten Thema. <br />
==== POPE009006 Z-Wave Wall Plug Switch ====<br />
siehe {{Link2Forum|Topic=40771}}<br />
==== POPE009402 10Year Smoke Detector ====<br />
Die erste Firmwareversion hat eine fehlerhafte modelID. Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.<br />
<br />
=== Z-Wave.Me ===<br />
==== ZME_RC2 Fernbedienung ====<br />
siehe {{Link2Forum|Topic=35513}}<BR><br />
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.<br />
<br />
<br />
== Geräte-Vergleich ==<br />
=== Doppel-Relais ===<br />
{| class="wikitable"<br />
|-<br />
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays !! Philio-PAN04 1<br />
|-<br />
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais<br />
|-<br />
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W<br />
|-<br />
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung || schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig >1 Sekunde <br />
|-<br />
| Geräte in FHEM || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 4 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 <br> x.03 Summengerät (ähnlich Hauptgerät, überflüssig)<br />
|-<br />
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais<br />
|-<br />
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden<br />
|-<br />
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Hauptgerät und Untergeräte || Nur Hauptgerät <br>Aktualisierung der Untergeräte nur bei aktiver Abfrage <br />
|-<br />
| Leistungsmessung || Separat für Untergeräte || Separat für Untergeräte || Nur Summe<br />
|-<br />
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A || nein, 2x 6.5A<br />
|}<br />
Beim Qubino Flush 2 relays muss eine MULTI_CHANNEL_ASSOCIATION mit dem Controller (Endpoint root) statt einer "normalen" Assoziation gesetzt werden, damit die Status der Untergeräte einzeln signalisert werden:<br />
<br />
set associationDel 1 <controllerNodeId> <br />
set <device> mcaAdd 1 0 <controllerNodeId> 0 <br />
<br />
Bei einem FHEM-Updatestand ab 20.09.2019 erfolgt diese Einstellung automatisch.<br />
<br />
== Links ==<br />
=== Allgemein ===<br />
* Grundlageninformation "Z-Wave-Haupt-Anleitung": [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]<br />
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] "Z-Wave: Die Funktechnologie für das Smart Home" von Dr. Christian Paetz (Paetz "is the primary European representative for the Z-Wave Alliance" [http://z-wavealliance.org/global-contacts/])<br />
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)<br />
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)<br />
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)<br />
* informative Webseiten zu Z-Wave:<br />
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)<br />
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)<br />
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)<br />
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)<br />
<br />
=== Informationsquellen zur Einbindung von Command Classes ===<br />
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):<br />
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]<br />
<br />
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)<br />
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis "docs"), RaZBerry und Z-Wave allgemein], englisch<br />
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch<br />
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)<br />
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html<br />
<br />
== FAQ ==<br />
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen FHEM-Devices (Ausgabe von <code>list <device></code>)<br />
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:<br />
::*<code>get <device> associationAll</code> <br />
::*<code>get <device> configAll</code><br />
::*<code>get <device> versionClassAll</code><br />
::*<code>get <device> mcaAll</code><br />
::*<code>get <device> wakeupInterval</code> (nur bei batteriebetriebenen Geräten)<br />
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen<br />
::*<code>attr <ZWDongle> verbose 5</code> und<br />
::*<code>attr global mseclog 1</code><br />
<br />
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===<br />
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!<br />
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes<br />
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway<br />
# [[#Konfiguration|Konfiguration]] des Gerätes<br />
<br />
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf "associationAdd <associationGroup> <CtrlNodeId>" stehen? ===<br />
FHEM setzt das Reading "state", das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte "associationAdd"-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes <code>{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}</code> manuell an seine Bedürfnisse angepasst hat.<br />
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])<br />
<br />
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (>1) angesprochen werden? ===<br />
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> und die Devices für alle Kanäle (Endpoints) nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID>.<EndpointNr></nowiki></code> automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).<br />
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle <code>get <device> mcEndpoints</code> und <code>get <device> mcCapability <chid></code> aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl <code>set <device> mcCreateAll</code> werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.<br />
<br />
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===<br />
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.<br />
==== Grobermittlung ====<br />
Der Befehl <code><nowiki>get <ZWDongle> nodeInfo <dezimale nodeId></nowiki></code> liefert das Reading <code><nowiki>nodeInfo_<dezimale nodeId></nowiki></code> zurück.<br />
Die Angabe im Reading hinter <code>ProtocolVers:</code> lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:<br />
* <code>2</code> -> bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)<br />
* <code>SDK5.0x+4.2x</code> -> bspw. keine Explorer Frames, teilweise SUC-Unterstützung<br />
* <code>SDK4.5x+6.0x</code> -> bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)<br />
==== Detailermittlung ====<br />
Durch den Befehl <code><nowiki>get <name> version</nowiki></code> kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen<br />
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version<br />
* Suche nach sdkids.xml in einer Suchmaschine<br />
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.<br />
<br />
Beispielsweis entspricht das Reading eines Gerätes "Lib 6 '''Prot 2.64''' App 1.6" dem SDK 5.02 Patch 2 oder eines Controller "Z-Wave '''3.41''' STATIC_CONTROLLER" dem SDK 6.02.00.<br />
<br />
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.<br />
<br />
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===<br />
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}<br />
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.<br />
<br />
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.<br />
<br />
Vorarbeiten:<br />
* Das Perl-Modul Crypt-Rijndael muss installiert sein.<br />
* Das Attribut <code>networkKey</code> muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.<br />
<br />
Ablauf der secure-Inklusion:<br />
* Controller in den Modus zur secure-Inklusion schalten:<br />
: <code>set <ZWDongle> addNode onSec</code> für die Standard-secure-Inklusion<br />
: oder alternativ<br />
: <code>set <ZWDongle> addNode onNwSec</code> für die Nework-Wide-secure-Inklusion<br />
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)<br />
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch <code>autocreate</code> angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut <code>secure_classes</code> in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in <code>classes</code> aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.<br />
* Inklusionsmodus des Controllers ausschalten:<br />
: <code>set <ZWDongle> addnode off</code><br />
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.<br />
<br />
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===<br />
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.<br />
<br />
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl <code>removeFailedNode</code> gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig "schlafen".<br />
<br />
Der Befehl <code>removeFailedNode</code> löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des <code>removeFailedNode</code>-Befehls erfolgt sein. <br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# An den betroffenen Node eine Telegramm mit <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und kann mit <code>removeFailedNode</code> gelöscht werden.<br />
# Befehl zum Löschen des Nodes absetzen: <code><nowiki>set <ZWDongle> removeFailedNode <NodeId></nowiki></code>. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.<br />
# Prüfen, der Ergebnisse des <code>removeFailedNode</code>-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis "failedNodeRemoveProcessBusy" mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.<br />
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: <code><nowiki>get <ZWDongle> nodeList</nowiki></code><br />
<br />
siehe auch {{Link2Forum|Topic=32823|Message=292626}}<br />
<br />
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===<br />
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per <code>addNode</code>, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt <code>addNode</code> der Befehl <code>replaceFailedNode</code> zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.<br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:<br />
## <code><nowiki>get <device> configAll</nowiki></code><br />
## <code><nowiki>get <device> associationAll</nowiki></code><br />
# defektes Gerät aus- und neues einbauen<br />
# Befehl <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit <code>replaceFailedNode</code> inkludiert werden.<br />
# <code><nowiki>set <zwdongle> replaceFailedNode <NodeId></nowiki></code> für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen<br />
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.<br />
<br />
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===<br />
Ja, das ist richtig.<br />
<br />
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei zunächst nicht erneut vergeben. Diese frei gewordenen NodeIds werden bei Inklusionen in aufsteigender Reihenfolge erst wieder vergeben, nachdem die höchste verfügbare NodeId (232?) inkludiert wurde. Sie sind somit grundsätzlich nicht verloren.<br />
<br />
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===<br />
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls <code>get <name> model</code> ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading <code>modelConfig</code> enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading <code>modelConfig</code> den Wert "unknown". Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen "nur" Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.<br />
<br />
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:<br />
* Bei der Inklusion:<br />
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt<br />
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut <code>classes</code> ergänzt<br />
* Bei der Konfiguration:<br />
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.<br />
<br />
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.<br />
<br />
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===<br />
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:<br />
* openzwave_manufacturer_specific.xml<br />
* openzwave_deviceconfig.xml.gz<br />
* fhem_zwave_deviceconfig.xml.gz<br />
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. <br />
<br />
Die Datei "openzwave_manufacturer_specific.xml" enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls <code>get <name> model</code> im Reading <code>modelId</code> des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading <code>model</code> angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading <code>modelConfig</code> steht.<br />
<br />
Die Dateien "openzwave_deviceconfig.xml.gz" und "fhem_zwave_deviceconfig.xml.gz" enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der "fhem_zwave_deviceconfig.xml.gz" bevorzugt.<br />
<br />
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:<br />
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner<br />
# https://github.com/jeedom/plugin-openzwave/tree/beta/resources/openzwaved/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner <br />
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database<br />
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).<br />
<br />
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei "openzwave_manufacturer_specific.xml" im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.<br />
<br />
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===<br />
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:<br />
<br />
1. [[Backup]] der FHEM-Installation <br />
::'''und'''<br />
2. Backup des NVRAM des Controllers<br />
<br />
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.<br />
<br />
<br />
zu 2.) Backup des NVRAM des Controllers<br />
<br />
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).<br />
<br />
FHEM kann mit den ZWDongle-Befehlen <code>backupCreate</code> das NVRAM der Controller sichern und mit <code>backupRestore</code> zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.<br />
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})<br />
<br />
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen<br />
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===<br />
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.<br />
<br />
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul <code>cp2101.ko</code> geladen werden.<br />
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.<br />
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei <code>startfhem</code>.<br />
<br />
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.<br />
insmod $home/lib/cp2101.ko<br />
<br />
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.<br />
<br />
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===<br />
<br />
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:<br />
<br />
<code><nowiki>ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277</nowiki></code><br />
<br />
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. <br />
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:<br />
<br />
<code><nowiki>010a00130603320110259277</nowiki></code><br />
* 01: data to controller<br />
* 0a: length of msg<br />
* 00: ?<br />
* 13: ZW_SEND_DATA<br />
* 06: NodeId<br />
<br />
* 03: length of msg<br />
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)<br />
* 01: METER get scale command<br />
* 10: scale parameter<br />
<br />
* 25: send flags, explorer frames on<br />
* 92: callbackId (um ACK zu identifizieren)<br />
* 77: checkSum<br />
<br />
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|!]]<br />
[[Kategorie:868MHz]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave-Eurotronic_Spirit_Thermostat&diff=33943Z-Wave-Eurotronic Spirit Thermostat2020-09-16T14:20:55Z<p>Krikan: /* Inklusion */ -> autocreate verlinkt + unspezifischen Hinweis auf Attribut ignoreTypes entfernt (nicht Inklusion scheitert, sondern autocreate wird bei entsprechendem ignoreTypes Device-Anlage verboten)</p>
<hr />
<div>{{Infobox Hardware<br />
|Bild=platzHalter.png<br />
|Bildbeschreibung=todo<br />
|HWProtocol=Z-Wave Plus <br />
|HWType=Aktor, Empfänger und Sender, Sensor<br />
|HWCategory=Z-Wave<br />
|HWComm=Funk 868MHz<br />
|HWChannels=<br />
|HWVoltage=3V<br />
|HWPowerConsumption=<br />
|HWPoweredBy=2xBatterie AA Mignon<br />
|HWSize=<br />
|HWDeviceFHEM=[http://fhem.de/commandref.html#ZWave Z-Wave]<br />
|HWManufacturer=[https://eurotronic.org/ EUROTRONIC Technology GmbH]<br />
}}<br />
<br />
[[Z-Wave-Eurotronic Spirit Thermostat]] ist ein Heizungsthermostat mit Z-Wave 500er-Serie-Chip und Z-Wave Plus-Zertifizierung<br />
<br />
<br />
== Features ==<br />
* [[Z-Wave#FLIRS-Ger.C3.A4te|FLiRS-Gerät]]<br />
* siehe Handbuch<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
=== Inklusion === <br />
Der Aktor wird bei der Inklusion und aktiviertem [[Autocreate|autocreate]] vollautomatisch erkannt und definiert.<br />
<br />
Eine beispielhafte durch autocreate erzeugte Definition mit Hinweisen zu manuellen Ergänzungen findet sich unter [[#Definition|Definition]].<br />
<br />
=== Assoziation ===<br />
Der Controller muss zur korrekten Funktion in die Assoziationsgruppe 1 des Thermostats aufgenommen werden. Dies geschieht während der Inklusion durch FHEM automatisch durch Absetzen des folgenden Befehls:<br />
:<code>set <device> associationAdd 1 <Controller-NodeID></code><br />
<br />
Die erfolgreiche Ausführung des Befehls während der Inklusion durch Abfrage überprüfen:<br />
:<code>get <device> associationAll</code><br />
<br />
=== Konfiguration ===<br />
Konfigurationsanpassungen des Thermostates an eigene Wunschvorstellungen können anschließend vorgenommen werden.<br />
<br />
Abschließend ist es sinnvoll die Konfiguration zu Sicherungs- und Kontrollzwecken komplett abzurufen:<br />
:<code>get <device> configAll</code><br />
<br />
=== Befehle zur Steuerung ===<br />
{{Hinweis|Das Thermostat antwortet bei Einstellungen per Funk mit einem set-Befehl nicht mit einem Telegramm über die vorgenommene Änderung. Um die entsprechenden Readings aktuell zu halten und die erfolgreiche Ausführung des set-Befehls zu kontrollieren kann der zugehörige get-Befehl, der im Folgenden jeweils aufgeführt wird, verwendet werden. Bei Änderungen über die Bedienung am Gerät wird FHEM hingegen per Telegramm über die vorgenommene Änderung informiert.}}<br />
<br />
==== Betriebsmodi ====<br />
Die nachfolgende Tabelle enthält die Aktivierungsbefehle für alle Betriebsmodi des Thermostats. Weitere Modi (tmCooling, tmAuto, tmFan) werden vom Gerät -obwohl von FHEM angeboten- nicht unterstützt.<br />
<br />
{| class="wikitable"<br />
|-<br />
!Befehl!!Beschreibung<br />
|-<br />
|<code>set <device> tmOff</code>||Aus-Modus: Aus mit Regelung auf 6°C als Frostschutz<br />
|-<br />
|<code>set <device> tmHeating</code>||Komfortmodus: Regelung entsprechend [[#Komfortmodus|Solltemperatur Komfortmodus]]<br />
|-<br />
|<code>set <device> tmEnergySaveHeating</code>||Absenkmodus: Regelung entsprechend [[#Absenkmodus|Solltemperatur Absenkmodus]]<br />
|-<br />
|<code>set <device> tmFullPower</code>||Boostmodus: schnellstmögliche Raumaufheizung für maximal 5 Minuten<br />
|-<br />
|<code>set <device> tmManual</code>||Stellwertmodus (Manufacturer Specific): Ventilöffnung über Command Class SWITCH_MUTILEVEL einstellen<br />
|}<br />
<br />
Abfrage des eingestellten Betriebsmodus mit: <code>get <device> thermostatMode</code><br />
<br />
Steuerungsbefehle der Command Class SWITCH_MUTILEVEL ausschließlich für den Stellwertmodus (tmManual):<br />
<br />
{| class="wikitable"<br />
|-<br />
!Befehl im Stellwertmodus!!Beschreibung<br />
|-<br />
|<code>set <device> dim %</code>|| Ventilöffnung von 0% bis 100%, wobei 99 = 100%<br />
|-<br />
|<code>set <device> on</code>||letzten Ventilöffnungsgrad einstellen; sinnvoll beispielsweise nach Aus-Modus (tmOff)<br />
|-<br />
|<code>set <device> off</code>||kleinstmögliche Ventilöffnung; entspricht 0%<br />
|-<br />
|}<br />
<br />
Im Stellwertmodus erfolgt keine automatische Temperaturregelung durch das Spirit, sondern diese muss durch separate Logik (beispielsweise mit Hilfe von [[PID20 - Der PID-Regler|PID20]]) überwacht und geregelt werden. <br />
<br />
Der Öffnungsstand wird mit <code>get <device> swmStatus</code> abgefragt. Zudem kann mit der Parameternummer 6 der Command Class CONFIGURATION der automatische Versand des Ventilöffnungsgrades bei bestimmten Veränderungen eingeschaltet werden (configValveOpeningPercentageReport).<br />
<br />
==== Solltemperaturen ====<br />
Die Solltemperaturen in den Modi Komfortmodus (tmHeating) und Absenkmodus (tmEnergySaveHeating) lassen sich im Temperaturbereich 8°C bis 28 °C anpassen. Die Solltemperatur für den Absenkmodus lässt sich ausschließlich per Funk anpassen. Im Aus-Modus (tmOff) und Boostmodus (tmFullPower) ist keine Anpassung möglich.<br />
<br />
Die Einstellung der Solltemperaturen erfolgt mit dem set-Befehl <code>thermostatSetpointSet</code> oder dem funktionsgleichen set-Befehl <code>desired-temp</code>. Der letzte Befehl wurde zur Angleichung an andere Module eingeführt und im folgenden genutzt.<br />
<br />
===== Komfortmodus =====<br />
Die Solltemperatur auf NN.N °C wird mit folgendem Kurzbefehl eingestellt:<br />
<br />
<code>set <device> desired-temp NN.N</code><br />
<br />
Dies entspricht dem ausführlichen Befehl:<br />
<br />
<code>set <device> desired-temp NN.N C 1</code><br />
<br />
Die eingestellte Solltemperatur abrufen:<br />
<br />
<code>get <device> setpoint 1</code><br />
<br />
oder mit dem Kurzbefehl<br />
<br />
<code>get <device> setpoint</code><br />
<br />
===== Absenkmodus =====<br />
Die Solltemperatur auf NN.N °C wird mit folgendem Befehl eingestellt:<br />
<br />
<code>set <device> desired-temp NN.N C 11</code><br />
<br />
Die eingestellte Solltemperatur abrufen:<br />
<br />
<code>get <device> setpoint 11</code><br />
<br />
==== Kindersicherung ====<br />
{| class="wikitable"<br />
|-<br />
!Befehl!!Beschreibung<br />
|-<br />
|<code>set <device> protectionOff</code>||Ungeschützt - Bedienung am Gerät uneingeschränkt möglich<br />
|-<br />
|<code>set <device> protectionSeq</code>||Eingeschränkt - Bedienung am Gerät erst nach Entsperrung am Gerät (gleichzeitiges Drücken von {{Taste|+}} und {{Taste|-}} für 3 Sekunden)<br />
|-<br />
|<code>set <device> protectionOn</code>||Deaktiviert - Bedienung am Gerät deaktiviert und Steuerung ausschließlich per Funk<br />
|}<br />
<br />
Abfrage der eingestellten Kindersicherung mit: <code>get <device> protection</code><br />
<br />
=== Definition ===<br />
Ein Beispiel für ein Spirit FHEM-Device enthält der nachfolgende exemplarische Auszug aus der [[Konfiguration]]:<br />
define ZWave_THERMOSTAT_53 ZWave e345c452 53<br />
attr ZWave_THERMOSTAT_53 IODev ZWDongle<br />
attr ZWave_THERMOSTAT_53 classes ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY PROTECTION SENSOR_MULTILEVEL SWITCH_MULTILEVEL THERMOSTAT_MODE THERMOSTAT_SETPOINT BATTERY <br />
CONFIGURATION ALARM POWERLEVEL SECURITY SECURITY_S2 TRANSPORT_SERVICE SUPERVISION FIRMWARE_UPDATE_MD<br />
attr ZWave_THERMOSTAT_53 extendedAlarmReadings 1<br />
attr ZWave_THERMOSTAT_53 room ZWave<br />
attr ZWave_THERMOSTAT_53 stateFormat temperature<br />
attr ZWave_THERMOSTAT_53 vclasses ALARM:8 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:1 POWERLEVEL:1 PROTECTION:1 SECURITY:1 SECURITY_S2:1 <br />
SENSOR_MULTILEVEL:5 SUPERVISION:1 SWITCH_MULTILEVEL:1 THERMOSTAT_MODE:3 THERMOSTAT_SETPOINT:3 TRANSPORT_SERVICE:2 VERSION:2 ZWAVEPLUS_INFO:2<br />
Im vorstehenden Beispiel wurde manuell das Attribut <code>extendedAlarmReadings</code> auf <code>1</code> gesetzt, damit für die diversen Alarmarten einfacher unterscheidbare Events erzeugt und separate Readings angelegt werden. Zudem wurde manuell das Attribut <code>stateFormat</code> angelegt. Sämliche anderen Angaben der Defintion nebst Attributen wurden von FHEM bei der Inklusion automatisch durch autocreate angelegt.<br />
<br />
=== Logbeispiel ===<br />
2018-10-19_18:04:14 ZWave_THERMOSTAT_53 setpointTemp: 18.0 C energySaveHeating<br />
2018-10-19_18:04:34 ZWave_THERMOSTAT_53 setpointTemp: 22.0 C heating<br />
2018-10-19_18:04:54 ZWave_THERMOSTAT_53 thermostatMode: heating<br />
2018-10-19_18:05:03 ZWave_THERMOSTAT_53 thermostatSetpointSupported: heating energySaveHeating<br />
2018-10-19_18:05:13 ZWave_THERMOSTAT_53 version: Lib 3 Prot 4.61 App 0.16 HW 49 FWCounter 1 FW 0.10<br />
2018-10-19_18:05:24 ZWave_THERMOSTAT_53 zwavePlusInfo: version:01 role:SleepingListeningSlave node:Z-Wave+Node installerIcon:1200 userIcon:1200<br />
2018-10-19_18:06:32 ZWave_THERMOSTAT_53 alarm_System: Event cleared: unknown event 0, notificationIsOn<br />
2018-10-19_18:08:02 ZWave_THERMOSTAT_53 battery: 100 %<br />
2018-10-19_18:08:02 ZWave_THERMOSTAT_53 batteryState: ok<br />
2018-10-19_18:08:02 ZWave_THERMOSTAT_53 batteryPercent: 100<br />
2018-10-19_18:10:10 ZWave_THERMOSTAT_53 temperature: 23.27 C<br />
2018-10-19_18:18:10 ZWave_THERMOSTAT_53 temperature: 22.73 C<br />
2018-10-19_18:30:10 ZWave_THERMOSTAT_53 temperature: 22.29 C<br />
2018-10-19_19:00:17 ZWave_THERMOSTAT_53 thermostatMode: energySaveHeating<br />
2018-10-19_19:00:55 ZWave_THERMOSTAT_53 thermostatMode: off<br />
2018-10-19_19:06:10 ZWave_THERMOSTAT_53 temperature: 21.75 C<br />
2018-10-19_23:22:18 ZWave_THERMOSTAT_53 thermostatMode: energySaveHeating<br />
2018-10-19_23:27:31 ZWave_THERMOSTAT_53 set_tmHeating<br />
2018-10-19_23:27:32 ZWave_THERMOSTAT_53 tmHeating<br />
<br />
== Links ==<br />
* [https://products.z-wavealliance.org/products/2543 Eintrag in http://products.z-wavealliance.org mit Handbuch und mehr]<br />
* [https://eurotronic.org/wp-content/uploads/2018/08/Spirit_Z-Wave_BAL_web_DE_view_V5.pdf deutsches Handbuch auf Hersteller-Webseite]<br />
* Nutzung eines direkt assozierten Fenstersensors zur Fenster-Offen-Erkennung: {{Link2Forum|Topic=92206}}<br />
* {{Link2Forum|Topic=77598|Message=701397|LinkText=Temperaturwerte eines Nicht-ZWave-Gerätes an das Spirit zur Regelung übermitteln}}<br />
* {{Link2Forum|Topic=77598|Message=854445|LinkText=Nutzung des Modul PID20 zur Temperaturregelung im Stellwertmodus (tmManual)}}<br />
<br />
[[Kategorie:Z-Wave Components|Sensor]]<br />
[[Kategorie:Heizungsventile]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Fremdger%C3%A4te_ignorieren&diff=33927Fremdgeräte ignorieren2020-09-14T15:41:13Z<p>Krikan: ignoreTypes - Attribut-Erläuterung -> Namen und nicht Type</p>
<hr />
<div><br />
'''Frage:''' Seit kurzem sehe ich in der FHEM-Weboberfläche Geräte bzw. Devices (Sensoren / Aktoren), die nicht mir gehören und die ich auch nicht ansprechen kann. Lösche ich die Devices aus meiner [[Konfiguration]], dann tauchen Sie nach kurzer Zeit wieder auf. '''Wie''' kann ich dafür sorgen, dass diese Geräte '''dauerhaft''' aus meiner FHEM-Konfiguration verschwinden?<br />
<br />
'''Antwort:''' Es gibt 3 Möglichkeiten ...<br />
<br />
# Sie setzen bei diesen Devices das Attribut <code>ignore</code> auf den Wert 1 (Befehls-Eingabefeld: <code><nowiki>attr <Device-Name> ignore 1</nowiki></code>). Wahlweise kann man alle anderen Attribute des Devices löschen; dies ist aber nicht zwingend. '''Hinweis:''' Das verhindert natürlich nicht, dass, wenn ihr Nachbar "aufrüstet", nicht andere Geräte neu in ihrem FHEM auftauchen.<br />
# Sie schalten [[Autocreate|autocreate]] in ihrer Konfiguration ab und löschen die fremden Devices. Das wollen aber wohl die Meisten nicht, denn ''autocreate'' bietet viele Vorteile und sollte nur mit genauer Kenntnis der Auswirkungen abgeschaltet werden.<br />
# Sie fügen der Definition von [[Autocreate|autocreate]] das Attribut <code><nowiki>ignoreTypes</nowiki></code> mit dem entsprechenden Regex für den Device-Namen hinzu. Dann werden alle neu erkannten Geräte deren Device-Name dem Regex entspricht nicht automatisch angelegt.<br />
<br />
[[Kategorie:FAQ]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Autocreate&diff=33926Autocreate2020-09-14T15:35:53Z<p>Krikan: /* Attribute */ -> ignoreTypes benötigt umschließende (..) bei mehreren per | verknüpften Ausdrücken, damit bei allen allen Ausdrücken (und nicht nur 1.) ab Beginn geprüft wird</p>
<hr />
<div>{{SEITENTITEL:autocreate}} <br />
<br />
{{Infobox Modul<br />
|ModPurpose=Aktivierung des automatischen Anlegens von neuen Geräten<br />
|ModType=h<br />
|ModCmdRef=autocreate<br />
|ModForumArea=Automatisierung<br />
|ModTechName=98_autocreate.pm<br />
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])<br />
}}<br />
<br />
Bei aktiviertem [[autocreate]] werden neue Geräte von Fhem automatisch angelegt, sobald eine entsprechende Nachricht (Funktelegramm) empfangen wird. Geräte, die ''abgefragt'' werden (Polling), wie z.B. EMEM/EMWZ, werden nicht automatisch angelegt.<br />
<br />
== Attribute ==<br />
Die vollständige Liste der unterstützten Attribute ist in der Dokumentation (siehe Infobox) enthalten. Detailliertere Informationen für ausgewählte Attribute sind in den folgenden Abschnitten verfügbar.<br />
<br />
;autosave<br />
:Sofern dieses Attribut auf den Wert "1" gesetzt ist <br />
::<code>attr ''autocreate'' autosave 1</code><br />
:(das ist auch der Standardwert, wenn das Attribut nicht gesetzt ist), wird nach dem automatischen Anlegen eines Gerätes die [[Konfiguration]] automatisch abgespeichert (also implizit ein ''save'' Befehl ausgeführt). <br />
:Das neu (08/2015, siehe dazu auch diesen {{Link2Forum|Topic=39985|Message=325097|LinkText=Forenbeitrag}}) eingeführte ''global'' Attribut ''autosave'' erfüllt den gleichen Zweck. Derzeit kann das globale Attribut noch durch das ''autocreate'' Attribut überschrieben werden, das lokale Attribut sollte aber nicht mehr benutzt werden und könnte in einer späteren Version entfallen.<br />
<br />
;ignoreTypes<br />
{{Randnotiz|RNTyp=y|RNText=In {{Link2Forum|Topic=46872|LinkText=diesem Forenthread}} wird etwas genauer dargestellt, auf was sich die spezifizierten ''ignoreTypes'' beziehen. Eigentlich ist der Name dieses Attributs irreführend, da es um den Präfix des generierten Gerätenamens geht und nicht um den TYPE/Modulnamen.}}<br />
:Spezifikation von Geräten, die von der automatischen Generierung ausgenommen werden sollen:<br />
::<code>attr ''autocreate'' ignoreTypes ''(NamePrefix.*''[|''NamePrefix2.*''|...])</code><br />
:Reguläre Ausdrücke sind in der Spezifikation erlaubt, mit der Spezifikation von <code>(CUL_WS.*|FS20.*)</code> würden keine neuen Geräte mehr angelegt, deren generierter Name mit ''CUL_WS'' oder mit ''FS20'' beginnt. Viele Module generieren Gerätenamen, die mit dem Modulnamen (also z.B. ''FS20'') beginnen, im Einzelfall kann aber eine andere Vorgehensweise implementiert sein. Dann muss das Muster der erzeugten Namen identifiziert und der reguläre Ausdruck entsprechend angepasst werden.</div>Krikanhttp://wiki.fhem.de/w/index.php?title=MSwitch&diff=33578MSwitch2020-07-20T17:23:39Z<p>Krikan: Hinweis auf Entfernung des Moduls aus FHEM-SVN -> inoffizielles Modul</p>
<hr />
<div><br />
{{Hinweis|Das Modul wurde vom Modulautor aus dem FHEM-SVN entfernt. Download des Moduls unter https://github.com/Byte009/Fhem-MSwitch. Support erfolgt laut github-Seite derzeit über Whatsapp.}}<br />
<br />
Achtung: Das Wiki entspricht nicht mehr der aktuellen Modulversion ( V3.1 )<br />
<br />
Hilfe zu allen Befehlen , Einstellungen etc. ist direkt über das Frontend eines MSwitch-Devices verfügbar.<br />
<br />
Eine Aktualisierung des Wikis erfolgt in den kommenden Tagen.<br />
<br />
[[MSwitch]] ist ein Hilfsmodul, welches das Event- und/oder zeitgesteuerte Schalten von mehreren Devices oder das Ausführen von benutzerdefinierten Befehlssequenzen erlaubt. Hauptmerkmale sind die fast vollständige und die sehr umfangreiche Konfigurierbarkeit über das Webinterface.<br />
<br />
{{Infobox Modul<br />
|ModPurpose=MSwitch<br />
|ModType=x<br />
|ModForumArea=Automatisierung<br />
|ModTechName=98_MSwitch.pm<br />
|ModOwner=Byte09 (aus dem Forum abgemeldet)}}<br />
<br />
{{Randnotiz | RNTyp=y | RNText=Byte09: ''Die Grundidee zu MSwitch kam mir, weil ich bei der Arbeit mit FHEM für meinen Geschmack zu viele Module für die verschiedenen Aufgaben brauchte - zu allem Überfluss alle mit unterschiedlicher Syntax. Zwar ist DOIF hiervon ausgenommen (da hiermit wohl auch fast jede Aufgabe lösbar ist), aber ich konnte mich leider nicht daran gewöhnen und somit wurde jedes DOIF für mich zu einem echten Projekt. Was ich wollte war ein Modul, mit dem ich alles erledigen kann. Daher entschloss ich mich schon nach fast einem knappen Jahr FHEM-Nutzung mein eigenes Modul zu schreiben, welches diese Anforderung erfüllt. MSwitch beinhaltet die Funktionalität aller bisherigen Hilfsmodule wie z.B. Notify, Doif, Watchdog, Dummy,( ab Modulversion 2.2 auch Sequenz ) es lassen sich all deren Funktionen umsetzen.''<br />
<br />
''MSwitch wird permanent - vorrangig nach meinen Bedürfnissen - weiterentwickelt, gerne nehme ich aber auch Anregungen von anderen Nutzern auf.''<br />
<br />
[[Datei:1-2-3-4.png|rahmenlos]]<br />
}}<br />
<br />
<br />
<br />
== Grundsätzliche Überlegungen ==<br />
{{Randnotiz | RNTyp=y | RNText=Will man mehrere Geräte als gleichzeitige Auslöser betreiben, so muss das Device GLOBAL gewählt und die entsprechenden Geräte angegeben werden (dies erzeugt höhere Systemlast und ist nur im Expert-Modus verfügbar).}} <br />
<br />
1. Welches Gerät soll auslösen oder zu welcher Zeit soll eine Auslösung erfolgen? <br />
[[Datei:MSwitch basic.svg|mini|240px|Stark vereinfachtes Struktogramm]]<br />
Im Rahmen 1 des Webinterfaces lässt sich der Trigger (Auslöser) bzw. eine Zeitabhängigkeit konfigurieren:<br />
<br />
** jedes Event aus dem Eventmonitor,<br />
** triggerunabhängige Zeiten, <br />
** triggerunabhängige Zufallszeiten,<br />
** triggerunabhängige Intervalle,<br />
** Kombinationen aus Triggern und Zeiten.<br />
<br />
2. Welche Bedingungen sollen bei Auslösung erfüllt sein?<br />
: Ersten Rahmen: Wenn diese Bedingungen erfüllt sind, werden Kommandos ausgelöst. Die Bedingungen werden im zweiten Teil des Webinterfaces eingegeben. Dabei unterscheidet das Modul zwischen zwei Kommando-Kanälen (cmd1 und cmd2) und den dazugehörigen Geräten.<br />
<br />
3. Welche Kommandos sollen ausgelöst werden?<br />
: Im vierten Rahmen des Webinterfaces werden dann die konkreten Kommandos eingegeben. Man wählt dabei aus einer Liste wie auf der Geräteseite Kommandos aus. FreeCmd erlaubt geräteunabhängige Kommandos, beispielsweise reinen Perl-Code.<br />
<br />
4. Welche weiteren Bedingungen sollen noch gelten?<br />
: Zusätzlich pro Gerät eine oder mehrere Instanzen des vierten Rahmens:<br />
** ereignisgesteuerte Bedingungen,<br />
** zeitgesteuerte Bedingungen,<br />
** Verzögerungen,<br />
** Wiederholungen etc.<br />
<br />
==Definition und Einrichtung =={{Randnotiz | RNTyp=y | RNText=Alle relevante Einstellungen werden in Readings und/oder Hashes gespeichert. Daher stehen relevanten Daten ''nicht'' in der fhem.cfg! Vielmehr finden sich diese Daten in der Datei fhem.save. Die Speicherung erfolgt durch den Befehl Fhemsave.<br />
}}<br />
Das MSwitch-Modul ist ohne weitere Voraussetzungen nutzbar und wird in der aktuellen Version über FHEM Update verteilt. MSwitch kann mehrere Devices gleichzeitig schalten. Diese Schaltungen befinden sich in den zwei möglichen Zweigen entsprechend der Kommandos cmd1 und cmd2. Die einzelnen Devices jedes Zweiges können mit weiteren Schaltbedingungen versehen werden (zeit- oder ereignisgesteuert). Das define eines MSwitch Devices generiert lediglich eine 'leere Hülle':<br />
:<code>define <name> MSwitch</code><br />
Es wird ein leeres Device angelegt, das dann komplett über das Webinterface konfigurierbar ist.<br />
<br />
== Webinterface ==<br />
MSwitch wird über das Webinterface eingerichtet. Es besteht aus vier Teilen. Änderungen in einem Abschnitt müssen auch dort gespeichert werden, bevor ein weiterer Teil bearbeitet wird, sonst gehen Änderungen verloren.{{Randnotiz | RNTyp=y | RNText=<code>attr <name> MSwitch_Help 1</code> führt dazu, dass im Modul selber eine sehr umfangreiche kontextsensitive Hilfe in Form von Fragezeichensymbolen angezeigt wird.}} <br />
<br />
[[Datei:1-2-3-4.png|rahmenlos|Webinterface]]<br />
=== Rahmen 1: Trigger Device und Trigger Time ===<br />
==== Trigger Device ====<br />
{{Randnotiz | RNTyp=y | RNText=Wenn das Attribut 'MSwitch_Expert' gesetzt ist kann man 'GLOBAL' auswählen. Dann werden '''alle''' von FHEM generierten Events durch das MSwitch Device weiterverarbeitet, eine weitere Begrenzung kann (und sollte) dann in einem folgenden Eingabefeld erfolgen, um die Systemlast zu reduzieren.<br />
==== Trigger Device Global Whitelist ====<br />
Damit kann die Liste eingehender Events weiter eingeschränkt werden. Sobald mindestens ein Eintrag vorhanden sind, werden nur noch Events der hier benannten Devices verarbeitet. Zulässig ind Devicenamen und DeviceTypen (z.B. TYPE=FS20). Mehrere Angaben sind durch Komma zu trennen.<br />
<br />
Im unten gezeigten Beispiel wurde GLOBAL gewählt, weil nicht ein einzelnes Device, sondern eine Kombination aus zwei Geräten auslösen soll. Es werden alle Ereignisse betrachtet, wobei die Whitelist dann auf die Devices Schlafzimmer (ein Temperaturmessgerät) und Schlafzimmerfenster (ein [[HM-Sec-SCo Tür-Fensterkontakt, optisch|optischer Kontakt]]) einschränkt.}}In diesem Feld wird das Device per Dropdownfeld gewählt, dessen Events eine Aktion auslösen sollen.<br />
<br />
[[Datei:MSwitchWebinterface1.png|400px|thumb|right|Webinterface, oben]]<br />
<br />
==== Trigger Time ==== <br />
Trigger time bietet die Möglichkeit einer zeitabhängigen Steuerung. Dazu wird in die "at"-Zeile ein Termin in der Form [STUNDEN:MINUTEN|TAGE] eingetragen. Die Tage werden ab Montag von 1-7 gezählt. Mehrere Zeitvorgaben können direkt hintereinander geschrieben werden. Beispiele:<br />
* <code>[17:00|1][18:30|23]</code> löst montags um 17 Uhr und dienstags sowie mittwochs um 18:30 Uhr aus.<br />
* <code>[00:10*20:00-21:00]</code> führt den Schaltbefehl von 20 Uhr bis 21 Uhr alle 10 Minuten aus.<br />
* <code>[?20:00-21:00]</code> schaltet zu einem zufälligen Zeitpunkt zwischen 20 und 21 Uhr einmalig. <br />
* <code>[20:00|$we]</code> nur am Wochenende um 20:00 wird geschaltet.<br />
<br />
==== Trigger Conditions ====<br />
<br />
Optionale zusätzliche Bedingungen in diesem Feld gelten nur für auslösende Device Trigger. Trigger Times haben keinen Einfluss, es sei denn, das Attribut MSwitch_Condition_Time ist gesetzt. Man kann mit AND / OR verknüpfte Bedingungen für die Auslösung in an DOIF angelehnter Syntax angeben. Leere Felder werden ignoriert. Werden Readings mit Strings wie 'on' oder 'off' abgefragt, ist statt des Gleichheitszeichens "=" der Operator "eq" zu nutzen, der String muss in Anführungszeichen "" gesetzt werden. Beispiele:{{Randnotiz | RNTyp=y | RNText=Überschreitet die Zeitangabe die Tagesgrenze (24:00 Uhr), so gelten die angegebenen Tage noch bis zum Ende der angegebenen Schaltzeit (beispielsweise würde dann am Mittwoch noch der Schaltvorgang erfolgen, obwohl als Tagesvorgabe Dienstag gesetzt wurde).}} <br />
* <code>[19:10-23:00] AND [Devicename:Reading] = 10</code> beide Bedingungen müssen erfüllt sein.<br />
* <code>[19:10-23:00] OR [Devicename:Reading] eq "on"</code> eine der Bedingungen muss erfüllt sein.<br />
* <code>[10:00-11:00|13]</code> schaltet Montag und Mittwoch zwischen 10 Uhr und 11 Uhr.<br />
* <code>[{ sunset() }-23:00]</code> von Sonnenuntergang bis 23:00 Uhr.<br />
* <code>{ !$we }</code> löst den Schaltvorgang nur Werktagen an aus.<br />
* <code>{ $we }</code> löst den Schaltvorgang nur an Wochenenden, Feiertagen aus.<br />
Es ist auf korrekte Eingabe der Leerzeichen zu achten.<br />
<br />
=== Rahmen 2: Trigger Details ===<br />
[[Datei:MSwitchWebinterface2.png|600px|thumb|right|Webinterface, Mitte]]<br />
Der Inhalt des zweiten Rahmens wird mit dem gewählten Trigger aus dem ersten Rahmen initialisiert. Events können zugeordnet werden. Im Beispiel wird cmd1 ausgelöst, wenn das Fenster offen ist. Cmd2 wird bei Temperaturunterschreitung ausgelöst.<br />
<br />
==== execute ====<br />
Diese vier Zeilen legen fest, welches ankommende Event welchen Befehlszweig auslösen soll. Die Event-Drop-Down-Liste enthält alle empfangenen Events dieses Devices. Fehlende Events können manuell hinzugefügt werden.<br />
<br />
* switch <MSwitch> on + execute 'cmd1' - MSwitch Statusänderung auf 'on'; cmd1 soll ausgeführt werden<br />
* switch <MSwitch> off + execute 'cmd2' - MSwitch Statusänderung auf 'off'; cmd2 soll ausgeführt werden; <br />
* execute 'cmd1' only - keine Statusänderung; cmd1 soll ausgeführt werden<br />
* execute 'cmd2' only - keine Statusänderung; cmd2 soll ausgeführt werden<br />
<br />
==== Save incomming events ====<br />
Alle ankommenden Events der konfigurierten Geräte werden für die Dropdownlisten gespeichert. Nach erfolgreicher Konfiguration sollte diese Option entfernt werden, um die Datenmenge zu reduzieren. Falls das Device Events während der Konfiguration nicht liefert, können sie manuell als kommagetrennte Liste hinzugefügt werden.<br />
<br />
==== add event ====<br />
{{Randnotiz | RNTyp=y | RNText=Falls auf 'GLOBALE' Events getriggert wird, muss das auslösende Device vorangestellt werden:<br />
- * - alle auftretende Events des entsprechenden Device<br />
- device:reading:wert (z.B. device:state:on ) - nur für das Event "device:state:on"<br />
- device:reading:* (z.B. device:state:* ) - Events "device:state:(on,off,etc.)<br />
- device:reading:(wert1/wert2/wert3) (z.b. device:state:(left/right) - Events "device:state:left" oder "devicestate:right" etc.<br />
<br />
Das Device kann auch hier gegen "*" ersetzt werden (*:state:on). In diesem Fall erfolgt eine Aktion auf alle Events die z.B. "state:on" enthalten, egal welches Device triggert.<br />
}} <br />
* * - alle auftretende Events des entsprechenden Device<br />
* reading:wert (z.B. state:on ) - nur auf das Event "state:on"<br />
* reading:* (z.B. state:* ) - Events "state:(on,off,etc.)<br />
* reading:(wert1/wert2/wert3) (z.b. state:(left/right) - Events "state:left" oder "state:right" etc.<br />
==== test event ====<br />
Stehen Events zur Auswahl, kann die Konfiguration getestet werden. Durch Klick wird das Event simuliert und die dafür definierte Aktion ausgelöst. <br />
<br />
==== apply filter to saved events ====<br />
Beschreibung folgt???<br />
<br />
==== clear saved event ====<br />
Es werden die nicht als Trigger wirkenden Events aus der Liste gelöscht.<br />
<br />
=== Rahmen 3: Affected devices ===<br />
{{Randnotiz | RNTyp=y | RNText=In dem Auswahlfeld werden alle Devices angeboten, die eines der folgenden Kriterien erfüllen:<br />
# Die Abfrage "set Device ?" liefert einen Befehlssatz<br />
# Das Attribut 'webcmd' des Devices enthält Einträge<br />
# Das Attribut 'MSwitch_Activate_MSwitchcmds' ist aktiviert und das Attribut 'MSwitchcmds' des betreffenden Devices enthält einen Befehlssatz<br />
<br />
Einzige Ausnahme ist der erste Listeneintrag 'FreeCMD'. Die Auswahl dieses Eintrages bietet später die Möglichkeit Befehle auszuführen, die nicht an ein Device gebunden sind. Der Code in einem FreeCmd kann entweder reiner FHEM-Code sein ( set device on ) oder reiner Perl-Code. Wenn es sich um reinen Perl-Code handelt, ist dieser in geschweifte Klammen zu setzen { Perl-Code }.<br />
<br />
}} <br />
[[Datei:MSwitch_Screen_5.png|mini|rechts|affected devices]]<br />
Auswahl der Devices, die auf die oben konfigurierten Events reagieren sollen. Um unbeabsichtigte Änderungen zu vermeiden ist die direkte Mehrfachauswahl gesperrt.<br />
<br />
=== Rahmen 4: Device Actions ===<br />
<br />
[[Datei:Webinterface3.png|mini|rechts|device_actions]]<br />
Die auszuführenden Aktionen der im dritten Rahmen gewählten Geräte. Leere Felder werden ignoriert.<br />
<br />
==== MSwitch cmd1/cmd2: ====<br />
{{Randnotiz | RNTyp=y | RNText=Im Beispiel befindet sich ein FreeCmd, mit dem beliebige Kommandos eingetragen werden können. Im abgebildeten Beispiel ist dies sogar selbst definierter Perl-Code (die Funktion DebianMail sendet eine Mail).<br />
}} <br />
Man wählt den gewünschten Befehl aus den gespeicherten verfügbaren Möglichkeiten des betreffenden Device aus. <br />
<br />
* Im Sonderfall FreeCmd wird der Befehl als String eingegeben. <br />
* Das Attribut MSwitch_Extensions ergänzt die Schaltoption 'MSwitchToggle' in der Liste, um die Toggle-Funktion bei Geräten die sie nicht von Haus aus anbieten nachzurüsten. <br />
<br />
{{Randnotiz | RNTyp=y | RNText=Je nach Attribut-Einstellungen werden Einträge aus entsprechenden 'webcmds" oder 'MSwitchcmds' einbezogen. In Abhängigkeit des Befehls stehen unter Umständen weitere Felder oder Widgets zur Verfügung.<br />
).<br />
}}<br />
<br />
==== cmd1/cmd2 condition ====<br />
<br />
{{Randnotiz | RNTyp=y | RNText=Bei der Abfrage von Readings nach Strings (on, off, etc.) ist statt "=" "eq" zu nutzen und der String muss in "x" gesetzt werden. Es ist auf korrekte Eingabe der Leerzeichen zu achten.<br />
'''Achtung:''' Bei Anwendung der geschweiften Klammern zur Einleitung eines Perl Ausdrucks ist unbedingt auf die Leerzeichen hinter und vor der Klammer zu achten.<br />
<br />
Überschreitet die Zeitangabe die Tagesgrenze (24:00 Uhr), so gelten die angegebenen Tage noch bis zum Ende der angegebenen Schaltzeit (zum Beispiel würde auch am Mittwoch noch der Schaltvorgang erfolgen, wenn als Tagesvorgabe Dienstag gesetzt wurde).<br />
}} <br />
Die Ausführung der Befehle kann '''pro gewählten Gerät''' analog Rahmen 1 von weiteren Bedingungen abhängig gemacht werden. Es gelten die gleichen Regeln und Beispiele wie im 'Rahmen 1 Trigger Conditions'. Sie können sinngemäß übernommen werden.<br />
<br />
Die Variable <code>$EVENT</code> enthält den auslösenden Trigger. Wenn unter 'Rahmen 1 Trigger Conditions' ein Wildcard verwendet wurde, kann nun feingefiltert werden, indem das konkrete Ereignis angegeben wird. <br />
<br />
Beispiel: <code>[$EVENT] eq "state:on"</code> würde den Kommandozweig nur dann ausführen, wenn der auslösende Trigger "state:on" war.<br />
<br />
==== cmd1/cmd2 delay ====<br />
Ein Eintrag in diesem Feld führt zur verzögerten Ausführung des Befehls nach Eintreffen des Events. Dabei kann der Befehl ohne weitere Prüfung der Bedingung ausgelöst werden. Es ist aber auch möglich, dass die Bedingung bei Ausführung erneut geprüft wird. Die Zeitangabe muss im Format hh:mm:ss vorliegen. Einzelheiten enthält auch das Funktions-Struktogramm.<br />
<br />
Statt einer direkten Zeitangabe kann hier auch auf eine verwiesen werden, indem in der Form [NAME.reading] ein Reading eines Devices wie z.B. [dummy.state] angegeben wird.<br />
<br />
==== add action ====<br />
Mit diesem Button kann ein weiterer Rahmen 4 als Rahmen 4.1 für das gleiche Device angelegt werden, um z.B. einen weiteren Befehl gegebenenfalls zeitverzögert auszuführen.<br />
<br />
==== delete this action ====<br />
Mit diesem Button wird der gewählte Rahmen 4 für das Device gelöscht.<br />
<br />
==== check condition ====<br />
[[Datei:MSwitch_Screen_7.png|mini|rechts|check]]<br />
Die angegebenen 'conditions' werden in Zusammenhang mit ggf. ausgewählten Devices auf Syntax und Ergebnis geprüft. Es erfolgt eine Ausgabe des Prüfungsergebnisses.<br />
<br />
==== Repeat und Repeatdelay ====<br />
<br />
Die Felder 'Repeats', 'Repeatdelay in s' und 'priority' stehen zur Verfügung, wenn das Attribut MSwitch_Expert gesetzt wurde. Diese bewirken eine n-fache Wiederholung des gesetzten Befehls mit m Sekunden Verzögerung. Das Auswahlfeld 'priority' erscheint bei jedem 'affectes device'. So kann die Reihenfolge der Befehlsabarbeitung beeinflusst werden.<br />
<br />
== Erweiterte Konfiguration ==<br />
<br />
=== Set-Befehle ===<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! class="unsortable" | Beschreibung <br />
|-<br />
|set active||Setzt das MSwitch-Device in den Status 'active'.<br />
|-<br />
|set inactive||Setzt das Device in den Status 'inactive'. Es werden keine Befehle mehr ausgeführt. Dieser Status entspricht dem Attribut 'disable', ist aber nicht mit dem roten Fragezeichen (fhem save) verbunden.<br />
|-<br />
|set on<nowiki>|</nowiki>off [<parameter>]||Setzt das Device in den Status 'on' oder 'off'. Alle Befehle der 'on/off-Zweige' werden ausgeführt. Optional kann den Befehlen 'on' und 'off' ein weiterer Parameter mit übergeben werden. Dieser wird im Reading 'Parameter' hinterlegt und es kann sofort in 'Freecmds' oder 'Conditions' darauf zugegriffen werden.<br />
|-<br />
|set reload_timer||Alle gesetzten Timer werden gelöscht und neu berechnet.<br />
|-<br />
|set change_renamed <oldname> <newname>||Sollten sich Devicenammen im ausführenden Teil geändert habe (affected Devices, Conditions, etc.) so kann das MSwitch mit diesem Befehl angepasst werden, ohne alle Einstellungen neu einstellen zu müssen.<br />
|-<br />
|set exec_cmd1 <nowiki>|</nowiki> set exec_cmd1 ID [<ID>]||Bewirkt das sofortige Ausführen des entsprechenden Befehlszweiges. Bei Angabe einer ID werden nur die Befehle mit der entsprechenden ID ausgeführt.<br />
|-<br />
|set MSwitch_backup||Erstellt eine Backup-Datei aller MSwitch Devices unter ./fhem/MSwitch_backup.cfg. Daten dieser Datei können im Bedarfsfall für einzelne oder gleichzeitig alle MSwitch Devices wieder zurückgespielt (hergestellt) werden.<br />
|-<br />
|set del_delays <nowiki>|</nowiki> set exec_cmd1 ID [<ID>]||Löscht alle anstehenden, verzögerten Befehle (delays).<br />
|-<br />
|set reset_cmd_count: 1<nowiki>|</nowiki>2||Löscht das entsprechende EVT_CMD_COUNT - Reading; entspricht damit einer Rückstellung auf '0'.<br />
|-<br />
|set fakeevent [<device>]:<reading>:<arg>||Beispiel: <device> fakeevent state:on<br><br />
Das MSwitch Device reagiert so, als wäre statt des internen "fakes-Befehls" ohne FHEM-Systembeeinflussung dieses Event tatsächlich vom triggernden Gerät generiert worden. <br />
<br />
Der Name (<device>) muss bei GLOBALEN Triggern mit angegeben werden, sonst wird das Device automatisch gesetzt.<br />
Um z.B. einen Watchdog zu realisieren ist es eventuell nötig, dass sich das MSwitch Device mit einem bestimmten Event selber neu triggert - ggf. mit einem entsprechenden Delay Affected Device. Bei dem Einsatz dieser Möglichkeit sollte das Attribut 'MSwitch_Safemode' UNBEDINGT aktiviert sein, da 'Experimente' hier schnell in einer Endlosschleife enden können, die nur durch ein Reboot unterbrochen werden kann. Möglicherweise steht dieser Befehl zukünftig nur noch zur Verfügung, wenn Safemode aktiviert ist.<br />
|}<br />
<br />
=== Get-Befehle ===<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! class="unsortable" | Beschreibung <br />
|-<br />
|get show_timer [<show><delete>]||<br />
;Show<br />
:Zeigt alle anstehenden (gesetzten) Timer des Devices, die aus zeitabhängigen oder verzögerten Schaltbefehlen resultieren.<br />
;Delete<br />
:Löscht alle anstehenden (gesetzten) Timer des Devices, die aus zeitabhängigen oder verzögerten Schaltbefehlen resultieren. Schaltbefehle basierend auf rein zeitabhängigen Angaben werden neu berechnet und gesetzt.<br />
|-<br />
|get restore_MSwitch_data [<this_device><nowiki>|</nowiki><all_devices>]||<br />
;this_device<br />
:Stellt die Daten des Devices aus der Backupdatei wieder her, sofern diese in der Backupdatei gefunden werden (gesucht wird hier nach dem Namen des Devices).<br />
;all_devices<br />
:Stellt die Daten aller MSwitch Devices wieder her, sofern diese in der Backupdatei vorhanden sind. Diese Aktion kann einige Zeit in Anspruch nehmen und wird daher im Hintergrund (nonblocking) ausgeführt. Nach Beendigung erfolgt eine Benachrichtigung.<br />
Die Devices sind nach einem Restore funktionsfähig. Empfohlen wird ein Neustart von FHEM..<br />
|-<br />
|get_config||Zeigt die Konfigurationsdatei des MSwitchdevices an; diese kann in dem Fenster editiert werden. Das sollte nur von erfahrenen Usern getan werden! Im Normalfall sollte das Device nur über die Weboberfläche konfiguriert werden und eine falsche Konfiguration kann hier zu einem FHEM Absturz führen.<br />
|-<br />
|get_support_info||Öffnet ein Fenster mit einer formatierten Ansicht aller Einstellungen des Devices. Bei Supportanfragen sollte dieses immer mit geposted werden.<br />
|-<br />
|get_MSwitch_preconf||Lädt vorkonfigurierte MSwitch-Devices. Diese Option ist nur dann vorhanden, wenn das Aktualisieren dieser vorkonfigurierten Devices im FHEM Update aktiviert ist.<br />
Diese kann durch ein einmaliges Update erfolgen mit:<br />
:<code>update all https://raw.githubusercontent.com/Byte009/MSwitch_Addons/master/controls_mswitchaddons.txt</code><br />
|}<br />
<br />
=== Attribute ===<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! class="unsortable" | Beschreibung <br />
|-<br />
|MSwitch_Debug <0<nowiki>|</nowiki>1<nowiki>|</nowiki>2<nowiki>|</nowiki>3<nowiki>|</nowiki>4>||<br />
0 - Abgeschaltet<br><br />
1 - Schaltet Felder zum testen der Conditionstrings an<br><br />
2 - Alle ausgehenden Befehle werden nur simuliert und nicht ausgeführt. Der Inhalt der Protokolldatei wird direkt im Device angezeigt<br><br />
3 - Es erfolgt eine Protokollierung in einer separaten Datei. Diese wird direkt im Device angezeigt.<br><br />
4 - erweitertes Debugfür Entwickler mit wechselnden Funktionen<br><br />
|-<br />
|MSwitch_Expert <0<nowiki>|</nowiki>1>||<br />
* In der Liste der möglichen Trigger erscheint das Selectfeld 'GLOBAL'. Dieses ermöglicht das Setzen eines Triggers auf alle Events und damit nicht nur auf einzelne Devices. In einem weiteren Feld kann eine weitere Selektion der triggernden Events erfolgen.<br />
<br />
* Die Felder 'Repeats' und 'Repeatdelay in s' stehen zur Verfügung. Dies bewirkt eine n-fache Wiederholung des gesetzten Befehls mit m Sekunden Verzögerung.<br />
<br />
* Das Auswahlfeld 'priority' erscheint bei jedem 'affectes device'. So kann die Reihenfolge der Befehlsabarbeitung beeinflusst werden.<br />
|-<br />
|MSwitch_Sequenz <Suchmuster> ??? ||<br />
Eine Schaltsequenz kann durch ein oder mehrere durch '/' getrennte Suchmuster angegeben werden. Die Angabe muss folgende Syntax haben:<br />
:<code>Device1:reading1:event1 Device1:reading1:event1-2 Device1:reading1:event1-3/..../....</code><br />
<br />
Beispiel: <code>Dummy:state:on Dummy:state:off Dummy:state:on</code><br />
<br />
Erkennt das Device dieses Suchmuster in den Schaltvorgängen des Devices (Dummy), wird das Reading "SEQUENCE" auf "match" gesetzt, das Reading "SEQUENCE_NUMBER" auf die Nummer der gefundenen Sequenz, wenn es mehrere Suchmuster gibt. Beide Readings können in den "Conditions" eines Schaltbefehles abgefragt werden. Eine Angabe muss in folgendem Format gemacht werden:<br />
:<code>on/off/state/suchmuster1/suchmuster2</code>, wobei die letzten drei Angaben optional sind.<br />
<br />
Funktion: Bei Ausführung des Befehls wird das Gerät 'on' oder 'off' geschaltet (on/off), Voraussetzung ist, dass der 'state' dieses Gerätes auch den 'state on' oder 'off' annimmt. Sollte dieses nicht der Fall sein, so kann mit dem Feld 'state' angegeben werden, in welchem Reading der aktuelle Status vorkommt und wie dieser lautet (suchmuster1/suchmuster2). Dieses 'state' kann mehrere Angaben enthalten, das Vorkommen der Suchmuster ist aber Voraussetzung.<br />
|-<br />
|MSwitch_Sequence_time <Zeit in Sekunden>||Maximalzeit in Sekunden, um eine Sequenz vollständig auszuführen. (Was wenn diese Zeit überschritten wird???)<br />
|-<br />
|MSwitch_Extensions <0<nowiki>|</nowiki>1>||Es wird zusätzlich zu 'on' und 'off' die Schaltoption 'MSwitchToggle' in der Liste angeboten, um die Toggle-Funktion bei Geräten die sie nicht von Haus aus anbieten nachzurüsten.<br />
|-<br />
|MSwitch_Delete_Delays <0<nowiki>|</nowiki>1>||Eins bewirkt das Löschen aller anstehende Delays bei dem Auftreten eines erneuten passenden Events. Bei der Option '0' bleiben bereits gesetzte Delays aus einem vorher getriggerten Event erhalten und werden ausgeführt. Empfohlene Einstellung: 1<br />
|-<br />
|MSwitch_Include_Devicecmds <0<nowiki>|</nowiki>1>||Bewirkt die Aufnahme aller Devices die bei Abfrage mit 'set DEVICE ?' einen eigenen Befehlssatz liefern in die Auswahlliste 'Affected Devices'. Bei Option '0' werden diese Devices in der Liste nicht mehr angeboten. Empfohlene Einstellung: 1<br />
|-<br />
|MSwitch_Include_Webcmds <0<nowiki>|</nowiki>1>||Bewirkt die Aufnahme aller Devices in die Auswahlliste 'Affected Devices', die einen eigenen Befehlssatz in dem Attribut Webcmd hinterlegt haben. Die in Webcmd hinterlegten 'Befehle' werden in den Auswahlfeldern angeboten. Bei gesetzter Option '0' werden diese Devices nicht mehr angeboten, es sei denn, sie liefern mit 'set DEVICE ?' einen eigenen Befehlssatz. Empfohlene Einstellung: 0, Einsatz nach Bedarf.<br />
|-<br />
|MSwitch_Activate_MSwitchcmds <0<nowiki>|</nowiki>1>||Fügt jedem vorhandenen Device das Attribut 'MSwitchcmd' hinzu.<br />
|-<br />
|MSwitch_Include_MSwitchcmds <0<nowiki>|</nowiki>1> ||Bewirkt die Aufnahme aller Devices in die Auswahlliste 'Affected Devices', die einen eigenen Befehlssatz in dem Attribut MSwitchcmds hinterlegt haben. Die in MSwitchcmds hinterlegten 'Befehle' werden in den Auswahlfeldern angeboten. Bei gesetzter Option '0' werden diese Devices nicht mehr angeboten, wenn sie nicht zusätzlich einen eigenen Befehlssatz mit 'set DEVICE ?' liefern. Empfohlene Einstellung: 0, Einsatz nach Bedarf.<br />
|-<br />
|MSwitch_Lock_Quickedit <0<nowiki>|</nowiki>1>||Voreinstellung für die Auswahlliste 'Affected Devices'. Bei der Option '1' ist diese voreingestellt gesperrt und kann nur über einen zusätzlichen Button geändert werden, um versehentliche Änderungen zu vermeiden. Die Auswahl einer Option ohne betätigte <Strg>-Taste bewirkt das Löschen aller bereits gesetzten Optionen. Empfohlene Einstellung: 1<br />
|-<br />
|MSwitch_Startdelay <0<nowiki>|</nowiki>10<nowiki>|</nowiki>20<nowiki>|</nowiki>30<nowiki>|</nowiki>60> ||MSwitch ignoriert nach einem FHEM-Neustart für die angegebene Zeit in Sekunden alle eingehenden Events um u.a. Startverzögerungen zu vermeiden. Bei nicht gesetztem Attribut gilt hier eine Zeit von 30 Sekunden. Diese sollte auch nur in Ausnahmefällen geändert werden. Empfohlene Einstellung: 30<br />
|-<br />
|MSwitch_Ignore_Types||Beinhaltet eine durch Leerzeichen getrennte Liste von Device-''Typen'' welche nicht geschaltet werden oder nicht geschaltet werden können. Sie werden dann in den Auswahllisten ''nicht'' dargestellt, um die Auswahllisten übersichtlich zu halten.Voreinstellung: notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul. <br />
<br />
???Wenn statt des Devicetyps ein devspec z.B. "TYPE=watchdog" angegeben wird, ist zu beachten, dass alle Geräte in die Ignoreliste einbezogen werden, die NICHT der devspec entsprechen. Weiterhin muss die devspec in Anführungszeichen gesetzt werden!???<br />
<br />
|-<br />
|MSwitch_Trigger_Filter ||Beinhaltet eine kommagetrennte Liste von Events, die im Falle ihres Eingangs unberücksichtigt und ungespeichert bleiben. Wildcards wie '*' können angegeben werden. Empfohlene Einstellung: -<br />
|-<br />
|MSwitch_Wait <n in Sekunden>||Bei gesetztem Attribut nimmt das MSwitch Device für den eingestellten Zeitraum keine Befehle mehr entgegen und ignoriert eingehende Events.<br />
<br />
|-<br />
|MSwitch_Event_Id_Distributor|| ??? Voraussetzung ist, dass das Attribut 'MSwitchExpert' auf '1' gesetzt ist. Es können auslösende Events ID-Aktionen umgeleitet werden. Sollte bei den 'trigger details :' in einem Zweig ( cmd1 ) z.B. mehrere getriggert werden (regex state:(on |off)) so werden für beide Events jeweils der Zweig 'cmd1' - alle Aktionen ohne ID - ausgeführt. Durch entsprechende Einträge kann für entsprechende Events auf eine Aktion umgeleitet werden, für die eine ID definiert ist. Die Syntax lautet: <code>state:on=>cmd1 ID 1,2</code> Entsprechend werden bei auslösendem Event 'state:on' nur die Aktionen aus cmd1 mit den IDs 1 und 2 ausgeführt. Mehrere Angaben sind durch new Line zu trennen. ???<br />
<br />
|-<br />
|MSwitch_Selftrigger_always <0<nowiki>|</nowiki>1> ||(dieses Attribut steht ab Modulversion 2.5 zur Verfügung)<br />
<br />
Die Aktivierung dieses Attributes '1' bewirkt, dass alle SET Aktionen des Devices einen internen Event ohne Auswirkungen auf das FHEM-System auslösen, auf die das Device selber reagiert. Diese Option kann zusätzlich zu einem vorhandenen Trigger aktiviert werden. Auftretende auswertbare interne Events haben immer folgendes Format: <br />
MSwitch_Self:aktion:wert <br />
MSwitch_Self:pct:100<br />
Es werden nur interne Events für set-Aktionen ausgelöst, die im Attribut setlist hinterlegt sind. Der 'wait' Befehl/Attribut hat keine wirkung.<br />
|-<br />
|MSwitch_Mode <Notify<nowiki>|</nowiki>Full<nowiki>|</nowiki>Toggle<nowiki>|</nowiki>Dummy> ||Schaltet das Modul zwischen angepassten Weboberflächen-Modi um.<br />
<br />
Notify<br />
Das Device kann nicht manuell umgeschaltet werden. Es gibt nur die zwei ausführbaren Zweige "execute 'cmd1' commands" und "execute 'cmd2' commands". Der Status des Devices wird nicht als 'on' oder 'off' angezeigt, sondern lediglich als 'active' Dieser Mode ist ähnlich zu einem FHEM-Notify.<br />
<br />
Full<br />
Es stehen alle Funktionen zur Verfügung.<br />
Toggle<br />
Sehr vereinfachter Mode. Es stehen keine verschiedenen Zweige zur Verfügung. Hier ist das Device manuell schaltbar und wird bei jedem definierten Event 'umgeschaltet', ??? entsprechend definierte Befehle für 'cmd1' oder 'cmd2' werden ausgeführt. ???<br />
Dummy<br />
ACHTUNG: Funktionsänderung mit V2.61 Der Mode 'Dummy' ist ein eingeschränkter Modus. Dieser bietet die Funktionalität eines Dummys kombiniert mit der Funktionalität eines Notifys und kann somit die gerne genutzte Kombination Dummy-Notify gegen ein Device ersetzen. Der Dummy-Mode kann nur in einem neu angelegten leeren MSwitch aktiviert und auch nicht wieder verlassen werden! Sobald ein angelegtes MSwitch einmal verändert wurde (modify trigger etc.) sind Umschalt-Optionen nicht mehr verfügbar.<br />
<br />
|-<br />
|MSwitch_Condition_Time <0<nowiki>|</nowiki>1> ||In der Grundeinstellung '0' werden für das zeitgesteuerte Schalten keine definierten Conditionen im Feld 'Trigger condition' überprüft, sondern die Schaltbefehle werden in jedem Fall ausgeführt. Mit der Einstellung '1' wird diese Überprüfung wie für Events zugeschaltet.<br />
<br />
|-<br />
|MSwitch_Random_Time <HH:MM:SS-HH:MM:SS> || Bei Aktivierung wird vor jedem Ausführen eines verzögerten Befehls (Delay) eine Zufallszeit generiert, die im Rahmen der hier angegebenen Zeitspanne liegt. Auf diese Zufallszahl kann in den Delays zugegriffen werden, durch die Angabe '[random]' statt einer direkten Zeitangabe. Bei nicht gesetztem Attribut ergibt die Angabe von '[random]' immer '00:00:00'<br />
<br />
|-<br />
|MMSwitch_Random_Number <n> ||Bei Aktivierung dieses Attributes mit einer beliebigen ganzen Zahl, werden vom Device die zwei Readings 'RandomNr' und 'RandomNr1' und mit Werten zwischen null und n angelegt. RandomNr wird vor jedem Ausführen eines Befehls, auch für unterschiedliche Geräte in einem Durchgang, neu generiert. RandomNr1 bleibt nach der Initialisierung konstant. Wenn auf dieses Readings in einer Condition mit z.B. '[$NAME:ReadingNr1] = 1' zugegriffen wird, wird der Befehl nur ausgeführt, wenn ReadingNr1 gerade = 1 ist. Der Befehl wird somit nur mit einer Wahrscheinlichkeit von eins zu n ausgeführt.<br />
<br />
|-<br />
|MSwitch_Reset_EVT_CMD1(2)_COUNT ||Bei Aktivierung dieses Attributes steht in den Readings das Reading 'EVT_CMD1_COUNT' bzw. 'EVT_CMD2_COUNT' zur Verfügung. Dieses kann in den Conditions genutzt werden, um z.B. nur bei jedem x-ten Eintreffen eines auslösenden Events einen Befehl auszuführen. Bei jedem Eintreffen eines gültigen Events werden die Zähler um 1 erhöht (für den jeweiligen Zweig). Ist hier der Wert '0' eingetragen, wird der Zähler fortlaufend (endlos) erhöht. Wird ein Wert größer 0 eingetragen, wird der Zähler mit Erreichen dieses Wertes automatisch wieder auf Null gesetzt. Mit Löschen dieses Attributes werden die entsprechenden Readings ebenfalls gelöscht.<br />
<br />
|-<br />
|MSwitch_Safemode <0<nowiki>|</nowiki>1> ||Bietet einen gewissen Schutz vor falschen Konfigurationen und dadurch entstehenden Endlosschleifen. Bei aktiviertem Attribut '1' beendet das Modul Endlosschleifen eines Devices. In diesem Fall erfolgt ein Logeintrag und das Device wird per Attribut auf 'Disabled' gesetzt. Es wird ein letztes Event generiert, auf das reagiert werden kann <code>2018-05-31 09:39:21 MSwitch <NAME> Safemode: on</code> Im Webinterface erfolgt bei betroffenem Device ein entsprechender Hinweis. In der Grundkonfiguration ist dieses Attribut nicht gesetzt. Es empfiehlt sich aber, bei neuen bzw. komplizierten Devices, dieses zumindest anfänglich zu aktivieren.<br />
|-<br />
|MSwitch_Read_Log<0<nowiki>|</nowiki>1> ||Ermöglicht den Zugriff auf das Logfile als Trigger.<br />
<br />
* Bei aktiviertem Attribut enthält die Auswahl des Triggerdevices die Option 'LOGFILE'. Bei dieser Auswahl werde alle Logeinträge erkannt und in ein internes Event umgewandelt, auf das regiert werden kann.<br />
* bei aktiviertem Attribut und der Auswahl 'GLOBAL' im 'Trigger_Device' wird auf ALLE Events und alle Logeinträge reagiert.<br />
* bei aktiviertem Attribut und der Auswahl eines bestimmten Devices im 'Trigger_Device' wird auf alle Events und auf alle Logeinträge des gewählten Devices reagiert. Der im Logeintrag vorhandene Devicename ist Bedingung für die Funktion.<br />
|-<br />
|MSwitch_Help<0<nowiki>|</nowiki>1> ||Schaltet Hilfebuttons zu den einzelnen Eingabefeldern an oder aus.<br />
<br />
|-<br />
|MSwitch_Comments<0<nowiki>|</nowiki>1> ||Schaltet Kommentarfelder zu den einzelnen 'affected_devices an.<br />
<br />
|-<br />
|MSwitch_generate_Events<0<nowiki>|</nowiki>1> ||Reduziert bei Einstellung '1' die vom MSwitch-Devices erzeugten Events auf ein Minimum. Insbesondere bei Verwendung von 'MSwitch_Read_Log' zu empfehlen.<br />
<br />
|-<br />
|MSwitch_Startdelay||???Bestimmt die Verzögerungszeit des MSwitches nach FHEM-Start in Sekunden. In diesem Zeitraum reagiert das Device nicht auf Events. Die Vorgabe ist hier zehn Sekunden. Diese wird auch dann angenommen, wenn das Attribut nicht gesetzt ist.??? (Hatten wir das nicht schon?)<br />
<br />
|-<br />
|MSwitch_Inforoom ||Mit diesem Attribut wird die Raumansicht eines mit dem Attribut bestimmten Raumes verändert. Dadurch sollen die wichtigsten Informationen aller MSwitch-Devices auf eine Seite dargestellt werden. Zur Nutzung sollten alle MSwitch-Devices (zusätzlich) in einen Raum sortiert werden und dieser Raum im Attribut eingestellt werden.<br />
<br />
Wichtig: Eine Änderung dieses Attributes bewirkt immer eine Änderung dieses Attributes in ''allen'' MSwitch devices: Es muss nur in einem Device gesetzt oder gelöscht werden um alle Devices zu erfassen.<br />
<br />
<gallery><br />
MSwitch_Screen_1.png|Raumansicht des Raumes MSwitch mit gesetztem Attribut 'MSwitch'<br />
MSwitch_Screen_2.png|Raumansicht des Raumes MSwitch ohne gesetztes Attribut<br />
</gallery><br />
<br />
Es werden folgende Informationen bereitgestellt:<br />
* Infobutton zeigt den im Device gespeicherten Textes des Attributes 'comment'<br />
* Device und Events, die das Device triggern<br />
* Zeiten, zu denen verschiedene Zweige des Devices ausgeführt werden<br />
* Devices, die durch das MSwitch Device geschaltet werden<br />
* State des Devices<br />
<br />
|}<br />
<br />
== Integrierte Funktionen ==<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Name !! class="unsortable" | Beschreibung <br />
|-<br />
|Average||???<br />
|-<br />
<br />
|Difference||<br />
* Syntax: [DIFF<wert>:<reading>] > <differenz><br />
* Beispiel: [DIFF2:countdown] > 0<br />
* Reading: entspricht dem getriggerten Reading.<br />
* Wert: gespeicherter Wert (in diesem Fall der vorletzte).<br />
* Differenz: geforderte Differenz zwischen aktuellem und vorletztem Wert.<br />
* Schaltung erfolg wenn diese Bedingung 'wahr' ist.<br />
Folgende Readings werden zur Verfügung gestellt:<br />
* DIFFERENCE (true/false) - Schaltbedingung erkannt ja/nein<br />
* DIFFDIRECTION (up/down) - Richtung der erkannten Bedingung (steigend/fallend)<br />
|-<br />
|Increase||???<br />
|-<br />
|Tendency||<br />
*Syntax: [TEND<wert>:<reading>] > <Mindestwert><br />
*Beispiel: [TEND2:countdown] > 2<br />
*Reading: entspricht dem getriggerten Reading.<br />
*Wert: Es wird jeweils der Durchschnitt von 2 Wertepaaren gebildet. In diesem Fall werden die letzten 4 Werte herangezogen. Paar 1 = Aktueller und letzter Wert, Paar 2 = Die 2 vorherigen Werte. Bei TEND3 werden die letzten 6 Werte zur Paarbildung genutzt.<br />
*Mindestwert: Der Wertunterschied zwischen den Wertepaaren, der minimal erreicht sein muss, um eine Tendenz zu erkennen.<br />
<br />
Rechenzeichen (><):<br />
Dieses ist hier nicht als Rechenzeichen zu werten, sonder als Tendenz-Anzeige. ( < es wird nach fallender Tendenz gesucht / > sucht nach steigender Tendenz).<br />
<br />
Schaltung erfolgt einmalig bei Erkennung der gesuchten Tendenz.<br />
Danach erfolgt keine Schaltung mehr, solange bis eine Tendenz-Umkehr erfolgt ist.<br />
Erst dann erfolgt wieder eine Schaltung bei erneuter Tendenz-Umkehr in gesuchte Richtung.<br />
|}<br />
<br />
== Funktions-Struktogramm ==<br />
[[Datei:MSwitch full.svg|Struktogramm des Funktionsprinzips]]<br />
<br />
== Anwendungs-Beispiele ==<br />
<br />
=== [[Blinken - Rechteckgenerator]] ===<br />
=== [[Blinken - Impulsgenerator mit variablem Tastgrad]] ===<br />
=== [[Schmitt-Trigger - Temperaturabhängiges Schalten]] ===<br />
=== [[Linearschalter]] ===<br />
<br />
== Links ==<br />
* Thread über das Modul im {{Link2Forum|Topic=86199|LinkText=FHEM Forum}}<br />
* {{Link2Forum|Topic=100119|Message=936495|LinkText=Gäste-WLAN der Fritzbox auswerten und Login per Telegram senden}}<br />
* {{Link2Forum|Topic=86199|Message=930133|LinkText=Schalten von vier Kanälen mit einem MSwitch-Device}}<br />
* {{Link2Forum|Topic=99219|Message=926652|LinkText=Batterie-Überwachung. 1xTäglich per Telegram senden}}<br />
* {{Link2Forum|Topic=101091|Message=945389|LinkText=Licht (Alarm) in einem bestimmten Zeitraum schalten}}<br />
* {{Link2Forum|Topic=100949|Message=944284|LinkText=Über Dummy-Schalter ein Timer (EIN/AUS) aktivieren}}<br />
* {{Link2Forum|Topic=103083|Message=967710|LinkText=Ladezeit von Akku ermitteln u. Steckdose entsprechend schalten}}<br />
* {{Link2Forum|Topic=86199|Message=990265|LinkText=Bewegungsmelder}}<br />
* {{Link2Forum|Topic=86199|Message=974592|LinkText=Rauch und Hitzemelder steuern}}</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave&diff=33577Z-Wave2020-07-20T17:00:15Z<p>Krikan: Änderung 33372 von Krikan (Diskussion) rückgängig gemacht. / Befehl funktioniert nach 00_ZWDongle.pm-Update bis Routenupdatedauer von 80 Sekunden</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=ZWDongle<br />
|ModPurpose=Einbindung Z-Wave-Gateways<br />
|ModType=d<br />
|ModCmdRef=ZWDongle<br />
|ModForumArea=ZWave<br />
|ModTechName=00_ZWDongle.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
{{Infobox Modul<br />
|Name=ZWave<br />
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle<br />
|ModType=d<br />
|ModCmdRef=ZWave<br />
|ModForumArea=ZWave<br />
|ModTechName=10_ZWave.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
</div><br />
<br />
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])<br />
<br />
Auf dieser Seite werden Grundlagen eines '''Z-Wave''' Systems und dessen Einrichtung in FHEM beschrieben.<br />
== Z-Wave ==<br />
=== Nodes - Controller und Slaves ===<br />
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten '''Nodes''' (Knoten). Es setzt sich zusammen aus dem steuernden '''Controller''' (Zentrale) und min. 1 bis max. 231 gesteuerten '''Slaves''' (Geräten). <br />
<br />
=== Home-Id und Node-ID ===<br />
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:<br />
# '''Home-ID:''' Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.<br />
# '''Node-ID:''' Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. <br />
<br />
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der '''Inklusion''' (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. <br />
<br />
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).<br />
<br />
=== Primär- und Sekundärcontroller ===<br />
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der '''Primärcontroller'''. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum '''Sekundärcontroller'''. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die '''Exklusion''' (Ausschluss) eines Nodes aus dem Netz vornehmen.<br />
<br />
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.<br />
<br />
=== Acknowledge ===<br />
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.<br />
<br />
=== Vermaschtes Netzwerk mit Routing ===<br />
Z-Wave nutzt als Netzwerktopologie ein '''mesh network''' (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird '''Routing''' genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.<br />
<br />
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber ''nicht'' SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren ("Selbstheilung")[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].<br />
<br />
=== Command Classes ===<br />
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene '''Command Classes''' (Kommandoklassen) zusammengefasst sind.<br />
<br />
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die '''Class Basic'''. <br />
<br />
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die '''Class Configuration'''.<br />
<br />
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die '''Class Association'''.<br />
<br />
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.<br />
<br />
=== Hinweise zur Z-Wave-Geräteauswahl ===<br />
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.<br />
<br />
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.<br />
<br />
Gateway<br />
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.<br />
<br />
Endgeräte<br />
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder<br />
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder<br />
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)<br />
<br />
'''Kurz''': Produkte mit Z-Wave Plus-Zertifizierung einsetzen.<br />
<br />
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.<br />
<br />
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.<br />
<br />
== Z-Wave in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. <br />
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:<br />
* Herstellerseite des ZWave-Gerätes<br />
* http://www.zwave.de/handbuecher/ (deutsch)<br />
* http://products.z-wavealliance.org (englisch)<br />
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.<br />
<br />
== Definition des Gateways / Controllers ==<br />
{{Randnotiz|RNText='''Tester für ZWave@culfw gesucht!'''<br />
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}<br />
=== Autocreate des Gateways ===<br />
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. <br />
<br />
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:<br />
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])<br />
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})<br />
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})<br />
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)<br />
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)<br />
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})<br />
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x; Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])<br />
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&t=21327#p55404]) <br />
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})<br />
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
<br />
Folgende Gateways sind '''nicht''' mit FHEM einsetzbar:<br />
* Merten Funk-USB-Datenschnittstelle CONNECT<br />
<br />
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.<br />
<br />
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema <code>ZWDongle_<[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]></code> angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. <br />
<br />
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: <code>define ZWDongle_1 ZWDongle COM1@115200</code>). <br />
<br />
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum "Everything" zu finden.<br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
Aeon Labs Z-Stick an der Fritzbox: <br />
define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200<br />
<br />
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):<br />
define ZWDongle_1 ZWDongle /dev/ttyACM1@115200<br />
<br />
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.<br />
<br />
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.<br />
<br />
=== homeId und nodeList des Gateways ===<br />
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die <code>homeId</code> notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der <code>homeId</code> nicht zwingend. Jedoch sollte durch Abfrage der <code>homeId</code> direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.<br />
<br />
Die <code>homeId</code> und <code>CtrlNodeId</code> des Gateways wird mit folgendem Befehl ausgelesen (<ZWDongle> ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):<br />
get <ZWDongle> homeId<br />
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:<br />
ZWDongle_1 homeId => HomeId:e345c456 CtrlNodeId:01 <br />
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.<br />
<br />
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:<br />
get <ZWDongle> nodeList<br />
ergibt beispielsweise:<br />
ZWDongle_1 nodeList => ZWDongle_1 UNKNOWN_2<br />
<br />
<br />
== Definition von Geräten / Slaves ==<br />
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===<br />
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.<br />
<br />
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:<br />
set <ZWDongle> addNode on<br />
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:<br />
set <ZWDongle> addNode onNw<br />
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. <br />
<br />
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut <code>classes</code> des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum "ZWave" zu finden. <br />
<br />
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls <code>set <ZWDongle> addNode off</code> aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:<br />
* <code><nowiki>created ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.<br />
* <code><nowiki>addNode failed</nowiki></code> = Inklusion ist fehlgeschlagen<br />
<br />
Eine erfolgreiche Inklusion ist zudem am Event "ZW_ADD_NODE_TO_NETWORK protocolDone" im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen. Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events "ZW_ADD_NODE_TO_NETWORK failed". Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.<br />
<br />
HINWEISE:<br /><br />
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.<br />
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit <code><nowiki>set <ZWave-Devicename> neighborUpdate</nowiki></code> bzw. <code><nowiki>set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate</nowiki></code> neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.<br />
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut <code>classes</code> manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.<br />
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.<br />
<br />
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.<br />
<br />
=== Assoziation ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.<br />
<br />
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.<br />
<br />
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, '''muss''' der Controller (<ZWDongle>-Device, <code>CtrlNodeId</code> = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes <code><name></code> aufgenommen werden:<br />
<br />
set <name> associationAdd <associationGroup> <CtrlNodeId><br />
<br />
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. <br />
<br />
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.<br />
<br />
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe <associationGroup>:<br />
get <name> association <associationGroup><br />
<br />
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:<br />
get <name> associationAll<br />
<br />
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.<br />
<br />
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.<br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. <br />
<br />
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:<br />
set <name> configByte <Parameternummer> <Parameterwert><br />
Für weitere Parametergrößen gibt es die Befehle <code>configWord</code> und <code>configLong</code><br />
<br />
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:<br />
get <name> config <Parameternummer><br />
<br />
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden: <br />
get <name> model<br />
Die Readings <code>model</code>, <code>modelID</code> und <code>modelConfig</code> werden dadurch erzeugt. In <code>model</code> sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:<br />
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]<br />
<br />
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:<br />
get <name> configAll<br />
<br />
Außerdem wird durch den <code>get <name> model</code> -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link "Details in pepper DB" und/oder "Details in alliance DB" zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.<br />
<br />
Der Aufruf von <code>get <name> model</code> ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.<br />
<br />
=== Entfernen eines Z-Wave-Geräts / Exklusion ===<br />
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.<br />
<br />
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:<br />
set <ZWDongle> removeNode on<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):<br />
set <ZWDongle> removeNode onNw<br />
<br />
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. <br />
<br />
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:<br />
set <ZWDongle> removeNode off<br />
<br />
Das FHEM-Device muss nach der Exklusion manuell durch <code>delete <name></code> gelöscht werden.<br />
<br />
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.<br />
<br />
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===<br />
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:<br />
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion<br />
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM <br />
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration<br />
<br />
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:<br />
get <ZWDongle> nodeList<br />
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als "UNKNOWN_x" ausgegeben, wobei x die ID des betreffenden Gerätes ist.<br />
<br />
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als "UNKNOWN_2") in FHEM durch autocreate definiert:<br />
set <ZWDongle> createNode 2<br />
<br />
Batteriebetriebene Geräte müssen bei Absetzen des <code>createNode</code>-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf "permanent wach" stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den <code>createNode</code>-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und <code>autocreate</code> legt das FHEM-Device an; der Aufruf von <code>createNode</code> entfällt dann.<br />
<br />
== Geräte-Besonderheiten ==<br />
=== batteriebetriebene Geräte ===<br />
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in<br />
<br />
* Wakeup-Geräte<br />
* FLIRS-Geräte<br />
<br />
==== Wakeup-Geräte ====<br />
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.<br />
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht "wakeup notification". Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.<br />
<br />
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form<br />
:<code>Scheduled for sending after WAKEUP</code> <br />
::oder<br />
:<code>Scheduled get requests for sending after WAKEUP</code><br />
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten "wakeup notification" an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der "wakeup notification"-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der "wakeup notification" ist das batteriebetriebene Gerät grundsätzlich in der Lage ("wach genug"), Telegramme korrekt zu empfangen und zu verarbeiten.<br />
<br />
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal <code>cmdsPending</code> des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls <code>[[list]] <device></code> erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch <code>shutdown restart</code>) geht der Sendstack der Geräte daher verloren.<br />
<br />
Das Wakeup-Interval und der Empfänger der "wakeup notification" wird wie folgt konfiguriert:<br />
<nowiki>set <name> wakeupInterval <time> <NodeId></nowiki><br />
<nowiki><time></nowiki> ist die Zeit in Sekunden zwischen den Intervallen und <nodeID> der gewünschte Empfänger der "wakeup notification"; in der Regel ist dies '''immer''' der Controller <CtrlNodeId>. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die "wakeup notification" wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die "wakeup notification" geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten '''automatisch''' den Befehl <code><nowiki>set <name> wakeupInterval 86400 <ControllerNodeId></nowiki></code> ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit <code><nowiki>get <name> wakeupIntervalCapabilities</nowiki></code> vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage <code><nowiki>get <name> wakeupInterval</nowiki></code> überprüfen.<br />
<br />
Ein Aufwachen und Versand der "wakeup notification" von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.<br />
<br />
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf "wach" bzw. permanent "wach" stellen. Dann aus dem Attribut <code>classes</code> <code>WAKE_UP</code> entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des "wach"-Modus <code>WAKE_UP</code> wieder im Attribut <code>classes</code> aufnehmen.<br />
<br />
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit <code>set <name> config...</code> sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden <code>get <name> config...</code> oder -falls vorhanden- mit <code>get <name> configAll</code> überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.<br />
<br />
==== FLIRS-Geräte ====<br />
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. <br />
<br />
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit "wakeup notification". Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.<br />
<br />
=== Aeon Labs / Aeotec ===<br />
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home<br />
<br />
==== Multi Sensor 5 ====<br />
* aktuellste Firmware installieren<br />
* Attribut <code>classes</code> um <code>BASIC</code> ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit <code>set <name> configGroup1Reports 225</code> oder <code>set <name> configLong 101 225</code>, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch <code><nowiki>set <name> configGroup1Interval <time/s></nowiki></code> festgelegt (Standard 720 Sek).<br />
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]<br />
siehe {{Link2Forum|Topic=34505|Message=268913}}<br />
<br />
==== Multisensor 6 ====<br />
siehe {{Link2Forum|Topic=40393}}<br />
* arbeitet bei USB-Anschluß als Router<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* die <code>configGroupxInterval</code> und <code>configxxxReportingThreshold</code> Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem <code>wakeup</code> übertragen<br />
<br />
==== Aeotec LED Bulb ZW098-C55 ====<br />
siehe {{Link2Forum|Topic=40504}}<br />
<br />
=== Danfoss ===<br />
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====<br />
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem <code>at</code> abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):<br />
define Atdanfoss at +*00:30 get <name> battery<br />
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). <br />
<br />
=== devolo ===<br />
Ausführliche Handbücher auf http://products.z-wavealliance.org<br />
<br />
==== MT02648 Tür-/Fenster Kontakt 3in1 ====<br />
siehe {{Link2Forum|Topic=41337}}<br />
<br />
=== DüWI ===<br />
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise <code>define Status_Abfrage at +*00:03:00 get <name> swmStatus</code>) beheben.<br />
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.<br />
<br />
=== Everspring ===<br />
==== AN145 Sockelmodul E27 ====<br />
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}<br />
<br />
=== Fibaro ===<br />
Association Group für Übermittlung von Statusinformationen an den Controller:<br />
* "alte" ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3<br />
: <code><nowiki>set <name> associationAdd 3 <CtrlNodeId></nowiki></code><br />
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (<code><nowiki>set <name> associationDel 1 <CtrlNodeId></nowiki></code>). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.<br />
* ZWave Plus-Geräte: Association Group 1 ("lifeline")<br />
<br />
==== FGSS-001 / FGSD-002 Rauchmelder ====<br />
* nicht untereinander vernetzbar<br />
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen<br />
<br />
==== FGS-222 Relais Unterputzeinsatz ====<br />
Bei der Inklusion werden von FHEM 3 Devices angelegt:<br />
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)<br />
* Device für Endpoint 1 (Steuerung Kanal 1)<br />
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)<br />
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.<br />
<br />
Details: {{Link2Forum|Topic=50176}}<br />
<br />
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}<br />
<br />
==== FGK-101 Tür/Fensterkontakt ====<br />
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}<br />
<br />
=== GE ===<br />
==== GE (Model t.b.d) ====<br />
Dieser Schalter unterstützt keine Statusrückmeldungen.<br />
<br />
=== Merten ===<br />
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.<br />
<br />
=== Philio ===<br />
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====<br />
siehe {{Link2Forum|Topic=28046}}<br />
<br />
=== Popp ===<br />
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====<br />
siehe {{Link2Forum|Topic=39856}}<br />
==== POPE005107 Z-Wave Außensirene ====<br />
siehe {{Link2Forum|Topic=42736}}<br><br />
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein <code>userReadings</code> findet sich auch im verlinkten Thema. <br />
==== POPE009006 Z-Wave Wall Plug Switch ====<br />
siehe {{Link2Forum|Topic=40771}}<br />
==== POPE009402 10Year Smoke Detector ====<br />
Die erste Firmwareversion hat eine fehlerhafte modelID. Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.<br />
<br />
=== Z-Wave.Me ===<br />
==== ZME_RC2 Fernbedienung ====<br />
siehe {{Link2Forum|Topic=35513}}<BR><br />
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.<br />
<br />
<br />
== Geräte-Vergleich ==<br />
=== Doppel-Relais ===<br />
{| class="wikitable"<br />
|-<br />
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays !! Philio-PAN04 1<br />
|-<br />
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais<br />
|-<br />
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W<br />
|-<br />
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung || schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig >1 Sekunde <br />
|-<br />
| Geräte in FHEM || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 4 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 <br> x.03 Summengerät (ähnlich Hauptgerät, überflüssig)<br />
|-<br />
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais<br />
|-<br />
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden<br />
|-<br />
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Hauptgerät und Untergeräte || Nur Hauptgerät <br>Aktualisierung der Untergeräte nur bei aktiver Abfrage <br />
|-<br />
| Leistungsmessung || Separat für Untergeräte || Separat für Untergeräte || Nur Summe<br />
|-<br />
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A || nein, 2x 6.5A<br />
|}<br />
Beim Qubino Flush 2 relays muss eine MULTI_CHANNEL_ASSOCIATION mit dem Controller (Endpoint root) statt einer "normalen" Assoziation gesetzt werden, damit die Status der Untergeräte einzeln signalisert werden:<br />
<br />
set associationDel 1 <controllerNodeId> <br />
set <device> mcaAdd 1 0 <controllerNodeId> 0 <br />
<br />
Bei einem FHEM-Updatestand ab 20.09.2019 erfolgt diese Einstellung automatisch.<br />
<br />
== Links ==<br />
=== Allgemein ===<br />
* Grundlageninformation "Z-Wave-Haupt-Anleitung": [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]<br />
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] "Z-Wave: Die Funktechnologie für das Smart Home" von Dr. Christian Paetz (Paetz "is the primary European representative for the Z-Wave Alliance" [http://z-wavealliance.org/global-contacts/])<br />
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)<br />
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)<br />
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)<br />
* informative Webseiten zu Z-Wave:<br />
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)<br />
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)<br />
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)<br />
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)<br />
<br />
=== Informationsquellen zur Einbindung von Command Classes ===<br />
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):<br />
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]<br />
<br />
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)<br />
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis "docs"), RaZBerry und Z-Wave allgemein], englisch<br />
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch<br />
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)<br />
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html<br />
<br />
== FAQ ==<br />
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen FHEM-Devices (Ausgabe von <code>list <device></code>)<br />
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:<br />
::*<code>get <device> associationAll</code> <br />
::*<code>get <device> configAll</code><br />
::*<code>get <device> versionClassAll</code><br />
::*<code>get <device> mcaAll</code><br />
::*<code>get <device> wakeupInterval</code> (nur bei batteriebetriebenen Geräten)<br />
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen<br />
::*<code>attr <ZWDongle> verbose 5</code> und<br />
::*<code>attr global mseclog 1</code><br />
<br />
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===<br />
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!<br />
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes<br />
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway<br />
# [[#Konfiguration|Konfiguration]] des Gerätes<br />
<br />
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf "associationAdd <associationGroup> <CtrlNodeId>" stehen? ===<br />
FHEM setzt das Reading "state", das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte "associationAdd"-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes <code>{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}</code> manuell an seine Bedürfnisse angepasst hat.<br />
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])<br />
<br />
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (>1) angesprochen werden? ===<br />
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> und die Devices für alle Kanäle (Endpoints) nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID>.<EndpointNr></nowiki></code> automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).<br />
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle <code>get <device> mcEndpoints</code> und <code>get <device> mcCapability <chid></code> aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl <code>set <device> mcCreateAll</code> werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.<br />
<br />
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===<br />
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.<br />
==== Grobermittlung ====<br />
Der Befehl <code><nowiki>get <ZWDongle> nodeInfo <dezimale nodeId></nowiki></code> liefert das Reading <code><nowiki>nodeInfo_<dezimale nodeId></nowiki></code> zurück.<br />
Die Angabe im Reading hinter <code>ProtocolVers:</code> lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:<br />
* <code>2</code> -> bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)<br />
* <code>SDK5.0x+4.2x</code> -> bspw. keine Explorer Frames, teilweise SUC-Unterstützung<br />
* <code>SDK4.5x+6.0x</code> -> bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)<br />
==== Detailermittlung ====<br />
Durch den Befehl <code><nowiki>get <name> version</nowiki></code> kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen<br />
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version<br />
* Suche nach sdkids.xml in einer Suchmaschine<br />
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.<br />
<br />
Beispielsweis entspricht das Reading eines Gerätes "Lib 6 '''Prot 2.64''' App 1.6" dem SDK 5.02 Patch 2 oder eines Controller "Z-Wave '''3.41''' STATIC_CONTROLLER" dem SDK 6.02.00.<br />
<br />
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.<br />
<br />
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===<br />
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}<br />
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.<br />
<br />
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.<br />
<br />
Vorarbeiten:<br />
* Das Perl-Modul Crypt-Rijndael muss installiert sein.<br />
* Das Attribut <code>networkKey</code> muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.<br />
<br />
Ablauf der secure-Inklusion:<br />
* Controller in den Modus zur secure-Inklusion schalten:<br />
: <code>set <ZWDongle> addNode onSec</code> für die Standard-secure-Inklusion<br />
: oder alternativ<br />
: <code>set <ZWDongle> addNode onNwSec</code> für die Nework-Wide-secure-Inklusion<br />
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)<br />
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch <code>autocreate</code> angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut <code>secure_classes</code> in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in <code>classes</code> aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.<br />
* Inklusionsmodus des Controllers ausschalten:<br />
: <code>set <ZWDongle> addnode off</code><br />
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.<br />
<br />
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===<br />
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.<br />
<br />
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl <code>removeFailedNode</code> gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig "schlafen".<br />
<br />
Der Befehl <code>removeFailedNode</code> löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des <code>removeFailedNode</code>-Befehls erfolgt sein. <br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# An den betroffenen Node eine Telegramm mit <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und kann mit <code>removeFailedNode</code> gelöscht werden.<br />
# Befehl zum Löschen des Nodes absetzen: <code><nowiki>set <ZWDongle> removeFailedNode <NodeId></nowiki></code>. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.<br />
# Prüfen, der Ergebnisse des <code>removeFailedNode</code>-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis "failedNodeRemoveProcessBusy" mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.<br />
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: <code><nowiki>get <ZWDongle> nodeList</nowiki></code><br />
<br />
siehe auch {{Link2Forum|Topic=32823|Message=292626}}<br />
<br />
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===<br />
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per <code>addNode</code>, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt <code>addNode</code> der Befehl <code>replaceFailedNode</code> zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.<br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:<br />
## <code><nowiki>get <device> configAll</nowiki></code><br />
## <code><nowiki>get <device> associationAll</nowiki></code><br />
# defektes Gerät aus- und neues einbauen<br />
# Befehl <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit <code>replaceFailedNode</code> inkludiert werden.<br />
# <code><nowiki>set <zwdongle> replaceFailedNode <NodeId></nowiki></code> für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen<br />
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.<br />
<br />
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===<br />
Ja, das ist richtig.<br />
<br />
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei zunächst nicht erneut vergeben. Diese frei gewordenen NodeIds werden bei Inklusionen in aufsteigender Reihenfolge erst wieder vergeben, nachdem die höchste verfügbare NodeId (232?) inkludiert wurde. Sie sind somit grundsätzlich nicht verloren.<br />
<br />
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===<br />
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls <code>get <name> model</code> ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading <code>modelConfig</code> enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading <code>modelConfig</code> den Wert "unknown". Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen "nur" Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.<br />
<br />
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:<br />
* Bei der Inklusion:<br />
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt<br />
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut <code>classes</code> ergänzt<br />
* Bei der Konfiguration:<br />
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.<br />
<br />
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.<br />
<br />
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===<br />
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:<br />
* openzwave_manufacturer_specific.xml<br />
* openzwave_deviceconfig.xml.gz<br />
* fhem_zwave_deviceconfig.xml.gz<br />
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. <br />
<br />
Die Datei "openzwave_manufacturer_specific.xml" enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls <code>get <name> model</code> im Reading <code>modelId</code> des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading <code>model</code> angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading <code>modelConfig</code> steht.<br />
<br />
Die Dateien "openzwave_deviceconfig.xml.gz" und "fhem_zwave_deviceconfig.xml.gz" enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der "fhem_zwave_deviceconfig.xml.gz" bevorzugt.<br />
<br />
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:<br />
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner<br />
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner <br />
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database<br />
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).<br />
<br />
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei "openzwave_manufacturer_specific.xml" im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.<br />
<br />
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===<br />
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:<br />
<br />
1. [[Backup]] der FHEM-Installation <br />
::'''und'''<br />
2. Backup des NVRAM des Controllers<br />
<br />
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.<br />
<br />
<br />
zu 2.) Backup des NVRAM des Controllers<br />
<br />
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).<br />
<br />
FHEM kann mit den ZWDongle-Befehlen <code>backupCreate</code> das NVRAM der Controller sichern und mit <code>backupRestore</code> zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.<br />
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})<br />
<br />
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen<br />
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===<br />
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.<br />
<br />
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul <code>cp2101.ko</code> geladen werden.<br />
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.<br />
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei <code>startfhem</code>.<br />
<br />
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.<br />
insmod $home/lib/cp2101.ko<br />
<br />
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.<br />
<br />
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===<br />
<br />
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:<br />
<br />
<code><nowiki>ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277</nowiki></code><br />
<br />
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. <br />
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:<br />
<br />
<code><nowiki>010a00130603320110259277</nowiki></code><br />
* 01: data to controller<br />
* 0a: length of msg<br />
* 00: ?<br />
* 13: ZW_SEND_DATA<br />
* 06: NodeId<br />
<br />
* 03: length of msg<br />
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)<br />
* 01: METER get scale command<br />
* 10: scale parameter<br />
<br />
* 25: send flags, explorer frames on<br />
* 92: callbackId (um ACK zu identifizieren)<br />
* 77: checkSum<br />
<br />
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|!]]<br />
[[Kategorie:868MHz]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=DevIo&diff=33576DevIo2020-07-20T16:54:10Z<p>Krikan: </p>
<hr />
<div>{{Infobox Modul<br />
|ModPurpose=Dienstfunktionen für die Kommunikation per serieller Schnittstelle (USB/RS232), TCP/IP-Verbindung oder UNIX-Socket<br />
|ModType=u<br />
|ModForumArea=FHEM Development<br />
|ModTechName=DevIo.pm<br />
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])<br />
}}<br />
<br />
Das Modul [[DevIo]](.pm) ist für Modulentwickler gedacht, um Daten zwischen einem FHEM-Modul und bspw. einer seriellen Schnittstelle, einer TCP/IP-Verbindung oder einem UNIX-Socket auszutauschen. Es übernimmt dabei die gesamte Verbindungsverwaltung und Aufrechterhaltung innerhalb von FHEM und nimmt dem Modulentwickler daher die gesamte Verbindungsverwaltung (Aufbau, Initialisierung, Neu-Verbindung bei Abbruch, etc.) ab. Es berücksichtigt dabei Besonderheiten zwischen Unix-basierten Betriebssystemen und Windows.<br />
<br />
Es dient dabei lediglich dem Zweck einen Kommunikationskanal für eine Definition in FHEM zu etablieren und Daten darüber auszutauschen. Die Interpretation der empfangenen Daten obliegt dem Modul, welches die Verbindung via DevIo geöffnet hat. Die ausgetauschten Daten werden durch DevIo nicht verändert.<br />
<br />
= Allgemeine Funktionsweise =<br />
DevIo hat das Ziel eine besonders einfache Möglichkeit für Modulentwickler zu schaffen, um einen dauerhaften Kommunikationskanal mit einem Hardware- oder Netzwerk-Gerät bzw. Service zu etablieren. Um eine Verbindung aufzubauen muss zunächst die Gegenstelle bekannt sein. Dazu muss vor dem Verbindungsaufbau in dem Internal <code>$hash->{DeviceName}</code> der jeweiligen Definition das Ziel hinterlegt werden. Dies kann bspw. eine serielle Schnittstelle sein (z.B. "/dev/ttyUSB0" oder "COM1" unter Windows) oder eine TCP/IP-Gegenstelle (z.B. "192.168.1.100:1012") sein. Eine detaillierte Aufstellung der möglichen Verbindungsarten und deren Angabe in <code>$hash->{DeviceName}</code> gibt es im folgenden Kapitel [[#Unterstützte Verbindungsarten|Unterstützte Verbindungsarten]].<br />
<br />
Die Funktion [[#DevIo_OpenDev()|DevIo_OpenDev()]] baut dabei die entsprechende Verbindung für eine einzelne Definition in Form eines Filedeskriptors auf und registriert diesen in dem globalen Hash <code>%selectlist</code><ref name="selectlist">[[DevelopmentModuleIntro#Wichtige_globale_Variablen_aus_fhem.pl|Development Module Introduction]] - Wichtige globale Variablen aus fhem.pl</ref>. Sobald die Verbindung erfolgreich aufgebaut wurde, kann eine, durch den Modulautor mitgelieferte, Initialisierungs-Funktion ausgeführt werden, um die Kommunikation zu initialiseren (bspw. das Senden einer Authentifizierungs-/Loginsequenz oder aktivieren der Hardware, etc.).<br />
<br />
FHEM (respektive fhem.pl) prüft nun regelmäßig, ob Daten zum Lesen bereitstehen (also Daten empfangen wurden). Ist dies der Fall, so wird die [[DevelopmentModuleIntro#X_Read|X_Read()]]-Funktion des zugehörigen Moduls für die hinterlegte Definition aufgerufen. Hier können die Daten durch den Aufruf von [[#DevIo_SimpleRead()|DevIo_SimpleRead()]] nun eingelesen und verarbeitet werden. Das Senden von Daten ist durch den Aufruf von [[#DevIo_SimpleWrite()|DevIo_SimpleWrite()]] sehr einfach möglich.<br />
<br />
Sollte die Verbindung zusammenbrechen (USB-Gerät abgezogen, Gerät per Netzwerk nicht mehr erreichbar, etc.), so erkennt dies DevIo und registriert die Definition in <code>%readyfnlist</code><ref name="selectlist" />. FHEM führt nun regelmäßig die [[DevelopmentModuleIntro#X_Ready|X_Ready()]]-Funktion des zugehörigen Moduls<br />
aus um zu prüfen, ob die Verbindung wieder aufgebaut werden kann. Hier wird nun durch die Ausführung von [[#DevIo_OpenDev()|DevIo_OpenDev()]] versucht die Verbindung wieder herzustellen.<br />
<br />
Sobald die Verbindung nicht mehr benötigt wird, oder FHEM bspw. beendet wird, kann die Verbindung via [[#DevIo_CloseDev()|DevIo_CloseDev()]] sauber geschlossen werden.<br />
<br />
= Unterstützte Verbindungsarten = <br />
<br />
Die folgenden Verbindungsarten können via DevIo realisiert werden.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Verbindungsart !! Beispielangabe in<br><code>$hash->{DeviceName}</code> !! Beschreibung<br />
|-<br />
| style="vertical-align:top" | '''Serielle Schnittstelle'''<br />
| style="vertical-align:top" |<br />
* <code>/dev/ttyUSB0</code> <br />
* <code>/dev/ttyUSB0@9600</code><br />
* <code>/dev/ttyUSB0@9600,7,E,2</code><br />
* <code>/dev/ttyUSB0@directio</code><br />
* <code>COM1@9600</code><br />
|| <br />
Durch Angabe eines Geräts in Form eines Gerätepfad (UNIX-basierte Betriebssysteme) oder der Schnittstellenbezeichnung aus Windows kann eine serielle Verbindung geöffnet werden. Der Gerätename kann zusätzliche Angaben zu Baudrate, Datenbits, Parität und Stoppbits enthalten um die Verbindung entsprechend zu konfiguieren. Diese Angaben sind durch ein "@" getrennt an die Gerätebezeichnung angehangen:<br />
<br />
Schematische Syntax: <code>''<font color="grey"><Gerät></font>'''''@'''''<Baudrate>''''','''''<Datenbits>''''','''''<Parität>''''','''''<Stopbits>''</code><br />
<br />
* <code><Baudrate></code> - Eine gültige Taktfrequenz (Symbole pro Sekunde) mit der die Schnittstelle geöffnet werden soll (Beispiel: <code>9600</code>, <code>14400</code>, <code>115200</code>, ...)<br />
* <code><Datenbits></code> - Die Anzahl an Datenbits (7 oder 8 Datenbits). Standardwert sofern nicht angegeben sind 8 Datenbits.<br />
* <code><Parität></code> - Die zu verwendende Parität, sofern benötigt. Dabei bedeutet der Wert <code>N</code> keine Parität, <code>O</code> bedeutet ungleiche Parität (odd) und <code>E</code> bedeutet gleiche Parität (even) Standardwert sofern nicht angegeben ist <code>N</code> (keine Parität).<br />
* <code><Stopbits></code> - Die Anzahl an zu verwendenden Stopbits (0, 1 oder 2 Stopbits). Standardwert sofern nicht angegeben sind 0 Stopbits.<br />
<br />
Wenn man unter Unix-basierten Betriebssystemen die Schnittstelle nicht explizit konfiguriert öffnen möchte, sondern das Gerät direkt öffnen möchte (und damit die OS-Einstellungen verwendet), kann man durch Angabe von <code>@directio</code> die Konfiguration der Schnittstelle umgehen und das Gerät direkt öffnen:<br />
<br />
Bsp: <code><font color="grey">/dev/ttyUSB0</font>@directio</code><br />
<br />
Unter Windows verwendet man als Gerätename die entsprechende Schnittstellenbezeichung wie bspw. <code>COM1</code>, <code>COM2</code>, usw.<br />
|-<br />
| style="vertical-align:top" | '''TCP/IP-Verbindung'''<br />
| style="vertical-align:top" | <br />
* <code>192.168.1.2:1012</code> <br />
* <code>raspberry:5000</code><br />
||<br />
Durch Angabe eines Hostnamen oder IP-Adresse und einem Port, kann eine TCP-Verbindung aufgebaut werden. Dazu muss Hostname/IP-Adresse und Port in folgendem Schema angegeben werden:<br />
<br />
Schematische Syntax: <code>''<Hostname/IP-Adresse>''''':'''''<Port>''</code><br />
<br />
* <code><Hostname/IP-Adresse></code> - Der Hostname oder die IP-Adresse des zu verbindenden Gerätes/Server.<br />
* <code><Port></code> - Der Zielport zu dem sich verbunden werden soll (0-65535).<br />
<br />
Die Verbindung kann optional verschlüsselt via SSL/TLS aufgebaut werden. Dazu muss das Internal <code>$hash->{SSL}</code> auf 1 gesetzt werden.<br />
|-<br />
| style="vertical-align:top" | '''UNIX-Socket'''<br />
| style="vertical-align:top" |<br />
* <code>UNIX:SEQPACKET:/var/tmp/me_avm_home_external.ctl</code> <br />
* <code>UNIX:STREAM:/var/socket/con</code><br />
|| <br />
Durch Angabe eines Pfads zu einem UNIX-Domain-Socket kann eine Kommunikation mit einem anderen Prozess aufgebaut werden (Inter-Prozess-Kommunikation). Man kann den Socket dabei paketorientiert ("SEQPACKET") oder als Stream ("STREAM") öffnen. <br />
<br />
Schematische Syntax: <code>UNIX:''<Typ>'':''<Pfad>''</code><br />
<br />
* <code><Typ></code> - Der Typ des Sockets. Für einen paketorientierten Socket ist hier <code>SEQPACKET</code> zu verwenden, für einen streamorientierten Socket <code>STREAM</code>. Der Typ muss immer mit angegeben werden.<br />
* <code><Pfad></code> - Der Pfad im Dateisystem zu dem gewünschten UNIX-Socket<br />
|-<br />
| style="vertical-align:top" | '''FHEM IO-Modul'''<br />
| style="vertical-align:top" |<br />
* <code>FHEM:DEVIO:Firmata_SerielleSchnittstelle@9600</code> <br />
|| <br />
Beschreibung siehe {{Link2Forum|Topic=46276}}<br />
|}<br />
<br />
= Wichtige Internals zur Konfiguration =<br />
<br />
Da DevIo ausschließlich definitionsbezogen arbeitet, erfolgt eine Konfiguration von DevIo über Internals, die im übergebenen <code>$hash</code> gesetzt werden müssen (oder können). Hiermit lässt sich das Verhalten von DevIo entsprechend beeinflussen. <br />
<br />
Hier eine Auflistung von allen Internals, die DevIo beeinflussen:<br />
<br />
{| class="wikitable"<br />
|-<br />
! style="min-width: 13em;" | Internal !! Beschreibung<br />
|-<br />
| style="vertical-align:top" | <code>$hash->{DeviceName}</code> <br />
<br />
''mandatory''<br />
| style="vertical-align:top" | Die Gegenstelle zu der eine Verbindung aufgebaut werden soll. Die möglichen Werte und deren Syntax ist im Kapitel [[#Unterstützte Verbindungsarten|Unterstützte Verbindungsarten]] genauer beschrieben.<br />
|-<br />
| style="vertical-align:top" | <code>$hash->{nextOpenDelay}</code> <br />
<br />
''optional''<br />
|| Die Zeit in Sekunden, welche im Falle eines Verbindungsabbruchs gewartet werden soll, bevor ein erneuter Verbindungsversuch stattfindet. <br />
<br />
Standardwert: 60 Sekunden<br />
|-<br />
| style="vertical-align:top" | <code>$hash->{TIMEOUT}</code> <br />
<br />
''optional''<br />
|| Die maximale Zeit in Sekunden für den Aufbau einer TCP/IP-Verbindung. Sollte diese Zeit überschritten werden, bricht der Verbindungsaufbau mit einer Fehlermeldung ab.<br />
<br />
'''WICHTIG:''' Sollte beim Aufruf von [[#DevIo_OpenDev|DevIo_OpenDev()]] keine Callback-Funktion parametrisiert sein und die Gegenstelle antwortet beim Verbindungsaufbau nicht, so wird FHEM für die Dauer von <code>$hash->{TIMEOUT}</code> blockiert.<br />
<br />
Standardwert: 3 Sekunden<br />
|-<br />
| style="vertical-align:top" | <code>$hash->{SSL}</code> <br />
<br />
''optional''<br />
|| Flag (0 oder 1), ob eine TCP/IP-Verbindung verschlüsselt (via SSL/TLS) aufgebaut werden soll. Wenn dieses Flag auf 1 gesetzt ist, wird nach erfolgtem Verbindungsaufbau eine SSL-Session initiiert.<br />
<br />
Standardwert: 0 (keine Verschlüsselung)<br />
|-<br />
| style="vertical-align:top" | <code>$hash->{devioLoglevel}</code> <br />
<br />
''optional''<br />
|| Das Loglevel in dem <code>disconnected</code>/<code>reappeared</code> Meldungen geloggt werden sollen. Standardmäßig werden solche Verbindungsabbrüche (<code>disconnected</code>/<code>reappeared</code>) im Loglevel 1 geloggt. Die erfolgreiche Erstverbindung wird standardmäßig im Loglevel 3 geloggt. Durch das Setzen von <code>$hash->{devioLoglevel}</code> werden diese Meldungen allesamt in dem gesetzten Loglevel ausgegeben. Details dazu siehe {{Link2Forum|Topic=61970}}.<br />
<br />
Standardwert: ''[leer]''<br />
|}<br />
<br />
= Die Funktionen =<br />
== DevIo_OpenDev() ==<br />
:<syntaxhighlight lang="perl">$error = DevIo_OpenDev($hash, $reopen, $initfn);<br />
$error = DevIo_OpenDev($hash, $reopen, $initfn, $callback);</syntaxhighlight><br />
<br />
Die Funktion DevIo_OpenDev() öffnet eine Verbindung zu dem Endpunkt der in <code>$hash->{DeviceName}</code> hinterlegt ist. Sobald die Verbindung erfolgreich hergestellt wurde, wird die Funktion <code>$initfn</code> ausgeführt, sofern gesetzt, um die Verbindung zu initialisieren. Sofern eine TCP/IP-Verbindung hergestellt wird, kann eine optionale Callback-Funktion <code>$callback</code> übergeben werden um den Verbindungsaufbau non-blocking durchzuführen.<br />
<br />
Der Rückgabewert enthält im Fehlerfall eine entsprechende Fehlermeldung. Im Erfolgsfall wird <code>undef</code> zurückgegeben. Sofern eine TCP/IP-Verbindung hergestellt wird und eine Callback-Funktion <code>$callback</code> übergeben wurde, wird immer <code>undef</code> zurückgegeben, da ein evtl. Fehler an diese Callback-Funktion nach dem erfolgten Verbindungsversuch mitgeteilt wird.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
| style="vertical-align:top" | Die Hash-Referenz der Definition, für die eine Verbindung geöffnet werden soll<br />
|-<br />
| style="vertical-align:top" | '''<code>$reopen</code>''' <br />
<br />
''mandatory<br>can be <code>undef</code>''<br />
| style="vertical-align:top" | Flag (0 oder 1), ob es sich um einen erneuten Verbindungsversuch handelt (im Rahmen der [[DevelopmentModuleIntro#X_Ready|X_Ready()]]-Funktion). Sollte es der erste Verbindungsversuch sein, so muss dieser Parameter den Wert 0 besitzen.<br />
|-<br />
| style="vertical-align:top" | '''<code>$initfn</code>''' <br />
<br />
''mandatory<br>can be <code>undef</code>''<br />
|| Der Name (als Zeichenkette) oder die Referenz auf eine Modulfunktion, welche optional nach dem erfolgreichen Aufbau/Wiederaufbau der Verbindung ausgeführt werden soll. Im Rahmen dieser Funktion kann weiterführende Kommunikation über die aufgebaute Verbindung erfolgen um zum Beispiel eine Loginsequenz oder eine Konfiguration der Gegenseite vorzunehmen, bevor die Verbindung allgemein benutzt werden kann. <br />
<br />
Die Funktion welche in <code>$initfn</code> angegeben wurde, wird mit folgenden Parametern aufgerufen:<br />
<br />
<syntaxhighlight lang="perl">$ret = MYMODULE_InitFn($hash)</syntaxhighlight><br />
<br />
Wenn der Rückgabewert <code>$ret</code> einen Inhalt zurückliefert, wird die Initialisierung als fehlgeschlagen bewertet und die Verbindung wieder geschlossen um einen neuen Verbindungsversuch zu einem späteren Zeitpunkt zu versuchen. Der genaue Inhalt von <code>$ret</code> ist dabei unerheblich, da er nicht weiterverwendet wird. Die Rückgabewerte <code>0</code> oder <code>undef</code> signalisieren dabei eine erfolgreiche Initialisierung.<br />
<br />
Beispiel: <br />
* <code>"MYMODULE_InitFn"</code><br />
* <code>\&MYMODULE_InitFn</code><br />
|-<br />
| style="vertical-align:top" | '''<code>$callback</code>''' <br />
<br />
''optional''<br />
|| Der Name (als Zeichenkette) oder die Referenz auf eine Modulfunktion, welche aufgerufen werden soll um evtl. Fehlermeldungen beim Verbindungsaufbau einer TCP/IP-Verbindung an das Modul zurückzuliefern. Wenn eine Callback-Funktion gesetzt ist, erfolgt der Verbindungsaufbau non-blocking. Andernfalls wartet DevIo_OpenDev() bis die Verbindung steht bzw. ein Fehler auftritt (z.B. Timeout).<br />
<br />
Die Funktion welche in <code>$callback</code> angegeben wurde, wird mit folgenden Parametern aufgerufen:<br />
<br />
<syntaxhighlight lang="perl">MYMODULE_ConnectCallbackFn($hash, $error)</syntaxhighlight><br />
<br />
Das Argument <code>$error</code> enthält dabei eine Fehlermeldung als Zeichenkette welche die aufgetretene Fehlermeldung enthält. Der Rückgabewert der Callback-Funktion wird nicht ausgewertet und ist daher irrelevant.<br />
<br />
Beispiel: <br />
* <code>"MYMODULE_ConnectCallbackFn"</code><br />
* <code>\&MYMODULE_ConnectCallbackFn</code><br />
|}<br />
<br />
Rückgabewert:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabe!! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$error </code>''' || Eine Fehlermeldung als Zeichenkette, sollte der Verbindungsaufbau fehlschlagen. Im Erfolgsfall wird <code>undef</code> zurückgegeben.<br />
<br />
Wenn es sich um eine TCP/IP-Verbindung handelt und eine Callback-Funktion als Parameter <code>$callback</code> angegeben wurde, wird immer <code>undef</code> zurückgegeben, andernfalls erfolgt der Verbindungsaufbau blocking und eine evtl. Fehlermeldung wird als Rückgabewert zurückgegeben. Im Erfolgsfall wird <code>undef</code> zurückgegeben.<br />
|}<br />
<br />
== DevIo_IsOpen() ==<br />
:<syntaxhighlight lang="perl">$status = DevIo_IsOpen($hash);</syntaxhighlight><br />
<br />
Die Funktion DevIo_IsOpen() prüft, ob eine Verbindung für <code>$hash</code> geöffnet ist. Falls ja, wird das zugehörige IO-Objekt zurückgegeben, andernfalls <code>undef</code>.<br />
<br />
Diese Funktion kann dabei direkt in typischen if-Konstrukten verwendet werden um zu prüfen, ob eine Verbindung für die jeweilige Definition geöffnet oder geschlossen ist.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, deren Verbindung geprüft werden soll.<br />
|}<br />
<br />
Rückgabewerte:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabewert !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$status</code>''' || Der Status der Verbindung. Wenn eine Verbindung besteht, wird das zugehörige IO-Objekt zurückgegeben. Falls keine Verbindung besteht, wird <code>undef</code> zurückgegeben.<br />
|}<br />
<br />
== DevIo_SimpleRead() ==<br />
:<syntaxhighlight lang="perl">$buf = DevIo_SimpleRead($hash);</syntaxhighlight><br />
<br />
Die Funktion DevIo_SimpleRead() liest anstehende Daten für die Verbindung von <code>$hash</code> ein und gibt diese zurück.<br />
<br />
Sollte beim Versuch Daten zu lesen eine geschlossene Verbindung erkannt werden, so wird <code>undef</code> zurückgegeben und die Verbindung geschlossen. Es erfolgt zu einem späteren Zeitpunkt (siehe Internal <code>$hash->{nextOpenDelay}</code> aus Kapitel [[#Wichtige Internals zur Konfiguration|Wichtige Internals zur Konfiguration]]) ein neuer Verbindungsversuch.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, für deren Verbindung aktuell anstehende Daten gelesen werden sollen.<br />
|}<br />
<br />
Rückgabewert:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabe!! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$buf</code>''' || Die zu lesenden Daten als Zeichenkette. Im Falle eines Verbindungsabruchs wird <code>undef</code> zurückgegeben.<br />
|}<br />
<br />
== DevIo_SimpleReadWithTimeout() ==<br />
{{Randnotiz|RNTyp=Warn|RNText=<u>'''ACHTUNG:'''</u><br />
<br />
Bei der Benutzung von DevIo_SimpleReadWithTimeout() wird FHEM für die Dauer von bis zu <code>$timeout</code> Sekunden blockiert, sollten keine Daten bis dahin zum Lesen bereitstehen. -> DevIo_SimpleReadWithTimeout() NICHT NUTZEN!}}<br />
:<syntaxhighlight lang="perl">$buf = DevIo_SimpleReadWithTimeout($hash, $timeout);</syntaxhighlight><br />
<br />
Die Funktion DevIo_SimpleReadWithTimeout() wartet maximal <code>$timeout</code> Sekunden bis die Verbindung von <code>$hash</code> Daten zum einlesen bereitstellt und gibt diese zurück. Sollte nach dem Warten von <code>$timeout</code> noch immer keine Daten zum Lesen bereitstehen, so wird ein Leerstring zurückgegeben.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, für deren Verbindung aktuell anstehende Daten gelesen werden sollen.<br />
|-<br />
| style="vertical-align:top" | '''<code>$timeout</code>''' <br />
<br />
''mandatory''<br />
|| Die maximale Wartezeit in Sekunden.<br />
|}<br />
<br />
Rückgabewert:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabe!! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$buf</code>''' || Die zu lesenden Daten als Zeichenkette.<br />
|}<br />
<br />
== DevIo_TimeoutRead() ==<br />
{{Randnotiz|RNTyp=Warn|RNText=<u>'''ACHTUNG:'''</u><br />
<br />
Bei der Benutzung von DevIo_TimeoutRead() wird FHEM für die Dauer von <code>$timeout</code> Sekunden blockiert. -> DevIo_TimeoutRead() NICHT NUTZEN!}}<br />
:<syntaxhighlight lang="perl">$buf = DevIo_TimeoutRead($hash, $timeout);</syntaxhighlight><br />
<br />
Die Funktion DevIo_SimpleReadWithTimeout() wartet <code>$timeout</code> Sekunden und liest sämtliche Daten für die Verbindung von <code>$hash</code> ein, die in dieser Zeit eintreffen. Sollten keinerlei Daten während der Wartezeit eintreffen, so wird ein Leerstring zurückgegeben.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, für deren Verbindung Daten eingelesen werden sollen.<br />
|-<br />
| style="vertical-align:top" | '''<code>$timeout</code>''' <br />
<br />
''mandatory''<br />
|| Die Wartezeit in Sekunden.<br />
|}<br />
<br />
Rückgabewert:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabe!! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$buf</code>''' || Die eingelesenen Daten als Zeichenkette.<br />
|}<br />
<br />
== DevIo_SimpleWrite() ==<br />
:<syntaxhighlight lang="perl">DevIo_SimpleWrite($hash, $msg, $type);<br />
DevIo_SimpleWrite($hash, $msg, $type, $addnl);</syntaxhighlight><br />
<br />
Die Funktion DevIo_SimpleWrite() sendet den Inhalt von <code>$msg</code> über die Verbindung von <code>$hash</code>. Mit den beiden Argumenten <code>$type</code> und <code>$addnl</code> kann die Formatierung von <code>$msg</code> beeinflusst werden bevor die Daten tatsächlich gesendet werden.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, über deren Verbindung die Daten gesendet werden sollen.<br />
|-<br />
| style="vertical-align:top" | '''<code>$msg</code>''' <br />
<br />
''mandatory''<br />
|| Die zu schreibenden Daten als Zeichenkette. Abhängig von <code>$type</code> kann <code>$msg</code> Byte-Characters, HEX-Darstellungen oder normale ASCII-Zeichen enthalten.<br />
|-<br />
| style="vertical-align:top" | '''<code>$type</code>''' <br />
<br />
''mandatory''<br />
|| Die Art des Inhalts von <code>$msg</code>. Abhängig von dem Inhalt von <code>$type</code> wird <code>$msg</code> entsprechend geändert oder nicht. Desweiteren werden die Daten für Logausgaben evtl. leserlich gemacht.<br />
<br />
Folgende Werte sind möglich:<br />
<br />
* <code>0</code> - <code>$msg</code> enthält Daten in Byteform. Der Inhalt von <code>$msg</code> wird 1:1 gesendet. Zur besseren Lesbarkeit werden die Daten bei Logausgaben in HEX-Darstellung umgewandelt.<br />
* <code>1</code> - <code>$msg</code> enthält Binärdaten in HEX-Darstellung (0-9/A-F). Der Inhalt von <code>$msg</code> wird vorher in Byteform umgewandelt und anschließend gesendet. In Logausgaben wird die HEX-Darstellung wie übergeben verwendet.<br />
* <code>2</code> - <code>$msg</code> enthält normale ASCII-Textzeichen. Der Inhalt von <code>$msg</code> wird 1:1 gesendet. In Logausgaben wird <code>$msg</code> wie übergeben ausgegeben.<br />
|-<br />
| style="vertical-align:top" | '''<code>$addnl</code>''' <br />
<br />
''optional''<br />
|| Ein Flag (0/1) welches, sofern aktiviert, einen Zeilenumbruch (<code>\n</code>) an <code>$msg</code> anfügt, bevor es gesendet wird.<br />
<br />
Standardwert: 0<br />
|}<br />
<br />
== DevIo_Expect() ==<br />
{{Randnotiz|RNTyp=Warn|RNText=<u>'''ACHTUNG:'''</u><br />
<br />
# Bei der Benutzung von DevIo_Expect() wird FHEM für die Dauer von bis zu <code>$timeout</code> Sekunden blockiert.<br />
# Sollte im ersten Versuch keine Antwort auf die zuvor gesendeten Daten innerhalb von <code>$timeout</code> Sekunden eintreffen, wird die Verbindung geschlossen und neu aufgebaut. Es erfolgt dabei '''KEINE INITIALISIERUNG''' durch <code>$initfn</code> aus [[#DevIo_OpenDev()|DevIo_OpenDev()]].<br />
-> DevIo_Expect() NICHT NUTZEN!<br />
}}<br />
:<syntaxhighlight lang="perl">$buf = DevIo_Expect($hash, $msg, $timeout);</syntaxhighlight><br />
<br />
Die Funktion DevIo_Expect() sendet den Inhalt von <code>$msg</code> und wartet bis zu <code>$timeout</code> Sekunden auf eine Antwort. Sollte in dieser Zeit keine Antwort eintreffen, so wird die Verbindung einmalig geschlossen, erneut geöffnet (ohne Aufruf einer Initialisierungs-Funktion) und der Vorgang wiederholt. Die empfangene Antwort wird anschließend als Funktionsergebnis zurückgegeben.<br />
<br />
Wenn beim ersten Versuch keine Antwort innerhalb von <code>$timeout</code> Sekunden eintrifft, wird das Event <code>FAILED</code> generiert (siehe [[#Generierte Events|Generierte Events]]). Anschließend wird die Verbindung geschlossen, neu geöffnet (ohne Initialisierung) und <code>$msg</code> erneut gesendet. Sollte nun eine Antwort eintreffen, so wird das Event <code>CONNECTED</code> generiert und die empfangene Antwort zurückgegeben. Sollte dennoch keine Antwort eintreffen, so wird das Event <code>DISCONNECTED</code> getriggert.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, für deren Verbindung Daten gesendet und anschließen gelesen werden sollen.<br />
|-<br />
| style="vertical-align:top" | '''<code>$msg</code>''' <br />
<br />
''mandatory''<br />
|| Die zu sendenden Daten auf die eine Antwort erwartet wird. Die Daten werden ohne Konvertierung direkt gesendet (entspricht <code>$type</code> gleich <code>0</code> bei [[#DevIo_SimpleWrite()|DevIo_SimpleWrite]]).<br />
|-<br />
| style="vertical-align:top" | '''<code>$timeout</code>''' <br />
<br />
''mandatory''<br />
|| Die maximale Wartezeit in Sekunden bis zum Eintreffen einer Antwort.<br />
|}<br />
<br />
Rückgabewert:<br />
{| class="wikitable"<br />
|-<br />
! Rückgabe!! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$buf</code>''' || Die empfangene Antwort. Sollte es zu einem Fehler gekommen sein (Senden von <code>$msg</code> fehlgeschlagen, keine Antwort innerhalb von <code>$timeout</code> Sekunden erhalten, etc.), so wird <code>undef</code> zurückgegeben.<br />
|}<br />
<br />
== DevIo_CloseDev() ==<br />
:<syntaxhighlight lang="perl">DevIo_CloseDev($hash);<br />
DevIo_CloseDev($hash, $isFork);</syntaxhighlight><br />
<br />
Die Funktion DevIo_CloseDev() schließt eine evtl. geöffnete Verbindung für die Definition <code>$hash</code>. <br />
<br />
Optional kann man mit dem Flag <code>$isFork</code> angeben, dass man sich aktuell in einem Fork vom Hauptprozess befindet. Dadurch werden beim Schließen einer seriellen Verbindung die Kommunikationsparameter nicht zurückgesetzt. Dies verhindert einen Ausfall der nachwievor bestehenden Verbindung im Elternprozess.<br />
<br />
Parameter:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Bedeutung<br />
|-<br />
| style="vertical-align:top" | '''<code>$hash</code>''' <br />
<br />
''mandatory''<br />
|| Die Hash-Referenz der Definition, deren Verbindung geschlossen werden soll.<br />
|-<br />
| style="vertical-align:top" | '''<code>$isFork</code>''' <br />
<br />
''optional''<br />
|| Ein Flag (0 oder 1), welches angibt, dass DevIo_CloseDev() innerhalb eines geforkten Kindprozess ausgeführt wird. Dadurch werden die Kommunikationsparameter im Falle einer seriellen Verbindung (Baudrate, Datenbits, Parität, etc.) nicht zurückgesetzt. Dieses Flag wird primär von dem Modul [[Blocking_Call|Blocking.pm]] verwendet um Verbindungen in einem geforkten Kindprozess zu schließen, ohne die Verbindung im Hauptprozess zu beeinträchtigen.<br />
<br />
Standardwert: 0 (Verbindung wird im Hauptprozess geschlossen)<br />
|}<br />
<br />
= Generierte Events =<br />
Die Funktionen von DevIo generieren verschiedene Events für die entsprechende Definition (parametrisiert durch <code>$hash</code>). Diese können bspw. in der [[DevelopmentModuleIntro#X_Notify|Notify]]-Funktion des entsprechenden Moduls verarbeitet werden.<br />
<br />
Hier eine Übersicht der generierten Events:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Event !! Bedeutung<br />
|-<br />
| '''<code>CONNECTED</code>''' || Die Verbindung wurde nach einem Verbindungsabbruch erfolgreich wieder aufgebaut. Dieses Event wird nur nach einem erfolgreichen Reconnect von einer zuvor verlorenen Verbindung generiert. Es wird '''nicht''' nach der erfolgreichen Initialverbindung generiert.<br />
<br />
<u>Hinweis:</u><br>Seit [https://svn.fhem.de/trac/changeset/18985/ SVN-Revision 18985] wird das <code>CONNECTED</code>-Event auch beim erfolgreichen Aufbau der initialen Verbindung getriggert. Dies gilt jedoch nur für TCP-Verbindungen. Bei allen anderen Verbindungsarten bleibt das Verhalten unverändert. (siehe {{Link2Forum|Topic=98809|Message=921911}})<br />
|-<br />
| '''<code>DISCONNECTED</code>''' || Die zuvor erfolgreich aufgebaute Verbindung ist zusammengebrochen. Es wird ein neuer Verbindungsversuch nach <code>$hash->{nextOpenDelay}</code> Sekunden erfolgen (siehe [[#Wichtige Internals zur Konfiguration|Wichtige Internals zur Konfiguration]]).<br />
<br />
<u>Hinweis:</u><br>Seit [https://svn.fhem.de/trac/changeset/18985/ SVN-Revision 18985] wird das <code>DISCONNECTED</code>-Event auch nach dem ersten initialem erfolglosen Verbindungsversuch getriggert. Dies gilt jedoch nur für TCP-Verbindungen. Bei allen anderen Verbindungsarten bleibt das Verhalten unverändert. (siehe {{Link2Forum|Topic=98809|Message=921911}})<br />
|-<br />
| '''<code>FAILED</code>''' || Dieses Event wird nur bei der Nutzung der Funktion [[#DevIo_Expect|DevIo_Expect()]] generiert, sofern es keine Antwort auf die zuvor gesendeten Daten gibt. Dies bedeutet konkret, dass Gerät hat nicht auf die eigene Anfrage geantwortet und die Verbindung wird daher neu aufgebaut. Details dazu, siehe [[#DevIo_Expect()|DevIo_Expect()]].<br />
|}<br />
<br />
= Hinweis bei der Datenverarbeitung (Buffering) =<br />
DevIo beschränkt sich ausschließlich auf die Verbindungsverwaltung. Sobald die Verbindung etabliert wurde, übernimmt FHEM (fhem.pl) die Verarbeitung von eingehenden Daten und informiert das entsprechende Modul durch Aufruf der [[DevelopmentModuleIntro#X_Read|Read]]-Funktion. Dabei hat weder DevIo, noch FHEM selber Kenntnis von der Struktur der Daten. Sowohl DevIo, als auch FHEM selber können nicht erkennen, ob die empfangenen Daten weder vollständig, noch valide in ihrem Aufbau sind. Dies alles obliegt dem Modul, welches die Verbindung initiiert hat. Man sollte daher immer davon ausgehen, dass beim Lesen von Daten (in [[DevelopmentModuleIntro#X_Read|X_Read()]]) diese unvollständig sein können, oder sogar mehrere Datagramme enthalten sein können. <br />
<br />
Dazu stellt DevIo dem Modulentwickler das Internal <code>$hash->{PARTIAL}</code> in der jeweiligen Definition zur Verfügung um dort Daten zwischenzuspeichern, bis ein vollständiges Datagramm daraus verarbeitet werden kann. Alle eingelesenen Daten werden dazu in der [[DevelopmentModuleIntro#X_Read|Read]]-Funktion immer an <code>$hash->{PARTIAL}</code> hinten angehangen. Sobald ein vollständiges Datagramm in <code>$hash->{PARTIAL}</code> erkannt wurde, wird dieses herausgenommen und verarbeitet, solange bis kein vollständiges Datagramm in <code>$hash->{PARTIAL}</code> erkennbar ist. Hierbei ist jedoch entscheidend, woran man ein abgeschlossenes Datagramm erkennen kann. Dies kann je nach Protokoll sehr unterschiedlich sein (bspw. Zeilenumbruch <code>\r\n</code> oder ein Semikolon <code>;</code>, etc.). <br />
<br />
DevIo initialisiert <code>$hash->{PARTIAL}</code> nach dem erfolgreichen Verbindungsaufbau mit einem Leerstring (<code>""</code>). Sobald eine Verbindung mit [[#DevIo_CloseDev()|DevIo_CloseDev()]] geschlossen wird, wird <code>$hash->{PARTIAL}</code> gelöscht.<br />
<br />
Hier ein Beispiel, wie man ein solches Buffering verwendet für ein Protokoll, welches Datagramme durch einen Zeilenumbruch <code>\n</code> (Newline) abtrennt:<br />
<br />
<syntaxhighlight lang="perl"><br />
sub MY_MODULE_Read($)<br />
{<br />
my ($hash) = @_;<br />
my $name = $hash->{NAME};<br />
<br />
my $data = DevIo_SimpleRead($hash);<br />
return if(!defined($data)); # connection lost<br />
<br />
my $buffer = $hash->{PARTIAL};<br />
<br />
Log3 $name, 5, "MY_MODULE ($name) - received $data (buffer contains: $buffer)";<br />
<br />
# concat received data to $buffer<br />
$buffer .= $data;<br />
<br />
# as long as the buffer contains newlines (complete datagramm)<br />
while($buffer =~ m/\n/)<br />
{<br />
my $msg;<br />
<br />
# extract the complete message ($msg), everything else is assigned to $buffer<br />
($msg, $buffer) = split("\n", $buffer, 2);<br />
<br />
# remove trailing whitespaces<br />
chomp $msg;<br />
<br />
# parse the extracted message<br />
MY_MODULE_ParseMessage($hash, $msg);<br />
}<br />
<br />
# update $hash->{PARTIAL} with the current buffer content<br />
$hash->{PARTIAL} = $buffer; <br />
}<br />
</syntaxhighlight><br />
<br />
= Beispielimplementierung in einem Modul =<br />
== serielle Verbindung ==<br />
<syntaxhighlight lang="perl"><br />
package main;<br />
<br />
use strict;<br />
use warnings;<br />
use DevIo; # load DevIo.pm if not already loaded<br />
<br />
# called upon loading the module MY_MODULE<br />
sub MY_MODULE_Initialize($)<br />
{<br />
my ($hash) = @_;<br />
<br />
$hash->{DefFn} = "MY_MODULE_Define";<br />
$hash->{UndefFn} = "MY_MODULE_Undef";<br />
$hash->{SetFn} = "MY_MODULE_Set";<br />
$hash->{ReadFn} = "MY_MODULE_Read";<br />
$hash->{ReadyFn} = "MY_MODULE_Ready";<br />
}<br />
<br />
# called when a new definition is created (by hand or from configuration read on FHEM startup)<br />
sub MY_MODULE_Define($$)<br />
{<br />
my ($hash, $def) = @_;<br />
my @a = split("[ \t]+", $def);<br />
<br />
my $name = $a[0];<br />
<br />
# $a[1] is always equals the module name "MY_MODULE"<br />
<br />
# first argument is a serial device (e.g. "/dev/ttyUSB0@9600")<br />
my $dev = $a[2]; <br />
<br />
return "no device given" unless($dev);<br />
<br />
# close connection if maybe open (on definition modify)<br />
DevIo_CloseDev($hash) if(DevIo_IsOpen($hash)); <br />
<br />
# add a default baud rate (9600), if not given by user<br />
$dev .= '@9600' if(not $dev =~ m/\@\d+$/);<br />
<br />
# set the device to open<br />
$hash->{DeviceName} = $dev;<br />
<br />
# open connection with custom init function<br />
my $ret = DevIo_OpenDev($hash, 0, "MY_MODULE_Init"); <br />
<br />
return undef;<br />
}<br />
<br />
# called when definition is undefined <br />
# (config reload, shutdown or delete of definition)<br />
sub MY_MODULE_Undef($$)<br />
{<br />
my ($hash, $name) = @_;<br />
<br />
# close the connection <br />
DevIo_CloseDev($hash);<br />
<br />
return undef;<br />
}<br />
<br />
# called repeatedly if device disappeared<br />
sub MY_MODULE_Ready($)<br />
{<br />
my ($hash) = @_;<br />
<br />
# try to reopen the connection in case the connection is lost<br />
return DevIo_OpenDev($hash, 1, "MY_MODULE_Init"); <br />
}<br />
<br />
# called when data was received<br />
sub MY_MODULE_Read($)<br />
{<br />
my ($hash) = @_;<br />
my $name = $hash->{NAME};<br />
<br />
# read the available data<br />
my $buf = DevIo_SimpleRead($hash);<br />
<br />
# stop processing if no data is available (device disconnected)<br />
return if(!defined($buf));<br />
<br />
Log3 $name, 5, "MY_MODULE ($name) - received: $buf"; <br />
<br />
#<br />
# do something with $buf, e.g. generate readings, send answers via DevIo_SimpleWrite(), ...<br />
#<br />
<br />
}<br />
<br />
# called if set command is executed<br />
sub MY_MODULE_Set($$@)<br />
{<br />
my ($hash, $name, $cmd) = @_;<br />
<br />
my $usage = "unknown argument $cmd, choose one of statusRequest:noArg on:noArg off:noArg";<br />
<br />
if($cmd eq "statusRequest")<br />
{<br />
DevIo_SimpleWrite($hash, "get_status\r\n", 2);<br />
}<br />
elsif($cmd eq "on")<br />
{<br />
DevIo_SimpleWrite($hash, "on\r\n", 2);<br />
}<br />
elsif($cmd eq "off")<br />
{<br />
DevIo_SimpleWrite($hash, "off\r\n", 2);<br />
}<br />
else<br />
{<br />
return $usage;<br />
}<br />
}<br />
<br />
# will be executed upon successful connection establishment (see DevIo_OpenDev())<br />
sub MY_MODULE_Init($)<br />
{<br />
my ($hash) = @_;<br />
<br />
# send a status request to the device<br />
DevIo_SimpleWrite($hash, "get_status\r\n", 2);<br />
<br />
return undef; <br />
}<br />
<br />
1;<br />
</syntaxhighlight><br />
<br />
== TCP/IP-Verbindung == <br />
<syntaxhighlight lang="perl"><br />
package main;<br />
<br />
use strict;<br />
use warnings;<br />
use DevIo; # load DevIo.pm if not already loaded<br />
<br />
# called upon loading the module MY_MODULE<br />
sub MY_MODULE_Initialize($)<br />
{<br />
my ($hash) = @_;<br />
<br />
$hash->{DefFn} = "MY_MODULE_Define";<br />
$hash->{UndefFn} = "MY_MODULE_Undef";<br />
$hash->{SetFn} = "MY_MODULE_Set";<br />
$hash->{ReadFn} = "MY_MODULE_Read";<br />
$hash->{ReadyFn} = "MY_MODULE_Ready";<br />
}<br />
<br />
# called when a new definition is created (by hand or from configuration read on FHEM startup)<br />
sub MY_MODULE_Define($$)<br />
{<br />
my ($hash, $def) = @_;<br />
my @a = split("[ \t]+", $def);<br />
<br />
my $name = $a[0];<br />
<br />
# $a[1] is always equals the module name "MY_MODULE"<br />
<br />
# first argument is the hostname or IP address of the device (e.g. "192.168.1.120")<br />
my $dev = $a[2]; <br />
<br />
return "no device given" unless($dev);<br />
<br />
# close connection if maybe open (on definition modify)<br />
DevIo_CloseDev($hash) if(DevIo_IsOpen($hash)); <br />
<br />
# add a default port (1012), if not explicitly given by user<br />
$dev .= ':1012' if(not $dev =~ m/:\d+$/);<br />
<br />
# set the IP/Port for DevIo<br />
$hash->{DeviceName} = $dev;<br />
<br />
# open connection with custom init and error callback function (non-blocking connection establishment)<br />
DevIo_OpenDev($hash, 0, "MY_MODULE_Init", "MY_MODULE_Callback"); <br />
<br />
return undef;<br />
}<br />
<br />
# called when definition is undefined <br />
# (config reload, shutdown or delete of definition)<br />
sub MY_MODULE_Undef($$)<br />
{<br />
my ($hash, $name) = @_;<br />
<br />
# close the connection <br />
DevIo_CloseDev($hash);<br />
<br />
return undef;<br />
}<br />
<br />
# called repeatedly if device disappeared<br />
sub MY_MODULE_Ready($)<br />
{<br />
my ($hash) = @_;<br />
<br />
# try to reopen the connection in case the connection is lost<br />
return DevIo_OpenDev($hash, 1, "MY_MODULE_Init", "MY_MODULE_Callback"); <br />
}<br />
<br />
# called when data was received<br />
sub MY_MODULE_Read($)<br />
{<br />
my ($hash) = @_;<br />
my $name = $hash->{NAME};<br />
<br />
# read the available data<br />
my $buf = DevIo_SimpleRead($hash);<br />
<br />
# stop processing if no data is available (device disconnected)<br />
return if(!defined($buf));<br />
<br />
Log3 $name, 5, "MY_MODULE ($name) - received: $buf"; <br />
<br />
#<br />
# do something with $buf, e.g. generate readings, send answers via DevIo_SimpleWrite(), ...<br />
#<br />
<br />
}<br />
<br />
# called if set command is executed<br />
sub MY_MODULE_Set($$@)<br />
{<br />
my ($hash, $name, $cmd) = @_;<br />
<br />
my $usage = "unknown argument $cmd, choose one of statusRequest:noArg on:noArg off:noArg";<br />
<br />
if($cmd eq "statusRequest")<br />
{<br />
DevIo_SimpleWrite($hash, "get_status\r\n", 2);<br />
}<br />
elsif($cmd eq "on")<br />
{<br />
DevIo_SimpleWrite($hash, "on\r\n", 2);<br />
}<br />
elsif($cmd eq "off")<br />
{<br />
DevIo_SimpleWrite($hash, "off\r\n", 2);<br />
}<br />
else<br />
{<br />
return $usage;<br />
}<br />
}<br />
<br />
# will be executed upon successful connection establishment (see DevIo_OpenDev())<br />
sub MY_MODULE_Init($)<br />
{<br />
my ($hash) = @_;<br />
<br />
# send a status request to the device<br />
DevIo_SimpleWrite($hash, "get_status\r\n", 2);<br />
<br />
return undef; <br />
}<br />
<br />
# will be executed if connection establishment fails (see DevIo_OpenDev())<br />
sub MY_MODULE_Callback($)<br />
{<br />
my ($hash, $error) = @_;<br />
my $name = $hash->{NAME};<br />
<br />
# create a log emtry with the error message<br />
Log3 $name, 5, "MY_MODULE ($name) - error while connecting: $error"; <br />
<br />
return undef; <br />
}<br />
<br />
1;<br />
</syntaxhighlight><br />
<br />
= Referenzen = <br />
<references /><br />
<br />
[[Kategorie:Development]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave&diff=33372Z-Wave2020-06-08T14:57:42Z<p>Krikan: /* Definition von Geräten / Slaves */ -> devspec funktioniert nicht zuverlässig bei neighborUpdate</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=ZWDongle<br />
|ModPurpose=Einbindung Z-Wave-Gateways<br />
|ModType=d<br />
|ModCmdRef=ZWDongle<br />
|ModForumArea=ZWave<br />
|ModTechName=00_ZWDongle.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
{{Infobox Modul<br />
|Name=ZWave<br />
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle<br />
|ModType=d<br />
|ModCmdRef=ZWave<br />
|ModForumArea=ZWave<br />
|ModTechName=10_ZWave.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
</div><br />
<br />
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])<br />
<br />
Auf dieser Seite werden Grundlagen eines '''Z-Wave''' Systems und dessen Einrichtung in FHEM beschrieben.<br />
== Z-Wave ==<br />
=== Nodes - Controller und Slaves ===<br />
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten '''Nodes''' (Knoten). Es setzt sich zusammen aus dem steuernden '''Controller''' (Zentrale) und min. 1 bis max. 231 gesteuerten '''Slaves''' (Geräten). <br />
<br />
=== Home-Id und Node-ID ===<br />
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:<br />
# '''Home-ID:''' Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.<br />
# '''Node-ID:''' Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. <br />
<br />
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der '''Inklusion''' (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. <br />
<br />
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).<br />
<br />
=== Primär- und Sekundärcontroller ===<br />
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der '''Primärcontroller'''. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum '''Sekundärcontroller'''. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die '''Exklusion''' (Ausschluss) eines Nodes aus dem Netz vornehmen.<br />
<br />
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.<br />
<br />
=== Acknowledge ===<br />
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.<br />
<br />
=== Vermaschtes Netzwerk mit Routing ===<br />
Z-Wave nutzt als Netzwerktopologie ein '''mesh network''' (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird '''Routing''' genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.<br />
<br />
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber ''nicht'' SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren ("Selbstheilung")[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].<br />
<br />
=== Command Classes ===<br />
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene '''Command Classes''' (Kommandoklassen) zusammengefasst sind.<br />
<br />
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die '''Class Basic'''. <br />
<br />
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die '''Class Configuration'''.<br />
<br />
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die '''Class Association'''.<br />
<br />
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.<br />
<br />
=== Hinweise zur Z-Wave-Geräteauswahl ===<br />
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.<br />
<br />
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.<br />
<br />
Gateway<br />
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.<br />
<br />
Endgeräte<br />
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder<br />
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder<br />
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)<br />
<br />
'''Kurz''': Produkte mit Z-Wave Plus-Zertifizierung einsetzen.<br />
<br />
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.<br />
<br />
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.<br />
<br />
== Z-Wave in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. <br />
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:<br />
* Herstellerseite des ZWave-Gerätes<br />
* http://www.zwave.de/handbuecher/ (deutsch)<br />
* http://products.z-wavealliance.org (englisch)<br />
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.<br />
<br />
== Definition des Gateways / Controllers ==<br />
{{Randnotiz|RNText='''Tester für ZWave@culfw gesucht!'''<br />
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}<br />
=== Autocreate des Gateways ===<br />
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. <br />
<br />
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:<br />
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])<br />
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})<br />
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})<br />
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)<br />
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)<br />
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})<br />
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x; Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])<br />
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&t=21327#p55404]) <br />
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})<br />
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
<br />
Folgende Gateways sind '''nicht''' mit FHEM einsetzbar:<br />
* Merten Funk-USB-Datenschnittstelle CONNECT<br />
<br />
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.<br />
<br />
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema <code>ZWDongle_<[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]></code> angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. <br />
<br />
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: <code>define ZWDongle_1 ZWDongle COM1@115200</code>). <br />
<br />
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum "Everything" zu finden.<br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
Aeon Labs Z-Stick an der Fritzbox: <br />
define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200<br />
<br />
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):<br />
define ZWDongle_1 ZWDongle /dev/ttyACM1@115200<br />
<br />
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.<br />
<br />
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.<br />
<br />
=== homeId und nodeList des Gateways ===<br />
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die <code>homeId</code> notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der <code>homeId</code> nicht zwingend. Jedoch sollte durch Abfrage der <code>homeId</code> direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.<br />
<br />
Die <code>homeId</code> und <code>CtrlNodeId</code> des Gateways wird mit folgendem Befehl ausgelesen (<ZWDongle> ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):<br />
get <ZWDongle> homeId<br />
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:<br />
ZWDongle_1 homeId => HomeId:e345c456 CtrlNodeId:01 <br />
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.<br />
<br />
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:<br />
get <ZWDongle> nodeList<br />
ergibt beispielsweise:<br />
ZWDongle_1 nodeList => ZWDongle_1 UNKNOWN_2<br />
<br />
<br />
== Definition von Geräten / Slaves ==<br />
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===<br />
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.<br />
<br />
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:<br />
set <ZWDongle> addNode on<br />
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:<br />
set <ZWDongle> addNode onNw<br />
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. <br />
<br />
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut <code>classes</code> des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum "ZWave" zu finden. <br />
<br />
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls <code>set <ZWDongle> addNode off</code> aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:<br />
* <code><nowiki>created ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.<br />
* <code><nowiki>addNode failed</nowiki></code> = Inklusion ist fehlgeschlagen<br />
<br />
Eine erfolgreiche Inklusion ist zudem am Event "ZW_ADD_NODE_TO_NETWORK protocolDone" im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen. Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events "ZW_ADD_NODE_TO_NETWORK failed". Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.<br />
<br />
HINWEISE:<br /><br />
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.<br />
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit <code><nowiki>set <ZWave-Devicename> neighborUpdate</nowiki></code> neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.<br />
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut <code>classes</code> manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.<br />
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.<br />
<br />
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.<br />
<br />
=== Assoziation ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.<br />
<br />
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.<br />
<br />
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, '''muss''' der Controller (<ZWDongle>-Device, <code>CtrlNodeId</code> = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes <code><name></code> aufgenommen werden:<br />
<br />
set <name> associationAdd <associationGroup> <CtrlNodeId><br />
<br />
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. <br />
<br />
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.<br />
<br />
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe <associationGroup>:<br />
get <name> association <associationGroup><br />
<br />
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:<br />
get <name> associationAll<br />
<br />
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.<br />
<br />
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.<br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. <br />
<br />
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:<br />
set <name> configByte <Parameternummer> <Parameterwert><br />
Für weitere Parametergrößen gibt es die Befehle <code>configWord</code> und <code>configLong</code><br />
<br />
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:<br />
get <name> config <Parameternummer><br />
<br />
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden: <br />
get <name> model<br />
Die Readings <code>model</code>, <code>modelID</code> und <code>modelConfig</code> werden dadurch erzeugt. In <code>model</code> sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:<br />
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]<br />
<br />
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:<br />
get <name> configAll<br />
<br />
Außerdem wird durch den <code>get <name> model</code> -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link "Details in pepper DB" und/oder "Details in alliance DB" zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.<br />
<br />
Der Aufruf von <code>get <name> model</code> ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.<br />
<br />
=== Entfernen eines Z-Wave-Geräts / Exklusion ===<br />
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.<br />
<br />
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:<br />
set <ZWDongle> removeNode on<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):<br />
set <ZWDongle> removeNode onNw<br />
<br />
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. <br />
<br />
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:<br />
set <ZWDongle> removeNode off<br />
<br />
Das FHEM-Device muss nach der Exklusion manuell durch <code>delete <name></code> gelöscht werden.<br />
<br />
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.<br />
<br />
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===<br />
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:<br />
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion<br />
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM <br />
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration<br />
<br />
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:<br />
get <ZWDongle> nodeList<br />
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als "UNKNOWN_x" ausgegeben, wobei x die ID des betreffenden Gerätes ist.<br />
<br />
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als "UNKNOWN_2") in FHEM durch autocreate definiert:<br />
set <ZWDongle> createNode 2<br />
<br />
Batteriebetriebene Geräte müssen bei Absetzen des <code>createNode</code>-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf "permanent wach" stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den <code>createNode</code>-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und <code>autocreate</code> legt das FHEM-Device an; der Aufruf von <code>createNode</code> entfällt dann.<br />
<br />
== Geräte-Besonderheiten ==<br />
=== batteriebetriebene Geräte ===<br />
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in<br />
<br />
* Wakeup-Geräte<br />
* FLIRS-Geräte<br />
<br />
==== Wakeup-Geräte ====<br />
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.<br />
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht "wakeup notification". Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.<br />
<br />
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form<br />
:<code>Scheduled for sending after WAKEUP</code> <br />
::oder<br />
:<code>Scheduled get requests for sending after WAKEUP</code><br />
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten "wakeup notification" an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der "wakeup notification"-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der "wakeup notification" ist das batteriebetriebene Gerät grundsätzlich in der Lage ("wach genug"), Telegramme korrekt zu empfangen und zu verarbeiten.<br />
<br />
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal <code>cmdsPending</code> des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls <code>[[list]] <device></code> erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch <code>shutdown restart</code>) geht der Sendstack der Geräte daher verloren.<br />
<br />
Das Wakeup-Interval und der Empfänger der "wakeup notification" wird wie folgt konfiguriert:<br />
<nowiki>set <name> wakeupInterval <time> <NodeId></nowiki><br />
<nowiki><time></nowiki> ist die Zeit in Sekunden zwischen den Intervallen und <nodeID> der gewünschte Empfänger der "wakeup notification"; in der Regel ist dies '''immer''' der Controller <CtrlNodeId>. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die "wakeup notification" wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die "wakeup notification" geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten '''automatisch''' den Befehl <code><nowiki>set <name> wakeupInterval 86400 <ControllerNodeId></nowiki></code> ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit <code><nowiki>get <name> wakeupIntervalCapabilities</nowiki></code> vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage <code><nowiki>get <name> wakeupInterval</nowiki></code> überprüfen.<br />
<br />
Ein Aufwachen und Versand der "wakeup notification" von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.<br />
<br />
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf "wach" bzw. permanent "wach" stellen. Dann aus dem Attribut <code>classes</code> <code>WAKE_UP</code> entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des "wach"-Modus <code>WAKE_UP</code> wieder im Attribut <code>classes</code> aufnehmen.<br />
<br />
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit <code>set <name> config...</code> sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden <code>get <name> config...</code> oder -falls vorhanden- mit <code>get <name> configAll</code> überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.<br />
<br />
==== FLIRS-Geräte ====<br />
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. <br />
<br />
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit "wakeup notification". Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.<br />
<br />
=== Aeon Labs / Aeotec ===<br />
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home<br />
<br />
==== Multi Sensor 5 ====<br />
* aktuellste Firmware installieren<br />
* Attribut <code>classes</code> um <code>BASIC</code> ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit <code>set <name> configGroup1Reports 225</code> oder <code>set <name> configLong 101 225</code>, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch <code><nowiki>set <name> configGroup1Interval <time/s></nowiki></code> festgelegt (Standard 720 Sek).<br />
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]<br />
siehe {{Link2Forum|Topic=34505|Message=268913}}<br />
<br />
==== Multisensor 6 ====<br />
siehe {{Link2Forum|Topic=40393}}<br />
* arbeitet bei USB-Anschluß als Router<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* die <code>configGroupxInterval</code> und <code>configxxxReportingThreshold</code> Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem <code>wakeup</code> übertragen<br />
<br />
==== Aeotec LED Bulb ZW098-C55 ====<br />
siehe {{Link2Forum|Topic=40504}}<br />
<br />
=== Danfoss ===<br />
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====<br />
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem <code>at</code> abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):<br />
define Atdanfoss at +*00:30 get <name> battery<br />
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). <br />
<br />
=== devolo ===<br />
Ausführliche Handbücher auf http://products.z-wavealliance.org<br />
<br />
==== MT02648 Tür-/Fenster Kontakt 3in1 ====<br />
siehe {{Link2Forum|Topic=41337}}<br />
<br />
=== DüWI ===<br />
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise <code>define Status_Abfrage at +*00:03:00 get <name> swmStatus</code>) beheben.<br />
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.<br />
<br />
=== Everspring ===<br />
==== AN145 Sockelmodul E27 ====<br />
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}<br />
<br />
=== Fibaro ===<br />
Association Group für Übermittlung von Statusinformationen an den Controller:<br />
* "alte" ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3<br />
: <code><nowiki>set <name> associationAdd 3 <CtrlNodeId></nowiki></code><br />
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (<code><nowiki>set <name> associationDel 1 <CtrlNodeId></nowiki></code>). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.<br />
* ZWave Plus-Geräte: Association Group 1 ("lifeline")<br />
<br />
==== FGSS-001 / FGSD-002 Rauchmelder ====<br />
* nicht untereinander vernetzbar<br />
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen<br />
<br />
==== FGS-222 Relais Unterputzeinsatz ====<br />
Bei der Inklusion werden von FHEM 3 Devices angelegt:<br />
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)<br />
* Device für Endpoint 1 (Steuerung Kanal 1)<br />
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)<br />
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.<br />
<br />
Details: {{Link2Forum|Topic=50176}}<br />
<br />
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}<br />
<br />
==== FGK-101 Tür/Fensterkontakt ====<br />
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}<br />
<br />
=== GE ===<br />
==== GE (Model t.b.d) ====<br />
Dieser Schalter unterstützt keine Statusrückmeldungen.<br />
<br />
=== Merten ===<br />
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.<br />
<br />
=== Philio ===<br />
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====<br />
siehe {{Link2Forum|Topic=28046}}<br />
<br />
=== Popp ===<br />
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====<br />
siehe {{Link2Forum|Topic=39856}}<br />
==== POPE005107 Z-Wave Außensirene ====<br />
siehe {{Link2Forum|Topic=42736}}<br><br />
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein <code>userReadings</code> findet sich auch im verlinkten Thema. <br />
==== POPE009006 Z-Wave Wall Plug Switch ====<br />
siehe {{Link2Forum|Topic=40771}}<br />
==== POPE009402 10Year Smoke Detector ====<br />
Die erste Firmwareversion hat eine fehlerhafte modelID. Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.<br />
<br />
=== Z-Wave.Me ===<br />
==== ZME_RC2 Fernbedienung ====<br />
siehe {{Link2Forum|Topic=35513}}<BR><br />
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.<br />
<br />
<br />
== Geräte-Vergleich ==<br />
=== Doppel-Relais ===<br />
{| class="wikitable"<br />
|-<br />
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays !! Philio-PAN04 1<br />
|-<br />
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais<br />
|-<br />
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W<br />
|-<br />
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung || schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig >1 Sekunde <br />
|-<br />
| Geräte in FHEM || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 4 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 <br> x.03 Summengerät (ähnlich Hauptgerät, überflüssig)<br />
|-<br />
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais<br />
|-<br />
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden<br />
|-<br />
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Hauptgerät und Untergeräte || Nur Hauptgerät <br>Aktualisierung der Untergeräte nur bei aktiver Abfrage <br />
|-<br />
| Leistungsmessung || Separat für Untergeräte || Separat für Untergeräte || Nur Summe<br />
|-<br />
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A || nein, 2x 6.5A<br />
|}<br />
Beim Qubino Flush 2 relays muss eine MULTI_CHANNEL_ASSOCIATION mit dem Controller (Endpoint root) statt einer "normalen" Assoziation gesetzt werden, damit die Status der Untergeräte einzeln signalisert werden:<br />
<br />
set associationDel 1 <controllerNodeId> <br />
set <device> mcaAdd 1 0 <controllerNodeId> 0 <br />
<br />
Bei einem FHEM-Updatestand ab 20.09.2019 erfolgt diese Einstellung automatisch.<br />
<br />
== Links ==<br />
=== Allgemein ===<br />
* Grundlageninformation "Z-Wave-Haupt-Anleitung": [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]<br />
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] "Z-Wave: Die Funktechnologie für das Smart Home" von Dr. Christian Paetz (Paetz "is the primary European representative for the Z-Wave Alliance" [http://z-wavealliance.org/global-contacts/])<br />
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)<br />
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)<br />
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)<br />
* informative Webseiten zu Z-Wave:<br />
** http://www.z-wavealliance.org/ (englisch)<br />
** http://www.zwaveeurope.com/ (englisch)<br />
** http://www.zwave.de/ (deutsch)<br />
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)<br />
<br />
=== Informationsquellen zur Einbindung von Command Classes ===<br />
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):<br />
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]<br />
<br />
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)<br />
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis "docs"), RaZBerry und Z-Wave allgemein], englisch<br />
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch<br />
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)<br />
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html<br />
<br />
== FAQ ==<br />
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen FHEM-Devices (Ausgabe von <code>list <device></code>)<br />
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:<br />
::*<code>get <device> associationAll</code> <br />
::*<code>get <device> configAll</code><br />
::*<code>get <device> versionClassAll</code><br />
::*<code>get <device> mcaAll</code><br />
::*<code>get <device> wakeupInterval</code> (nur bei batteriebetriebenen Geräten)<br />
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen<br />
::*<code>attr <ZWDongle> verbose 5</code> und<br />
::*<code>attr global mseclog 1</code><br />
<br />
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===<br />
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!<br />
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes<br />
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway<br />
# [[#Konfiguration|Konfiguration]] des Gerätes<br />
<br />
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf "associationAdd <associationGroup> <CtrlNodeId>" stehen? ===<br />
FHEM setzt das Reading "state", das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte "associationAdd"-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes <code>{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}</code> manuell an seine Bedürfnisse angepasst hat.<br />
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])<br />
<br />
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (>1) angesprochen werden? ===<br />
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> und die Devices für alle Kanäle (Endpoints) nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID>.<EndpointNr></nowiki></code> automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).<br />
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle <code>get <device> mcEndpoints</code> und <code>get <device> mcCapability <chid></code> aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl <code>set <device> mcCreateAll</code> werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.<br />
<br />
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===<br />
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.<br />
==== Grobermittlung ====<br />
Der Befehl <code><nowiki>get <ZWDongle> nodeInfo <dezimale nodeId></nowiki></code> liefert das Reading <code><nowiki>nodeInfo_<dezimale nodeId></nowiki></code> zurück.<br />
Die Angabe im Reading hinter <code>ProtocolVers:</code> lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:<br />
* <code>2</code> -> bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)<br />
* <code>SDK5.0x+4.2x</code> -> bspw. keine Explorer Frames, teilweise SUC-Unterstützung<br />
* <code>SDK4.5x+6.0x</code> -> bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)<br />
==== Detailermittlung ====<br />
Durch den Befehl <code><nowiki>get <name> version</nowiki></code> kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen<br />
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version<br />
* Suche nach sdkids.xml in einer Suchmaschine<br />
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.<br />
<br />
Beispielsweis entspricht das Reading eines Gerätes "Lib 6 '''Prot 2.64''' App 1.6" dem SDK 5.02 Patch 2 oder eines Controller "Z-Wave '''3.41''' STATIC_CONTROLLER" dem SDK 6.02.00.<br />
<br />
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.<br />
<br />
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===<br />
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}<br />
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.<br />
<br />
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.<br />
<br />
Vorarbeiten:<br />
* Das Perl-Modul Crypt-Rijndael muss installiert sein.<br />
* Das Attribut <code>networkKey</code> muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.<br />
<br />
Ablauf der secure-Inklusion:<br />
* Controller in den Modus zur secure-Inklusion schalten:<br />
: <code>set <ZWDongle> addNode onSec</code> für die Standard-secure-Inklusion<br />
: oder alternativ<br />
: <code>set <ZWDongle> addNode onNwSec</code> für die Nework-Wide-secure-Inklusion<br />
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)<br />
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch <code>autocreate</code> angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut <code>secure_classes</code> in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in <code>classes</code> aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.<br />
* Inklusionsmodus des Controllers ausschalten:<br />
: <code>set <ZWDongle> addnode off</code><br />
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.<br />
<br />
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===<br />
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.<br />
<br />
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl <code>removeFailedNode</code> gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig "schlafen".<br />
<br />
Der Befehl <code>removeFailedNode</code> löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des <code>removeFailedNode</code>-Befehls erfolgt sein. <br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# An den betroffenen Node eine Telegramm mit <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und kann mit <code>removeFailedNode</code> gelöscht werden.<br />
# Befehl zum Löschen des Nodes absetzen: <code><nowiki>set <ZWDongle> removeFailedNode <NodeId></nowiki></code>. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.<br />
# Prüfen, der Ergebnisse des <code>removeFailedNode</code>-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis "failedNodeRemoveProcessBusy" mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.<br />
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: <code><nowiki>get <ZWDongle> nodeList</nowiki></code><br />
<br />
siehe auch {{Link2Forum|Topic=32823|Message=292626}}<br />
<br />
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===<br />
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per <code>addNode</code>, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt <code>addNode</code> der Befehl <code>replaceFailedNode</code> zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.<br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:<br />
## <code><nowiki>get <device> configAll</nowiki></code><br />
## <code><nowiki>get <device> associationAll</nowiki></code><br />
# defektes Gerät aus- und neues einbauen<br />
# Befehl <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit <code>replaceFailedNode</code> inkludiert werden.<br />
# <code><nowiki>set <zwdongle> replaceFailedNode <NodeId></nowiki></code> für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen<br />
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.<br />
<br />
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===<br />
Ja, das ist richtig.<br />
<br />
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei zunächst nicht erneut vergeben. Diese frei gewordenen NodeIds werden bei Inklusionen in aufsteigender Reihenfolge erst wieder vergeben, nachdem die höchste verfügbare NodeId (232?) inkludiert wurde. Sie sind somit grundsätzlich nicht verloren.<br />
<br />
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===<br />
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls <code>get <name> model</code> ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading <code>modelConfig</code> enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading <code>modelConfig</code> den Wert "unknown". Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen "nur" Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.<br />
<br />
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:<br />
* Bei der Inklusion:<br />
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt<br />
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut <code>classes</code> ergänzt<br />
* Bei der Konfiguration:<br />
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.<br />
<br />
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.<br />
<br />
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===<br />
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:<br />
* openzwave_manufacturer_specific.xml<br />
* openzwave_deviceconfig.xml.gz<br />
* fhem_zwave_deviceconfig.xml.gz<br />
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. <br />
<br />
Die Datei "openzwave_manufacturer_specific.xml" enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls <code>get <name> model</code> im Reading <code>modelId</code> des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading <code>model</code> angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading <code>modelConfig</code> steht.<br />
<br />
Die Dateien "openzwave_deviceconfig.xml.gz" und "fhem_zwave_deviceconfig.xml.gz" enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der "fhem_zwave_deviceconfig.xml.gz" bevorzugt.<br />
<br />
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:<br />
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner<br />
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner <br />
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database<br />
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).<br />
<br />
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei "openzwave_manufacturer_specific.xml" im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.<br />
<br />
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===<br />
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:<br />
<br />
1. [[Backup]] der FHEM-Installation <br />
::'''und'''<br />
2. Backup des NVRAM des Controllers<br />
<br />
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.<br />
<br />
<br />
zu 2.) Backup des NVRAM des Controllers<br />
<br />
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).<br />
<br />
FHEM kann mit den ZWDongle-Befehlen <code>backupCreate</code> das NVRAM der Controller sichern und mit <code>backupRestore</code> zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.<br />
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})<br />
<br />
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen<br />
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===<br />
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.<br />
<br />
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul <code>cp2101.ko</code> geladen werden.<br />
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.<br />
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei <code>startfhem</code>.<br />
<br />
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.<br />
insmod $home/lib/cp2101.ko<br />
<br />
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.<br />
<br />
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===<br />
<br />
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:<br />
<br />
<code><nowiki>ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277</nowiki></code><br />
<br />
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. <br />
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:<br />
<br />
<code><nowiki>010a00130603320110259277</nowiki></code><br />
* 01: data to controller<br />
* 0a: length of msg<br />
* 00: ?<br />
* 13: ZW_SEND_DATA<br />
* 06: NodeId<br />
<br />
* 03: length of msg<br />
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)<br />
* 01: METER get scale command<br />
* 10: scale parameter<br />
<br />
* 25: send flags, explorer frames on<br />
* 92: callbackId (um ACK zu identifizieren)<br />
* 77: checkSum<br />
<br />
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|!]]<br />
[[Kategorie:868MHz]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Benutzer_Diskussion:Michael_Mimo&diff=33259Benutzer Diskussion:Michael Mimo2020-05-20T09:05:09Z<p>Krikan: Krikan verschob die Seite Benutzer Diskussion:Michael Mimo nach Benutzer Diskussion:Michael Mino: Seite während der Benutzerkontoumbenennung von „Michael Mimo“ in „Michael Mino“ automatisch v…</p>
<hr />
<div>#WEITERLEITUNG [[Benutzer Diskussion:Michael Mino]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Benutzer_Diskussion:Michael_Mino&diff=33258Benutzer Diskussion:Michael Mino2020-05-20T09:05:09Z<p>Krikan: Krikan verschob die Seite Benutzer Diskussion:Michael Mimo nach Benutzer Diskussion:Michael Mino: Seite während der Benutzerkontoumbenennung von „Michael Mimo“ in „Michael Mino“ automatisch v…</p>
<hr />
<div>== Willkommen! ==<br />
{| width="100%" cellspacing="0" cellpadding="6" style="line-height: 20px; background: #E0E0E0; border: 2px solid #1874CD;"<br />
|-<br />
| colspan="4" style="background:#1874CD;" |<big><span style="color: #FAFAFA">'''Hallo Michael Mimo,''' willkommen im FHEM Wiki!</span></big><br />
|-<br />
| colspan="4" | Danke für dein Interesse an unserem Projekt, ich freue mich schon auf deine weiteren Beiträge. Die folgenden Seiten sollten dir die ersten Schritte erleichtern, bitte nimm dir daher etwas Zeit, sie zu lesen.<br />
<br />
----<br />
'''FHEM-spezifische Informationen'''<br />
<br />
|-<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[Systemübersicht]]'''<br />''FHEM Systemübersicht''<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[FHEMWiki:Über FHEMWiki]]'''<br />''Informationen über dieses Wiki''<br />
<!-- Abschnitt auf Kommentar gesetzt<br />
|-<br />
| colspan="4" |<br />
----<br />
<br />
{{Todo|FHEM-spezifische Anleitungen und Regeln.}}<br />
<br />
---- <br />
Ende von 'Abschnitt auf Kommentar gesetzt' --><br />
|-<br />
| colspan="4" | <br />
----<br />
'''Generelle Informationen über (Media)Wikis'''<br />
|-<br />
| width="8%" | [[Datei:Crystal Clear app kedit.svg|rechts|30px|link=Hilfe:Bearbeiten]]<br />
| width="38%" | '''[[Hilfe:Bearbeiten]]'''<br />''Zugang zu allen wichtigen Informationen.''<br />
| width="8%" | [[Datei:X-office-presentation.svg|rechts|30px|link=Wikipedia:Tutorial]]<br />
| width="38%" | <!-- '''[[Wikipedia:Tutorial]]'''-->'''[http://de.wikipedia.org/wiki/Wikipedia:Tutorial Wikipedia:Tutorial]'''<br />''Schritt-für-Schritt-Anleitung für Einsteiger.''<br />
|-<br />
| [[Datei:Applications-system.svg|rechts|30px|link=Wikipedia:Grundprinzipien]]<br />
| '''<!--[[Wikipedia:Grundprinzipien]]-->[http://de.wikipedia.org/wiki/Wikipedia:Grundprinzipien Wikipedia:Grundprinzipien]'''<br />''Die grundlegende Philosophie unseres Projekts.''<br />
| [[Datei:MentorenProgrammLogo-7.svg|rechts|60px|link=Wikipedia:Mentorenprogramm]]<br />
| '''<!--[[Wikipedia:Mentorenprogramm]]-->[http://de.wikipedia.org/wiki/Wikipedia:Mentorenprogramm Wikipedia:Mentorenprogramm]'''<br />''Persönliche Einführung in die Beteiligung bei Wikipedia.''<br />
|-<br />
| colspan="4" |<br />
----<br />
Bitte beachte, <!--[[Wikipedia:Was Wikipedia nicht ist|was Wikipedia nicht ist]]-->[http://de.wikipedia.org/wiki/Wikipedia:Was_Wikipedia_nicht_ist was Wikipedia nicht ist], und "unterschreibe" deine Diskussionsbeiträge durch Eingabe von <code>--<nowiki>~~~~</nowiki></code> oder durch Drücken der Schaltfläche [[Datei:button_sig.png|Signaturknopf|20px|link=Hilfe:Signatur]] über dem Bearbeitungsfeld. Artikel werden jedoch nicht unterschrieben, und wofür die Zusammenfassungszeile da ist, erfährst du unter <!--[[wikipedia:Hilfe:Zusammenfassung und Quellen|Hilfe:Zusammenfassung und Quellen]]-->[http://de.wikipedia.org/wiki/Hilfe:Zusammenfassung_und_Quellen Zusammenfassung und Quellen]. <br /><br /><br />
[[Datei:Nuvola apps ksirc.png|25px|link=Benutzer Diskussion:Krikan]] &nbsp;&nbsp; '''Hast du Fragen an mich?''' Schreib mir auf [[Benutzer Diskussion:Krikan|<u>meiner</u> Diskussionsseite]]! Viele Grüße, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:42, 20. Mai 2020 (CEST)<br />
|}<br />
<br />
== Questions? ==<br />
<br />
If you have any questions, please let me know. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:45, 20. Mai 2020 (CEST)</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Benutzer_Diskussion:Michael_Mino&diff=33257Benutzer Diskussion:Michael Mino2020-05-20T07:45:46Z<p>Krikan: Neuer Abschnitt /* Questions? */</p>
<hr />
<div>== Willkommen! ==<br />
{| width="100%" cellspacing="0" cellpadding="6" style="line-height: 20px; background: #E0E0E0; border: 2px solid #1874CD;"<br />
|-<br />
| colspan="4" style="background:#1874CD;" |<big><span style="color: #FAFAFA">'''Hallo Michael Mimo,''' willkommen im FHEM Wiki!</span></big><br />
|-<br />
| colspan="4" | Danke für dein Interesse an unserem Projekt, ich freue mich schon auf deine weiteren Beiträge. Die folgenden Seiten sollten dir die ersten Schritte erleichtern, bitte nimm dir daher etwas Zeit, sie zu lesen.<br />
<br />
----<br />
'''FHEM-spezifische Informationen'''<br />
<br />
|-<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[Systemübersicht]]'''<br />''FHEM Systemübersicht''<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[FHEMWiki:Über FHEMWiki]]'''<br />''Informationen über dieses Wiki''<br />
<!-- Abschnitt auf Kommentar gesetzt<br />
|-<br />
| colspan="4" |<br />
----<br />
<br />
{{Todo|FHEM-spezifische Anleitungen und Regeln.}}<br />
<br />
---- <br />
Ende von 'Abschnitt auf Kommentar gesetzt' --><br />
|-<br />
| colspan="4" | <br />
----<br />
'''Generelle Informationen über (Media)Wikis'''<br />
|-<br />
| width="8%" | [[Datei:Crystal Clear app kedit.svg|rechts|30px|link=Hilfe:Bearbeiten]]<br />
| width="38%" | '''[[Hilfe:Bearbeiten]]'''<br />''Zugang zu allen wichtigen Informationen.''<br />
| width="8%" | [[Datei:X-office-presentation.svg|rechts|30px|link=Wikipedia:Tutorial]]<br />
| width="38%" | <!-- '''[[Wikipedia:Tutorial]]'''-->'''[http://de.wikipedia.org/wiki/Wikipedia:Tutorial Wikipedia:Tutorial]'''<br />''Schritt-für-Schritt-Anleitung für Einsteiger.''<br />
|-<br />
| [[Datei:Applications-system.svg|rechts|30px|link=Wikipedia:Grundprinzipien]]<br />
| '''<!--[[Wikipedia:Grundprinzipien]]-->[http://de.wikipedia.org/wiki/Wikipedia:Grundprinzipien Wikipedia:Grundprinzipien]'''<br />''Die grundlegende Philosophie unseres Projekts.''<br />
| [[Datei:MentorenProgrammLogo-7.svg|rechts|60px|link=Wikipedia:Mentorenprogramm]]<br />
| '''<!--[[Wikipedia:Mentorenprogramm]]-->[http://de.wikipedia.org/wiki/Wikipedia:Mentorenprogramm Wikipedia:Mentorenprogramm]'''<br />''Persönliche Einführung in die Beteiligung bei Wikipedia.''<br />
|-<br />
| colspan="4" |<br />
----<br />
Bitte beachte, <!--[[Wikipedia:Was Wikipedia nicht ist|was Wikipedia nicht ist]]-->[http://de.wikipedia.org/wiki/Wikipedia:Was_Wikipedia_nicht_ist was Wikipedia nicht ist], und "unterschreibe" deine Diskussionsbeiträge durch Eingabe von <code>--<nowiki>~~~~</nowiki></code> oder durch Drücken der Schaltfläche [[Datei:button_sig.png|Signaturknopf|20px|link=Hilfe:Signatur]] über dem Bearbeitungsfeld. Artikel werden jedoch nicht unterschrieben, und wofür die Zusammenfassungszeile da ist, erfährst du unter <!--[[wikipedia:Hilfe:Zusammenfassung und Quellen|Hilfe:Zusammenfassung und Quellen]]-->[http://de.wikipedia.org/wiki/Hilfe:Zusammenfassung_und_Quellen Zusammenfassung und Quellen]. <br /><br /><br />
[[Datei:Nuvola apps ksirc.png|25px|link=Benutzer Diskussion:Krikan]] &nbsp;&nbsp; '''Hast du Fragen an mich?''' Schreib mir auf [[Benutzer Diskussion:Krikan|<u>meiner</u> Diskussionsseite]]! Viele Grüße, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:42, 20. Mai 2020 (CEST)<br />
|}<br />
<br />
== Questions? ==<br />
<br />
If you have any questions, please let me know. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:45, 20. Mai 2020 (CEST)</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Benutzer_Diskussion:Michael_Mino&diff=33256Benutzer Diskussion:Michael Mino2020-05-20T07:42:27Z<p>Krikan: Begrüßungsseite</p>
<hr />
<div>== Willkommen! ==<br />
{| width="100%" cellspacing="0" cellpadding="6" style="line-height: 20px; background: #E0E0E0; border: 2px solid #1874CD;"<br />
|-<br />
| colspan="4" style="background:#1874CD;" |<big><span style="color: #FAFAFA">'''Hallo Michael Mimo,''' willkommen im FHEM Wiki!</span></big><br />
|-<br />
| colspan="4" | Danke für dein Interesse an unserem Projekt, ich freue mich schon auf deine weiteren Beiträge. Die folgenden Seiten sollten dir die ersten Schritte erleichtern, bitte nimm dir daher etwas Zeit, sie zu lesen.<br />
<br />
----<br />
'''FHEM-spezifische Informationen'''<br />
<br />
|-<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[Systemübersicht]]'''<br />''FHEM Systemübersicht''<br />
| width="8%" | &nbsp;<br />
| width="38%" | '''[[FHEMWiki:Über FHEMWiki]]'''<br />''Informationen über dieses Wiki''<br />
<!-- Abschnitt auf Kommentar gesetzt<br />
|-<br />
| colspan="4" |<br />
----<br />
<br />
{{Todo|FHEM-spezifische Anleitungen und Regeln.}}<br />
<br />
---- <br />
Ende von 'Abschnitt auf Kommentar gesetzt' --><br />
|-<br />
| colspan="4" | <br />
----<br />
'''Generelle Informationen über (Media)Wikis'''<br />
|-<br />
| width="8%" | [[Datei:Crystal Clear app kedit.svg|rechts|30px|link=Hilfe:Bearbeiten]]<br />
| width="38%" | '''[[Hilfe:Bearbeiten]]'''<br />''Zugang zu allen wichtigen Informationen.''<br />
| width="8%" | [[Datei:X-office-presentation.svg|rechts|30px|link=Wikipedia:Tutorial]]<br />
| width="38%" | <!-- '''[[Wikipedia:Tutorial]]'''-->'''[http://de.wikipedia.org/wiki/Wikipedia:Tutorial Wikipedia:Tutorial]'''<br />''Schritt-für-Schritt-Anleitung für Einsteiger.''<br />
|-<br />
| [[Datei:Applications-system.svg|rechts|30px|link=Wikipedia:Grundprinzipien]]<br />
| '''<!--[[Wikipedia:Grundprinzipien]]-->[http://de.wikipedia.org/wiki/Wikipedia:Grundprinzipien Wikipedia:Grundprinzipien]'''<br />''Die grundlegende Philosophie unseres Projekts.''<br />
| [[Datei:MentorenProgrammLogo-7.svg|rechts|60px|link=Wikipedia:Mentorenprogramm]]<br />
| '''<!--[[Wikipedia:Mentorenprogramm]]-->[http://de.wikipedia.org/wiki/Wikipedia:Mentorenprogramm Wikipedia:Mentorenprogramm]'''<br />''Persönliche Einführung in die Beteiligung bei Wikipedia.''<br />
|-<br />
| colspan="4" |<br />
----<br />
Bitte beachte, <!--[[Wikipedia:Was Wikipedia nicht ist|was Wikipedia nicht ist]]-->[http://de.wikipedia.org/wiki/Wikipedia:Was_Wikipedia_nicht_ist was Wikipedia nicht ist], und "unterschreibe" deine Diskussionsbeiträge durch Eingabe von <code>--<nowiki>~~~~</nowiki></code> oder durch Drücken der Schaltfläche [[Datei:button_sig.png|Signaturknopf|20px|link=Hilfe:Signatur]] über dem Bearbeitungsfeld. Artikel werden jedoch nicht unterschrieben, und wofür die Zusammenfassungszeile da ist, erfährst du unter <!--[[wikipedia:Hilfe:Zusammenfassung und Quellen|Hilfe:Zusammenfassung und Quellen]]-->[http://de.wikipedia.org/wiki/Hilfe:Zusammenfassung_und_Quellen Zusammenfassung und Quellen]. <br /><br /><br />
[[Datei:Nuvola apps ksirc.png|25px|link=Benutzer Diskussion:Krikan]] &nbsp;&nbsp; '''Hast du Fragen an mich?''' Schreib mir auf [[Benutzer Diskussion:Krikan|<u>meiner</u> Diskussionsseite]]! Viele Grüße, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:42, 20. Mai 2020 (CEST)<br />
|}</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Vorlage:FHEMWiki_News&diff=32563Vorlage:FHEMWiki News2020-01-26T13:51:48Z<p>Krikan: FHEM 6.0</p>
<hr />
<div>{|<br />
{{News|26.01.2020|FHEM Version 6.0 wurde freigegeben. Updatehinweise: {{Link2Forum|Topic=107782}}}}<br />
{{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. }}<br />
{{News|23.09.2019|Das Modul [[CanOverEthernet]] ermöglicht das Empfangen von Can-Over-Ethernet Paketen von Steuerungen der Firma Technische Alternative}}<br />
{{News|05.04.2019|Das [[SamsungAV]] Modul ermöglicht die Steuerung von Samsung Fernsehern und Bluray-Playern.}}<br />
{{News|06.03.2019|Mit dem Modul [[Arlo]] ist die Einbindung von Arlo Kameras über die Arlo Cloud möglich}}<br />
{{News|26.01.2019|Das [[TRÅDFRI|tradfri]] Modul erweitert die Palette der [[ZigBee]] Module.}}<br />
{{News|14.01.2019|Der [[FHEM Connector für Amazon Alexa|FHEM Connector]] Skill für Amazon Alexa ist verfügbar.}}<br />
{{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.}}<br />
{{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. }}<br />
{{News|12.02.2018|Die Module [[Modul Babble|Babble]] und [[Talk2Fhem|Talk2Fhem]] erweitern die Sprachsteuerungsmöglichkeiten von FHEM}}<br />
{{News|02.10.2017|[[FTUI eigene Widgets|Eigene Widgets für FHEM Tablet UI erstellen]]}}<br />
{{News|30.08.2017|[[WINCONNECT]] - Windows PC steuern und Informationen abfragen/anzeigen. }}<br />
{{News|24.08.2017|[[FHEMWEB/Widgets]] - Widgets (Frontendelemente) von FHEMWEB }}<br />
{{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}}<br />
{{News|24.07.2017|[[Telnet|Verbindung mit dem FHEM-Server per Telnet]]}}<br />
{{News|20.07.2017|[[FHEM startet nicht - Tipps zur Fehlersuche]]}}<br />
{{News|06.06.2017|[[Relaisplatine-Homebrew-MySensors|MySensors-Relaisplatine im Selbstbau]]}}<br />
{{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]]}}<br />
{{News|30.04.2017|[[DoorPiBoard]]: Eine Platine zur Umsetzung des [[DoorPi_und FHEM|DoorPi-Projektes]]}}<br />
{{News|21.03.2017|Artikel zum alternativen Frontend [[:Kategorie:FHEM_Tablet_UI|Tablet UI]] aktualisiert und deutlich erweitert}}<br />
{{News|02.03.2017|Neues Modul zur Ansteuerung von [[LGTV_WebOS|LG-TVs mit dem Betriebssystem WebOS]] wird per update verteilt}}<br />
{{News|20.02.2017|Neues Modul [[SIP-Client|SIP]], ein SIP-Client für FHEM, wird per update verteilt}}<br />
{{News|19.02.2017|FHEM Version 5.8 wurde freigegeben. Updatehinweise beachten: {{Link2Forum|Topic=67419}}}}<br />
{{News|18.01.2017|Neues Modul [[DOIFtools]] mit Funktionen zur Unterstützung des Benutzers im Umgang mit [[DOIF]] wird per update verteilt}}<br />
{{News|12.01.2017|Neues Modul zur Ansteuerung des Bluetooth 4.1 BLE Pflanzensensors [[XiaomiFlowerSens|Xiaomi Flower Care Smart Monitor]] wird per update ausgeliefert}}<br />
{{News|01.01.2017|Diverse neue Wiki-Artikel mit Informationen und Hilfen zu [[DOIF#Links|DOIF]] }}<br />
{{News|10.12.2016|FHEM Wiki ist auf einen neuen Server umgezogen und hat eine neue Standard-Internetadresse: https://wiki.fhem.de}}<br />
{{News|21.11.2016|Neues Modul [[Modul_PostMe|PostMe]] stellt eine komfortable Oberfläche zur Listenverwaltung bereit}}<br />
{{News|11.10.2016|Neue Module [[NUKI|NUKIbridge und NUKIDevice]] zur Ansteuerung des Nuki Smartlock werden per update verteilt}}<br />
{{News|07.10.2016|Neues Modul [[TRAFFIC]] zur Erfassung der Fahrzeiten bei aktueller Verkehrslage mittels Google Maps Directions API wird per update verteilt}}<br />
{{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 }}<br />
{{News|12.07.2016|Neues Modul [[DbRep - Reporting und Management von DbLog-Datenbankinhalten]] wird per update verteilt }}<br />
{{News|08.02.2016|Neues Modul [[Mediaportal|MEDIAPORTAL]] (Steuerung einer Mediaportal-Installation über Wifiremote) wird per update verteilt}}<br />
{{News|16.11.2015|Neues Modul [[HP1000]] (Einbindung einer HP1000 Wetterstation) wird per update verteilt}}<br />
{{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}}<br />
{{News|15.11.2015|FHEM Version 5.7 wurde veröffentlicht. Unbedingt Updatehinweise beachten: {{Link2Forum|Topic=44094}}}}<br />
{{News|30.10.2015|FHEM Wiki unterstützt nun [[Syntax Highlighting]]}}<br />
{{News|18.10.2015|Neues Modul [[TechemHKV]] (Empfang von Daten eines Techem Heizkostenverteilers) wird per update verteilt}}<br />
{{News|02.10.2015|Kleiner FHEM-Einsteiger-Kurs als Wiki Artikel unter [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]]}}<br />
{{News|24.09.2015|Umfangreiche Überarbeitung der Wiki Artikel über [[:Kategorie:panStamp|panStamp Hardware und Software]]}}<br />
{{News|11.09.2015|Neues Modul [[AMAD]] (Steuern und Informationsanzeige von Android-Geräten) wird per update verteilt}}<br />
{{News|15.06.2015|Neues Modul [[yowsup]] (WhatsApp Unterstützung) wird per update verteilt}}<br />
{{News|03.04.2015|Neues Geräte-Modul [[JawboneUp]] wird per update verteilt}}<br />
{{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}}<br />
{{News|10.02.2015|FHEM Wiki ist auf einen neuen Server umgezogen und [[FHEMWiki:Interna#Offene_Probleme|Aktualisierung der MediaWiki-Software]]}}<br />
{{News|31.01.2015|Neues Geräte-Modul [[Pushbullet]] wird per update verteilt}}<br />
{{News|14.01.2015|Neues Hilfs-Modul [[CALVIEW]] wird per update verteilt}}<br />
{{News|08.01.2015|Neues Geräte-Modul [[Buderus_Web_Gateway|km200]] zur Anbindung eines Buderus Web-Gateways wird per update verteilt}}<br />
{{News|18.12.2014|Neues Geräte-Modul [[SONOS]] wird per update verteilt}}<br />
{{News|15.12.2014|Überarbeitetes und erweitertes Geräte-Modul [[HTTPMOD]] wird per update verteilt}}<br />
{{News|10.12.2014|Neues Geräte-Modul [[Vitotronic_200_(Viessmann_Heizungssteuerung)|VCONTROL]] zur Anbindung einer Viessmann Heizung wird per update verteilt}}<br />
{{News|17.11.2014|Neues Hilfs-Modul [[logProxy]] wird per update verteilt}}<br />
{{News|09.11.2014|FHEM Version 5.6 wurde veröffentlicht}}<br />
{{News|27.10.2014|Neues Geräte-Modul [[harmony]] zur FHEM-Anbindung Logitech Harmony Hub basierter Fernbedienungen wird per update verteilt}}<br />
{{News|25.10.2014|Neues Geräte-Modul [[KostalPiko|KOSTALPIKO]] wird per update verteilt}}<br />
{{News|24.10.2014|Neues Hilfs-Modul [[HourCounter]] wird per update verteilt}}<br />
{{News|06.09.2014|Neues Hilfs-Modul [[CustomReadings]] per update verteilt}}<br />
{{News|19.08.2014|Neues Hilfs-Modul [[DOIF]] wird per update verteilt}}<br />
{{News|19.08.2014|Der Befehl [[update]] wurde überarbeitet: {{Link2Forum|Topic=26311}} }}<br />
{{News|13.08.2014|Zusätzliche Domäne fhem.org aktiviert: {{Link2Forum|Topic=26113}} }}<br />
{{News|29.09.2013|FHEM Version 5.5 wurde veröffentlicht}}<br />
{{News|11.05.2013|Die meisten Daten aus dem FhemWiki sind wieder hergestellt.}}<br />
{{News|04.05.2013|FHEM Wiki wird neu aufgebaut.}}<br />
{{News|04.05.2013|FHEM Wiki Update zu [[Special:Version|MediaWiki 1.20.5]].}}<br />
|}</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEM_Installation_Windows/en&diff=32562FHEM Installation Windows/en2020-01-26T13:40:03Z<p>Krikan: FHEM 6.0</p>
<hr />
<div>'''{{PAGENAME}}''' describes the installation of FHEM as a portable software for Windows (no intervention in the registration database). The instructions are applicable for installation on a removable disk, for example a USB stick, and on an internal drive. When installed on an internal drive, you can register FHEM as a service.<br />
<br />
==basic Installation==<br />
===Installation FHEM===<br />
Download the current [https://fhem.de/#Download fhem-X.Y.zip package] (currently fhem-6.0.zip).<br />
<br />
Create a new folder for FHEM. For this article the folder <code>f:\my-fhem</code> was created.<br />
<br />
Extract the entire content of the folder <code>fhem-6.0\fhem-6.0</code> from the .zip-package to <code>f:\my-fhem</code>. <br />
<br />
''For control:'' In <code>f:\my-fhem</code> there is the file <code>fhem.pl</code>.<br />
<br />
===Installation Perl===<br />
Download a current [http://strawberryperl.com/releases.html Strawberry Perl Portable Edition] and extract it in the FHEM folder. <br />
<br />
In this case, the content of the package "strawberry-perl-5.24.1.1-32bit-portable.zip" was extracted to <code>f:\my-fhem</code>. <br />
<br />
''For control:'' In <code>f:\my-fhem</code> there is now an additional folder <code>perl</code>.<br />
<br />
===Start of FHEM===<br />
Open a command prompt (cmd), change to the previously created folder, and start FHEM:<br />
<br />
<syntaxhighlight lang="doscon"><br />
C:\> cd f:\my-fhem<br />
F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg<br />
</syntaxhighlight><br />
<br />
Now a Windows security alert appears that Windows Firewall is blocking the Perl interpreter. To access FHEM, you must set up a firewall exception. For this purpose, the security note must be terminated with the button {{Taste|Allow Access}}.<br />
<br />
''Note:'' There is no visible output and the command won't terminate. The command prompt cannot be closed as long as FHEM is running.<br />
<br />
===Calling the FHEM Web Interface (FHEMWEB)===<br />
Start a browser (Firefox, Chrome and Safari are recommended) and open:<br />
<br />
<code>http://localhost:8083/fhem</code><br />
<br />
The FHEM main page appears:<br />
<br />
[[Datei:ErsteSchritteInFhem01.png]]<br />
<br />
===Update of FHEM===<br />
FHEM is continuously being developed. Therefore, an update should be made to get the most recent version.<br />
<br />
In the command input field of FHEM, this is the white, rectangular text input field to the right of the FHEM logo. Type<br />
<br />
<code>update</code><br />
<br />
and then press {{Taste|Enter}}.<br />
<br />
It starts the update process, which can take a while. FHEM is showing progress. At the end of the update process, FHEM prompts for a "shutdown restart". Please ignore this and type in the command input field only<br />
<br />
<code>shutdown</code><br />
<br />
followed by {{Taste|Enter}} to exit FHEM.<br />
<br />
Now return to the command prompt window. Restart the updated FHEM; For example by the {{Taste|arrow up}} followed by {{Taste|Enter}} or re-entering<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg</syntaxhighlight><br />
<br />
This completes the installation of FHEM and [[First steps in FHEM]] invites you to try it out.<br />
<br />
==Installations Options==<br />
===Installation Win32::SerialPort===<br />
{{Hinweis|In the Strawberry Perl Portable versions released since 12/2018 Win32::SerialPort is one of the standard installed modules (see release notes for Strawberry Perl - List of distributions installed on top of Perl). This section is not required for these versions.}}<br />
<br />
The Win32:SerialPort module is required for most USB gateways (CUL, Z-Wave, EnOcean, ..). The module should be installed only after successful Windows driver installation for the gateway. Install the missing perl module by typing in the command window: <br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::SerialPort<br />
</syntaxhighlight><br />
<br />
===Installation of FHEM as a service===<br />
''Note:'' Setting up FHEM as a service requires an entry in the registration database created automatically in the following installation process.<br />
<br />
Exit FHEM by entering <code>shutdown</code> in the command input field. <br />
<br />
Open an command prompt and install missing Perl modules using the following commands::<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::Daemon<br />
F:\my-fhem> perl\bin\cpan -i Win32::Console<br />
</syntaxhighlight><br />
<br />
Run an command prompt as administrator and install FHEM as a service:<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg -i</syntaxhighlight><br />
<br />
In the Windows Administration Tool "services", the FHEM service is listed with the name "fhem server" after it has been successfully set up. After installation as a service FHEM starts invisible (without opened command prompt) during Windows startup.<br />
<br />
Unlike the start of FHEM via the command line, the <code>shutdown restart</code> command can be successfully executes with FHEM as a service.<br />
<br />
==What's next?==<br />
[[First steps in FHEM]]<br />
<br />
[[Kategorie:HOWTOS]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEM_Installation_Windows&diff=32561FHEM Installation Windows2020-01-26T13:38:55Z<p>Krikan: FHEM 6.0</p>
<hr />
<div>'''{{PAGENAME}}''' beschreibt die Installation von FHEM als portable Software für Windows (keine Eingriffe in die Registrierungsdatenbank). Die Anleitung ist sowohl für die Installation auf einem Wechseldatenträger, zum Beispiel einem USB-Stick, als auch auf einem internen Laufwerk anwendbar. Bei Installation auf einem internen Laufwerk ist die abschließend dargestellte Einrichtung von FHEM als Dienst möglich.<br />
<br />
==Grundinstallation==<br />
===Installation FHEM===<br />
Das aktuelle [https://fhem.de/#Download fhem-X.Y.zip Paket] (momentan fhem-6.0.zip) herunterladen.<br />
<br />
Einen neuen Ordner für FHEM anlegen. Für diesen Artikel wurde der Ordner <code>f:\my-fhem</code> angelegt.<br />
<br />
Den gesamten Inhalt des Ordners <code>fhem-6.0\fhem-6.0</code> aus dem .zip-Paket nach <code>f:\my-fhem</code> entpacken. <br />
<br />
''Zur Kontrolle:'' In <code>f:\my-fhem</code> befindet sich anschließend unter anderem die Datei <code>fhem.pl</code>.<br />
<br />
===Installation Perl===<br />
Eine aktuelle [http://strawberryperl.com/releases.html Strawberry Perl Portable Edition] herunterladen und im Ordner von FHEM entpacken. <br />
<br />
Hier wurde der Inhalt des Pakets "strawberry-perl-5.24.1.1-32bit-portable.zip" nach <code>f:\my-fhem</code> entpackt. <br />
<br />
''Zur Kontrolle:'' In <code>f:\my-fhem</code> existiert anschließend unter anderem ein zusätzlicher Ordner <code>perl</code>.<br />
<br />
===Start von FHEM===<br />
Eine Eingabeaufforderung (cmd) in Windows öffnen, in den zuvor angelegten Ordner wechseln und FHEM starten:<br />
<br />
<syntaxhighlight lang="doscon"><br />
C:\> cd f:\my-fhem<br />
F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg<br />
</syntaxhighlight><br />
<br />
Jetzt erscheint ein Windows-Sicherheitshinweis, dass die Windows-Firewall den Perl Interpreter blockiert. Für den Zugriff auf FHEM muss eine Firewall-Ausnahme eingerichtet werden. Hierzu ist der Sicherheitshinweis mit dem Button {{Taste|Zugriff zulassen}} zu beenden.<br />
<br />
''Hinweis:'' In der Eingabeaufforderung erscheint keine Rückmeldung und das Programm beendet sich nicht. Die Eingabeaufforderung darf nicht geschlossen werden, so lange FHEM läuft.<br />
<br />
===Aufruf des FHEM-Webinterfaces (FHEMWEB)===<br />
Einen Browser öffnen (Firefox, Chrome und Safari werden empfohlen) und FHEM unter folgender Adresse aufrufen:<br />
<br />
<code>http://localhost:8083/fhem</code><br />
<br />
Es öffnet sich die FHEM-Hauptseite:<br />
<br />
[[Datei:ErsteSchritteInFhem01.png]]<br />
<br />
===Update von FHEM===<br />
FHEM wird kontinuierlich weiterentwickelt. Daher sollte direkt ein Update auf den aktuellen Entwicklungsstand durchgeführt werden. <br />
<br />
Im Befehls-Eingabefeld von FHEM, das ist das weiße, rechteckige Texteingabefeld rechts neben dem FHEM-Logo, den Befehl<br />
<br />
<code>update</code><br />
<br />
eingeben und mit {{Taste|Enter}} abschließen.<br />
<br />
Es beginnt der Update-Prozeß, der eine Weile dauern kann. Den Fortschritt zeigt FHEM an. Am Ende des Update-Prozesses fordert FHEM zu einem "shutdown restart" auf. Dies bitte ignorieren und im Befehls-Eingabefeld nur <br />
<br />
<code>shutdown</code><br />
<br />
gefolgt von {{Taste|Enter}} zum Beenden von FHEM eingeben.<br />
<br />
Nun wieder zum Fenster der Eingabeaufforderung wechseln. Das aktualisierte FHEM erneut starten; beispielsweise durch {{Taste|Pfeil hoch}} gefolgt von {{Taste|Enter}} oder erneute Eingabe von <br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg</syntaxhighlight><br />
<br />
Hiermit ist die Installation von FHEM bereits grundlegend abgeschlossen und [[Erste Schritte in FHEM]] lädt zum Ausprobieren ein.<br />
<br />
==Installations-Optionen==<br />
===Installation Win32::SerialPort===<br />
{{Hinweis|Bei den seit 12/2018 veröffentlichten Strawberry Perl Portable Versionen gehört Win32::SerialPort zu den standardmäßig installierten Modulen (siehe jeweils in Release Notes zu Strawberry Perl - List of distributions installed on top of Perl). Dieser Abschnitt ist bei diesen Versionen überflüssig.}}<br />
Für die meisten USB-Gateways (CUL, Z-Wave, EnOcean,..) wird das Modul Win32::SerialPort benötigt. Das Modul sollte erst nach erfolgreicher Windows-Treiberinstallation für das Gateway installiert werden. Zur Modulinstallation sind folgende Befehle in der Eingabeaufforderung von Windows abzusetzen:<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::SerialPort<br />
</syntaxhighlight><br />
<br />
===Installation von FHEM als Dienst===<br />
''Hinweis:'' Die Einrichtung von FHEM als Dienst erfordert einen automatisch im folgenden Installationsprozeß erstellten Eintrag in der Registrierungsdatenbank.<br />
<br />
FHEM durch Eingabe von <code>shutdown</code> im Befehls-Eingabefeld beenden. <br />
<br />
Eine Eingabeaufforderung öffnen und fehlende Perl-Module durch folgende Befehle installieren:<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::Daemon<br />
F:\my-fhem> perl\bin\cpan -i Win32::Console<br />
</syntaxhighlight><br />
<br />
Eine Eingabeaufforderung als Administrator öffnen und FHEM als Dienst einrichten:<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg -i</syntaxhighlight><br />
<br />
Im Windows-Verwaltungswerkzeug "Dienste" wird der FHEM-Dienst nach erfolgreicher Einrichtung mit dem Namen "fhem server" aufgeführt. FHEM startet nach Installation als Dienst beim Windows-Start unsichtbar (ohne offene Eingabeaufforderung) im Hintergrund. <br />
<br />
Anders als beim Start von FHEM über die Eingabeaufforderung kann bei FHEM als Dienst nach einem <code>update</code> der Befehl <code>shutdown restart</code> erfolgreich ausgeführt werden.<br />
<br />
==Wie geht es weiter?==<br />
[[Erste Schritte in FHEM]]<br />
<br />
[[Kategorie:HOWTOS]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Literatur&diff=31323Literatur2019-10-09T16:10:39Z<p>Krikan: /* Bücher */ -> "Smart Home mit FHEM"</p>
<hr />
<div>Literatur: FHEM, Hausautomation, SmartHome, Sensoren/Aktoren, Protokolle ...<br />
<br />
{{Hinweis|Diese Seite listet ohne Bewertung externe Quellen mit Informationen zu FHEM auf. Siehe hierzu auch die Hinweise zur [[Dokumentationsstruktur]] von FHEM und dort insbesondere die Informationen zu externen Quellen wie [[Dokumentationsstruktur#Internet, Blogs usw.|Internet, Blogs usw.]]}}<br />
<br />
__TOC__<br />
<br />
{| class="wikitable" style="width: 90%;border-style: solid; border-width: 4px;" <br />
|+<br />
== Bücher ==<br />
|- style="background-color: lightgray;"<br />
| style="width: 20%;" | '''Titel'''<br />
| style="width: 10%;" | '''Autoren'''<br />
| style="width: 30%;" | '''Gegenstand (u.a.)'''<br />
| style="width: 29%;" | '''Verlagsangaben'''<br />
| style="width: 11%;" | '''ISBN'''<br />
<!--<br />
|-<br />
| <br />
| <br />
| <br />
|<br />
|<br />
--><br />
|-<br />
| '''Smart Home Manifest'''<br />''Hausautomation und Heimvernetzung für Maker''<br />
| E. F. Engelhardt <br />
| Smart-Home-Bausteine, MQTT und IoT, Mehr Sicherheit für Hausautomation und IoT, Smart-Home-Zentrale im Eigenbau, FHEM: die zentrale Anlaufstelle, viele Einzelprojekte<br />
| Franzis Verlag, 2018, Haar bei München, 800 S.<br />
| 978-3-645-60588-5 <br />
|-<br />
| '''SmartHome Hacks'''<br />''Hausautomatisierung selber machen''<br />
| Peter A.Henning <br />
| Technische Grundlagen, Hardware, Interfaces, konkrete Lösungen mit und ohne FHEM<br />
| dpunkt/O'Reilly, Edition Make:, 2016, Heidelberg, 332 S., <br />
| 978-3-96009-012-0<br />
|-<br />
| '''Hausautomation mit Raspberry Pi'''<br />''Alarmanlagen, Lampen, Heizung, Smart Home, WLAN & Co.: 25 Projekte, die Ihr Leben leichter machen''<br />
| E. F. Engelhardt<br />
| Smart Home Bausteine (u. a.: RasPi mit Erweiterungen und GPIO, FHEM, OwnCloud), Alarm- und Bewegungsmelder, Energiekosten, IP-Steckdosen, LED-Lampen und Effekte, diverse Hauselektronik steuern; mit und ohne FHEM<br />
| Franzis Verlag GmbH in Kooperation mit c't Hardware Hacks, 2016, Haar bei München, 300 S. <br />
| 978-3-645-60313-3<br />
|-<br />
| '''PC-Netzwerke'''<br />Das umfassende Handbuch<br />
| Axel Schemberg et al<br />
| Netzwerk-Hardware, Basiswissen zu Netztechniken, Protokollen, typischen Services; u.a. Kapitel 46.4: "Beispiel einer FS20-Hausautomation mit FHEM" (11 S.) und Kapitel 47.10 "FHEM-Steuerzentrale" (Raspberry Pi, CUL) (4 S.)<br />
| Rheinwerk, 7. akt. und erw. Aufl. 2015, 735 S.<br />
| 978-3-8362-3680-5<br />
|-<br />
| '''Das [[MQTT Einführung|MQTT]]-Praxisbuch'''<br />
| Walter Trojan<br />
| MQTT im Detail, Sicherheit in MQTT, Performance, Beispiele mit ESP8266, Raspberry Pi, PC, Mosquitto Broker, Node-RED, ...<br />
| Elektor-Verlag Aachen, 1.Auflage 2017, 278 S. <br />
| 978-3-89576-324-3<br />
|-<br />
| '''Smart Home mit FHEM'''<br />''Individuelle und flexible Open-Source-Hausautomatisierung.''<br />
| Peter A.Henning <br />
| Individuelle Smart Home-Lösungen mit dem Open Source-System FHEM<br />
| Carl Hanser Verlag, München, 10/2019, 341 S.<br />
| Buch (Extra: E-Book inside): 978-3-446-45873-4 / E-Book(PDF): 978-3-446-46098-0 [https://www.hanser-fachbuch.de/buch/Smart+Home+mit+FHEM/9783446458734]<br />
|}<br />
<br />
{| class="wikitable" style="width: 90%;border-style: solid; border-width: 4px" <br />
|+<br />
<br />
== Artikel ==<br />
<!--<br />
Nach Erscheinungsdatum, die jüngsten zuerst ...<br />
--><br />
|- style="background-color: lightgray;"<br />
| style="width: 35%;" | '''Titel'''<br />
| style="width: 15%;" | '''Autoren'''<br />
| style="width: 35%;" | '''Gegenstand (u.a.)'''<br />
| style="width: 15%;" | '''Journal'''<br />
<!--<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
--><br />
|-<br />
| '''Vielsmarterei'''<br />''Smart-Home-Schaltzentralen binden zunehmend fremde Komponenten ein''<br />
| Nico Jurran, Ulrich Hilgefort<br />
| Steuerzentralen diverser Hersteller/Systeme, technische Ausstattungen, Protokolle, Sicherheit, Integration von "Fremd"-Systemen/Protokollen; Apple Homekit, DECT ULE, FS20, EnOcean (Dolphin), HomeMatic, HomeMatic IP, KNX RF (+), innogy SmartHome, Qivicon, WeMo, ZigBee, ZigBee 3.0 Pro, Z-Wave (Plus)<br />
| C'T, 2017/23, S. 138-141<br />
|-<br />
| '''Smart Home? Aber sicher!'''<br />''Wie Sie schnüffelnde Geräte isolieren und Ihre Privatsphäre schützen'' (Artikelfolge)<br />
| Mirko Dölle et al<br />
| Device-Ausstattung und -Kommunikation: Bekanntes und Nichtdokumentiertes; Sicherheitskonzepte für das private LAN; Subnetze im (W)LAN; <br />
| C'T, 2017/8, S. 70-85<br />
|-<br />
| '''Drückerei'''<br />''Den Amazon Dash Button zweckentfremden''<br />
| Johannes Merkert<br />
| Amazon Dash Button via RasPi auswerten, eigene Skripte; nur indirekte FHEM-Integration<br />
| C'T, 2016/21, S. 174-177<br />
|-<br />
| '''Schlaues Heim, Glück allein'''<br />''Smart Home in der Praxis''<br />
| Nico Jurran<br />
| Übersicht über aktuelle Systeme; auch: Beacon, Sprache, Bild, Ton, Media-Clients<br />
| C'T, 2016/07, S. 110-117<br />
|-<br />
| '''Eingespielt'''<br />''FHEM auf dem Raspberry Pi installieren''<br />
| Jörg Hofmann, Christoph Langner<br />
| Auf Basis Raspbian "Jessie"; FHEM 5.7 mit Hinweisen auf Änderungen bei anderen Versionen<br />
| [http://www.raspberry-pi-geek.de/Magazin/2016/04/FHEM-auf-dem-Raspberry-Pi-installieren Raspberry Pi Geek, 2016/04, S. 14-18]<br />(frei lesbar)<br />
|-<br />
| '''Querfunker'''<br />''Funksteckdosen und mehr mit dem Raspi steuern''<br />
| Benjamin Benz<br />
| Sniffen von 433MHz-Funk-Schaltsteckdosen, -dimmern (diverse Protokolle) mit RasPi, 433MHz-Platinchen und pilight<br />
| C'T, 2016/02, S. 102-104<br />
|-<br />
| '''Ruhezone'''<br />''Schallpegel mit einem RasPi, PT8005 und FHEM protokollieren''<br />
| Falko Benthin<br />
| <br />
| [http://www.raspberry-pi-geek.de/Magazin/2016/01/Schallpegel-mit-einem-RasPi-PT8005-und-FHEM-protokollieren/(language)/ger-DE Raspberry Pi Geek, 2016/01, S. 34-37]<br />(frei lesbar)<br />
|-<br />
| '''Besser batterielos'''<br />''EnOcean-Übersetzer im Eigenbau''<br />
| Nico Jurran<br />
| EnOcean IP-Bridge mit RasPi 2, USB-Stick „USB 300“ oder Modul „EnOcean Pi“<br />
| C'T, 2015/12, S. 88<br />
|-<br />
| '''Artenvielfalt'''<br />''Der Kampf um die Spitzenposition auf dem Smart-Home-Markt''<br />
| Richard Sietmann<br />
| Systeme, Angriffsszenarien, SmartHome als Service<br />
| C'T, 2014/22, S. 136-141<br />
|-<br />
| '''Brandmelder im Eigenbau'''<br />''Raspberry Pi überwacht Funkrauchmelder''<br />
| Mirko Dölle<br />
| Homematic-Rauchmelder integrieren<br />
| C'T, 2014/11, S. 178-179<br />
|}<br />
<br />
{| class="wikitable" style="width: 90%;border-style: solid; border-width: 4px" <br />
|+<br />
<br />
== Videos ==<br />
<!--<br />
|-<br />
| <br />
| <br />
| <br />
| [ Link]<br />
--><br />
|- style="background-color: lightgray;"<br />
| style="width: 30%;" | '''Titel (Veröffentlichungsdatum)'''<br />
| style="width: 30%;" | '''Quelle'''<br />
| style="width: 35%;" | '''Gegenstand (u.a.)'''<br />
| style="width: 5%;" | '''Link'''<br />
|-<br />
| Leben im Smart Home und Internet der Dinge (16.12.2016)<br />
| YouTube, extra 3 (NDR)<br />
| Satire <br />
| [https://www.youtube.com/watch?v=yZn0r4ik0fI Link]<br />
|-<br />
| 10 FHEM-Quicktipps (03.07.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Syntax-highlighting, Größe Eingabefeld, Sprachauswahl, Geographische Lage (Sonnenaufgangszeit), mehrzeiliges StateFormat, zusätzliche Menüeinträge (menuEntries), USB Geräteliste in FHEM (usb scan), Feiertage (Datei holiday), USB identifizieren byID, Konfiguration in der GUI vs. direktes Edit in fhem.cfg<br />
| [https://www.youtube.com/watch?v=WmvidbFmTn4 Link]<br />
|-<br />
| 10 FHEM-Quicktipps Teil 2 (16.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Dynamischer Titel für Browserfenster, Anzeige des Alters der Daten (Timestamps in StateFormat), basicAuth mit Gültigkeitszeitraum (basicAuthExpiry), automatisierte Aktionen bei neu definierten Geräten (global:DEFINED), Zeilenumbrüche in stateFormat, Sprache und Format in der FritzBox Anrufliste, neue bzw. umbenannte Befehle (cmdalias), Geräte duplizieren und anpassen mit raw definition und define/defmod, DOIF oder notify mit event monitor erstellen, DOIFtools<br />
| [https://www.youtube.com/watch?v=lLC7tIOTg7c Link]<br />
|-<br />
| 6 vermeidbare Fehler bei der Arbeit mit FHEM (27.11.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
|<br />
#Dummy device<br />
#Datentypen vermischen<br />
#Punkt im Gerätenamen<br />
#überflüssige Anführungsstriche im Code<br />
#Klammern (erlaubterweise) weglassen<br />
#Konfiguration direkt in der fhem.cfg bearbeiten <br />
| [https://www.youtube.com/watch?v=bTdHLSgLJKU&index=78&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&t=102s Link]<br />
|-<br />
| FHEM-Tutorial Part 1 (07.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Raspberry Pi vorbereiten<br />
| [https://www.youtube.com/watch?v=ISZbmGJJUjU&index=1&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 2 (07.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| FHEM installieren und absichern<br />
| [https://www.youtube.com/watch?v=lC2sXkOau0I Link]<br />
|-<br />
| FHEM-Tutorial Part 3 (08.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Müllplan in FHEM integrieren<br />
| [https://www.youtube.com/watch?v=cEFu4Gn6fK4 Link]<br />
|-<br />
| FHEM-Tutorial Part 3.2 (21.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Muellplan auf ABFALL-Modul umstellen <br />
| [https://www.youtube.com/watch?v=HpZ2m0C3vb0 Link]<br />
|-<br />
| FHEM-Tutorial Part 4 (09.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| CUL flashen und erste Geräte anlernen <br />
| [https://www.youtube.com/watch?v=nMqaZkV_Ols Link]<br />
|-<br />
| FHEM-Tutorial Part 5 (16.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Look and feel verändern <br />
| [https://www.youtube.com/watch?v=5yzrodffHOA Link]<br />
|-<br />
| FHEM-Tutorial Part 5.2 (05.07.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Neuer Skin in Version 2.0 veröffentlicht <br />
| [https://www.youtube.com/watch?v=d3wYcvJT-iw&index=36&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 6 (16.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Den aktuellen Spritpreis in FHEM integrieren <br />
| [https://www.youtube.com/watch?v=iqdZKJ2Qw-o Link]<br />
|-<br />
| FHEM-Tutorial Part 7 (20.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| mySQL-Server für Logging nutzen <br />
| [https://www.youtube.com/watch?v=TOy9eP1YR98 Link]<br />
|-<br />
| FHEM-Tutorial Part 7.2 (27.07.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| mySQL-Log aufräumen und verfeinern <br />
| [https://www.youtube.com/watch?v=xwKBsGhviC0&index=38&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 8 (26.05.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Wettervorhersage und Update auf neueste Version<br />
| [https://www.youtube.com/watch?v=B1oqBA9VgIY Link]<br />
|-<br />
| FHEM-Tutorial Part 9 (01.06.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Events, Graphen, Plots und Logs <br />
| [https://www.youtube.com/watch?v=t4hsn2Wcriw Link]<br />
|-<br />
| FHEM-Tutorial Part 10 (02.06.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Synology-Status per SNMP überwachen <br />
| [https://www.youtube.com/watch?v=rUh1sDmoNSI Link]<br />
|-<br />
| FHEM-Tutorial Part 11 (14.07.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Benachrichtigung mit Bild bei Bewegung - IP-Kamera <br />
| [https://www.youtube.com/watch?v=JeQ_xUSl5yo Link]<br />
|-<br />
| FHEM-Tutorial Part 12 (20.07.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| WhatsApp Nachrichten versenden und empfangen<br />
| [https://www.youtube.com/watch?v=JfJVcqebqi8 Link]<br />
|-<br />
| FHEM-Tutorial Part 13 (30.07.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| WLAN auf dem Raspberry Pi 3 konfigurieren <br />
| [https://www.youtube.com/watch?v=VOF5tpIQfrc Link]<br />
|-<br />
| FHEM-Tutorial Part 14 (01.08.20)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Anrufe auf der Fritz!Box als Event in FHEM <br />
| [https://www.youtube.com/watch?v=QSI7PQawUIw Link]<br />
|-<br />
| FHEM-Tutorial Part 15 (02.08.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Anwesenheit mit Bluetooth LE Tag ermitteln <br />
| [https://www.youtube.com/watch?v=yO3dOstU_rs Link]<br />
|-<br />
| FHEM-Tutorial Part 16 (14.09.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| iOS 10 Homekit integration in FHEM <br />
| [https://www.youtube.com/watch?v=dL35MdnLcZY Link]<br />
|-<br />
| FHEM-Tutorial Part 17 (04.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| HomeMatic-Thermostat integrieren <br />
| [https://www.youtube.com/watch?v=VbdlYQOnO8Q Link]<br />
|-<br />
| FHEM-Tutorial Part 18 (22.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Telegram-Nachrichten senden und empfangen <br />
| [https://www.youtube.com/watch?v=AudYpILrAik&index=20&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 19 (22.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Firmware-Update von HomeMatic-Komponenten <br />
| [https://www.youtube.com/watch?v=bkYTph__oh4&index=19&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 20 (29.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Menu-Einträge und Menu-Icons <br />
| [https://www.youtube.com/watch?v=5WOd2b8X2Yc&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=21 Link]<br />
|-<br />
| FHEM-Tutorial Part 21 (30.12.2016)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Zugriff auf FHEM über das Internet <br />
| [https://www.youtube.com/watch?v=WdQVeLY9OJI&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=22 Link]<br />
|-<br />
| FHEM-Tutorial Part 22 (04.01.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| IFTTT integration - Webservices in FHEM nutzen<br />
| [https://www.youtube.com/watch?v=2AV4AnJbxj4&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=24 Link]<br />
|-<br />
| FHEM-Tutorial Part 23 (14.01.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Mit Amazon Echo / Alexa FHEM steuern <br />
| [https://www.youtube.com/watch?v=mUFlA2ZD_yw&index=25&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 24 (21.01.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Amazon Echo / Alexa FHEM - Custom Skill <br />
| [https://www.youtube.com/watch?v=PHAvSaO8Ev4&index=25&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 24.2 (17.06.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Alexa Custom Skill aufbohren <br />
| [https://www.youtube.com/watch?v=TeeB49rivp0&index=26&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 25 (11.02.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Harmony Hub/Fernbedienungen einbinden <br />
| [https://www.youtube.com/watch?v=p7k0PSElCHw&index=27&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 26 (13.02.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| ESP8266 Temperatur per MQTT an FHEM senden <br />
| [https://www.youtube.com/watch?v=ro0-W9Nl6sk&index=28&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 27 (21.02.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Analytics-Daten auf LCD per MQTT <br />
| [https://www.youtube.com/watch?v=ee9jvtUjCZI&index=29&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 28 (13.02.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| ESP8266 Temperatur per MQTT an FHEM senden<br />
| [https://www.youtube.com/watch?v=ro0-W9Nl6sk&index=28&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 29 (21.02.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Analytics-Daten auf LCD per MQTT <br />
| [https://www.youtube.com/watch?v=ee9jvtUjCZI&index=29&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 30 (25.03.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| LaMetric time integrieren - NEUES MODUL! <br />
| [https://www.youtube.com/watch?v=34q7DucFpUc&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=32 Link]<br />
|-<br />
| FHEM-Tutorial Part 31 (09.06.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| HomeMatic-Unterputzschalter integrieren <br />
| [https://www.youtube.com/watch?v=89JbM6XNuMQ&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=33 Link]<br />
|-<br />
| FHEM-Tutorial Part 32 (15.06.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Zugriff auf FHEM mit Fail2Ban absichern <br />
| [https://www.youtube.com/watch?v=2DKfvWCLgj0 Link]<br />
|-<br />
| FHEM-Tutorial Part 33 (02.07.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Energiekosten im Überblick <br />
| [https://www.youtube.com/watch?v=L7okMRxYGCc&index=35&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 34 (16.07.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Philips Hue + DevSpec Tipps <br />
| [https://www.youtube.com/watch?v=pfyerFrNM_Q&index=37&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 35 (08.08.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| GoogleAuth - die perfekte Zugangskontrolle? <br />
| [https://www.youtube.com/watch?v=NkqAGhenjIM&index=39&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 35.2 (21.08.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Per Keypad Zutritt gewähren <br />
| [https://www.youtube.com/watch?v=YsblsXxtYfA&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=41 Link]<br />
|-<br />
| FHEM-Tutorial Part 36 (14.08.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| RSS-Feed in FHEM + Push-Benachrichtigung <br />
| [https://www.youtube.com/watch?v=iYa20JIS690&index=40&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 37 (29.08.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Touch-Display auf dem RaspberryPi mit Dashboard <br />
| [https://www.youtube.com/watch?v=IDn__Z7FoHE&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=42 Link]<br />
|-<br />
| FHEM-Tutorial Part 38 (31.08.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Text To Speech - Sprachausgabe und Sounds <br />
| [https://www.youtube.com/watch?v=XEZ-wmsM4NE&index=43&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 39 (02.09.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Spotify Connect in FHEM integrieren <br />
| [https://www.youtube.com/watch?v=65d4v8_6E1U&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=44 Link]<br />
|-<br />
| FHEM-Tutorial Part 40 (04.10.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Alles rund um Mails / IMAP / SMTP <br />
| [https://www.youtube.com/watch?v=1P3DDUq2gx4&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=45 Link]<br />
|-<br />
| FHEM-Tutorial Part 41 (25.10.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Licht-Szenen anlegen und verwalten <br />
| [https://www.youtube.com/watch?v=pob72uuZfvk&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=46 Link]<br />
|-<br />
| FHEM-Tutorial Part 42 (06.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Regenradar darstellen <br />
| [https://www.youtube.com/watch?v=oCjJv2zZX3A Link]<br />
|-<br />
| FHEM-Tutorial Part 43 (08.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| VPN-Verbindung in der FritzBox konfigurieren <br />
| [https://www.youtube.com/watch?v=O3B6Ji5n7Gc Link]<br />
|-<br />
| FHEM-Tutorial Part 44 (18.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| nanoCUL bauen und integrieren <br />
| [https://www.youtube.com/watch?v=jKGYy3icDiI Link]<br />
|-<br />
| FHEM-Tutorial Part 45 (19.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Wunderlist integration <br />
| [https://www.youtube.com/watch?v=gU8LpE2BNfc Link]<br />
|-<br />
| FHEM-Tutorial Part 46 (27.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| DBRep und mySQL-Backup auf NAS <br />
| [https://www.youtube.com/watch?v=nvY-uvfAI3Y&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=50 Link]<br />
|-<br />
| FHEM-Tutorial Part 47 (30.11.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Speedtest in FHEM integrieren <br />
| [https://www.youtube.com/watch?v=H0ysJZ_YH9A&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=51 Link]<br />
|-<br />
| FHEM-Tutorial Part 48 (05.12.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Weihnachtsbeleuchtung <br />
| [https://www.youtube.com/watch?v=2gClg-Qv5iU&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=52 Link]<br />
|-<br />
| FHEM-Tutorial Part (48.2) (23.11.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Weihnachtsbeleuchtung (Update) <br />
| [https://www.youtube.com/watch?v=QrWO1yahyUQ&t=1s Link]<br />
|-<br />
| FHEM-Tutorial Part 49 (11.12.2017)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Amazon Dash-Button integrieren <br />
| [https://www.youtube.com/watch?v=hVoLIfxFdaY&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=53 Link]<br />
|-<br />
| FHEM-Tutorial Part 50 (02.01.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Xiaomi Staubsauger integrieren <br />
| [https://www.youtube.com/watch?v=oO1HVtgJZoQ&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=54 Link]<br />
|-<br />
| FHEM-Tutorial Part 51 (11.01.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| IPCam-Bilder per Telegram versenden <br />
| [https://www.youtube.com/watch?v=gh_DhqBDBgM&index=55&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 52 (03.02.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Drucker integrieren / niedriger Tonerstand <br />
| [https://www.youtube.com/watch?v=yUtMTaTM6YA&index=56&t=0s&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 53 (04.02.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Fahrzeit mit Google Maps berechnen <br />
| [https://www.youtube.com/watch?v=k6uqm0xbJ-U&index=58&t=0s&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part 54 (09.02.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Fritz!DECT-Integration in FHEM <br />
| [https://www.youtube.com/watch?v=oNDXDZSjiDU&index=59&t=0s&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB Link]<br />
|-<br />
| FHEM-Tutorial Part (55) (03.03.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| OctoPrint-Integration - Info aufs SmartPhone <br />
| [https://www.youtube.com/watch?v=N8IN84K-khY&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=65 Link]<br />
|-<br />
| FHEM-Tutorial Part (56) (22.03.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Sonoff RF-Bridge - Intertechno-Stecker schalten <br />
| [https://www.youtube.com/watch?v=62M3QJdwadU&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=66 Link]<br />
|-<br />
| FHEM-Tutorial Part (57) (30.04.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| configDB einrichten <br />
| [https://www.youtube.com/watch?v=SeuNAkUVsMk&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=67 Link]<br />
|-<br />
| FHEM-Tutorial Part (58) (03.05.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Integration der YeeLight <br />
| [https://www.youtube.com/watch?v=rUKBfgsQytY&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=68 Link]<br />
|-<br />
| FHEM-Tutorial Part (59) (23.05.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Luftdatensensor integrieren <br />
| [https://www.youtube.com/watch?v=i4HQtbkemJg&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=69 Link]<br />
|-<br />
| FHEM-Tutorial Part (60) (01.09.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Status-Display mit Leben füllen <br />
| [https://www.youtube.com/watch?v=S_Y_A6Wuzsg&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=72 Link]<br />
|-<br />
| FHEM-Tutorial Part (61) (25.09.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Heizpläne und Heizleistung errechnen <br />
| [https://www.youtube.com/watch?v=2jh0_wlL114&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=74 Link]<br />
|-<br />
| FHEM-Tutorial Part (62) (04.11.2018)<br />
| YouTube, haus-automatisierung.com Matthias Kleine<br />
| Grafana-Integration in FHEM und TabletUI <br />
| [https://www.youtube.com/watch?v=OyJSRLjFHRE&list=PLcXIjZgo0R3CyA42uH6oOlHCEohL4EZTB&index=75 Link]<br />
|-<br />
<!--<br />
| FHEM Tutorial Serie Teil 01 (13.06.2017)<br />
| YouTube, voizchat.de Smarthome<br />
| Raspbian & FHEM auf Raspberry Pi installieren<br />
| [https://www.youtube.com/watch?v=RlSnTLvzGT4 Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 02 (25.01.2015)<br />
| YouTube, voizchat.de Smarthome<br />
| Homematic in FHEM einrichten & anlernen<br />
| [https://www.youtube.com/watch?v=3VS_Zy3TDr8 Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 03 (01.02.2015)<br />
| YouTube, voizchat.de Smarthome<br />
| Dummys, Wetter, Notify, at <br />
| [https://www.youtube.com/watch?v=4SrOdIIcUlE Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 04 (07.02.2015)<br />
| YouTube, voizchat.de Smarthome<br />
| SVG Plots erstellen & einrichten <br />
| [https://www.youtube.com/watch?v=_ftFWooLekI Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 05.1 (17.12.2015)<br />
| YouTube, voizchat.de Smarthome<br />
| Tablet UI installieren <br />
| [https://www.youtube.com/watch?v=vlJOol0C-Yg Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 05.2 (20.12.2015)<br />
| YouTube, voizchat.de Smarthome<br />
| Tablet UI konfigurieren <br />
| [https://www.youtube.com/watch?v=O5DsCKTNF8c Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 06 (17.06.2017)<br />
| YouTube, voizchat.de Smarthome<br />
| Anwesenheitserkennung über WLAN <br />
| [https://www.youtube.com/watch?v=KjxBGqHXvk4 Link]<br />
|-<br />
| FHEM Tutorial Serie Teil 07 (24.06.2017)<br />
| YouTube, voizchat.de Smarthome<br />
| Abläufe automatisieren <br />
| [https://www.youtube.com/watch?v=QRtsIGOh36A Link]<br />
--><br />
|}<br />
<br />
{| class="wikitable" style="width: 90%;border-style: solid; border-width: 4px" <br />
|+<br />
<br />
== Webseiten ==<br />
|- style="background-color: lightgray;"<br />
| style="width: 45%;" | '''Titel'''<br />
| style="width: 15%;" | '''Autoren'''<br />
| style="width: 35%;" | '''Gegenstand (u.a.)'''<br />
| style="width: 5%;" | '''Link'''<br />
<!--<br />
|-<br />
| ''' '''<br />
| <br />
| <br />
| [ Link]<br />
--><br />
|-<br />
| Hausautomation mit Fhem – Übersicht einiger Möglichkeiten zur Realisierung<br />
| Robin Pukropp<br />
| Große Mindmap mit Nutzungsideen<br />
| [https://blog.moneybag.de/hausautomation-mit-fhem-uebersicht-einiger-moeglichkeiten-zur-realisierung/ Link]<br />
|-<br />
| Robins Blog - Technik und Multimedia<br />
| Robin Pukropp<br />
| Diverse Beiträge: Projekte, Tests, Informationen<br />
| [https://blog.moneybag.de/category/fhem-hausautomation/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| Anpassbarer Spritpreismonitor mit Tankalarm<br />
| [https://waschto.eu/spritmonitor-2-0-individualisierter-tankalarm/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Milight-Geräte in FHEM einbinden<br />
| [https://waschto.eu/milight-geraete-in-fhem-einrichten/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Wifilight-Geräte in FHEM einbinden <br />
| [https://waschto.eu/wifilight-led-leuchtmittel-in-fhem-einbinden/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Traffic der FritzBox als Balkendiagramm darstellen<br />
| [https://waschto.eu/traffic/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: FHEM-Devices mit Icons aufwerten<br />
| [https://waschto.eu/aufwerten-von-fhem-devices-durch-icons/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Eigene Icons erstellen und in FHEM einbinden<br />
| [https://waschto.eu/eigene-icons-fuer-fhem-erstellen/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Eigene Routinen erstellen und auslagern<br />
| [https://waschto.eu/eigene-routinen-erstellen-und-auslagern/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| Projekt: Statusdisplay mit ESP Easy und DLCD<br />
| [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Lichtszenen erstellen mit LightScene<br />
| [https://waschto.eu/lightscene-erstellen-von-lichtszenen/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Einfache Zeitschaltuhr mit dem WeekdayTimer<br />
| [https://waschto.eu/weekdaytimer-einfache-zeitschaltuhr/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Anwesenheitssimulation mit dem RandomTimer<br />
| [https://waschto.eu/anwesenheitssimulation-zufaelliges-schalten-von-licht/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Wetterdienste in FHEM einbinden <br />
| [https://waschto.eu/wetterdienste-in-fhem-einbinden/ Link]<br />
|-<br />
| waschto.eu - Der Blog für FHEM-Einsteiger und Raspberry-Begeisterte<br />
| Waschto<br />
| How-To: Verkehrsinfos in FHEM einbinden<br />
| [https://waschto.eu/verkehrsinfo-und-traffic-verkehrsmeldungen-in-fhem-einbinden/ Link]<br />
|}<br />
<br />
<br />
[[Kategorie:Dokumentation]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave&diff=31259Z-Wave2019-09-23T07:07:31Z<p>Krikan: /* Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? */ -> Korrektur</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=ZWDongle<br />
|ModPurpose=Einbindung Z-Wave-Gateways<br />
|ModType=d<br />
|ModCmdRef=ZWDongle<br />
|ModForumArea=ZWave<br />
|ModTechName=00_ZWDongle.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
{{Infobox Modul<br />
|Name=ZWave<br />
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle<br />
|ModType=d<br />
|ModCmdRef=ZWave<br />
|ModForumArea=ZWave<br />
|ModTechName=10_ZWave.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
</div><br />
<br />
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])<br />
<br />
Auf dieser Seite werden Grundlagen eines '''Z-Wave''' Systems und dessen Einrichtung in FHEM beschrieben.<br />
== Z-Wave ==<br />
=== Nodes - Controller und Slaves ===<br />
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten '''Nodes''' (Knoten). Es setzt sich zusammen aus dem steuernden '''Controller''' (Zentrale) und min. 1 bis max. 231 gesteuerten '''Slaves''' (Geräten). <br />
<br />
=== Home-Id und Node-ID ===<br />
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:<br />
# '''Home-ID:''' Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.<br />
# '''Node-ID:''' Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. <br />
<br />
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der '''Inklusion''' (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. <br />
<br />
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).<br />
<br />
=== Primär- und Sekundärcontroller ===<br />
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der '''Primärcontroller'''. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum '''Sekundärcontroller'''. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die '''Exklusion''' (Ausschluss) eines Nodes aus dem Netz vornehmen.<br />
<br />
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.<br />
<br />
=== Acknowledge ===<br />
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.<br />
<br />
=== Vermaschtes Netzwerk mit Routing ===<br />
Z-Wave nutzt als Netzwerktopologie ein '''mesh network''' (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird '''Routing''' genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.<br />
<br />
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber ''nicht'' SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren ("Selbstheilung")[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].<br />
<br />
=== Command Classes ===<br />
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene '''Command Classes''' (Kommandoklassen) zusammengefasst sind.<br />
<br />
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die '''Class Basic'''. <br />
<br />
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die '''Class Configuration'''.<br />
<br />
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die '''Class Association'''.<br />
<br />
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.<br />
<br />
=== Hinweise zur Z-Wave-Geräteauswahl ===<br />
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.<br />
<br />
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.<br />
<br />
Gateway<br />
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.<br />
<br />
Endgeräte<br />
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder<br />
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder<br />
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)<br />
<br />
'''Kurz''': Produkte mit Z-Wave Plus-Zertifizierung einsetzen.<br />
<br />
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.<br />
<br />
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.<br />
<br />
== Z-Wave in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. <br />
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:<br />
* Herstellerseite des ZWave-Gerätes<br />
* http://www.zwave.de/handbuecher/ (deutsch)<br />
* http://products.z-wavealliance.org (englisch)<br />
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.<br />
<br />
== Definition des Gateways / Controllers ==<br />
{{Randnotiz|RNText='''Tester für ZWave@culfw gesucht!'''<br />
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}<br />
=== Autocreate des Gateways ===<br />
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. <br />
<br />
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:<br />
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])<br />
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})<br />
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})<br />
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)<br />
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)<br />
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})<br />
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x; Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])<br />
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&t=21327#p55404]) <br />
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})<br />
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
<br />
Folgende Gateways sind '''nicht''' mit FHEM einsetzbar:<br />
* Merten Funk-USB-Datenschnittstelle CONNECT<br />
<br />
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.<br />
<br />
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema <code>ZWDongle_<[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]></code> angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. <br />
<br />
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: <code>define ZWDongle_1 ZWDongle COM1@115200</code>). <br />
<br />
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum "Everything" zu finden.<br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
Aeon Labs Z-Stick an der Fritzbox: <br />
define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200<br />
<br />
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):<br />
define ZWDongle_1 ZWDongle /dev/ttyACM1@115200<br />
<br />
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.<br />
<br />
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.<br />
<br />
=== homeId und nodeList des Gateways ===<br />
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die <code>homeId</code> notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der <code>homeId</code> nicht zwingend. Jedoch sollte durch Abfrage der <code>homeId</code> direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.<br />
<br />
Die <code>homeId</code> und <code>CtrlNodeId</code> des Gateways wird mit folgendem Befehl ausgelesen (<ZWDongle> ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):<br />
get <ZWDongle> homeId<br />
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:<br />
ZWDongle_1 homeId => HomeId:e345c456 CtrlNodeId:01 <br />
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.<br />
<br />
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:<br />
get <ZWDongle> nodeList<br />
ergibt beispielsweise:<br />
ZWDongle_1 nodeList => ZWDongle_1 UNKNOWN_2<br />
<br />
<br />
== Definition von Geräten / Slaves ==<br />
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===<br />
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.<br />
<br />
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:<br />
set <ZWDongle> addNode on<br />
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:<br />
set <ZWDongle> addNode onNw<br />
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. <br />
<br />
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut <code>classes</code> des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum "ZWave" zu finden. <br />
<br />
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls <code>set <ZWDongle> addNode off</code> aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:<br />
* <code><nowiki>created ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.<br />
* <code><nowiki>addNode failed</nowiki></code> = Inklusion ist fehlgeschlagen<br />
<br />
Eine erfolgreiche Inklusion ist zudem am Event "ZW_ADD_NODE_TO_NETWORK protocolDone" im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen. Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events "ZW_ADD_NODE_TO_NETWORK failed". Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.<br />
<br />
HINWEISE:<br /><br />
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.<br />
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit <code><nowiki>set <ZWave-Devicename> neighborUpdate</nowiki></code> bzw. <code><nowiki>set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate</nowiki></code> neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.<br />
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut <code>classes</code> manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.<br />
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.<br />
<br />
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.<br />
<br />
=== Assoziation ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.<br />
<br />
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.<br />
<br />
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, '''muss''' der Controller (<ZWDongle>-Device, <code>CtrlNodeId</code> = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes <code><name></code> aufgenommen werden:<br />
<br />
set <name> associationAdd <associationGroup> <CtrlNodeId><br />
<br />
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. <br />
<br />
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.<br />
<br />
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe <associationGroup>:<br />
get <name> association <associationGroup><br />
<br />
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:<br />
get <name> associationAll<br />
<br />
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.<br />
<br />
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.<br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. <br />
<br />
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:<br />
set <name> configByte <Parameternummer> <Parameterwert><br />
Für weitere Parametergrößen gibt es die Befehle <code>configWord</code> und <code>configLong</code><br />
<br />
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:<br />
get <name> config <Parameternummer><br />
<br />
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden: <br />
get <name> model<br />
Die Readings <code>model</code>, <code>modelID</code> und <code>modelConfig</code> werden dadurch erzeugt. In <code>model</code> sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:<br />
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]<br />
<br />
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:<br />
get <name> configAll<br />
<br />
Außerdem wird durch den <code>get <name> model</code> -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link "Details in pepper DB" und/oder "Details in alliance DB" zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.<br />
<br />
Der Aufruf von <code>get <name> model</code> ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.<br />
<br />
=== Entfernen eines Z-Wave-Geräts / Exklusion ===<br />
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.<br />
<br />
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:<br />
set <ZWDongle> removeNode on<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):<br />
set <ZWDongle> removeNode onNw<br />
<br />
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. <br />
<br />
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:<br />
set <ZWDongle> removeNode off<br />
<br />
Das FHEM-Device muss nach der Exklusion manuell durch <code>delete <name></code> gelöscht werden.<br />
<br />
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.<br />
<br />
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===<br />
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:<br />
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion<br />
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM <br />
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration<br />
<br />
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:<br />
get <ZWDongle> nodeList<br />
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als "UNKNOWN_x" ausgegeben, wobei x die ID des betreffenden Gerätes ist.<br />
<br />
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als "UNKNOWN_2") in FHEM durch autocreate definiert:<br />
set <ZWDongle> createNode 2<br />
<br />
Batteriebetriebene Geräte müssen bei Absetzen des <code>createNode</code>-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf "permanent wach" stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den <code>createNode</code>-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und <code>autocreate</code> legt das FHEM-Device an; der Aufruf von <code>createNode</code> entfällt dann.<br />
<br />
== Geräte-Besonderheiten ==<br />
=== batteriebetriebene Geräte ===<br />
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in<br />
<br />
* Wakeup-Geräte<br />
* FLIRS-Geräte<br />
<br />
==== Wakeup-Geräte ====<br />
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.<br />
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht "wakeup notification". Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.<br />
<br />
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form<br />
:<code>Scheduled for sending after WAKEUP</code> <br />
::oder<br />
:<code>Scheduled get requests for sending after WAKEUP</code><br />
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten "wakeup notification" an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der "wakeup notification"-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der "wakeup notification" ist das batteriebetriebene Gerät grundsätzlich in der Lage ("wach genug"), Telegramme korrekt zu empfangen und zu verarbeiten.<br />
<br />
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal <code>cmdsPending</code> des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls <code>[[list]] <device></code> erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch <code>shutdown restart</code>) geht der Sendstack der Geräte daher verloren.<br />
<br />
Das Wakeup-Interval und der Empfänger der "wakeup notification" wird wie folgt konfiguriert:<br />
<nowiki>set <name> wakeupInterval <time> <NodeId></nowiki><br />
<nowiki><time></nowiki> ist die Zeit in Sekunden zwischen den Intervallen und <nodeID> der gewünschte Empfänger der "wakeup notification"; in der Regel ist dies '''immer''' der Controller <CtrlNodeId>. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die "wakeup notification" wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die "wakeup notification" geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten '''automatisch''' den Befehl <code><nowiki>set <name> wakeupInterval 86400 <ControllerNodeId></nowiki></code> ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit <code><nowiki>get <name> wakeupIntervalCapabilities</nowiki></code> vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage <code><nowiki>get <name> wakeupInterval</nowiki></code> überprüfen.<br />
<br />
Ein Aufwachen und Versand der "wakeup notification" von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.<br />
<br />
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf "wach" bzw. permanent "wach" stellen. Dann aus dem Attribut <code>classes</code> <code>WAKE_UP</code> entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des "wach"-Modus <code>WAKE_UP</code> wieder im Attribut <code>classes</code> aufnehmen.<br />
<br />
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit <code>set <name> config...</code> sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden <code>get <name> config...</code> oder -falls vorhanden- mit <code>get <name> configAll</code> überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.<br />
<br />
==== FLIRS-Geräte ====<br />
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. <br />
<br />
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit "wakeup notification". Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.<br />
<br />
=== Aeon Labs / Aeotec ===<br />
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home<br />
<br />
==== Multi Sensor 5 ====<br />
* aktuellste Firmware installieren<br />
* Attribut <code>classes</code> um <code>BASIC</code> ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit <code>set <name> configGroup1Reports 225</code> oder <code>set <name> configLong 101 225</code>, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch <code><nowiki>set <name> configGroup1Interval <time/s></nowiki></code> festgelegt (Standard 720 Sek).<br />
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]<br />
siehe {{Link2Forum|Topic=34505|Message=268913}}<br />
<br />
==== Multisensor 6 ====<br />
siehe {{Link2Forum|Topic=40393}}<br />
* arbeitet bei USB-Anschluß als Router<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* die <code>configGroupxInterval</code> und <code>configxxxReportingThreshold</code> Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem <code>wakeup</code> übertragen<br />
<br />
==== Aeotec LED Bulb ZW098-C55 ====<br />
siehe {{Link2Forum|Topic=40504}}<br />
<br />
=== Danfoss ===<br />
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====<br />
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem <code>at</code> abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):<br />
define Atdanfoss at +*00:30 get <name> battery<br />
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). <br />
<br />
=== devolo ===<br />
Ausführliche Handbücher auf http://products.z-wavealliance.org<br />
<br />
==== MT02648 Tür-/Fenster Kontakt 3in1 ====<br />
siehe {{Link2Forum|Topic=41337}}<br />
<br />
=== DüWI ===<br />
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise <code>define Status_Abfrage at +*00:03:00 get <name> swmStatus</code>) beheben.<br />
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.<br />
<br />
=== Everspring ===<br />
==== AN145 Sockelmodul E27 ====<br />
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}<br />
<br />
=== Fibaro ===<br />
Association Group für Übermittlung von Statusinformationen an den Controller:<br />
* "alte" ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3<br />
: <code><nowiki>set <name> associationAdd 3 <CtrlNodeId></nowiki></code><br />
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (<code><nowiki>set <name> associationDel 1 <CtrlNodeId></nowiki></code>). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.<br />
* ZWave Plus-Geräte: Association Group 1 ("lifeline")<br />
<br />
==== FGSS-001 / FGSD-002 Rauchmelder ====<br />
* nicht untereinander vernetzbar<br />
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen<br />
<br />
==== FGS-222 Relais Unterputzeinsatz ====<br />
Bei der Inklusion werden von FHEM 3 Devices angelegt:<br />
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)<br />
* Device für Endpoint 1 (Steuerung Kanal 1)<br />
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)<br />
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.<br />
<br />
Details: {{Link2Forum|Topic=50176}}<br />
<br />
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}<br />
<br />
==== FGK-101 Tür/Fensterkontakt ====<br />
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}<br />
<br />
=== GE ===<br />
==== GE (Model t.b.d) ====<br />
Dieser Schalter unterstützt keine Statusrückmeldungen.<br />
<br />
=== Merten ===<br />
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.<br />
<br />
=== Philio ===<br />
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====<br />
siehe {{Link2Forum|Topic=28046}}<br />
<br />
=== Popp ===<br />
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====<br />
siehe {{Link2Forum|Topic=39856}}<br />
==== POPE005107 Z-Wave Außensirene ====<br />
siehe {{Link2Forum|Topic=42736}}<br><br />
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein <code>userReadings</code> findet sich auch im verlinkten Thema. <br />
==== POPE009006 Z-Wave Wall Plug Switch ====<br />
siehe {{Link2Forum|Topic=40771}}<br />
==== POPE009402 10Year Smoke Detector ====<br />
Die erste Firmwareversion hat eine fehlerhafte modelID. Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.<br />
<br />
=== Z-Wave.Me ===<br />
==== ZME_RC2 Fernbedienung ====<br />
siehe {{Link2Forum|Topic=35513}}<BR><br />
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.<br />
<br />
<br />
== Geräte-Vergleich ==<br />
=== Doppel-Relais ===<br />
{| class="wikitable"<br />
|-<br />
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays !! Philio-PAN04 1<br />
|-<br />
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais<br />
|-<br />
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W<br />
|-<br />
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung || schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig >1 Sekunde <br />
|-<br />
| Geräte in FHEM || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 4 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 <br> x.03 Summengerät (ähnlich Hauptgerät, überflüssig)<br />
|-<br />
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais<br />
|-<br />
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden<br />
|-<br />
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Hauptgerät und Untergeräte || Nur Hauptgerät <br>Aktualisierung der Untergeräte nur bei aktiver Abfrage <br />
|-<br />
| Leistungsmessung || Separat für Untergeräte || Separat für Untergeräte || Nur Summe<br />
|-<br />
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A || nein, 2x 6.5A<br />
|}<br />
Beim Qubino Flush 2 relays muss eine MULTI_CHANNEL_ASSOCIATION mit dem Controller (Endpoint root) statt einer "normalen" Assoziation gesetzt werden, damit die Status der Untergeräte einzeln signalisert werden:<br />
<br />
set associationDel 1 <controllerNodeId> <br />
set <device> mcaAdd 1 0 <controllerNodeId> 0 <br />
<br />
Bei einem FHEM-Updatestand ab 20.09.2019 erfolgt diese Einstellung automatisch.<br />
<br />
== Links ==<br />
=== Allgemein ===<br />
* Grundlageninformation "Z-Wave-Haupt-Anleitung": [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]<br />
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] "Z-Wave: Die Funktechnologie für das Smart Home" von Dr. Christian Paetz (Paetz "is the primary European representative for the Z-Wave Alliance" [http://z-wavealliance.org/global-contacts/])<br />
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)<br />
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)<br />
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)<br />
* informative Webseiten zu Z-Wave:<br />
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)<br />
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)<br />
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)<br />
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)<br />
<br />
=== Informationsquellen zur Einbindung von Command Classes ===<br />
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):<br />
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]<br />
<br />
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)<br />
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis "docs"), RaZBerry und Z-Wave allgemein], englisch<br />
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch<br />
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)<br />
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html<br />
<br />
== FAQ ==<br />
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen FHEM-Devices (Ausgabe von <code>list <device></code>)<br />
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:<br />
::*<code>get <device> associationAll</code> <br />
::*<code>get <device> configAll</code><br />
::*<code>get <device> versionClassAll</code><br />
::*<code>get <device> mcaAll</code><br />
::*<code>get <device> wakeupInterval</code> (nur bei batteriebetriebenen Geräten)<br />
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen<br />
::*<code>attr <ZWDongle> verbose 5</code> und<br />
::*<code>attr global mseclog 1</code><br />
<br />
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===<br />
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!<br />
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes<br />
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway<br />
# [[#Konfiguration|Konfiguration]] des Gerätes<br />
<br />
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf "associationAdd <associationGroup> <CtrlNodeId>" stehen? ===<br />
FHEM setzt das Reading "state", das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte "associationAdd"-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes <code>{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}</code> manuell an seine Bedürfnisse angepasst hat.<br />
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])<br />
<br />
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (>1) angesprochen werden? ===<br />
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> und die Devices für alle Kanäle (Endpoints) nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID>.<EndpointNr></nowiki></code> automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).<br />
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle <code>get <device> mcEndpoints</code> und <code>get <device> mcCapability <chid></code> aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl <code>set <device> mcCreateAll</code> werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.<br />
<br />
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===<br />
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.<br />
==== Grobermittlung ====<br />
Der Befehl <code><nowiki>get <ZWDongle> nodeInfo <dezimale nodeId></nowiki></code> liefert das Reading <code><nowiki>nodeInfo_<dezimale nodeId></nowiki></code> zurück.<br />
Die Angabe im Reading hinter <code>ProtocolVers:</code> lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:<br />
* <code>2</code> -> bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)<br />
* <code>SDK5.0x+4.2x</code> -> bspw. keine Explorer Frames, teilweise SUC-Unterstützung<br />
* <code>SDK4.5x+6.0x</code> -> bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)<br />
==== Detailermittlung ====<br />
Durch den Befehl <code><nowiki>get <name> version</nowiki></code> kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen<br />
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version<br />
* Suche nach sdkids.xml in einer Suchmaschine<br />
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.<br />
<br />
Beispielsweis entspricht das Reading eines Gerätes "Lib 6 '''Prot 2.64''' App 1.6" dem SDK 5.02 Patch 2 oder eines Controller "Z-Wave '''3.41''' STATIC_CONTROLLER" dem SDK 6.02.00.<br />
<br />
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.<br />
<br />
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===<br />
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}<br />
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.<br />
<br />
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.<br />
<br />
Vorarbeiten:<br />
* Das Perl-Modul Crypt-Rijndael muss installiert sein.<br />
* Das Attribut <code>networkKey</code> muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.<br />
<br />
Ablauf der secure-Inklusion:<br />
* Controller in den Modus zur secure-Inklusion schalten:<br />
: <code>set <ZWDongle> addNode onSec</code> für die Standard-secure-Inklusion<br />
: oder alternativ<br />
: <code>set <ZWDongle> addNode onNwSec</code> für die Nework-Wide-secure-Inklusion<br />
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)<br />
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch <code>autocreate</code> angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut <code>secure_classes</code> in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in <code>classes</code> aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.<br />
* Inklusionsmodus des Controllers ausschalten:<br />
: <code>set <ZWDongle> addnode off</code><br />
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.<br />
<br />
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===<br />
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.<br />
<br />
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl <code>removeFailedNode</code> gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig "schlafen".<br />
<br />
Der Befehl <code>removeFailedNode</code> löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des <code>removeFailedNode</code>-Befehls erfolgt sein. <br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# An den betroffenen Node eine Telegramm mit <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und kann mit <code>removeFailedNode</code> gelöscht werden.<br />
# Befehl zum Löschen des Nodes absetzen: <code><nowiki>set <ZWDongle> removeFailedNode <NodeId></nowiki></code>. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.<br />
# Prüfen, der Ergebnisse des <code>removeFailedNode</code>-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis "failedNodeRemoveProcessBusy" mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.<br />
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: <code><nowiki>get <ZWDongle> nodeList</nowiki></code><br />
<br />
siehe auch {{Link2Forum|Topic=32823|Message=292626}}<br />
<br />
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===<br />
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per <code>addNode</code>, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt <code>addNode</code> der Befehl <code>replaceFailedNode</code> zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.<br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:<br />
## <code><nowiki>get <device> configAll</nowiki></code><br />
## <code><nowiki>get <device> associationAll</nowiki></code><br />
# defektes Gerät aus- und neues einbauen<br />
# Befehl <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit <code>replaceFailedNode</code> inkludiert werden.<br />
# <code><nowiki>set <zwdongle> replaceFailedNode <NodeId></nowiki></code> für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen<br />
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.<br />
<br />
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===<br />
Ja, das ist richtig.<br />
<br />
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei zunächst nicht erneut vergeben. Diese frei gewordenen NodeIds werden bei Inklusionen in aufsteigender Reihenfolge erst wieder vergeben, nachdem die höchste verfügbare NodeId (232?) inkludiert wurde. Sie sind somit grundsätzlich nicht verloren.<br />
<br />
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===<br />
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls <code>get <name> model</code> ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading <code>modelConfig</code> enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading <code>modelConfig</code> den Wert "unknown". Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen "nur" Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.<br />
<br />
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:<br />
* Bei der Inklusion:<br />
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt<br />
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut <code>classes</code> ergänzt<br />
* Bei der Konfiguration:<br />
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.<br />
<br />
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.<br />
<br />
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===<br />
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:<br />
* openzwave_manufacturer_specific.xml<br />
* openzwave_deviceconfig.xml.gz<br />
* fhem_zwave_deviceconfig.xml.gz<br />
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. <br />
<br />
Die Datei "openzwave_manufacturer_specific.xml" enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls <code>get <name> model</code> im Reading <code>modelId</code> des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading <code>model</code> angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading <code>modelConfig</code> steht.<br />
<br />
Die Dateien "openzwave_deviceconfig.xml.gz" und "fhem_zwave_deviceconfig.xml.gz" enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der "fhem_zwave_deviceconfig.xml.gz" bevorzugt.<br />
<br />
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:<br />
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner<br />
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner <br />
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database<br />
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).<br />
<br />
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei "openzwave_manufacturer_specific.xml" im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.<br />
<br />
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===<br />
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:<br />
<br />
1. [[Backup]] der FHEM-Installation <br />
::'''und'''<br />
2. Backup des NVRAM des Controllers<br />
<br />
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.<br />
<br />
<br />
zu 2.) Backup des NVRAM des Controllers<br />
<br />
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).<br />
<br />
FHEM kann mit den ZWDongle-Befehlen <code>backupCreate</code> das NVRAM der Controller sichern und mit <code>backupRestore</code> zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.<br />
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})<br />
<br />
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen<br />
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===<br />
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.<br />
<br />
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul <code>cp2101.ko</code> geladen werden.<br />
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.<br />
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei <code>startfhem</code>.<br />
<br />
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.<br />
insmod $home/lib/cp2101.ko<br />
<br />
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.<br />
<br />
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===<br />
<br />
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:<br />
<br />
<code><nowiki>ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277</nowiki></code><br />
<br />
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. <br />
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:<br />
<br />
<code><nowiki>010a00130603320110259277</nowiki></code><br />
* 01: data to controller<br />
* 0a: length of msg<br />
* 00: ?<br />
* 13: ZW_SEND_DATA<br />
* 06: NodeId<br />
<br />
* 03: length of msg<br />
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)<br />
* 01: METER get scale command<br />
* 10: scale parameter<br />
<br />
* 25: send flags, explorer frames on<br />
* 92: callbackId (um ACK zu identifizieren)<br />
* 77: checkSum<br />
<br />
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|!]]<br />
[[Kategorie:868MHz]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave&diff=31256Z-Wave2019-09-23T06:48:43Z<p>Krikan: /* Doppel-Relais */ -> Ungenaue Beschreibung vermutlich wegen falscher Assoziation korrigiert</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=ZWDongle<br />
|ModPurpose=Einbindung Z-Wave-Gateways<br />
|ModType=d<br />
|ModCmdRef=ZWDongle<br />
|ModForumArea=ZWave<br />
|ModTechName=00_ZWDongle.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
{{Infobox Modul<br />
|Name=ZWave<br />
|ModPurpose=Ansteuerung Z-Wave-Geräte über ZWDongle<br />
|ModType=d<br />
|ModCmdRef=ZWave<br />
|ModForumArea=ZWave<br />
|ModTechName=10_ZWave.pm <br />
|ModOwner=Rudolf König ([http://forum.fhem.de/index.php?action=profile;u=8 Forum])<br />
}}<br />
</div><br />
<br />
[[Z-Wave]] ist ein drahtloser Kommunikations-Standard im 868 Mhz-Band (Europa), der von der Firma Sigma Designs und der Z-Wave Alliance, einen Zusammenschluss von mehreren Hundert Herstellern, für die Heimautomatisierung entwickelt wurde. Es existieren mehr als [http://products.z-wavealliance.org 1400 zertifizierte Produkte] verschiedenster Hersteller, die innerhalb eines gemeinsamen Z-Wave-Netzes einsetzbar sind. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia])<br />
<br />
Auf dieser Seite werden Grundlagen eines '''Z-Wave''' Systems und dessen Einrichtung in FHEM beschrieben.<br />
== Z-Wave ==<br />
=== Nodes - Controller und Slaves ===<br />
Ein Z-Wave-Netz besteht aus mindestens 2 Geräten, den sogenannten '''Nodes''' (Knoten). Es setzt sich zusammen aus dem steuernden '''Controller''' (Zentrale) und min. 1 bis max. 231 gesteuerten '''Slaves''' (Geräten). <br />
<br />
=== Home-Id und Node-ID ===<br />
Innerhalb eines Z-Wave-Netzes gibt es zu 2 Identifikationsnummern zur Kennzeichnung der Netzstruktur:<br />
# '''Home-ID:''' Gemeinsame Identifikationsnummer aller Nodes in einem Netz zur Abgrenzung gegenüber anderen Netzen. Nur Nodes mit der gleichen Home-ID können miteinander kommunizieren.<br />
# '''Node-ID:''' Identifikationsnummer zur eindeutigen Kennzeichnung von jedem Node im Netz. <br />
<br />
Die Home-ID ist im Controller (fest) hinterlegt und seine Node-ID ist typischerweise 1. Die Slaves haben zunächst keine Home-ID und Node-ID. Bei der '''Inklusion''' (Aufnahme) der Slaves in das Z-Wave-Netz überträgt der Controller seine Home-ID auf die Slaves und weist den Slaves eine eindeutige Node-ID im Netz zu, mit der Sie direkt angesprochen werden. <br />
<br />
Besondere Node-ID ist die 255. Eine Nachricht an die Node-ID 255 kann von allen Z-Wave-Nodes ausgewertet werden (Broadcast).<br />
<br />
=== Primär- und Sekundärcontroller ===<br />
Der Controller, der durch Zuteilung seiner Home-ID auf die Slaves, das Netz aufbaut, ist der '''Primärcontroller'''. Grundsätzlich können in einem Netz mehrere Controller existieren, aber immer nur ein Primärcontroller. Weitere in das Netz eingebundene Controller werden zum '''Sekundärcontroller'''. Ohne besondere Maßnahmen kann nur der Primärcontroller die Inklusion (Einbindung) der Nodes in das Netz durchführen. Hingegen können sowohl Primär- als auch Sekundärcontroller die '''Exklusion''' (Ausschluss) eines Nodes aus dem Netz vornehmen.<br />
<br />
Der Controller speichert intern diverse Informationen (Home-ID, Node-IDs,..) über das ZWave-Netz. Hierdurch kann unter anderem die Haussteuerungssoftware bei einem PC-Controller relativ unkompliziert gewechselt werden, da die wesentlichen ZWave-Netzinformationen vom Controller selbst verwaltet und gespeichert werden. Andererseits muß bei einem Controllerdefekt das gesamte Netz grundsätzlich neu aufgebaut werden, wenn kein Backup der internen Controllerdaten vorhanden ist.<br />
<br />
=== Acknowledge ===<br />
Im Z-Wave-Netz werden Nachrichten vom Empänger-Node an den Sender-Node rückbestätigt (Acknowledge). Bei ausbleibendem Acknowledge wiederholt der Sender-Node die Nachricht automatisch auf Protokollebene bis zu 2 mal. Hierdurch wird eine höhere Betriebssicherheit des Z-Wave-Netzes erreicht. Bei Broadcast-Nachrichten an die Node-ID 255 findet keine Rückbestätigung statt.<br />
<br />
=== Vermaschtes Netzwerk mit Routing ===<br />
Z-Wave nutzt als Netzwerktopologie ein '''mesh network''' (vermaschtes Netzwerk), d. h. jeder Node ist mit einem oder mehreren anderen Nodes verbunden. Das hat den Vorteil, dass eine Nachricht zwischen zwei Nodes übermittelt werden kann, selbst wenn diese nicht direkt miteinander kommunizieren können, z. B. weil sie zu weit voneinander entfernt sind. In diesem Fall wird die Funk-Nachricht über einen oder mehrere „Zwischen-Nodes“ übertragen; dieser Vorgang wird '''Routing''' genannt. Nur netzgespeiste Z-Wave-Geräte sind Router. Batteriebetriebe Z-Wave-Geräte sind grundsätzlich keine Router und dienen somit auch nicht zur Reichweitenerhöhung. (Quelle: [http://de.wikipedia.org/wiki/Z-Wave Wikipedia]) Einzelne Geräte, die alternativ per Batterie oder USB-Anschluss betrieben werden können, werden bei USB-Anschluss automatisch ({{Link2Forum|Topic=40393|Message=328080}}) oder durch Konfigurationsänderungen ({{Link2Forum|Topic=40393|Message=327331}}) zu Routern.<br />
<br />
Informationen über das optimale Routing werden bei der Inklusion der Nodes in einer Routing-Tabelle des Primärcontrollers gespeichert. Dies geschieht durch Abfrage des Nodes, welche weiteren Nodes er erreichen kann. Durch örtliche Änderung oder Defekte von Nodes können die in der Routing-Tabelle gespeicherten Informationen fehlerhaft bzw. suboptimal werden. Dies kann sich in Funkkommunikationsproblemen im Netzwerk äußern. Hier kann ein per Software manuell angeforderter Neuaufbau der Routing-Tabelle gegebenenfalls Abhilfe schaffen. Bei Geräten und Controllern mit aktuellen Firmware-Versionen (SDK 4.5x und SDK 6.xx oder größer, aber ''nicht'' SDK 5.x) und Unterstützung von Explorer Frames kann sich die Routing-Tabelle unter bestimmten Bedingungen auch automatisch aktualisieren ("Selbstheilung")[https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames].<br />
<br />
=== Command Classes ===<br />
Die Steuerung und Kommunikation der Nodes erfolgt über Befehle die funktionsbezogen in verschiedene '''Command Classes''' (Kommandoklassen) zusammengefasst sind.<br />
<br />
Alle Z-Wave-Geräte haben als gemeinsame kleinste Übereinstimmung die '''Class Basic'''. <br />
<br />
Z-Wave-Geräte haben im Originalzustand eine bestimmte arbeitsfähige Grund-Konfiguration. Anpassbar an individuelle Bedürfnisse ist die Konfiguration über die '''Class Configuration'''.<br />
<br />
Durch eine Assoziation wird definiert, welche Geräte miteinander direkt -ohne Umweg über den Controller- kommunizieren können. Auch bei Ausfall des Controllers können diese Geräte ihre gemeinsame Funkton ausüben. Zudem dienen Assoziationen der Geschwindigkeitssteigerung und Funklastreduzierung innerhalb des Netzes. Angelegt werden Assoziationen über die '''Class Association'''.<br />
<br />
Dies sind nur die allerwichtigsten Command Classes. Weitere Command Classes sind den Handbüchern zu entnehmen. Zudem enthält die Wiki-Seite [[Z-Wave Command Classes]] weitergehende Informationen.<br />
<br />
=== Hinweise zur Z-Wave-Geräteauswahl ===<br />
Aufgrund der vielen Z-Wave-Gerätehersteller mit jeweils eigenem Z-Wave-Gerätesortiment existiert eine große Produktauswahl. Jedoch gibt es auch große Unterschiede hinsichtlich Produkteigenschaften, Pflege der Produkte, Häufigkeit der Aktualisierung der Produktpalette und so weiter. Schwierigkeiten bereitet insbesondere, dass neben den aktuellesten Chipsätzen und SDKs auch die älteren Chipsätze und SDKs weiterhin in Produkten im Handel verfügbar sind. Neuere Chipsätze und aktuelle SDKs bieten gerade bei der Netzwerkstabilität (Explorer Frames, Reichweite usw.) Vorteile zu älteren Chipsätzen und SDKs. Beispielsweise beherrschen nur Geräte mit SDK 4.5x und 6.x oder neuer die für automatische Routenkorrekturen wichtigen Explorer Frames. Das ältere SDK 5.0, das verwirrenderweise auch noch eine höhere Versionsnummer als das neuere SDK 4.5 besitzt, beherrscht unter anderem keine Explorer Frames. Details hierzu enthält das [https://web.archive.org/web/20160319202135/http://wiki.zwaveeurope.com/index.php?title=SDK_Versions_and_Explorer_Frames wiki.zwaveeurope.com]. Aktuellstes SDK ist Stand 10/2017 das SDK 6.7x, das in ZWave Plus - zertifizierten Produkten zum Einsatz kommt.<br />
<br />
Gerade Einsteiger beachten die Unterschiede bei den Chipsätze/SDKs aus Unkenntnis manchmal nicht und ärgern sich im Nachhinein über Probleme bei der Netzwerkstabilität und Reichweite. Darum nachfolgend allgemeine, aber sehr einfache Empfehlungen zur Geräteauswahl. Selbstverständlich wird hier nicht von anderen Produkten abgeraten, wenn man die Unterschiede kennt und Vorteile bei deren Produkteigenschaften sieht. Zudem kann man (leider) schlechtere Produkteigenschaften bei Geräten mit aktuelleren Chipsätzen/SDKs nie ausschließen.<br />
<br />
Gateway<br />
# [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus-Zertifizierung]. Diese ist mittlerweile bei nahezu allen erhältlichen Gateways gegebenen.<br />
<br />
Endgeräte<br />
# Z-Wave Plus-Zertifizierung (aktuellste Technik, höhere theoretische Reichweite, SDK 6.5x oder höher) oder<br />
# zumindest Explorer Frames-Unterstützung (SDK 4.5x und 6.0x) oder<br />
# zuletzt -bei Kenntnis der Besonderheiten und Auswirkungen- Produkte ohne Explorer Frames (SDK 5.0x)<br />
<br />
'''Kurz''': Produkte mit Z-Wave Plus-Zertifizierung einsetzen.<br />
<br />
Bitte unbedingt beachten, dass Z-Wave Plus-Vorteile bei einem Mischbetrieb mit älteren (ohne Plus) Geräten teilweise verloren gehen. Zum negativen Effekt des Einsatzes eines älteren, aber weiterhin erhältlichen Z-Wave-Repeaters mit aktuellen Z-Wave Plus-Geräten siehe beispielsweise den Hinweis in diesem {{Link2Forum|Topic=42591|Message=350066}}.<br />
<br />
Bei Fragen zu bestimmten Geräten bitte -nach Durchsicht der Hinweise hier im Wiki- im Forum suchen oder anschließend nachfragen.<br />
<br />
== Z-Wave in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Einbindung von Z-Wave in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach möglich. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_FHEM|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht speziell Z-Wave behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Nachfolgend und auf den [[:Kategorie:Z-Wave Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der Konfiguration sollte -zur Verhinderung von Fehlern- nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die Bedienungsanleitungen (Handbücher) sind zwingende Voraussetzung zur korrekten Einbindung und Konfiguration von Z-Wave-Geräten in FHEM. Sie müssen daher vorliegen. <br />
Den ZWave-Geräten liegen teilweise nur gekürzte, gedruckte Fassungen der Handbücher bei (beispielsweise Devolo, AEOTEC). Man sollte bei allen Produkten auf folgenden Seiten nach eventuellen ausführlicheren Handbüchern suchen:<br />
* Herstellerseite des ZWave-Gerätes<br />
* http://www.zwave.de/handbuecher/ (deutsch)<br />
* http://products.z-wavealliance.org (englisch)<br />
Insbesondere auf http://products.z-wavealliance.org, der Datenbank der ZWave-zertifizierten Produkte, sind regelmäßig ausführliche Informationen zu den Geräten zu finden.<br />
<br />
== Definition des Gateways / Controllers ==<br />
{{Randnotiz|RNText='''Tester für ZWave@culfw gesucht!'''<br />
Z-Wave-Controllerfunktionen werden derzeit in die Firmware [http://www.culfw.de culfw] für den [[CUL]] implementiert. Weitere Informationen im [[ZWCUL]] - Artikel.}}<br />
=== Autocreate des Gateways ===<br />
FHEM kann mit einem Funkgateway Z-Wave-Funk empfangen und senden. Z-Wave-Gateways (Controller) existieren von verschiedenen Herstellern. <br />
<br />
Folgende Gateways wurden unter anderem bereits erfolgreich mit FHEM eingesetzt:<br />
* AEON Labs Z-Stick S2 (SDK 5.x; [https://aeotec.freshdesk.com/support/solutions/articles/6000091809-z-stick-s2-v3-08-firmware-update Firmwareupdate auf 3.08 aus 2016])<br />
* Aeotec Z-Stick Gen5 (Z-Wave Plus; SDK 6.5; [https://aeotec.freshdesk.com/support/solutions/articles/6000108806-z-stick-gen5-backup-software Backup-Software)] ({{Link2Forum|Topic=47000}})<br />
* Goodway WD6001 (SDK 5.03 {{Link2Forum|Topic=40594|Message=332235}})<br />
* Vision Z-Wave USB Stick ZU 1401 EU (SDK 6.0x)<br />
* Vision Z-Wave USB Stick ZU 1401-5 EU (Z-Wave Plus; SDK 6.5x)<br />
* Z-Wave.Me Z-StickC ({{Link2Forum|Topic=29930|Message=226530}})<br />
* Z-Wave.Me USB Stick ZME_UZB1 (SDK 6.5x; Z-Wave Plus; [http://razberry.z-wave.me/z-way-server/ Firmwareupdate und Backup über z-way])<br />
* Z-Wave.Me Razberry in Verbindung mit Raspberry Pi (1. Generation: Z-Wave, 2. Generation: Gen5-Razberry mit Z-Wave Plus[http://forum.z-wave.me/viewtopic.php?f=3419&t=21327#p55404]) <br />
** Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das Razberry-Modul funktionsfähig ist: {{Link2Forum|Topic=78248|Message=702044}})<br />
** Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
<br />
Folgende Gateways sind '''nicht''' mit FHEM einsetzbar:<br />
* Merten Funk-USB-Datenschnittstelle CONNECT<br />
<br />
Sollte das eigene Gateway hier nicht aufgeführt sein, ist aufgrund der Standardisierung dennoch die Chance für eine erfolgreiche Einbindung des Gateways in FHEM vorhanden. Bitte dies hier oder im Forum entsprechend vermerken.<br />
<br />
Das Z-Wave-Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim nächsten FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und das zugehörige FHEM-Device nach dem Namensschema <code>ZWDongle_<[https://forum.fhem.de/index.php/topic,92885.msg854533.html#msg854533 Anhang]></code> angelegt. Ein manuelles Anlegen des ZWDongle-Moduls oder Eingriffe in die Konfiguration sind unter Linux normalerweise nicht notwendig. <br />
<br />
Unter Windows ist ein manuelles Anlegen der Definition des ZWave-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> erforderlich (Beispiel für Z-Wave.Me USB Stick ZME_UZB1 unter Windows: <code>define ZWDongle_1 ZWDongle COM1@115200</code>). <br />
<br />
Das FHEM-Gateway-Device ist nach der Definition in FHEM im Raum "Everything" zu finden.<br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
Aeon Labs Z-Stick an der Fritzbox: <br />
define ZWDongle_1 ZWDongle /dev/ttyUSB1@115200<br />
<br />
Vision Z-Wave USB Stick ZU 1401 EU am Raspberry Pi (Raspbian):<br />
define ZWDongle_1 ZWDongle /dev/ttyACM1@115200<br />
<br />
Insbesondere wenn am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt werden, empfiehlt es sich zur Erhöhung der Betriebsstabilität das Z-Wave-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] oder [[LinuxDeviceNaming|uDev-Regeln]] anzusprechen.<br />
<br />
Bei einem statischen Controller wird die Einrichtung als SUC -sofern der Controller als solcher nicht bei Auslieferung eingerichtet ist- vor der ersten Inklusion von Geräten empfohlen.<br />
<br />
=== homeId und nodeList des Gateways ===<br />
Zur manuellen Definition von Z-Wave Aktoren und Sensoren ist die <code>homeId</code> notwendig. Bei der hier bevorzugten Definition der Geräte durch autocreate ist die Kenntnis der <code>homeId</code> nicht zwingend. Jedoch sollte durch Abfrage der <code>homeId</code> direkt nach Einbindung des Zwave-Gateways dessen Funktionsfähigkeit getestet werden.<br />
<br />
Die <code>homeId</code> und <code>CtrlNodeId</code> des Gateways wird mit folgendem Befehl ausgelesen (<ZWDongle> ist im folgenden durch den Namen des FHEM-Devices des eigenen Gateways zu ersetzen):<br />
get <ZWDongle> homeId<br />
ergibt beispielsweise bei einem Gateway mit dem FHEM-Devicenamen ZWDongle_1:<br />
ZWDongle_1 homeId => HomeId:e345c456 CtrlNodeId:01 <br />
In diesem Beispiel ist die Home-Id des Gateways ZWDongle_1 e345c456 und das Gateway hat die Node-Id 1.<br />
<br />
Die aktuelle Liste der Z-Wave Nodes, die bereits am Gateway registriert/inkludiert sind, wird mit dem folgendem Befehl ausgelesen:<br />
get <ZWDongle> nodeList<br />
ergibt beispielsweise:<br />
ZWDongle_1 nodeList => ZWDongle_1 UNKNOWN_2<br />
<br />
<br />
== Definition von Geräten / Slaves ==<br />
=== Hinzufügen eines neuen Z-Wave Geräts / Inklusion ===<br />
Zur Verfolgung von Inklusionsablauf und Meldungen des Controllers während der Inklusion sollte der [[Event monitor]] in einem 2. Browserfenster vor Aktivierung des Inklusionsmodus geöffnet werden.<br />
<br />
Das Z-Wave Gateway wird in den Standard-Modus zur Inklusion (zum Aufnehmen) neuer Geräte gesetzt:<br />
set <ZWDongle> addNode on<br />
Bei der Standard-Inklusion muss direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen.<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt des obigen Befehls besser der Network-Wide-Modus für die Inklusion genutzt werden:<br />
set <ZWDongle> addNode onNw<br />
Bei der Network-Wide-Inklusion muss kein direkter Funkkontakt zwischen Gateway und zu inkludierendem Z-Wave Gerät bestehen. Es reicht, wenn das zu inkludierende Gerät über andere bereits inkludierte, netzgespeiste Geräte mit Explorer Frames-Unterstützung erreicht werden kann. Die Network-Wide-Inklusion ist zu bevorzugen, da die Z-Wave-Geräte regelmäßig an Ihren örtlichen Endpositionen inkludiert werden können. Dadurch werden bei der Inklusion direkt die korrekten Routen gespeichert. <br />
<br />
Nachdem das Gateway in den Inklusionmodus geschaltet wurde, muss das Gerät in den Inklusionsmodus (Aufnahmemodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. Typisch sind ein- oder dreimaliges Drücken einer Taste am Gerät oder beim Anlegen der Versorgungsspannung. Durch die Inklusion werden Home-ID und Node-ID im Gerät gespeichert. Zudem teilt das Gerät über ein spezielle Funknachricht (NIF=Node Information Frame) dem Controller seinen Gerätetyp und seine Geräteeigenschaften mit. Hierbei werden dem Controller auch die vom Gerät unterstützten Command Classes mitgeteilt. Aus diesen Informationen erzeugt FHEM automatisch durch autocreate das FHEM-Geräte-Device nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> (an eigene Wünsche anpassbar mit {{Link2CmdRef|Anker=rename|Label=rename}}). Die vom Geräte unterstützen Command Classes, die die in FHEM verfügbaren Befehle bestimmen, werden automatisch im Attribut <code>classes</code> des FHEM-Geräte-Device gespeichert. Das Gerät ist damit grundlegend in FHEM definiert und im Raum "ZWave" zu finden. <br />
<br />
Nach der Inklusion schaltet FHEM den Inklusionsmodus des Z-Wave Gateway automatisch durch Absetzen des Befehls <code>set <ZWDongle> addNode off</code> aus und zeigt eine Dialogbox mit dem Ergebnis der Inklusion:<br />
* <code><nowiki>created ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> = Inklusion war erfolgreich und es wurde das bezeichnete FHEM-Device durch autocreate angelegt.<br />
* <code><nowiki>addNode failed</nowiki></code> = Inklusion ist fehlgeschlagen<br />
<br />
Eine erfolgreiche Inklusion ist zudem am Event "ZW_ADD_NODE_TO_NETWORK protocolDone" im Event monitor und natürlich der Anlage des entsprechenden FHEM-Devices durch autocreate zu erkennen. Das Scheitern einer Inklusion führt typischerweise zur Ausgabe des Events "ZW_ADD_NODE_TO_NETWORK failed". Häufigste Ursache sind Controllerprobleme, die sich oftmals durch kurzes Ein- und Ausstecken des Controllers, Neustart des Systems oder Ein- und Ausschalten des FHEM-Server-Computers beheben lassen.<br />
<br />
HINWEISE:<br /><br />
* Die Network-Wide-Inklusion kann nach derzeitiger Kenntnis auch bei Gateways und Geräten ohne Explorer Frames Unterstützung genutzt werden, da bei diesen Geräten grundsätzlich automatisch auf die Standard-Inklusion umgestellt wird.<br />
* Bei der Standard-Inklusion ist unter Umständen nur ein geringer Abstand zwischen Gateway und Gerät möglich. Sollte die Inklusion daher nicht durchführbar sein, wenn Gateway und Gerät an ihren örtlichen Endpositionen sind (bevorzugte Variante), dann ist der Abstand zwischen diesen versuchsweise zu verringern. Anschließend bei örtlicher Veränderung die Routen mit <code><nowiki>set <ZWave-Devicename> neighborUpdate</nowiki></code> bzw. <code><nowiki>set TYPE=ZWave:FILTER=ZWaveSubDevice=no neighborUpdate</nowiki></code> neu ermitteln lassen. Unter Umständen kann der Abstand nur schrittweise erhöht werden. Dann ist bei jeder Abstandsänderung eine Neuermittlung der Routen notwendig.<br />
* Der NIF enthält bei manchen Geräten fälschlicherweise nicht alle unterstützten Command Classes. FHEM identifiziert während der Inklusion das Gerät und ergänzt die fehlenden Command Classes aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Weiterhin fehlende Command Classes können im Attribut <code>classes</code> manuell am Anfang der Liste entsprechend ergänzt werden. Informationen liefern die unter [[#Links|Links]] aufgeführten Datenbanken. Häufig fehlt die Pflicht-Class BASIC.<br />
* Bei der hier beschriebenen Inklusion findet die Kommunikation zwischen Controller und Gerät anschließend dauerhaft unverschlüsselt statt. Manche Geräte bieten mit der Command Class SECURITY eine AES-verschlüsselte Kommunikation an. Da die Verschlüsselung zu einer höheren Funklast und Latenzen führt, sollte eine verschlüsselte Kommunikation nur mit Bedacht eingesetzt werden (bspw. bei Schlössern). Als Sonderfall ist das Vorgehen zur secure-Inklusion in der [[#Wie_kann_eine_verschl.C3.BCsselte_Kommunikation_unter_Nutzung_der_Command_Class_SECURITY_eingerichtet_werden.3F|FAQ]] beschrieben.<br />
<br />
Nächster Schritt ist die [[#Assoziation|Assoziation]] des Gerätes mit dem Gateway.<br />
<br />
=== Assoziation ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Z-Wave-Geräte können über Assoziationen direkt mit anderen Z-Wave-Geräten kommunizieren. Dies können zum einen Meldungen über den Status und Zustand der Geräte, als auch direkte Befehle sein. Zum Beispiel kann damit ein Bewegungsmelder eine entdeckte Bewegung an den Controller senden und/oder bei entdeckter Bewegung direkt eine Lampe ein- oder ausschalten.<br />
<br />
Die Assoziation zwischen zwei Geräten wird durch Aufnahme des zu steuernden Gerätes in eine oder mehrere Assoziationsgruppe(n) des steuernden Gerätes angelegt. Durch die Wahl der Assoziationsgruppe wird festgelegt, bei welchen Ereignissen welche Nachricht an das assoziierte Gerät verschickt wird. Angaben zu den Ereignissen und versandten Nachrichten an die Geräte in einer bestimmten Assoziationsgruppe stehen in der Bedienungsanleitung des jeweiligen Gerätes.<br />
<br />
Damit FHEM Statusmeldungen von Sensoren/Aktoren anzeigen und auch darauf reagieren kann, '''muss''' der Controller (<ZWDongle>-Device, <code>CtrlNodeId</code> = typischerweise 1) immer in der/den passenden Assoziationsgruppe(n) des jeweiligen Gerätes <code><name></code> aufgenommen werden:<br />
<br />
set <name> associationAdd <associationGroup> <CtrlNodeId><br />
<br />
Typischerweise ist die Assoziationsgruppe 1 der Geräte für die Statusmeldungen an den Controller vorgesehen (Ausnahme: [[#Fibaro|Fibaro-Geräte ohne ZWave Plus - Zertifizierung]]). Daher nimmt FHEM die Assoziation von Controller mit der Assoziationsgruppe 1 des Gerätes bei der Inklusion immer automatisch vor. Zudem identifiziert FHEM während der Inklusion das Gerät und setzt weitere Assoziationen mit dem Controller für von 1 abweichende Assoziationsgruppen aufgrund manuell gepflegter, gerätespezifischer [[#Welche_Funktion_haben_die_XML-Config-Dateien_in_FHEM.3F|XML-Config-Dateien]]. Ist keine XML-Config-Datei für das Gerät vorhanden, sind Assoziationen des Controllers mit von 1 abweichenden Assoziationsgruppen oder weiteren Assoziationsgruppen mit dem zuvor genannten Befehl grundsätzlich manuell anzulegen. <br />
<br />
Die richtige Anlage der Assoziation(en) des Controllers mit dem Gerät immer prüfen, da dies eine Hauptfehlerquelle bei Funktionsproblemen mit FHEM ist.<br />
<br />
Abruf der assoziierten Geräte in einer bestimmten Assoziationsgruppe <associationGroup>:<br />
get <name> association <associationGroup><br />
<br />
Abruf der assozierten Geräte für alle Assoziationsgruppen eines Gerätes:<br />
get <name> associationAll<br />
<br />
Nahezu alle in Europa erhältlichen aktuellen Geräte unterstützen die Rückmeldung des Status via Association. Ausnahmen gibt es in Nordamerika, wo aufgrund von Patentansprüchen einige Hersteller auf die Statusrückmeldungen verzichten. Diese Geräte unterstützen in der Regel die Command Class ASSOCIATION nicht.<br />
<br />
Nächster Schritt ist die [[#Konfiguration|Konfiguration]] des Gerätes.<br />
<br />
=== Konfiguration ===<br />
{{Randnotiz|RNText=Bitte unbedingt die Besonderheiten bei [[#batteriebetriebene_Ger.C3.A4te|batteriebetriebenen Geräten]] beachten!}}<br />
Die Standard-Konfiguration eines Gerätes entspricht oftmals nicht den eigenen Wünschen und Anforderungen (Einheiten usw.). Mit den Befehlen der Class CONFIGURATION lässt sich die Konfiguration anpassen. Die zur Konfiguration eines Gerätes notwendigen Angaben zu den Parameternummern, -größen und -werten sind im jeweiligen Geräte-Handbuch bzw. entsprechenden Datenbanken (bspw. [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] oder [http://products.zwavealliance.com/ products.zwavealliance.com]) enthalten. <br />
<br />
Die Konfiguration beispielsweise bei Parametergröße 1 lässt sich mit diesem Befehl anpassen:<br />
set <name> configByte <Parameternummer> <Parameterwert><br />
Für weitere Parametergrößen gibt es die Befehle <code>configWord</code> und <code>configLong</code><br />
<br />
Die im Gerät hinterlegten Konfiguration kann pro Parameternummer mit folgendem Befehl abgerufen werden:<br />
get <name> config <Parameternummer><br />
<br />
Zudem bietet FHEM basierend auf den manuell gepflegten XML-Config-Dateien die Möglichkeit, die speziellen Parameternummern des Gerätes mit ihren Parametergrößen und -werte als eigenständige config-Befehle mit Hilfsinformationen einzubinden. Ein manuelles Suchen im Geräte-Handbuch und Nutzung der configByte-, configWord- und configLong-Befehle ist dadurch in vielen Fällen unnötig. Für diese Funktion muss das Gerät von FHEM einmalig durch folgenden Befehl, der bei der Inklusion automatisch ausgeführt wird, identifiziert werden: <br />
get <name> model<br />
Die Readings <code>model</code>, <code>modelID</code> und <code>modelConfig</code> werden dadurch erzeugt. In <code>model</code> sollte der Klartextname des Gerätes stehen. Zudem sind dann -soweit eine XML-Config Datei für das Gerät existiert- die speziellen set/get-Kommandos configXYZ für das Geräte im Auswahldialog der Detailansicht mit Hilfsinformationen verfügbar:<br />
[[Datei:Z-Wave_confighelp.PNG|900px|thumb|center|config-Befehl mit Hilfstext]]<br />
<br />
Bei vorhandener XML-Config-Datei kann die komplette Konfiguration eines Gerätes abgerufen werden:<br />
get <name> configAll<br />
<br />
Außerdem wird durch den <code>get <name> model</code> -Befehl geprüft, ob das Gerät in der [http://devel.pepper1.net/zwavedb/ pepper1-ZWave-Datenbank] und/oder [http://products.zwavealliance.com/ products.zwavealliance.com] enthalten ist. Im Erfolgsfall wird ein Link "Details in pepper DB" und/oder "Details in alliance DB" zum entsprechenden Geräteeintrag in der jeweiligen Datenbank unten in der Detailansicht des FHEM-Geräte-Devices angelegt und ein Bild des Gerätes in die Detailansicht eingebunden.<br />
<br />
Der Aufruf von <code>get <name> model</code> ist auch für die Nutzung der Class MANUFACTURER_PROPRIETARY zwingende Einsatzvoraussetzung.<br />
<br />
=== Entfernen eines Z-Wave-Geräts / Exklusion ===<br />
Durch die Exklusion wird die Home-ID und Node-ID aus dem Gerät und das Gerät selbst aus der Node-List des Controllers gelöscht. Erst nach einer Exklusion kann das Gerät in ein anderes Z-Wave-Netz aufgenommen werden.<br />
<br />
Zuerst wird der Z-Wave Gateway in den Standard-Modus zur Exklusion (Ausschluss) von Geräten gesetzt:<br />
set <ZWDongle> removeNode on<br />
<br />
Sofern Z-Wave Gateway und Z-Wave Geräte Explorer Frames unterstützen, sollte statt dem obigen Befehl besser der Network-Wide-Modus für die Exklusion genutzt werden (siehe auch Erläuterungen zu Standard- versus Network-Wide-Inklusion unter [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]]):<br />
set <ZWDongle> removeNode onNw<br />
<br />
Danach muss das Gerät in den Exklusionsmodus (Ausschlussmodus) versetzt werden. Wie dies zu erfolgen hat, ist im Handbuch des Geräte nachzulesen. <br />
<br />
Abschließend wird der Exklusionsmodus am Z-Wave Gateway wieder ausgeschaltet:<br />
set <ZWDongle> removeNode off<br />
<br />
Das FHEM-Device muss nach der Exklusion manuell durch <code>delete <name></code> gelöscht werden.<br />
<br />
Die durch die Exklusion frei gewordene NodeID wird nicht bei der nächsten Inklusion wiederverwendet, sondern es wird die höchste noch nicht verwendete NodeID genutzt.<br />
<br />
=== Erneutes Hinzufügen eines bereits registrierten Z-Wave Geräts ===<br />
Die an einem Z-Wave-Gateway bereits registrierten/inkludierten Geräte sind im Gateway selbst abgespeichert und können durch FHEM jederzeit wieder abgerufen werden. Dies kann man in folgenden Fällen sinnvoll nutzen:<br />
* Inklusion mit einem batteriegespeisten ZWave-Gateway (bspw. Aeon Labs Z-Stick) ohne FHEM-Server-Anschluss während der Inklusion<br />
* Umstieg eines ZWave-Netzwerkes von Fremdsoftware auf FHEM <br />
* Vollständiger oder teilweiser Verlust der FHEM-Konfiguration<br />
<br />
Eine Node-Liste aller inkludierten Geräte des Gateways wird abgerufen durch:<br />
get <ZWDongle> nodeList<br />
Es wird eine Liste aller im Gateway inkludierten Gerät inklusive Gateway selbst zurückgeliefert. Sofern ein Gerät bereits als FHEM-Device angelegt wurde, wird der FHEM-Device-Name in der nodeList angezeigt. Dies ist für das Gateway selbst immer der Fall. Alle noch nicht in FHEM angelegten Geräte, werden als "UNKNOWN_x" ausgegeben, wobei x die ID des betreffenden Gerätes ist.<br />
<br />
Mit dem folgenden Befehl wird beispielsweise das bereits im Gateway inkludierte Gerät mit der ID 2 (in der nodeList angezeigt als "UNKNOWN_2") in FHEM durch autocreate definiert:<br />
set <ZWDongle> createNode 2<br />
<br />
Batteriebetriebene Geräte müssen bei Absetzen des <code>createNode</code>-Befehls wach sein, damit der Befehl verarbeitet werden kann. Dies erreicht man, indem man das Gerät auf "permanent wach" stellt. Falls das Gerät diese Funktion nicht anbietet, muss man es manuell aufwecken und max. 2 Sekunden später den <code>createNode</code>-Befehl absetzen. Alternativ kann das batteriebetriebene Gerät durch Versand des NIF vom Gerät aus automatisch in FHEM erzeugt werden: Hierzu am Gerät die Taste zum Versand des NIF drücken und <code>autocreate</code> legt das FHEM-Device an; der Aufruf von <code>createNode</code> entfällt dann.<br />
<br />
== Geräte-Besonderheiten ==<br />
=== batteriebetriebene Geräte ===<br />
Batteriebetriebenen Geräten können hinsichtlich ihrer Empfangsbereitschaft unterschieden werden in<br />
<br />
* Wakeup-Geräte<br />
* FLIRS-Geräte<br />
<br />
==== Wakeup-Geräte ====<br />
Wakeup-Geräte sind momentan die häufigste Art von batteriebetriebenen Z-Wave Geräten. Sie sind erkennbar an der Unterstützung der Command Class WAKE_UP.<br />
Zur Verlängerung der Batterielaufzeit legen sich batteriebetriebene Wakeup-Geräte „schlafen“ und wachen (Wakeup) nur in konfigurierbaren Intervallen auf, um Befehle zu verarbeiten. Das Aufwachen signalisieren die Geräte durch den Versand einer Nachricht "wakeup notification". Daraufhin senden FHEM und andere Geräte ihre bis dahin gesammelten Befehle, die dann verarbeitet bzw. beantwortet werden. Anschließend gehen die batteriebetriebenen Geräte wieder in den Schlafmodus.<br />
<br />
FHEM teilt bei set/get-Befehlen an batteriebetriebene Geräte über einen Hinweis der Form<br />
:<code>Scheduled for sending after WAKEUP</code> <br />
::oder<br />
:<code>Scheduled get requests for sending after WAKEUP</code><br />
mit, dass der Befehl im Sendstack des FHEM-Geräte-Devices abgespeichert wurde und bei der nächsten "wakeup notification" an das Gerät versendet wird. Ein Versand der Befehle im Sendstack findet grundsätzlich ausschließlich nach Erhalt der "wakeup notification"-Nachricht statt, selbst wenn das Gerät zwischendurch andere Telegramme (bspw. Bewegungsmeldung, Temperatur) an den Controller verschickt. Nur nach Versand der "wakeup notification" ist das batteriebetriebene Gerät grundsätzlich in der Lage ("wach genug"), Telegramme korrekt zu empfangen und zu verarbeiten.<br />
<br />
Wie viele Nachrichten im Sendstack auf einen Versand an das Gerät warten, ist im Internal <code>cmdsPending</code> des zugehörigen FHEM-Devices ersichtlich. Welche Nachrichten (Befehle) im Sendstack warten, ist in der Ausgabe des Befehls <code>[[list]] <device></code> erkennbar: Unter der Überschrift Sendstack sind alle wartenden Nachrichten als Rohnachrichten aufgeführt. Der Sendstack wird beim Beenden von FHEM nicht gespeichert. Durch Beenden von FHEM (beispielsweise durch <code>shutdown restart</code>) geht der Sendstack der Geräte daher verloren.<br />
<br />
Das Wakeup-Interval und der Empfänger der "wakeup notification" wird wie folgt konfiguriert:<br />
<nowiki>set <name> wakeupInterval <time> <NodeId></nowiki><br />
<nowiki><time></nowiki> ist die Zeit in Sekunden zwischen den Intervallen und <nodeID> der gewünschte Empfänger der "wakeup notification"; in der Regel ist dies '''immer''' der Controller <CtrlNodeId>. Viele Geräte kommen im Auslieferungszustand mit der NodeID 255. Die "wakeup notification" wird dann als Broadcast ohne Nutzung von Routing an alle erreichbaren Geräte gesendet. Hier sollte die Konfiguration auf die NodeID des Controllers geändert werden, da dadurch die "wakeup notification" geroutet wird und größere Entfernungen zwischen Gerät und Controller möglich sind. Zudem ist dies robuster und spart zusätzlich noch Batterielaufzeit. Darum setzt FHEM bei der Inklusion von WakeUp-Geräten '''automatisch''' den Befehl <code><nowiki>set <name> wakeupInterval 86400 <ControllerNodeId></nowiki></code> ab. Bei abweichenden eigenen Vorstellungen ist dies gegebenenfalls anzupassen. Bei Geräten mit V2 der Command Class WAKE_UP kann das vom Hersteller vorgesehene Standard-wakeupInterval mit <code><nowiki>get <name> wakeupIntervalCapabilities</nowiki></code> vom Gerät abgerufen werden. Die Einstellungen von wakeupInterval nach Inklusion und nach jeder Änderung immer mit der Abfrage <code><nowiki>get <name> wakeupInterval</nowiki></code> überprüfen.<br />
<br />
Ein Aufwachen und Versand der "wakeup notification" von batteriebetriebenen Geräten kann für die [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] manuell erzwungen werden. Hierzu bringt man das Gerät normalerweise in den Inklusionsmodus oder findet in der Bedienungsanleitung gegebenenfalls andere Informationen. Bitte beachten, dass dann je nach Gerät nur eine geringe Entfernung von Gateway und Gerät vorhanden sein darf (direkte Erreichbarkeit). Alternativ kann für die Dauer der Assoziation und Konfiguration das Wakeup-Interval verkürzt werden (beispielsweise auf 60 Sekunden), wodurch das Routing genutzt werden kann und größere Entfernungen zwischen Gateway und Gerät überbrückt werden können. Anschließend das Wakeup-Interval wieder auf eine batterieschonenende Dauer einzustellen.<br />
<br />
Einzelne batteriebetriebene Gerät lassen sich für längere Zeit auf "wach" bzw. permanent "wach" stellen. Dann aus dem Attribut <code>classes</code> <code>WAKE_UP</code> entfernen, damit Befehle in diesem Gerätemodus von FHEM direkt verschickt werden. Nach Ausschalten des "wach"-Modus <code>WAKE_UP</code> wieder im Attribut <code>classes</code> aufnehmen.<br />
<br />
Bei Konfigurationsänderungen an batteriebetriebenen Geräten mit <code>set <name> config...</code> sollte die korrekte Verarbeitung der Befehle immer mit dem entsprechenden <code>get <name> config...</code> oder -falls vorhanden- mit <code>get <name> configAll</code> überprüft werden, um eventuelle Funk-Telegrammverluste sofort festzustellen.<br />
<br />
==== FLIRS-Geräte ====<br />
Ein batteriebetriebene FLIRS (frequently listening routing slave) Gerät wacht in sehr kurzen Zeitabständen (250ms oder 1000ms) auf und prüft, ob ein Funksignal vorliegt. Liegt kein Funksignal vor geht das Gerät wieder in Tiefschlaf. Zum Aufwecken eines FLIRS-Gerätes ist ein dauerhaftes Funksignal -der Wakeup-Beam-, notwendig, das etwas länger als die Aufweckzeitabstände sein muss. Näher beschrieben unter anderem [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF hier]. <br />
<br />
FLIRS-Geräte haben nicht die Command Class WAKE_UP und arbeiten deshalb nicht mit "wakeup notification". Aus Sicht des FHEM-Nutzers sind die bekannten FLIRS-Geräte (Sirenen von Vision und Popp) nicht anders zu bedienen/einzurichten als netzgespeiste Geräte. Wakeup-Beam und andere Besonderheiten werden unsichtbar für den Nutzer automatisch abgewickelt.<br />
<br />
=== Aeon Labs / Aeotec ===<br />
Ausführliche Handbücher und technische Informationen auf https://aeotec.freshdesk.com/support/home<br />
<br />
==== Multi Sensor 5 ====<br />
* aktuellste Firmware installieren<br />
* Attribut <code>classes</code> um <code>BASIC</code> ergänzen (ab [[version|Modulversion]] 8824/25.6.2015 wird das automatisch bei der Inklusion durchgeführt)<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* Parameter 101 auf 225 (oder 224 bei USB-Anschluss) setzen mit <code>set <name> configGroup1Reports 225</code> oder <code>set <name> configLong 101 225</code>, um Batteriezustand (nicht bei 224), Temperatur, Feuchte und Helligkeit regelmäßig zu erhalten. Das Sende-Intervall wird duch <code><nowiki>set <name> configGroup1Interval <time/s></nowiki></code> festgelegt (Standard 720 Sek).<br />
* [http://devel.pepper1.net/zwavedb/device/407 Paramterübersicht pepper-Datenbank]<br />
siehe {{Link2Forum|Topic=34505|Message=268913}}<br />
<br />
==== Multisensor 6 ====<br />
siehe {{Link2Forum|Topic=40393}}<br />
* arbeitet bei USB-Anschluß als Router<br />
* bei USB-Anschluss aus Attribut <code>classes</code> <code>WAKE_UP</code> entfernen<br />
* die <code>configGroupxInterval</code> und <code>configxxxReportingThreshold</code> Einstellungen wirken nur bei USB-Anschluss, im reinen Batteriebetrieb werden die Sensordaten nur bei einem <code>wakeup</code> übertragen<br />
<br />
==== Aeotec LED Bulb ZW098-C55 ====<br />
siehe {{Link2Forum|Topic=40504}}<br />
<br />
=== Danfoss ===<br />
==== DAN_LC-13 Heizungsthermostat LC-13 (014G0013) ====<br />
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem <code>at</code> abgefragt werden ({{Link2Forum|Topic=32145|Message=260795}}):<br />
define Atdanfoss at +*00:30 get <name> battery<br />
Auf dem Markt sind mehrere Varianten des Thermostates LC-13 erhältlich. Darum beim Kauf unbedingt auf die genaue Bezeichnung LC-13 (014G0013) achten ({{Link2Forum|Topic=38041|Message=303146}}). <br />
<br />
=== devolo ===<br />
Ausführliche Handbücher auf http://products.z-wavealliance.org<br />
<br />
==== MT02648 Tür-/Fenster Kontakt 3in1 ====<br />
siehe {{Link2Forum|Topic=41337}}<br />
<br />
=== DüWI ===<br />
Geräte von DÜWI liefern bei örtlicher Betätigung kein automatisches Funk-Signal über die Statusänderung. Das liese sich nur durch eine regelmäßige Statusabfrage durch FHEM (beispielsweise <code>define Status_Abfrage at +*00:03:00 get <name> swmStatus</code>) beheben.<br />
Einige Produkte von [http://zwave.me Z-Wave.Me] basieren auf DÜWI-Geräten. Diese Z-Wave.Me Produkte haben jedoch eine erweiterte Firmware, welche die genannte und weitere Firmware-Schwächen der Original-Produkte von DÜWI behebt.<br />
<br />
=== Everspring ===<br />
==== AN145 Sockelmodul E27 ====<br />
Statusabfrage ohne permanente Abfrage: {{Link2Forum|Topic=48864|Message=405545|Beitrag}}<br />
<br />
=== Fibaro ===<br />
Association Group für Übermittlung von Statusinformationen an den Controller:<br />
* "alte" ZWave-Geräte (kein ZWave-Plus): häufig Association Group 3<br />
: <code><nowiki>set <name> associationAdd 3 <CtrlNodeId></nowiki></code><br />
: Bei diesen Geräten empfiehlt es sich zur Funklastreduzierung und Problemminimierung zu prüfen, ob die von FHEM automatisch vorgenommene Assoziation des Controllers mit der Association Group 1 gelöscht werden kann (<code><nowiki>set <name> associationDel 1 <CtrlNodeId></nowiki></code>). Nahezu immer werden in Association Group 1 die gleichen Infos, nur mit einer anderen Command Class, wie in der Association Group 3 an den Controller übermittelt.<br />
* ZWave Plus-Geräte: Association Group 1 ("lifeline")<br />
<br />
==== FGSS-001 / FGSD-002 Rauchmelder ====<br />
* nicht untereinander vernetzbar<br />
* keine Alarmauslösung/Sirenenfunktion durch ZWave-Zentralen<br />
<br />
==== FGS-222 Relais Unterputzeinsatz ====<br />
Bei der Inklusion werden von FHEM 3 Devices angelegt:<br />
* Hauptdevice (Steuerung und automatischer Status für Kanal 1 und kanalübergreifende Funktionen)<br />
* Device für Endpoint 1 (Steuerung Kanal 1)<br />
* Device für Endpoint 2 (Steuerung und automatischer Status von Kanal 2)<br />
Die Firmware des FGS-222 übermittelt den Status für Kanal 1 automatisch immer ausschließlich an das Hauptdevice. Die Steuerung von Kanal 1 kann hingegen sowohl über das Hauptdevice als auch über das Device für Endpoint 1 erfolgen. Das Device für Endpoint 1 ist somit nicht zwingend erforderlich und kann grundsätzlich gelöscht oder in den room hidden verschoben werden.<br />
<br />
Details: {{Link2Forum|Topic=50176}}<br />
<br />
Hinweis zum Reset: {{Link2Forum|Topic=55190|Message=469393}}<br />
<br />
==== FGK-101 Tür/Fensterkontakt ====<br />
* Besonderheiten bei Anschluss eines Temperatursensors: {{Link2Forum|Topic=38012}}<br />
<br />
=== GE ===<br />
==== GE (Model t.b.d) ====<br />
Dieser Schalter unterstützt keine Statusrückmeldungen.<br />
<br />
=== Merten ===<br />
Laut {{Link2Forum|Topic=38133}} müssen bei einigen Merten-Geräten, die mit Fremdsoftware inkludiert wurden, gegebenenfalls die Geräte wieder exkludiert und dann erneut mit FHEM inkludiert werden, damit Assoziationen mit FHEM gesetzt werden können.<br />
<br />
=== Philio ===<br />
==== PHI_PAN04 Relais Unterputzeinsatz 2 Schalter a 1.5kW mit Messfunktion ====<br />
siehe {{Link2Forum|Topic=28046}}<br />
<br />
=== Popp ===<br />
==== POPE004001 Z-Wave Rauchmelder mit Innensirene ====<br />
siehe {{Link2Forum|Topic=39856}}<br />
==== POPE005107 Z-Wave Außensirene ====<br />
siehe {{Link2Forum|Topic=42736}}<br><br />
Alte Firmwareversionen haben einen Bug bei der Übermittlung von negativen Temperaturen. Eine Lösungsvariante über ein <code>userReadings</code> findet sich auch im verlinkten Thema. <br />
==== POPE009006 Z-Wave Wall Plug Switch ====<br />
siehe {{Link2Forum|Topic=40771}}<br />
==== POPE009402 10Year Smoke Detector ====<br />
Die erste Firmwareversion hat eine fehlerhafte modelID. Diese Rauchmelder wird dadurch fälschlich als [[Z-Wave#POPE005107_Z-Wave_Au.C3.9Fensirene|Popp Aussensirene]] in FHEM angezeigt. Neuere Geräte werden laut Popp mit der korrekten modelID ausgeliefert.<br />
<br />
=== Z-Wave.Me ===<br />
==== ZME_RC2 Fernbedienung ====<br />
siehe {{Link2Forum|Topic=35513}}<BR><br />
Das Forenthema enthält eine detaillierte Beschreibung der Nutzung der Class MULTI_CHANNEL_ASSOCIATION.<br />
<br />
<br />
== Geräte-Vergleich ==<br />
=== Doppel-Relais ===<br />
{| class="wikitable"<br />
|-<br />
! Eigenschaft !! FIBARO Double Switch 2-FGS-223 !! Qubino Flush 2 relays !! Philio-PAN04 1<br />
|-<br />
| Funktion || Doppel-Relais || Doppel-Relais || Doppel-Relais<br />
|-<br />
| Standby-Leistung || ca. 0.4W || ca. 0.4W || ca. 0.5W<br />
|-<br />
| Reaktion beim Schalten am Tastereingang || schnell, kaum merkliche Verzögerung || schnell, kaum merkliche Verzögerung || langsam, unangenehm langes drücken des Tasters nötig >1 Sekunde <br />
|-<br />
| Geräte in FHEM || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 3 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 || 4 <br> x Hauptgerät <br> x.01 Relais 1 <br> x.02 Relais 2 <br> x.03 Summengerät (ähnlich Hauptgerät, überflüssig)<br />
|-<br />
| Zustand Hauptgerät || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais || Oder-Verknüpfung der beiden Relais<br />
|-<br />
| Statuswechsel Report vom Gerät zum FHEM || ca. 1 Sekunde || ca. 3 Sekunden || ca. 3-4 Sekunden<br />
|-<br />
| Empfänger des Status Reports || Hauptgerät und Untergeräte || Hauptgerät und Untergeräte || Nur Hauptgerät <br>Aktualisierung der Untergeräte nur bei aktiver Abfrage <br />
|-<br />
| Leistungsmessung || Separat für Untergeräte || Separat für Untergeräte || Nur Summe<br />
|-<br />
| Sicherung nötig / Strom || ja, 2x 6.5A, Summe max 10A || ja, max 2x 4A || nein, 2x 6.5A<br />
|}<br />
Beim Qubino Flush 2 relays muss eine MULTI_CHANNEL_ASSOCIATION mit dem Controller (Endpoint root) statt einer "normalen" Assoziation gesetzt werden, damit die Status der Untergeräte einzeln signalisert werden:<br />
<br />
set associationDel 1 <controllerNodeId> <br />
set <device> mcaAdd 1 0 <controllerNodeId> 0 <br />
<br />
Bei einem FHEM-Updatestand ab 20.09.2019 erfolgt diese Einstellung automatisch.<br />
<br />
== Links ==<br />
=== Allgemein ===<br />
* Grundlageninformation "Z-Wave-Haupt-Anleitung": [http://www.zwave.de/z-wave-funknetz-einrichten-und-betreiben/ Wie errichte und betreibe ich ein Z-Wave basiertes Funknetz]<br />
* [http://www.zwave.de/buch-z-wave-grundlagen/ Buch] "Z-Wave: Die Funktechnologie für das Smart Home" von Dr. Christian Paetz (Paetz "is the primary European representative for the Z-Wave Alliance" [http://z-wavealliance.org/global-contacts/])<br />
* Z-Wave-Produktdatenbank mit Angabe zur Zertifizierung, Handbüchern und weiteren Detailinfos (Z-Wave oder [http://z-wavealliance.org/z-wave_plus_certification Z-Wave Plus]): http://products.z-wavealliance.org (englisch)<br />
* herstellerübergreifende Datenbank mit Bedienungsanleitungen zu Z-Wave-Geräten: http://www.zwave.de/handbuecher/ oder http://manuals.zwaveeurope.com (mehrsprachig)<br />
* herstellerübergreifende Datenbank mit technischen Informationen zu Z-Wave-Geräten (Z-Wave Device Library): http://devel.pepper1.net/zwavedb/ (englisch; wird derzeit nicht mehr aktualisiert)<br />
* informative Webseiten zu Z-Wave:<br />
** [http://www.z-wavealliance.org/ http://www.z-wavealliance.org/] (englisch)<br />
** [http://www.zwaveeurope.com/ http://www.zwaveeurope.com/] (englisch)<br />
** [http://www.zwave.de/ http://www.zwave.de/] (deutsch)<br />
** [http://library.ademconet.com/MWT/fs2/VAM/Introductory-Guide-to-Z-Wave-Technology.PDF Introductory Guide to Z-Wave-Technology von Honeywell] (englisch; nicht auf aktuellem Stand)<br />
<br />
=== Informationsquellen zur Einbindung von Command Classes ===<br />
Offizielle und ausführliche Informationen von Sigma Designs (veröffentlicht am 31.08.2016):<br />
* [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]<br />
<br />
Weitere Informationen (seit Veröffentlichung der Z-Wave Spezifikationen am 31.08.2016 geringe Relevanz)<br />
* [https://github.com/yepher/RaZBerry Infos zu Command Classes (ausführlich; insbesondere im Verzeichnis "docs"), RaZBerry und Z-Wave allgemein], englisch<br />
* [http://220.135.186.178/zwave/example/ Übersicht von Command Classes und deren Rückgabewerten mit Unterscheidung der Class-Versionen], englisch<br />
* Code von http://www.openzwave.org (https://github.com/OpenZWave/open-zwave) und http://www.openhab.org (Z-Wave binding: https://github.com/cdjackson/openhab)<br />
* eine Java-API-Beschreibung mit Hinweisen zu Unterschieden von Class-Versionen: http://dz.prosyst.com/pdoc/mBS_SH_SDK_8.1/modules/zwave/api/driver/index.html<br />
<br />
== FAQ ==<br />
=== Welche Infos sollten Anfragen im ZWave-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen FHEM-Devices (Ausgabe von <code>list <device></code>)<br />
::Bitte vor Aufruf des list-Befehls -wenn vorhanden/möglich- folgende Befehle ausführen und Ergebnis abwarten:<br />
::*<code>get <device> associationAll</code> <br />
::*<code>get <device> configAll</code><br />
::*<code>get <device> versionClassAll</code><br />
::*<code>get <device> mcaAll</code><br />
::*<code>get <device> wakeupInterval</code> (nur bei batteriebetriebenen Geräten)<br />
* passender Ausschnitt aus dem Logfile (siehe Link im FHEM-Menü links) generiert mit den gesetzten Attributen<br />
::*<code>attr <ZWDongle> verbose 5</code> und<br />
::*<code>attr global mseclog 1</code><br />
<br />
=== Welche Schritte sind für die Einbindung von ZWave-Geräten in FHEM mindestens durchzuführen? ===<br />
Voraussetzung: ZWave-Gateway ist erfolgreich eingebunden!<br />
# [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes<br />
# [[#Assoziation|Assoziation]] der Assoziationsgruppe(n) des Gerätes mit dem Gateway<br />
# [[#Konfiguration|Konfiguration]] des Gerätes<br />
<br />
=== Warum bleibt der Status (STATE) des neu inkludierten Gerätes dauerhaft auf "associationAdd <associationGroup> <CtrlNodeId>" stehen? ===<br />
FHEM setzt das Reading "state", das den STATE bestimmt, nicht bei allen ZWave-Devices mit vordefinierten Standardwerten. Daher bleibt der bei der Inklusion automatisch abgesetzte "associationAdd"-Befehl unter Umständen im STATE stehen, bis der Anwender den STATE über die Vergabe des Attributes <code>{{Link2CmdRef|Anker=stateFormat|Label=stateFormat}}</code> manuell an seine Bedürfnisse angepasst hat.<br />
(weitergehende Info zum state/STATE/stateFormat: [[DevelopmentState]])<br />
<br />
=== Wie können bei mehrkanaligen Aktoren die zusätzlichen Kanäle (>1) angesprochen werden? ===<br />
* Bei der [[#Hinzufügen eines neuen Z-Wave Geräts / Inklusion|Inklusion]] des Gerätes wird das Hauptdevice mit dem Namen <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID></nowiki></code> und die Devices für alle Kanäle (Endpoints) nach dem Namensschema <code><nowiki>ZWave_<Geräteklasse laut NIF des Gerätes>_<NodeID>.<EndpointNr></nowiki></code> automatisch angelegt. Jedes dieser FHEM-Devices spricht regelmäßig einen bestimmten Kanal des Gerätes an; einige Geräte sprechen mit dem Hauptdevice jedoch das gesamte Gerät mit allen Kanälen an (Bedienungsanleitung beachten).<br />
* Manuell werden Devices für zusätzliche Kanäle mit Hilfe der Befehle <code>get <device> mcEndpoints</code> und <code>get <device> mcCapability <chid></code> aus der Class MULTI_CHANNEL ermittelt bzw. einzeln über autocreate angelegt (Details und Beispiel siehe {{Link2CmdRef|Anker=ZWaveget}}). Mit dem Befehl <code>set <device> mcCreateAll</code> werden automatisch alle Kanäle des Gerätes durch autocreate als eigene Devices in FHEM angelegt.<br />
<br />
=== Wie kann man die SDK-Version eines Gerätes herausfinden? ===<br />
Mit FHEM alleine kann eine [[#Grobermittlung|Grobermittlung]] der SDK-Version vorgenommen werden, die aber für einige Zwecke bereits ausreichend ist. Soll eine [[#Detailermittlung|Detailermittlung]] der genauen SDK-Version erfolgen, dann müssen die mit FHEM ermittelten Werte anhand externer Quellen übersetzt werden.<br />
==== Grobermittlung ====<br />
Der Befehl <code><nowiki>get <ZWDongle> nodeInfo <dezimale nodeId></nowiki></code> liefert das Reading <code><nowiki>nodeInfo_<dezimale nodeId></nowiki></code> zurück.<br />
Die Angabe im Reading hinter <code>ProtocolVers:</code> lässt grobe Rückschlüsse zu. Mögliche (bekannte) Werte:<br />
* <code>2</code> -> bspw. keine Explorer Frames, keine SUC-Unterstützung (veraltet, keine bekannten Geräte mehr im Handel)<br />
* <code>SDK5.0x+4.2x</code> -> bspw. keine Explorer Frames, teilweise SUC-Unterstützung<br />
* <code>SDK4.5x+6.0x</code> -> bspw. Explorer Frames- und SUC-Unterstützung (Reading-Wert wird auch bei SDK 6.5x = Z-Wave Plus angezeigt)<br />
==== Detailermittlung ====<br />
Durch den Befehl <code><nowiki>get <name> version</nowiki></code> kann man die ZWave-Protokoll-Version von Geräten und Controller abfragen. Mit Unterstützung von Übersetzungstabellen<br />
* http://wiki.micasaverde.com/index.php/ZWave_Protocol_Version<br />
* Suche nach sdkids.xml in einer Suchmaschine<br />
kann aus der Protokoll-Version das genutzte SDK festgestellt werden.<br />
<br />
Beispielsweis entspricht das Reading eines Gerätes "Lib 6 '''Prot 2.64''' App 1.6" dem SDK 5.02 Patch 2 oder eines Controller "Z-Wave '''3.41''' STATIC_CONTROLLER" dem SDK 6.02.00.<br />
<br />
HINWEIS: Bei der Vergabe der Protokoll-Version und zugehörigem SDK gibt es keine erkennbare Logik: Eine höhere Protokoll-Version steht nicht notwendig für eine höheres SDK.<br />
<br />
=== Wie kann eine verschlüsselte Kommunikation unter Nutzung der Command Class SECURITY eingerichtet werden? ===<br />
{{Randnotiz|RNText=FHEM unterstützt derzeit ausschließlich SECURITY 1 und nicht das mit dem SDK 6.7 neu eingeführte SECURITY 2 (S2). Soweit bekannt, sind S2-Geräte rückwärtskompatibel zu SECURITY 1.}}<br />
Die verschlüsselte Kommunikation zwischen Controller und Endgerät setzt eine secure-Inklusion voraus. Bereits mit der Inklusion wird entschieden, ob die Kommunikation von Controller und Endgerät dauerhaft verschlüsselt oder unverschlüsselt erfolgt. Ist ein Gerät bereits normal inkludiert und entscheidet man sich nachträglich für eine verschlüsselte Kommunikation, so ist das nur möglich, indem das Gerät exkludiert und dann wieder secure inkludiert wird.<br />
<br />
Ob die Verschlüsselung bei einem Gerät mit Unterstützung der Command Class SECURITY genutzt werden soll, sollte genau überlegt werden. Die Verschlüsselung führt zu einem deutlich größeren Funkverkehr zur Ausführung eines Befehls und teilweise auch zu spürbaren Latenzen.<br />
<br />
Vorarbeiten:<br />
* Das Perl-Modul Crypt-Rijndael muss installiert sein.<br />
* Das Attribut <code>networkKey</code> muss mit einem 32-Zeichen langen Hexzahl beim ZWDongle angelegt werden. Dieser Schlüssel sollte nicht veröffentlicht werden und auch zusätzlich separat (bspw. auf Papier) festgehalten werden. Bei Verlust des Attributes und Schlüssels ist eine Kommunikation nur nach erneuter Inklusion möglich.<br />
<br />
Ablauf der secure-Inklusion:<br />
* Controller in den Modus zur secure-Inklusion schalten:<br />
: <code>set <ZWDongle> addNode onSec</code> für die Standard-secure-Inklusion<br />
: oder alternativ<br />
: <code>set <ZWDongle> addNode onNwSec</code> für die Nework-Wide-secure-Inklusion<br />
* Gerät gemäß Handbuch in den Modus zur secure-Inklusion bringen (teilweise ist jeweils für secure- und normale Inklusion ein anderes Vorgehen notwendig!)<br />
* Das Gerät sollte jetzt automatisch erkannt und das FHEM-Device durch <code>autocreate</code> angelegt werden. Die secure-inkludierten Geräte haben ein zusätzliches Attribut <code>secure_classes</code> in dem die Command Classes deren Kommunikation verschlüsselt abläuft aufgelistet sind. Nicht in diesem Attribut, aber in <code>classes</code> aufgeführte Command Classes wickeln die Kommunikation weiterhin unverschlüsslt ab.<br />
* Inklusionsmodus des Controllers ausschalten:<br />
: <code>set <ZWDongle> addnode off</code><br />
* Das Vorgehen in FHEM unterscheidet sich von nun an nicht von normal (unverschlüsselt) inkludierten Geräten. Die Verschlüsselung läuft für den Anwender transparent ab. Darum anschließend [[#Assoziation|Assoziation]] und [[#Konfiguration|Konfiguration]] vornehmen.<br />
<br />
=== Wie kann man ohne Exklusion Nodes des Controllers löschen? ===<br />
HINWEIS: Geräte sollten grundsätzlich immer über eine Exklusion aus der Nodelist des Controllers gelöscht werden. Das nachfolgend geschilderte Vorgehen ist nur in Sonderfällen (bspw. Gerätedefekt, gebraucht gekauftes Gateway) anzuwenden.<br />
<br />
Nicht mehr zu erreichende/reagierende Nodes (Geräte) können manuell mit dem Befehl <code>removeFailedNode</code> gelöscht werden. Dazu muss sich der betroffene Node auf der FailedNodeList des Controllers befinden. Auf die FailedNodeList kommen netzbetriebene Geräte automatisch, wenn sie vom Controller nicht mehr per Funk erreicht werden. Batteriebetriebene Geräte müssen manuell auf die FailedNodelist gesetzt werden, da der Controller nicht feststellen kann, ob sie nur langfristig "schlafen".<br />
<br />
Der Befehl <code>removeFailedNode</code> löscht nur Nodes auf der FailedNodeList, die erst vor Kurzem nicht erreicht werden konnten. Darum muss sowohl das manuelle Verschieben von batteriebetriebenen als auch das Nicht-Erreichen der netzbetriebenen Geräte erst Kurz vor Aufruf des <code>removeFailedNode</code>-Befehls erfolgt sein. <br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# An den betroffenen Node eine Telegramm mit <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> verschicken, um ihn auf FailedNodeList zu verschieben bzw. Zeitstempel zu aktualisieren.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und kann mit <code>removeFailedNode</code> gelöscht werden.<br />
# Befehl zum Löschen des Nodes absetzen: <code><nowiki>set <ZWDongle> removeFailedNode <NodeId></nowiki></code>. Der Befehl testet vor dem Löschen noch einmal, dass der Node nicht erreicht werden kann und entfernt erst dann den Node.<br />
# Prüfen, der Ergebnisse des <code>removeFailedNode</code>-Befehls im Log oder [[Event monitor]]. Die verschiedenen Ergebnisse werden durch die in der {{Link2CmdRef}} dokumentierten Events signalisiert. Tritt das Ergebnis "failedNodeRemoveProcessBusy" mehrfach hintereinander auf, muss das ZWDongle kurz stromlos gemacht werden.<br />
# Prüfen, ob der Node nicht mehr auf der Nodelist des Controllers ist: <code><nowiki>get <ZWDongle> nodeList</nowiki></code><br />
<br />
siehe auch {{Link2Forum|Topic=32823|Message=292626}}<br />
<br />
=== Wie ist der einfachste Weg ein (defektes) Gerät durch ein gleiches Ersatzgerät auszutauschen? ===<br />
Tauscht man ein defektes Gerät durch ein gleiches Ersatzgerät und inkludiert das Ersatzgerät per <code>addNode</code>, so erhält das Ersatzgerät eine neue NodeId. Soll das Ersatzgerät die gleiche NodeId wie das alte Gerät erhalten, so muss statt <code>addNode</code> der Befehl <code>replaceFailedNode</code> zur Inklusion des Ersatzgerätes (=gleiches Modell) verwendet werden.<br />
<br />
Vorgehensweise für den Node <NodeId>:<br />
# sofern das alte Gerät noch ansprechbar ist, die Konfiguration und Assoziationen abfragen, damit man die Werte im Ersatzgerät einfach wieder setzen kann:<br />
## <code><nowiki>get <device> configAll</nowiki></code><br />
## <code><nowiki>get <device> associationAll</nowiki></code><br />
# defektes Gerät aus- und neues einbauen<br />
# Befehl <code><nowiki>set <ZWDongle> sendNIF <NodeId></nowiki></code> absetzen, damit das Dongle die NodeId auf die FailedNodeList setzt.<br />
# Abfragen, ob der Node auf der FailedNodeList steht: <code><nowiki>get <ZWDongle> isFailedNode <NodeId></nowiki></code>. Wenn der Rückgabewert der Abfrage "yes" ist, steht der Node korrekt auf der FailedNodeList und das Ersatzgerät kann mit <code>replaceFailedNode</code> inkludiert werden.<br />
# <code><nowiki>set <zwdongle> replaceFailedNode <NodeId></nowiki></code> für die NodeId des defekten Gerätes aufrufen und das Ersatzgerät in den Inklusionsmodus bringen<br />
# Korrekte Inklusion prüfen und beim alten Aktor ausgelesene Werte beim neuen Aktor wieder setzen.<br />
<br />
=== Bei einer Inklusion wird eine durch Exklusion/removeFailedNode frei gewordenen NodeId nicht mehr vergeben. Ist das korrekt? ===<br />
Ja, das ist richtig.<br />
<br />
Bei der Inklusion über addNode vergibt der Controller die höchste bisher noch nie verwendete NodeID. Durch Exklusion oder removeFailedNode frei gewordene NodeIDs werden hierbei nicht erneut vergeben. Nur bei einem Controller-Reset, der mit einem unwiederbringlichen Verlust sämtlicher Informationen des ZWave-Netzes und Neuvergabe der HomeID verbunden ist, beginnt die Zählung wieder von vorne.<br />
<br />
=== Welche Funktion haben die XML-Config-Dateien in FHEM? ===<br />
In den XML-Config-Dateien sind Informationen zu einzelnen ZWave-Geräten enthalten, die der Erleichterung der Gerätenutzung und -einbindung in FHEM dienen. Dies sind unter anderem Erläuterungen zu den Parameternummer/-werten, Assoziationsgruppen und Besonderheiten eines Gerätes. Ob eine zum Zwave-Gerät passende XML-Config Datei existiert, wird im Rahmen der Inklusion oder durch manuellen Aufruf des Befehls <code>get <name> model</code> ermittelt. Wird eine passende XML-Config-Datei gefunden, wird sie automatisch in FHEM eingebunden. Das Reading <code>modelConfig</code> enthält dann den zugehörigen XML-Config-Dateinamen. Stehen keine XML-Config-Informationen bereit, enthält das Reading <code>modelConfig</code> den Wert "unknown". Die Funktionsfähigkeit von FHEM mit ZWave-Geräten ist auch bei fehlender XML-Config-Datei gegeben. Es gibt dadurch keine funktionalen Einschränkungen in FHEM; es entfallen "nur" Erleichterungen und es sind unter Umständen mehr manuelle Schritte bei der Gerätenutzung/-einbindung notwendig.<br />
<br />
Erleichterungen bei vorhandener XML-Config für ein ZWave-Gerät:<br />
* Bei der Inklusion:<br />
** Assoziationen mit dem Controller bei von Gruppe 1 abweichenender Assoziationsgruppe werden automatisch gesetzt<br />
** vom NIF nicht gemeldete, aber vom Gerät unterstützte Classes, werden im Attribut <code>classes</code> ergänzt<br />
* Bei der Konfiguration:<br />
** die Parameternummern stehen als configXY-Befehle zur Verfügung und werden mit Hilfetexten -auch zu den Parameterwerten- in der Detailansicht des FHEM-Device erläutert.<br />
<br />
HINWEIS: Bitte auch bei vorhandener XML-Config-Datei nach der Inklusion und bei der Konfiguration die Assoziationen und Parameter prüfen. Von den eigenen Vorstellungen abweichende Vorgaben oder gar Fehler in der Config-Datei können nie ausgeschlossen werden. Fehler bitte im Forum ({{Link2Forum|Area=ZWave}}) melden.<br />
<br />
=== Wie können fehlende XML-Config-Informationen für mein ZWave-Gerät in FHEM eingebunden werden? ===<br />
Die XML-Config-Informationen von FHEM sind in folgenden Dateien im Ordner fhem/FHEM/lib gespeichert:<br />
* openzwave_manufacturer_specific.xml<br />
* openzwave_deviceconfig.xml.gz<br />
* fhem_zwave_deviceconfig.xml.gz<br />
Die in den Dateien enthaltenen Informationen beruhen in großen Teilen auf Daten von openzwave und übernehmen daher das openzwave-Datenformat, das unter https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices näher beschrieben wird. <br />
<br />
Die Datei "openzwave_manufacturer_specific.xml" enthält die eindeutige Kennung des ZWave-Gerätes, die in FHEM nach Aufruf des Befehls <code>get <name> model</code> im Reading <code>modelId</code> des FHEM-ZWave-Devices steht. Weiterhin wird der Klartextname dieses Gerätes, der im Reading <code>model</code> angezeigt werden soll, festgelegt. Zudem wird der Dateiname der eigentlichen XML-Config-Datei für das ZWave-Gerät angegeben, der später informativ im Reading <code>modelConfig</code> steht.<br />
<br />
Die Dateien "openzwave_deviceconfig.xml.gz" und "fhem_zwave_deviceconfig.xml.gz" enthalten in komprimierter Form die eigentlichen XML-Config-Dateien für die ZWave-Geräte. FHEM durchsucht beide Dateien nach der passenden XML-Config-Datei. Ist in beiden Dateien eine XML-Config für ein Gerät vorhanden, so werden die XML-Daten aus der "fhem_zwave_deviceconfig.xml.gz" bevorzugt.<br />
<br />
Falls ein ZWave-Gerät von FHEM nicht erkannt wird, bitte auf folgenden Seiten nachschauen, ob es schon XML-Config-Dateien gibt, die nur nicht in FHEM eingebunden sind:<br />
# https://github.com/OpenZWave/open-zwave/tree/master/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner<br />
# https://github.com/jeedom/plugin-openzwave/tree/master/ressources/openzwave/config in manufacturer_specific.xml und dem herstellerspezifischen Unterordner <br />
# http://www.cd-jackson.com/index.php/zwave/zwave-device-database<br />
Sofern auf den genannten Seiten Daten vorhanden sind, postet eine Aktualisierungsbitte mit genauem Link zur entsprechenden Seite im Forum ({{Link2Forum|Area=ZWave}}).<br />
<br />
Gibt es auf keiner der Seiten Infos zu dem Gerät, dann entsprechend https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices die XML-Config-Datei für das Gerät erstellen und unkomprimiert zusammen mit der zu ergänzenden Info für die Datei "openzwave_manufacturer_specific.xml" im Forum ({{Link2Forum|Area=ZWave}}) zur Verfügung stellen.<br />
<br />
=== Wie führt man eine Komplett-Sicherung der ZWave-Installation durch? ===<br />
Zu einer Komplett-Sicherung der ZWave-Konfiguration gehören:<br />
<br />
1. [[Backup]] der FHEM-Installation <br />
::'''und'''<br />
2. Backup des NVRAM des Controllers<br />
<br />
Es genügt nicht nur die FHEM-Installation/Konfiguration zu sichern, da der Controller im NVRAM Daten über HomeID, NodeIDs usw. speichert, die in der FHEM-Installation nicht enthalten sind und auch nicht durch FHEM rekonstruierbar sind.<br />
<br />
<br />
zu 2.) Backup des NVRAM des Controllers<br />
<br />
Einige Controllerhersteller bieten eine eigenständige Software zum Backup/Restore an (siehe Hinweise zu den Controllern unter [[#Autocreate_des_Gateways]]).<br />
<br />
FHEM kann mit den ZWDongle-Befehlen <code>backupCreate</code> das NVRAM der Controller sichern und mit <code>backupRestore</code> zurückschreiben. Da das Speicherlayout des NVRAM unter anderem von Controller-Hersteller, SDK und Firmwareversion abhängig sein kann, sollte man die Sicherung und Wiederherstellung des eigenen Controllers (auf eigenes Risiko) testen und sinnvollerweise einen gleichen Ersatzcontroller wie den Controller des Produktivsystem besitzen. Erfolgreiche Sicherung/Wiederherstellung wurde im Forum von den ZWavePlus-Controllern UZB1 (256k), Razberry (256k), Vision ZU 1401-5 EU (128k)und AEOTEC Z-Stick Gen5 (256k) berichtet.<br />
(Weitergehende Infos - neben der {{Link2CmdRef}} - im Forum: {{Link2Forum|Topic=52364}}, {{Link2Forum|Topic=52914}}, {{Link2Forum|Topic=53023}})<br />
<br />
=== Wie kann ich zur Fortentwicklung der ZWave-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten ZWave-Geräten im Forum mitteilen<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* [[How_to_write_a_patch|Patches]] für 00_ZWDongle.pm und 10_ZWave.pm erstellen<br />
* Wiki: Ergänzungen und Korrekturen vornehmen; neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie wird ein fehlendes Kernelmodul (Fritzbox) eingebunden? ===<br />
Auf der Fritzbox (und evtl. auch anderen Systemen) muss sichergestellt werden, dass das Kernelmodul für das Gateway geladen wird. Ansonsten scheitert die Einbindung des Gateways in FHEM.<br />
<br />
Für den Aeon Labs Z-Stick muss beispielsweise auf der Fritzbox das Kernelmodul <code>cp2101.ko</code> geladen werden.<br />
Diese Datei ist bei einer [[FHEM und FritzBox 7390]] Installation über das Image von [http://www.fhem.de fhem.de] bereits enthalten.<br />
Um den Aeon Labs Z-Stick zu verwenden, muss dieses Kernelmodul vor oder beim Starten des FHEM-Servers geladen sein. Dies erreicht man durch einen Eintrag in der Datei <code>startfhem</code>.<br />
<br />
Die entsprechende Zeile kann direkt unterhalb der modprobe Anweisungen eingefügt werden.<br />
insmod $home/lib/cp2101.ko<br />
<br />
Nach einem FHEM-Neustart sollte das Gateway (der USB Stick) nun erkannt werden.<br />
<br />
=== Wie ist der Aufbau der Z-Wave Messages bzw. wie finde ich bei einem Sendefehler die NodeId des Empfängers heraus? ===<br />
<br />
Es könnte natürlich hin und wieder vorkommen, dass man im FHEM-Log folgende Fehler vorfindet:<br />
<br />
<code><nowiki>ZWDongle_ProcessSendStack: no ACK, resending message 010a00130603320110259277</nowiki></code><br />
<br />
In diesem Fall gab es aus irgendeinem Grund einmalig das Problem, dass der Empfang einer Nachricht vom Empfänger nicht bestätigt wurde. <br />
Will man dem auf die Spur kommen, so wäre es natürlich von Vorteil, die NodeId des Empfängers herauszufinden. Also muss man sich die Message näher anschauen:<br />
<br />
<code><nowiki>010a00130603320110259277</nowiki></code><br />
* 01: data to controller<br />
* 0a: length of msg<br />
* 00: ?<br />
* 13: ZW_SEND_DATA<br />
* 06: NodeId<br />
<br />
* 03: length of msg<br />
* 32: Command Class 32 (METER, siehe %zwave_class in 10_ZWave.pm)<br />
* 01: METER get scale command<br />
* 10: scale parameter<br />
<br />
* 25: send flags, explorer frames on<br />
* 92: callbackId (um ACK zu identifizieren)<br />
* 77: checkSum<br />
<br />
In diesem Fall hat der Z-Wave-Controller 01 eine Nachricht an die NodeId 06 geschickt, welche vom Node nicht bestätigt wurde.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|!]]<br />
[[Kategorie:868MHz]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Z-Wave_Command_Classes&diff=31127Z-Wave Command Classes2019-08-14T14:18:06Z<p>Krikan: /* Liste von bekannten Command Classes und deren Unterstützung in FHEM */ -> FIRMWARE_UPDATE_MD</p>
<hr />
<div>{{Randnotiz|RNTyp=Info|RNText=Dieser Artikel wurde vor Veröffentlichung der [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification] am 31.08.2016 erstellt. Die Informationen zu den Command Classes waren bis zu diesem Zeitpunkt nicht offengelegt, die Versionen/Namen der Klassen wurden anhand der nun verfügbaren Dokumentation angepasst (03-09.2016)}}<br />
[[Z-Wave Command Classes]] sind Klassen von Befehlen oder Protokollen, die zur Kommunikation und Steuerung der Z-Wave-Geräte dienen.<br />
<br />
Auf dieser Seite werden einige Grundlagen zu diesen Command Classes von Z-Wave, sowie deren Implementierung in FHEM beschrieben. Allgemeine Grundlagen zu Z-Wave finden sich im [[Z-Wave|Z-Wave Hauptartikel]].<br />
<br />
== Command Classes ==<br />
=== Einleitung ===<br />
Entstanden ist dieser Artikel da die Dokumentation der Z-Wave Command Classes zum damaligen Zeitpunkt leider (noch) nicht offengelegt waren, wodurch die verfügbaren Informationen teilweise veraltet, unvollständig oder auch falsch waren. Am 31.08.2016 hat Sigma Designs die Dokumentationen der ZWave Command Classes freigegeben (siehe: [http://z-wave.sigmadesigns.com/design-z-wave/z-wave-public-specification/ Z-Wave Public Specification]). Die Informationen auf dieser Seite wurden nach Erscheinen dieser offiziellen Dokumente angepasst, dieser Artikel erhebt dennoch keinen Anspruch auf Vollständigkeit, Aktualität oder Richtigkeit. Er soll vielmehr dazu dienen, die bekannten Command Classes aufzulisten, sowie einen Hinweis auf deren Unterstützung in FHEM zu geben.<br />
<br />
=== Allgemeines ===<br />
Die Kommunikation zwischen den Z-Wave Nodes erfolgt über festgelegte Protokolle, welche jeweils in den Command Classes festgelegt sind. Für jede Gerätefunktion gibt es eine Command Class, ein Gerät hat jedoch im Allgemeinen mehrere Funktionen und damit auch mehrere Command Classes.<br />
<br />
Wie im Z-Wave Basisartikel beschrieben, ist die minimale Anforderung an ein Geräte die Unterstützung der Command Class "CLASS_BASIC". Diese "BASIC" Klasse wird von den Geräten nicht explizit in der Liste Ihrer unterstützten Klassen aufgeführt, laut Spezifikation soll jedes Gerät diese Klasse unterstützen bzw. mit Nachrichten dieser Klasse umgehen können.<br />
<br />
Eine schaltbare Zwischensteckdose unterstützt z.B. die folgenden Command Classes:<br />
SWITCH_BINARY VERSION METER MANUFACTURER_SPECIFIC CONFIGURATION ASSOCIATION PROTECTION POWERLEVEL SENSOR_MULTILEVEL SWITCH_ALL<br />
<br />
Dies ist jedoch von Hersteller zu Hersteller verschieden, in diesem Beispiel ist die Klasse "METER" z.B. für das Auslesen der Leistung zuständig, d.h. dieser Zwischenstecker kann z.B. auch die Leistung messen. Andere Steckdosenschalter ohne diese Funktion würden diese Klasse dementsprechend auch nicht unterstützen.<br />
<br />
Aktuell sind weit mehr als 100 solcher Klassen definiert, hinzu kommt, dass diese Klassen in verschiedenen Versionen existieren. Die ständige Weiterentwicklung der Gerätefunktionen erfordert teilweise eine Erweiterung der jeweils betroffenen Command Classes, was sich in einer geänderten Definition der verwendeten Protokolle auswirkt. Im allgemeinen wird hier eine Abwärtskompatibilität eingehalten, sodass die Funktionen bis zu der unterstützten Version auch von Geräten mit höheren Versionen genutzt werden können.<br />
<br />
Den Command Classes ist jeweils eine eindeutige ID zugeordnet. Diese ID wird in der Kommunikation dazu genutzt die jeweilige Geräteklasse anzusprechen.<br />
<br />
Der COMMAND_CLASS_METER ist beispielsweise die ID 0x32 (hexadezimal) bzw. 50 (dezimal) zugeordnet. Um die unterstützte Version einer Klasse abzufragen wird die COMMAND_CLASS_VERSION genutzt. In FHEM wird die Version der Klasse des Gerätes durch den Befehl:<br />
<br />
get <devicename> versionClass <ID><br />
<br />
abgefragt, die <ID> ist hier dezimal anzugeben. Als Ausgabe wird von FHEM dann z.B.:<br />
<br />
versionClass_50:2<br />
<br />
erzeugt und es wird ein gleichnamiges Reading für das Gerät angelegt. In diesem Fall also die Version 2, meist nur als V2 angegeben.<br />
<br />
Um herauszufinden, ob ein Gerät prinzipiell von FHEM unterstützt wird, werden daher die Informationen zu den Command Classes bzw. deren Versionen benötigt:<br />
* Liste der vom Gerät unterstützten Command Classes<br />
** Informationen zu den Versionen der Command Class<br />
* Liste der von FHEM unterstützten Command Classes<br />
** Informationen zu den von FHEM unterstützten Versionen der Command Class<br />
<br />
(Grundlegende) Informationen zu den ersten beiden Punkten finden sich relativ häufig bereits in der Anleitung der Geräte, evtl. hilft auch eine Suche im Internet mit der Gerätebezeichnung und dem Stichwort "COMMAND CLASS".<br />
<br />
Für die letzten beiden Punkte soll dieser Artikel die nötigen Informationen bereitstellen, bzw. eine Abschätzung liefern ob das Gerät unterstützt wird.<br />
<br />
Sollte zumindest die Liste der Command Classes des Gerätes in FHEM als unterstützt gekennzeichnet sein, so wird das Gerät höchstwahrscheinlich unterstützt werden, eine Garantie ist es jedoch noch nicht. Falls die Versionen der Command Classes unterschiedlich ist, so wird eventuell nur ein begrenzter Funktionsumfang dieser Klasse nutzbar sein. Es ist jedoch auch möglich das ein Gerät zwar eine höhere Version einer Command Class unterstützt, trotzdem aber selbst keine dieser neuen Funktion nutzt. Genausogut können in der höheren Version Funktionen definiert sein, die für den Betrieb des Gerätes nicht zwingend nötig sind.<br />
<br />
Fehlt die Unterstützung für eine Klasse jedoch ganz, kann dies für die Funktion des Geräte von entscheidender Bedeutung sein und die Nutzung unter FHEM dadurch aktuell nicht möglich sein.<br />
<br />
In FHEM sind die für die Hausautomatisierung wichtigsten Klassen bereits soweit implementiert, wie es für den Betrieb der meisten Geräte nötig ist. Sollten Geräte mit neuen Funktionen "auftauchen", so kann entweder anhand vorhandener Informationen zu den jeweiligen Command Classes oder aber durch "Trial and Error" versucht werden diese Funktion zu implementieren. <br />
<br />
Als Beispiel sei hier die Implementation der Command Class USER_CODE (0x63) genannt, die für den Betrieb eines RFID Keypads nötig war, da über diese Klasse die Verwaltung der RFID-Tags und Eingabecodes stattfinden. Das Gerät ist [[Z-Wave-ZIP WT-RFID Keypad|hier]] beschrieben, die Diskussion im Forum mit der Implementierung kann ({{Link2Forum<br />
|Topic=36856<br />
|Message=291216<br />
|LinkText=hier<br />
}}) nachgelesen werden.<br />
<br />
Im Zweifel sollte man im Vorfeld versuchen, so viele Informationen wie möglich zusammenzutragen und sich dann mit einer entsprechenden Frage im Forum von FHEM zu melden.<br />
<br />
=== Liste von bekannten Command Classes und deren Unterstützung in FHEM ===<br />
<br />
{| class="wikitable sortable"<br />
! Commande Class Name !! ID (hex) !! ID (dezimal) !! class="unsortable" | höchste Version !! class="unsortable" | unterstützte <br>Version(en) !! class="unsortable" | Kommentar<br />
|-<br />
<br />
| NO_OPERATION<br />
| 0x00 <br />
| 0 <br />
| V1<br />
| nein - für Gerätefunktion nicht relevant<br />
| <br />
|-<br />
| ZWAVE_CMD_CLASS<br />
| 0x01<br />
| 1<br />
| ?<br />
| ?<br />
| LowLevel-Funktionen, die von http://fhem.de/commandref.html#ZWCUL teilweise unterstützt werden<br />
|-<br />
| BASIC<br />
| 0x20<br />
| 32<br />
| V2<br />
| V2<br />
| <br />
|-<br />
| CONTROLLER_REPLICATION<br />
| 0x21<br />
| 33<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| APPLICATION_STATUS<br />
| 0x22<br />
| 34<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| ZIP_SERVICES<br />
| 0x23<br />
| 35<br />
| V2<br />
| nein<br />
| Z-Wave for IP<br />
|-<br />
| ZIP_SERVER<br />
| 0x24<br />
| 36<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten (SECURITY_PANEL_MODE ?)<br />
|-<br />
| SECURITY_PANEL_MODE<br />
| 0x24<br />
| 36<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten (ZIP_SERVER ?)<br />
|-<br />
| SWITCH_BINARY<br />
| 0x25<br />
| 37<br />
| V2<br />
| V1<br />
| <br />
|-<br />
| SWITCH_MULTILEVEL<br />
| 0x26<br />
| 38<br />
| V4<br />
| V1<br />
| set-Befehl für StartLevelChange (0x04) nicht implementiert<br />
|-<br />
| SWITCH_ALL<br />
| 0x27<br />
| 39<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| SWITCH_TOGGLE_BINARY<br />
| 0x28<br />
| 40<br />
| V1<br />
| nein<br />
| COMMAND_CLASS_SWITCH_TOGGLE_BINARY [DEPRECATED]<br />
|-<br />
| SWITCH_TOGGLE_MULTILEVEL<br />
| 0x29<br />
| 41<br />
| V1<br />
| nein<br />
| COMMAND_CLASS_SWITCH_TOGGLE_MULTILEVEL [DEPRECATED]<br />
|-<br />
| CHIMNEY_FAN<br />
| 0x2A<br />
| 42<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| SCENE_ACTIVATION<br />
| 0x2B<br />
| 43<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| SCENE_ACTUATOR_CONF<br />
| 0x2C<br />
| 44<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| SCENE_CONTROLLER_CONF<br />
| 0x2D<br />
| 45<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| ZIP_CLIENT<br />
| 0x2E<br />
| 46<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten (SECURITY_PANELZONE ?)<br />
|-<br />
| ZIP_ADV_SERVICES<br />
| 0x2F<br />
| 47<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten (Z/IP Tunneling Services)<br>(SECURITY_PANELZONE_SENSOR ?)<br />
|-<br />
| SECURITY_PANELZONE_SENSOR<br />
| 0x2F<br />
| 47<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten (ZIP_ADV_SERVICES ?)<br />
|-<br />
| SENSOR_BINARY<br />
| 0x30<br />
| 48<br />
| V2<br />
| V1, V2<br />
| SENSOR_BINARY [DEPRECATED]<br />
|-<br />
| SENSOR_MULTILEVEL<br />
| 0x31<br />
| 49<br />
| V10<br />
| unterstützt,<br>Version noch nicht geklärt<br />
| <br />
|-<br />
| METER<br />
| 0x32<br />
| 50<br />
| V4<br />
| V1, V2, (V3)<br />
| V3 evtl. nicht vollständig<br />
|-<br />
| ZIP_ADV_SERVER<br />
| 0x33<br />
| 51<br />
| V1<br />
| nein<br />
| Class wurde durch Class COLOR_CONTROL ersetzt<br />
|-<br />
| SWITCH_COLOR (COLOR_CONTROL)<br />
| 0x33<br />
| 51<br />
| V3<br />
| V1<br />
| <br />
|-<br />
| NETWORK_MANAGEMENT_INCLUSION<br />
| 0x34<br />
| 52<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| METER_PULSE<br />
| 0x35<br />
| 53<br />
| V1<br />
| nein<br />
| METER_PULSE [DEPRECATED]<br />
|-<br />
| BASIC_TARIFF_INFO<br />
| 0x36<br />
| 54<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| HRV_STATUS<br />
| 0x37<br />
| 55<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| THERMOSTAT_HEATING<br />
| 0x38<br />
| 56<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| HRV_CONTROL<br />
| 0x39<br />
| 57<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| DCP_CONFIG<br />
| 0x3a<br />
| 58<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| DCP_MONITOR<br />
| 0x3b<br />
| 59<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| METER_TBL_CONFIG<br />
| 0x3C<br />
| 60<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| METER_TBL_MONITOR<br />
| 0x3D<br />
| 61<br />
| V2<br />
| nein<br />
| <br />
|-<br />
| METER_TBL_PUSH<br />
| 0x3E<br />
| 62<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| PREPAYMENT<br />
| 0x3F<br />
| 63<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| THERMOSTAT_MODE<br />
| 0x40<br />
| 64<br />
| V3<br />
| unterstützt,<br>Version noch nicht geklärt<br />
| <br />
|-<br />
| PREPAYMENT_ENCAPSULATION<br />
| 0x41<br />
| 67<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| THERMOSTAT_OPERATING_STATE<br />
| 0x42<br />
| 66<br />
| V2<br />
| V2<br />
| V2 ohne Logging-Commands<br />
|-<br />
| THERMOSTAT_SETPOINT<br />
| 0x43<br />
| 67<br />
| V3<br />
| unterstützt,<br>Version noch nicht geklärt<br />
| <br />
|-<br />
| THERMOSTAT_FAN_MODE<br />
| 0x44<br />
| 68<br />
| V4<br />
| V1, V2<br />
| <br />
|-<br />
| THERMOSTAT_FAN_STATE<br />
| 0x45<br />
| 69<br />
| V2<br />
| V1, V2<br />
| <br />
|-<br />
| CLIMATE_CONTROL_SCHEDULE<br />
| 0x46<br />
| 70<br />
| V1<br />
| V1<br />
| CLIMATE_CONTROL_SCHEDULE [DEPRECATED]<br />
|-<br />
| THERMOSTAT_SETBACK<br />
| 0x47<br />
| 71<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| RATE_TBL_CONFIG<br />
| 0x48<br />
| 72<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| RATE_TBL_MONITOR<br />
| 0x49<br />
| 73<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| TARIFF_CONFIG<br />
| 0x4a<br />
| 74<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| TARIFF_TBL_MONITOR<br />
| 0x4b<br />
| 75<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| DOOR_LOCK_LOGGING<br />
| 0x4C<br />
| 76<br />
| V1<br />
| ja<br />
| DOOR_LOCK_LOGGING [DEPRECATED]<br />
|-<br />
| NETWORK_MANAGEMENT_BASIC<br />
| 0x4d<br />
| 77<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| SCHEDULE_ENTRY_LOCK<br />
| 0x4E<br />
| 78<br />
| V3<br />
| V1, V2, V3<br />
| SCHEDULE_ENTRY_LOCK [DEPRECATED]<br />
|-<br />
| ZI_6LOWPAN<br />
| 0x4F<br />
| 79<br />
| V8<br />
| nein<br />
| ZIP_6LOWPAN (ITU-T G.9959 / IETF RFC 7428)<br />
|-<br />
| BASIC_WINDOW_COVERING<br />
| 0x50<br />
| 80<br />
| V1<br />
| V1<br />
| BASIC_WINDOW_COVERING [OBSOLETED]<br />
|-<br />
| MTP_WINDOW_COVERING<br />
| 0x51<br />
| 81<br />
| V1<br />
| nein<br />
| MTP_WINDOW_COVERING [OBSOLETED] (MTP=Move to position)<br />
|-<br />
| NETWORK_MANAGEMENT_PROXY<br />
| 0x52<br />
| 82<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| SCHEDULE (NETWORK_SCHEDULE)<br />
| 0x53<br />
| 83<br />
| V3<br />
| V1<br />
| (Details für einige Paramenter unbekannt)<br />
|-<br />
| NETWORK_MANAGEMENT_PRIMARY<br />
| 0x54<br />
| 84<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| TRANSPORT_SERVICE<br />
| 0x55<br />
| 85<br />
| V2<br />
| nein<br />
| <br />
|-<br />
| CRC_16_ENCAP<br />
| 0x56<br />
| 86<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| APPLICATION_CAPABILITY<br />
| 0x57<br />
| 87<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| ZIP_ND<br />
| 0x58<br />
| 88<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| ASSOCIATION_GRP_INFO<br />
| 0x59<br />
| 89<br />
| V3<br />
| V1<br />
| get-Abfrage "associationGroupInfo => "03"" mit dem zugehörigen Report "..5904(.*)" fehlen, da Sinn unklar<br />
|-<br />
| DEVICE_RESET_LOCALLY<br />
| 0x5a<br />
| 90<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| CENTRAL_SCENE<br />
| 0x5b<br />
| 91<br />
| V3<br />
| ?<br />
| nur "parse" für set grundlegend implementiert<br />
|-<br />
| IP_ASSOCIATION<br />
| 0x5c<br />
| 92<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| ANTITHEFT<br />
| 0x5d<br />
| 93<br />
| V2<br />
| nein<br />
| <br />
|-<br />
| ZWAVEPLUS_INFO<br />
| 0x5e<br />
| 94<br />
| V2<br />
| V1<br />
| Neuerungen durch V2 unbekannt<br />
|-<br />
| ZIP_GATEWAY<br />
| 0x5f<br />
| 95<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| MULTI_CHANNEL<br />
| 0x60<br />
| 96<br />
| V4<br />
| V2<br />
| <br />
|-<br />
| MULTI_INSTANCE<br />
| 0x60<br />
| 96<br />
| V1<br />
| V1<br />
| MULTI_INSTANCE wurde durch <br>MULTI_CHANNEL ersetzt<br />
|-<br />
| ZIP_PORTAL<br />
| 0x61<br />
| 97<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| DOOR_LOCK<br />
| 0x62<br />
| 98<br />
| V3<br />
| V2<br />
| (Details für einige Paramenter unbekannt)<br />
|-<br />
| USER_CODE<br />
| 0x63<br />
| 99<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| HUMIDITY_CONTROL_SETPOINT (APPLIANCE)<br />
| 0x64<br />
| 100<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| DMX<br />
| 0x65<br />
| 101<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| BARRIER_OPERATOR<br />
| 0x66<br />
| 102<br />
| V1<br />
| V1<br />
| "unwichige" Commands über 0x03 fehlen derzeit noch<br />
|-<br />
| NETWORK_MANAGEMENT_INSTALLATION_MAINTENANCE<br />
| 0x67<br />
| 103<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| ZIP_NAMING<br />
| 0x68<br />
| 104<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| MAILBOX<br />
| 0x69<br />
| 105<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| WINDOW_COVERING<br />
| 0x6A<br />
| 106<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| IRRIGATION<br />
| 0x6B<br />
| 107<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| SUPERVISION<br />
| 0x6C<br />
| 108<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| HUMIDITY_CONTROL_MODE<br />
| 0x6D<br />
| 109<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| HUMIDITY_CONTROL_OPERATING_STATE<br />
| 0x6E<br />
| 110<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| ENTRY_CONTROL<br />
| 0x6F<br />
| 111<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| CONFIGURATION<br />
| 0x70<br />
| 112<br />
| V4<br />
| V1<br />
| <br />
|-<br />
| ALARM<br />
| 0x71<br />
| 113<br />
| V8<br />
| V1, V2, V3, V4<br />
| ab V3 umbenannt in NOTIFICATION, wird weiterhin als ALARM angezeigt, siehe Bemerkungen.<br />
|-<br />
| MANUFACTURER_SPECIFIC<br />
| 0x72<br />
| 114<br />
| V2<br />
| V1<br />
| <br />
|-<br />
| POWERLEVEL<br />
| 0x73<br />
| 115<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| unbekannt<br />
| 0x74<br />
| 116<br />
| <br />
| <br />
| <br />
|-<br />
| PROTECTION<br />
| 0x75<br />
| 117<br />
| V2<br />
| V1, V2<br />
| <br />
|-<br />
| LOCK<br />
| 0x76<br />
| 118<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| NODE_NAMING<br />
| 0x77<br />
| 119<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| unbekannt<br />
| 0x78<br />
| 120<br />
| <br />
| <br />
| <br />
|-<br />
| unbekannt<br />
| 0x79<br />
| 121<br />
| <br />
| <br />
| <br />
|-<br />
| FIRMWARE_UPDATE_MD<br />
| 0x7A<br />
| 122<br />
| V5<br />
| V1-V4<br />
| V4 ungetestet<br />
|-<br />
| GROUPING_NAME<br />
| 0x7B<br />
| 123<br />
| V1<br />
| nein<br />
| GROUPING_NAME [DEPRECATED]<br />
|-<br />
| REMOTE_ASSOCIATION_ACTIVATE<br />
| 0x7C<br />
| 124<br />
| V1<br />
| nein<br />
| REMOTE_ASSOCIATION_ACTIVATE [OBSOLETED]<br />
|-<br />
| REMOTE_ASSOCIATION<br />
| 0x7D<br />
| 125<br />
| V1<br />
| nein<br />
| REMOTE_ASSOCIATION [OBSOLETED]<br />
|-<br />
| unbekannt<br />
| 0x7E<br />
| 126<br />
| <br />
| <br />
| <br />
|-<br />
| unbekannt<br />
| 0x7F<br />
| 127<br />
| <br />
| <br />
| <br />
|-<br />
| BATTERY<br />
| 0x80<br />
| 128<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| CLOCK<br />
| 0x81<br />
| 129<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| HAIL<br />
| 0x82<br />
| 130<br />
| V1<br />
| V1<br />
| HAIL [DEPRECATED]<br />
|-<br />
| unbekannt<br />
| 0x83<br />
| 131<br />
| <br />
| <br />
| <br />
|-<br />
| WAKE_UP<br />
| 0x84<br />
| 132<br />
| V2<br />
| V1, V2<br />
| <br />
|-<br />
| ASSOCIATION<br />
| 0x85<br />
| 133<br />
| V2<br />
| V1, V2 bei ASSOCIATION_REMOVE<br />
| <br />
|-<br />
| VERSION<br />
| 0x86<br />
| 134<br />
| V2<br />
| V1, V2<br />
| <br />
|-<br />
| INDICATOR<br />
| 0x87<br />
| 135<br />
| V2<br />
| V1<br />
| <br />
|-<br />
| PROPRIETARY<br />
| 0x88<br />
| 136<br />
| V1<br />
| nein<br />
| PROPRIETARY [DEPRECATED]<br />
|-<br />
| LANGUAGE<br />
| 0x89<br />
| 137<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| TIME<br />
| 0x8A<br />
| 138<br />
| V2<br />
| V2<br />
| <br />
|-<br />
| TIME_PARAMETERS<br />
| 0x8B<br />
| 139<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| GEOGRAPHIC_LOCATION<br />
| 0x8C<br />
| 140<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| COMPOSITE<br />
| 0x8D<br />
| 141<br />
| V?<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| MULTI_CHANNEL_ASSOCIATION<br />
| 0x8E<br />
| 142<br />
| V3<br />
| unterstützt,<br>Version noch nicht geklärt<br />
| <br />
|-<br />
| MULTI_INSTANCE_ASSOCIATION<br />
| 0x8E<br />
| 142<br />
| V1<br />
| unterstützt,<br>Version noch nicht geklärt<br />
| MULTI_INSTANCE wurde durch<br>MULTI_CHANNEL ersetzt<br />
|-<br />
| MULTI_COMMAND (MULTI_CMD)<br />
| 0x8F<br />
| 143<br />
| V1<br />
| V1<br />
| <br />
|-<br />
| ENERGY_PRODUCTION<br />
| 0x90<br />
| 144<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| MANUFACTURER_PROPRIETARY<br />
| 0x91<br />
| 145<br />
| V1<br />
| für FIB_FGRM222 implementiert<br />
| hersteller- und geräteabhängige Class<br />
|-<br />
| SCREEN_MD<br />
| 0x92<br />
| 146<br />
| V2<br />
| nein<br />
| <br />
|-<br />
| SCREEN_ATTRIBUTES<br />
| 0x93<br />
| 147<br />
| V2<br />
| nein<br />
| <br />
|-<br />
| SIMPLE_AV_CONTROL<br />
| 0x94<br />
| 148<br />
| V4<br />
| nein<br />
| <br />
|-<br />
| AV_CONTENT_DIRECTORY_MD<br />
| 0x95<br />
| 149<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| AV_RENDERER_STATUS<br />
| 0x96<br />
| 150<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| AV_CONTENT_SEARCH_MD<br />
| 0x97<br />
| 151<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| SECURITY<br />
| 0x98<br />
| 152<br />
| V1<br />
| V1<br />
| weitere Tests erforderlich<br />
|-<br />
| AV_TAGGING_MD<br />
| 0x99<br />
| 153<br />
| V1<br />
| nein<br />
| Nicht in der offiziellen Liste von Sigma Designs enthalten<br />
|-<br />
| IP_CONFIGURATION<br />
| 0x9A<br />
| 154<br />
| V1<br />
| nein<br />
| IP_CONFIGURATION [OBSOLETED]<br />
|-<br />
| ASSOCIATION_COMMAND_CONFIGURATION<br />
| 0x9B<br />
| 155<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| SENSOR_ALARM<br />
| 0x9C<br />
| 156<br />
| V1<br />
| V1<br />
| SENSOR_ALARM [DEPRECATED]<br />
|-<br />
| SILENCE_ALARM<br />
| 0x9D<br />
| 157<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| SENSOR_CONFIGURATION<br />
| 0x9E<br />
| 158<br />
| V1<br />
| nein<br />
| SENSOR_CONFIGURATION [OBSOLETED]<br />
|-<br />
| SECURITY S2<br />
| 0x9F<br />
| 159<br />
| V1<br />
| nein<br />
| <br />
|-<br />
| unbekannt<br />
| 0xA0 - 0xEE<br />
| 160 - 238<br />
| <br />
| <br />
| <br />
|-<br />
| MARK<br />
| 0xEF<br />
| 239<br />
| N/A<br />
| <br />
| Trenner im NIF<br />
|-<br />
| NON_INTEROPERABLE<br />
| 0xF0<br />
| 240<br />
| N/A<br />
| <br />
| <br />
|-<br />
| SECURITY_SCHEME0_MARK<br />
| 0xF100<br />
| 61696<br />
| N/A<br />
| <br />
| <br />
|-<br />
|}<br />
<br />
Bemerkungen:<br />
* Die Klasse MULTI_INSTANCE wurde in der Version V2 durch MULTI_CHANNEL ersetzt. MULTI_INSTANCE wird von Z-Wave nicht mehr unterstützt.<br />
* Die Klasse ALARM wurde in der Version V3 in NOTIFICATION umbenannt. Aus Kompatibilitätsgründen wird diese Klasse (0x71) in FHEM jedoch weiterhin immer als ALARM angezeigt, unabhängig von der Version. Das bedeutet, dass neuere Geräte, die laut der Produktbeschreibung NOTIFICATION unterstützen, dies in FHEM NICHT darstellen, die Funktionalitäten sind jedoch uneingeschränkt implementiert, nur eben unter dem alten Klassennamen ALARM.<br />
* Einige IDs sind für das Z-Wave Protokoll reserviert oder haben eine besondere Bedeutung:<br />
** 0x00 No Operation wird vom Z-Wave Protokoll und optional auch von den Geräten.<br />
** 0x01 - 0x1F ist reserviert für das Z-Wave Protokoll<br />
** 0x20 - 0xEE Dies ist der Bereich für die Command Classes<br />
** 0xEF Support/Control Mark, ist eine kommandolose Pseudoklasse und dient als Trenner im NIF (Node Information Frame)<br />
** 0xF0 Non interoperable<br />
** 0xF1 - 0xFF sind für (zukünftige) Erweiterungen vorgesehen (Extended Application Command Classes). Bei diesen Befehlen wird quasi auf jeweils eine andere Liste von Befehlen verwiesen, so daß hier für die Zukunft noch einige Erweiterungen möglich sind. Als eine Besonderheit ist hier bereits 0xF100 für "SECURITY_SCHEME0_MARK" vergeben.<br />
* Einige IDs sind in den unterschiedlichen Quellen unterschiedliche Klassennamen zugeordnet bzw. nicht in der offiziellen Liste von Sigma Designs enthalten:<br />
** 0x24 ZIP_SERVER / SECURITY_PANEL_MODE<br />
** 0x2E ZIP_CLIENT / SECURITY_PANELZONE<br />
** 0x2F ZIP_ADV_SERVICES / SECURITY_PANELZONE_SENSOR<br />
** 0x33 ZIP_ADV_SERVER / COLOR_CONTROL<br />
** 0x34 ZIP_ADV_CLIENT / NETWORK_MANAGEMENT_INCLUSION<br />
* Es gibt auch einige "Lücken" in den IDs die momentan unbekannt bzw. noch nicht durch Z-Wave vergeben sind, z.B.:<br />
** 0x74 116 <br />
** 0x78 120 <br />
** 0x79 121 <br />
** 0x7E 126 <br />
** 0x7F 127 <br />
** 0x83 131<br />
<br />
=== Beispiel für eine Command Class und deren Implementierung in FHEM ===<br />
Implementierungshinweise im Forum:<br />
* {{Link2Forum|Topic=12576|Message=76322}}<br />
* {{Link2Forum|Topic=26613|Message=195944}}<br />
<br />
Debugging-Hinweis im Forum:<br />
* {{Link2Forum|Topic=39270|Message=314126}}<br />
* {{Link2Forum|Topic=67296|Message=589810}}<br />
<br />
=== Quellen und Links ===<br />
* [[Z-Wave#Links]]<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Z-Wave Components|Command Classes]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Windows_-_FHEM_installieren&diff=31126Windows - FHEM installieren2019-08-14T14:00:24Z<p>Krikan: Todo aufgenommen</p>
<hr />
<div>{{Hinweis|FHEM kann unter Windows auf unterschiedliche Weise installiert werden. Eine andere Möglichkeit, FHEM als portable Software ohne Änderung der Registry unter Windows zu betreiben, ist [[FHEM Installation Windows|hier]] dargestellt.<br> There are several ways to install FHEM on a Windows computer. For instructions how to run FHEM as a portable software without changing the registry see [[FHEM Installation Windows/en|here]].}}<br />
<br />
{{Todo|Komplettaktualisierung der Seite, u.a.: <br />
* Strawberry Perl installiert seit 12/2018 das Modul Win32::SerialPort standardmäßig mit. Die im Text beschriebenen Probleme mit diesem Modul und dessen Installation bestehen seitdem nicht mehr. <br />
* Die hier beschriebenen Wege "FHEM automatisch mit Windows starten" nutzen nicht den in FHEM eingebauten Mechanismus: siehe [[FHEM_Installation_Windows#Installation_von_FHEM_als_Dienst]].}}<br />
<br />
<br />
== FHEM unter Windows 7/8/8.1 installieren ==<br />
<br />
=== Hardware bestellen ===<br />
Zur Steuerung der Komponenten vom Computer aus wird ein serieller Empfänger zum Anschluss an einen USB Port ([[CUL]]) oder ein serieller Empfänger mit Netzwerkschnittstelle ([[CUNO]]) benötigt. Ich habe diesen wie im Dokument <br />
[http://fhem.de/fhem-fuer-Einsteiger_V1.pdf fhem für Einsteiger] genannt bei busware.de bestellt und zwar mit den Optionen <br />
<br />
* Abschirmung: ohne<br />
* Antenne: Draht (gemäß busware-FAQ empfohlen)<br />
* Gehäuse: Plastik transparent<br />
* USB-Verlängerung: ohne<br />
<br />
Nach wenigen Tagen wurde dieser geliefert. Das „flashen“ erfolgte nach „fhem für Einsteiger“:<br />
<br />
# FLIP runterladen (Programm zum flashen des ROMs auf dem CUL) von <nowiki>[http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886 http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886]</nowiki> <br />
Habe die Version FLIP 3.4.3 for Windows (requires Java Runtime Environment) runtergeladen und verwendet<br />
# CUL in den Rechner stecken (beim einstecken Mikroschalter gedrückt halten!), dann zum installieren des USB-Treibers: Im Windows Gerätemanager den device ATMEL xxxx anklicken, Eigenschaften, Gerätetreiber aktualisieren, von Festplatte, Verzeichnis c:\Programme\Atmel\Flip 3.4.3\USB auswählen und Treiber installieren lassen.<br />
# CUL-Firmware (Hex) für FHEM runterladen von <nowiki>[http://cvs.berlios.de/cgi-bin/viewvc.cgi/culfw/culfw/Devices/CUL/ http://cvs.berlios.de/cgi-bin/viewvc.cgi/culfw/culfw/Devices/CUL/]</nowiki> (Version passend zur CUL-Hardware-Version auswählen, bei mir CUL-Hardware-Version V3.2, also hex V3)<br />
# Flip starten, unter ‚select device‘ exakt den Chip auswählen, der als Name des CUL im Geräte-Manager angezeigt wird (je nach Modell, zB ATU822U4), danach in der Flip Symbolleiste auf den 2. Button von links klicken (auch wenn der grau sein sollte – funktioniert trotzdem) und ‚USB‘ auswählen. Sollte hier eine Fehlermeldung auftauchen, hat Schritt 2 nicht geklappt oder es wurde der falsche Chip ausgewählt. Dann mittels Menü Datei das bei Schritt 3 geladene hex-file nach Flip einlesen und mit button unten links auf den CUL flashen<br />
# Wenn der CUL nach Abziehen und erneut in den Rechner stecken langsam grün blinkt, hat’s wohl geklappt.<br />
<br />
=== CUL Treiber installieren ===<br />
Nach dem Anstecken an einen USB Port wird der CUL im Windows Geräte-Manager erst einmal als unbekanntes Gerät (Gerät ohne Treiber) gelistet. Bevor der CUL868 als COM-Port sichtbar wird, muss noch der Windows-Treiber für den CUL868 installiert werden. Dieser muss erst einmal von busware heruntergeladen werden:<br />
<br />
[http://www.busware.de/tiki-download_file.php?fileId=8 http://www.busware.de/tiki-download_file.php?fileId=8]<br />
<br />
Man speichert die Datei irgendwo hin, rechtsklickt im Windows Geräte-Manager den gelb markierten CUL868 und wählt "Treibersoftware aktualisieren". Im darauffolgenden Dialog wählt man "Auf dem Computer nach Treibersoftware suchen" und zeigt dem Geräte-Manager das Verzeichnis, in dem man die CUL.inf abgelegt hat. Fertig, oder na ja, fast fertig: leider gerät diese Datei neuerdings in die Mühle der Microsoft Treibersignatur-Prüfung, und fällt natürlich durch, weil die inf Datei nicht signiert ist.<br />
<br />
Bei Windows 7 führt das nur zu einer empörten Sicherheits-Warnung des Geräte-Managers, die man quittieren kann, und danach ist der Treiber installiert.<br />
<br />
Ab Windows 8 wurde die Sicherheits-Schraube enger angezogen, jetzt kann man die Signaturprüfung leider nicht mehr ignorieren. Statt dessen muss man Windows in einem speziellen Modus starten, um unsignierte Treiber nützen zu dürfen. Dazu gibt es x Wege und y Anleitungen, hier der Weg den ich empfehle (aufgezeichnet mit Windows 8.1, Windows 8 sollte nicht viel anders gehen):<br />
<br />
- starte eine Eingabezeile (mit administrativen Rechten) und gib den Befehl<br />
<br />
<code>shutdown /r /o /f /t 0</code><br />
<br />
ein. Du erhältst ein Menü zur "Problembehandlung", wähle dort "Erweiterte Optionen" und weiters "Starteinstellungen". Auf diesem Bildschirm befindet sich ein Button "Neu Starten", den Du drückst. Der Rechner macht einen Neustart, beim Hochfahren kommst Du automatisch ins Windows Menü "Starteinstellungen" (das man früher mit <F8> aufrufen konnte, was nun aber nicht mehr so geht). Dort wählst Du Punkt 7: "Erzwingen der Treibersignatur deaktiveren". Jetzt startet Windows eine Sitzung mit abgeschalteter Signaturprüfung, und nun kannst Du die CUL.inf wie oben beschrieben über den Geräte-Manager einspielen. Der motzt zwar noch, dass "Der Herausgeber der Treibersoftware nicht überprüft werden konnte", aber man kann die Meldung mit "Diese Treibersoftware trotzdem installieren" übergehen, und danach ist der CUL Treiber aktiviert. Die Einstellung gilt bis zum nächsten Reboot, man muss sie also nicht wieder rücksetzen, das macht der nächste Reboot von selbst.<br />
<br />
Eigentlich ist das Ganze eine Farce, weil der Microsoft Treiber "usbser.sys", der den CUL letztendlich ansteuert, bei Windows mit dabei und selbstverständlich signiert ist. Die CUL.inf enthält also gar keinen Treiber, lediglich die Konfigurationsroutine für einen schon bestehenden (signierten) Treiber, aber die CUL.inf selber ist eben nicht signiert. Nach der erfolgreichen Installation wird die .inf nicht mehr benötigt, daher kann die Signaturprüfung ruhig wieder eingeschaltet werden. Wäre dagegen ein spezieller Treiber nötig gewesen (.sys), und wäre dieser auch nicht signiert, müsste man sich etwas einfallen lassen, die Treibersignaturprüfung für alle Zeiten auszuschalten - ein Reboot setzt sie ja wie schon erwähnt wieder aktiv, und der unsignierte Treiber würde nicht mehr geladen. Auch dafür gibt es Tools und Wege, aber wie gesagt, für den Betrieb des CUL ist das nicht notwendig, weil der eigentliche Treiber usbser.sys signiert ist.<br />
=== Perl installieren ===<br />
Die folgende Anleitung wurde mit Windows 7 / Windows 2008 Server (64-Bit) erstellt und getestet, andere Windows Versionen funktionieren mit geringfügigen Abweichungen bei den Verzeichnisnamen gleich. "C:\Program Files" heißt eventuell "C:\Programme" (Windows XP), oder "C:\Program Files (x64)" (32-Bit Perl auf 64-Bit Windows), und auch der vorgeschlagene Perl Verzeichnisname variiert je nach Version (Perl / Perl64).<br />
<br />
Da FHEM einen Perl Interpreter benötigt, und Windows keinen mitbringt, muss man sich zuerst für einen Perl Interpreter entscheiden. Derzeit sind unter Windows zwei kostenlose Varianten von Perl verbreitet, die beide gleichermaßen für den Betrieb von FHEM geeignet sind: ActivePerl Community Editon ([//http://www.activestate.com/activeperl]) und Strawberry Perl ([http://strawberryperl.com/]).<br />
<br />
ACHTUNG! Benutzer von 64-Bit Windows Versionen können sich theoretisch aussuchen, ob sie lieber die 32- oder die 64-Bit Version von ActiveState- oder Strawberry Perl verwenden. In den derzeit aktuellsten Versionen beider Perl Varianten (11/2014) funktioneren die 64-Bit Versionen der Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) nicht zufriedenstellend. Die Installation der 64-Bit Bibliothek bereitet bereits erhebliche Probleme, und als Lohn der Mühe bleibt der COM Port des CUL im Zustand "opened" stecken, laut Perl Konsole weil der Code wegen uninitialisierter Variablen abbricht. Es existiert derzeit meines Wissens keine FHEM kompatible 64-Bit Version von Win32::SerialPort. Ich kann deshalb derzeit für FHEM nur die 32-Bit Version von Perl uneingeschränkt empfehlen, außer man kann sicher ausschließen, dass man jemals serielle Geräte nützen möchte.<br />
<br />
==== ActivePerl installieren ====<br />
ActiveState bietet Privatleuten seit Jahren eine kostenlose "Community Edition" seines kommerziellen Perl Interpreters an, der für FHEM völlig ausreicht. Im Moment (11/2014) spricht nichts dagegen, diese Version einzusetzen, da einem weder Werbung auf- noch eine Registrierung abgenötigt wird. Gegenüber Strawberry Perl punktet ActiveState Perl mit einer deutlich besseren Installationsroutine, sie lässt sich besser anpassen und hat den lästigen COM1 Bug nicht, mit dem Strawberry Perl Benutzern serieller Empfänger (CUL) erst einmal eine unnötige Installationshürde in den Weg stellt.<br />
<br />
Nach dem Download der Community Edition von ActiveState Perl ([//http://www.activestate.com/activeperl]) (ich empfehle derzeit auch für 64-Bit Systeme die 32-Bit Version zu installieren - Details siehe oben) startet man den Installer...<br />
<br />
[[Datei:Activeperl downloadl.png]]<br />
<br />
... und los gehts.<br />
<br />
[[Datei:Activeperl welcome.png]]<br />
<br />
Nach dem Quittieren einer EULA kann man, wenn man möchte, ein wenig Platz sparen und das Perl Installationsverzeichnis Windows-like richtig einsortieren. Der aktuelle Installer (Stand 11/2014, V5.16.3) hat allerdings einen seltsamen Bug: wenn man den Installationspfad anpassen möchte muss man das tun, bevor man eventuell auch noch viel Zeit und ein wenig Platz spart, und die Installation der für FHEM unnötigen Perl Dokumentation und der Beispiele abwählt. Sobald man eine diese Optionen ändert wird das Eingabefeld für den Installationspfad aus dem Dialog entfernt. Ändert man erst den Pfad, und danach die Optionen, klappt es.<br />
<br />
[[Datei:Activeperl install.png]]<br />
<br />
Wer keinen Wert auf Optimierung legt, kann auch alle Dialoge mit den Standardwerten übernehmen, Perl landet dann allerdings wenig Windows-like im Verzeichnis C:\Perl, und die Installation dauert deutlich länger.<br />
<br />
Nach Abschluss der Installation kann man Perl kurz testen, indem man sich die Versionsnummer des Interpreters anzeigen lässt. Wichtig ist, dass man die dazu notwendige Kommandozeile erst '''nach''' Abschluss der Perl Installation öffnet, damit die aktuellste PATH Variable verwendet wird. Der Befehl zum Auslesen der Perl Version lautet<br />
<br />
<code>perl -v</code><br />
<br />
[[Datei:Activeperl installcheck.png]]<br />
<br />
Als letzten Perl Installationsschritt müssen Anwender, die serielle Empfänger (CUL) verwenden, noch die Perl Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) herunterladen und installieren, sie gehört nicht (mehr) zum Standardlieferumfang von Perl. Der Befehl dazu lautet<br />
<br />
<pre>ppm install Win32-SerialPort</pre><br />
[[Datei:Activeperl installserial.png]]<br />
<br />
... und damit ist die Perl Installation fit gemacht für serielle Empfänger.<br />
<br />
Anmerkung: das Alternativprodukt "Strawberry Perl" - siehe nächster Abschnitt - hat einen unangenehmen Installations-Bug der zuschlägt, wenn der Computer keinen seriellen Port COM1 hat. ActiveState Perl hat diesen Bug nicht.<br />
<br />
==== Strawberry Perl installieren ====<br />
Wem ActiveState Perl zu kommerziell angehaucht erscheint, der kann statt dessen das quelloffene Strawberry Perl verwenden. Der Installationsweg ist geringfügig anders, und im Detail auch etwas hakeliger, aber aus Sicht von FHEM sind nach der Installation beide Versionen gleich gut geeignet. Als Vorteil von Strawberry Perl werten manche, dass Strawberry Perl als Open Source vorliegt und zumindest derzeit keine kommerziellen Ambitionen zeigt.<br />
<br />
Nach dem Download von Strawberry Perl ([http://strawberryperl.com/]) (ich empfehle derzeit auch für 64-Bit Systeme die 32-Bit Version zu installieren - Details siehe oben) startet man den Installer...<br />
<br />
[[Datei:Strawberry download.png]]<br />
<br />
...und los gehts.<br />
<br />
[[Datei:Strawberry welcome.png]]<br />
<br />
Nach dem Quittieren einer EULA kann man den Installationspfad verändern, wenn man möchte. Im Unterschied zu ActiveState Perl verweigert Strawberry Perl allerdings die Installation in das Windows Programmverzeichnis ("C:\Program Files" bzw. "C:\Program Files (x86)", weil es im Dateipfad weder Leer- noch Sonderzeichen duldet. Man wird daher wohl am zweitbesten beim Standard "C:\Strawberry" bleiben, obwohl das nicht gerade Windows-like ist.<br />
<br />
[[Datei:Strawberry folder.png]]<br />
<br />
Nach Abschluss der Installation kann man Perl kurz testen, indem man sich die Versionsnummer des Interpreters anzeigen lässt. Wichtig ist, dass man die dazu notwendige Kommandozeile erst '''nach''' Abschluss der Perl Installation öffnet, damit die aktuellste PATH Variable verwendet wird. Der Befehl zum Auslesen der Perl Version lautet<br />
<br />
<code>perl -v</code><br />
<br />
[[Datei:Strawberry versioncheck.png]]<br />
<br />
Als letzten Perl Installationsschritt müssen Anwender, die serielle Empfänger (CUL) verwenden, noch die Bibliothek zur Ansteuerung serieller Geräte (Win32::SerialPort) herunterladen und installieren, sie gehört nicht (mehr) zum Standardlieferumfang von Perl. Der Befehl dazu lautet<br />
<br />
<code>perl -MCPAN -e "install Win32::SerialPort"</code><br />
<br />
[[Datei:Strawberry serialinstall.png]]<br />
<br />
Leider hat es der Programmierer des Makefiles etwas zu gut mit der Welt gemeint: am Anfang des Prozesses wird das Funktionieren der Bibliothek getestet, und die Testroutine ist hart auf den seriellen Port COM1 codiert. Computer, die keinen COM1 Port haben, können die serielle Bibliothek nicht automatisch installieren, perl -MCPAN ... bricht bereits nach wenigen Zeilen ab:<br />
<br />
[[Datei:Strawberry failcom1.png]]<br />
<br />
Um manuell nachzuhelfen, wartet man das Ende von perl -MCPAN ... ab, und ignoriert alle Fehlermeldungen. Danach wechselt man in das Make-Verzeichnis der seriellen Bibliothek:<br />
<br />
<code>cd /D "C:\Strawberry\cpan\build\Win32-SerialPort-0.22-xxxxxx"</code><br />
<br />
wobei der hinterste Teil (...-xxxxxx) des Pfades leider per Zufall generiert wird, und daher bei jeder Installation anders ist - man muss den Verzeichnisnamen auf dem Rechner selber heraussuchen. Im richtigen Verzeichnis angekommen, wirft man die Installation der Bibliothek von Hand an. Dabei muss man einen existierenden COM Port angeben, auf meinem Testsystem machte es sich der CUL laut Windows Geräte-Manager auf COM4 bequem, einen anderen seriellen Port hat die Maschine nicht, also musste der CUL Port als Testport herhalten.<br />
<br />
<code>perl makefile.pl TESTPORT=COM4</code><br />
<br />
[[Datei:Strawberry cominstall 1.png]]<br />
<br />
Der Befehl testet das Vorhandensein des angegebenen COM Ports und generiert danach unter anderem die Datei nomake_install.pl, die man für den nächsten (und Gott sei Dank letzten) Schritt benötigt:<br />
<br />
<nowiki>perl nomake_install</nowiki><br />
<br />
[[Datei:Strawberry cominstall 3.png]]<br />
<br />
Puh, geschafft. Man könnte nun auch noch den COM Port Test mit "perl nomake_test" anschubsen, aber dieser kommt meinen Tests zufolge mit einem CUL COM Port nicht zurecht und spuckt nur wirre Fehlermeldungen aus. FHEM funktioniert aber auch ohne Test, sobald nomake_install gelaufen ist. Und da der ganze Voodoo nur nötig ist, um eine übereifrige Installationsroutine auszutricksen, braucht man das nie mehr zu widerholen, selbst wenn sich der COM Port des CUL ändert, oder wenn andere serielle Geräte dazu kommen sollten.<br />
=== FHEM extrahieren und anpassen und manuell starten ===<br />
Nach dem Download von FHEM als .tar.gz Datei muss diese mittels eines Entpacker-Tools (ich empfehle 7-Zip) in zwei Schritten extrahiert werden: der erste Schritt extrahiert aus der .tar.gz Datei die darin enthaltene .tar Datei, und wenn man diese wiederum entpackt erhält man das eigentliche FHEM Verzeichnis.<br />
Wo genau man nun das FHEM Verzeichnis letztendlich hin speichert ist eine Geschmacksfrage, ich weise lediglich darauf hin, dass FHEM Schreibrechte in seine Verzeichnisse benötigt, sonst kann man weder Konfigurationen speichern noch Daten aufzeichnen. Für die einfachste Konfiguration, nämlich FHEM mit dem Benutzer-Account zu betreiben, mit dem man das Programm heruntergeladen und installiert hat, bietet es sich an, FHEM in irgendein Unterverzeichnis des Ordners "Dokumente" des Benutzers zu speichern, da der Benutzer auf Grund der voreingestellten Rechtevererbung auf diesen Ordner und alle Unterordner automatisch Vollzugriff erhält.<br />
Wählt man einen anderen Ordner (z.B. c:\Programme\FHEM-5.x) und/oder einen anderen Benutzer-Account (z.B. um FHEM später im Hintergrund als Systemdienst laufen zu lassen) muss man die Ordnerberechtigungen entsprechend anpassen.<br />
<br />
Danach kann der FHEM-Server gestartet werden mittels<br />
<br />
* CMD (Befehlszeile) aufrufen<br />
* Mit CD ins Verzeichnis wechseln, in welches man FHEM kopiert hat<br />
* Den Befehl <code>perl fhem.pl fhem.cfg</code> eingeben<br />
<br />
oder man erstellt sich noch schnell eine Stapeldatei, ich nenne sie "StartFHEM.bat", die man im FHEM Verzeichnis (da wo sich auch fhem.pl und fhem.cfg befinden) speichert, dann kann man FHEM über einen Doppelklick von der Windows GUI aus starten:<br />
<br />
<pre>set FHEMDir=%~dp0<br />
set FHEMDir=%FHEMDir:"=%<br />
cd /d "%FHEMDir%"<br />
start perl fhem.pl fhem.cfg</pre><br />
<br />
Ein Doppelklick auf die Datei startet nun den PERL Interpreter mit allen notwendigen Parametern, und ein Fenster mit einer (leeren) FHEM Konsole erscheint. Schließt man das Fenster, beendet man auch FHEM.<br />
<br />
Wenn FHEM Läuft, kann man FHEM im Browser unter <code>[http://localhost:8083/fhem http://localhost:8083/fhem]</code> aufrufen. Ohne weitere Konfiguration erscheint erst einmal die leere FHEM Hauptseite mit einigen allgemeinen Links und Hinweistexten. Jetzt können geräte angelernt und es kann mit dem System gearbeitet werden. Nähere Infos hierzu sind dem bereits mehrfach erwähnten Dokument „fhem für Einsteiger“ zu entnehmen. [[Kategorie:HOWTOS]]<br />
== Windows Firewall für FHEM konfigurieren ==<br />
Wer Windows mit eingeschalteter Windows Firewall betreibt (was empfohlen wird) muss den FHEM Port von außen zugänglich machen. Der Mechnismus ist verwandt mit der Portfreigabe, die man auf Routern eintragen muss, wenn man FHEM aus dem Internet heraus ansprechen möchte. Für eine Benützung im LAN genügt es, die Windows Firewall gegenüber anderen LAN Geräten zu öffnen, will man vom Internet aus zugreifen ist zusätzlich(!) auch noch eine Portfreigabe mit NAT im Router einzutragen.<br />
Windows fordert den Benutzer beim ersten Start einer Software, die Netzwerkdienste nach außen bereitstellen möchte, automatisch auf, die Portfreigabe zu bestätigen.<br><br />
[[Datei:Windows_firewall_auto.png]]<br><br />
Windows fragt nur ein Mal - lehnt man das ab, hat man die Chance vertan und muss die Windows Firewall von Hand konfigurieren. Daher macht es Sinn, FHEM mindestens einmal von Hand zu starten, bevor man es als Dienst laufen lässt.<br><br />
''Hinweis: der Windows Firewallregelassistent ist recht freigiebig und gibt, wenn man den Zugriff zulässt, alle Ports für perl.exe frei. Andert man die FHEM Ports nachträglich, muss man die Firewall-Ports deshalb nicht nachpflegen''<br><br />
Selbstverstndlich kann man die FHEM Portfreigabe auch direkt in die Windows Firewall einpflegen, oder die Eingtragung kontrollieren oder ändern wenn nötig. Da FHEM als interpretierter Code innerhalb des PERL Interpreters läuft, muss bei der Portfreigabe perl.exe als berechtigtes Programm angegeben werden.<br><br />
Man gelangt zur Windows Firewall Konfiguration über "Start" - "Systemsteuerung" - "System und Sicherheit" - "Windows-Firewall" - "Erweiterte Einstellungen" - "Eingehende Regeln". Der Screenshot zeigt die Standardregeln, die der Windows Assistent automatisch erzeugt, wenn man ihm FHEM (bzw. PERL) beim Erststart von FHEM den Zugriff erlaubt.<br><br />
[[Datei:Windows_Firewall_Advanced.png]]<br><br />
Eine ausführliche Behandlung der Windows Firewall würde den Rahmen dieses Artikels sprengen, es gibt aber unzähliche Internetquellen dazu. Besonders aufmerksam sollte man die Querverbindungen in die Windows Standorterkennung beachten, diese orientiert sich an der MAC Adresse des Standardgateways. Gibt man FHEM nicht für alle Profile, incl. "öffentlich" frei, kann ein Hardwarewechsel des Internetrouters FHEM - wie viele andere Windows Programme auch - erst einmal lahmlegen.<br><br />
Wenn man Zugriffsprobleme auf die FHEM Oberfläche hat, obwohl FHEM augenscheinlich läuft, liegt es nahe, die Windows Firewall als Ursache zu vermuten. Man kann die Firewall dann tesweiset über die Systemsteuerung kurz abschalten um zu testen ob es daran liegt. Der Weg dahin ist: "Start" - "Systemsteuerung" - "System und Sicherheit" - "Windows-Firewall" - "Windows Firewall ein- oder ausschalten".<br><br />
[[Datei:Windows_Firewall_Off.png]]<br><br />
Ein Dauerbetrieb mit abgeschalteter Firewall ist aus Sicherheitsgründen nicht zu empfehlen.<br />
<br />
== Rechner im Dauerbetrieb halten - Energiesparplan anpassen ==<br />
Windows kann mit seinen zahllosen voreingestellten Segnungen ab und zu ein ziemlicher Spielverderber sein. Normale Windows Clients werden von Microsoft so eingestellt, dass sie automatisch in den Standby Modus gehen, wenn eine Weile lang keine Tastatur- oder Mauseingaben erfolgen. Für Dauerbetrieb muss man daher den aktuell eingestellten Energiesparplan ändern und ihn so einstellen, dass der Rechner nicht in den Energiespar-Modus wechselt.<br><br />
Wer es sich einfach machen möchte, wählt einfach den Energiesparplan "Höchste Leistung", aber das ist irgendwie Overkill für FHEM, weil dann auch viele Energiesparmaßnahmen, die FHEM nicht stören, aber der Stromrechung zugute kommen, mit abgeschaltet werden. Es bietet sich an, den Energieoption "Energiesparmodus" als Ausgangsbasis zu nehmen, und dort die Einstellung "Energiesparmodus nach:" auf "Niemals" zu setzen.<br><br />
[[Datei:Windows_Powersave_Config.png]]<br><br />
Zu den Energieeinstellungen gelangt man über "Start" - "Systemsteuerung" - "System und Sicherheit" - "Energieoptionen".<br><br />
<br />
== Rechner automatisch starten ==<br />
Wenn man den FHEM Rechner eingeschaltet hat, schaltet man ihn normalerweise nicht mehr aus. Ein Stromausfall könnte den Rechner aber lahmlegen, sofern er danach nicht von selbst wieder startet. Diese unterste Ebene des Autostarts ist die Basis für den nachfolgend beschriebenen Autostart der FHEM Software. Man kann den Autostart der Hardware auf zwei Arten lösen. Die Einfache: viele BIOS Varianten haben eine Option mit einem Namen wie "AC Back Function" (Beispiel aus dem Award BIOS, zu finden unter "Power Management"). Steht sie auf "Full-On" (Award) schaltet sich der Rechner automatisch ein, wenn die Netzspannung wieder zurückkommt. Das Award BIOS hat auch noch Varianten, bei denen der Rechner nur dann einschaltet, wenn er vor dem Stromausfall eingeschaltet war.<br />
<-- Screenshot AWARD BIOS Power on --><br />
Für viele Computer, die kein solches BIOS haben, ist dennoch nicht alles verloren: man kann als halbwegs Elektronik affiner Bastler einen kleinen Kondensator (Elko, einige 10uF, Wert ausprobieren, Polarität beachten) parallel zu den Kontakten des Einschaltknopfs löten, und bekommt den gleichen Effekt: der Kondensator startet den Rechner, sobald das Rechnernetzteil wieder Strom bekommt. Es sind im Internet auch verschiedene Schaltungen zu finden, die das noch etwas "waidmännischer" machen, und die wohl - so liest man - beim einen oer anderen Board nötig sind, weil bei manchen der Kondensatortrick nicht (mehr?) zu funktionieren scheint.<br />
== FHEM automatisch mit Windows starten ==<br />
Für den Anfang wird man FHEM von Hand starten, das ist sogar notwendig, um beim ersten Start von FHEM den Assistenten zur Konfiguration der Windows Firewall richtig einstellen zu können. Spätestens wenn der Rechner einmal unvorhergesehen neu startet, sei es durch ein "wichtiges" Windows Update, oder einen Stromausfall, wird man sich wünschen, dass FHEM automatisch mit dem Rechner mit startet. Ich beschreibe im Folgenden die beiden wahrscheinlich häufigsten Methoden, um das zu erreichen. Es gibt auch noch andere, z.B. Load- oder Run Anweisungen in der Windows Registry, Startup- oder Login-Scripte und noch einige mehr, alle sind der "Autostart" Methode, sehr ähnlich.<br />
=== Die "Autostart" Methode ===<br />
Die "Autostart" Methode ist auch für Windows Neulinge gut zu beherrschen, und eigent sich auch als Vorarbeit für die "Hintergrunddienst" Methode. Man kann alle Programmaktivitäten ganz normal am Bidschirm sehen, was die Fehlersuche sehr erleichtert. Der prinzipbedingte Nachteil dieser Methode besteht darin, dass FHEM nur so lange läuft, wie der Benutzer nicht abgemeldet wird.<br />
==== AutoLogin/AutoLogon einrichten ====<br />
Ein Autologon sorgt dafür, dass sich der Computer nach einem Neustart automatisch mit einem bestimmten Benutzerkonto anmeldet. In der einfachsten Form braucht man dafür überhaupt nichts zu tun: so lange man bei einem Windows 7 Rechner, der nicht Windows Active-Directory Domänenmitglied ist, dem Konto, das bei der Standardinstallation automatisch angelegt wurde, kein Passwort zuweist, und keine weiteren Konten anlegt bzw. aktiviert, meldet sich Windows bei jedem Start vollautomatisch mit diesem Konto an. Das sind natürlich sehr enge Rahmenbedingungen, und wer hat schon gerne einen unversperrten Windows PC 24/7 herumstehen, aber wen das nicht weiter stört, der kann den folgenden Abschnitt überspringen und bei "Autostart konfigurieren" weiterlesen.<br><br />
Für den Anmeldeschirm nach dem Start des Computers ist der Winlogon Prozess zuständig. Er hatte immer schon die Möglichkeit, Benutzername und Passwort nicht nur von der Tastatur, sondern auch aus der Windows Registry entgegen zu nehmen - in den moderneren Windows Versionen sogar in verschlüsselter Form. Zum Setzen der benötigten Einträge gibt es viele Wege, von der manuellen Methode mit dem Registry-Editor bis zu zahlreichen Tools, ich zeige stellvertretend das freie "Autologon" Tool von Sysinternals [http://technet.microsoft.com/de-de/sysinternals/bb963905.aspx].<br><br />
Nach dem Start des Tools und dem Abnicken eines Lizenzvertrages sieht man folgenden Bildschirm:<br><br />
[[Datei:Autologon_Main.png]]<br><br />
''Notwendige Angaben''<br><br />
''Username:'' Benutzername für die automatische Anmeldung<br><br />
''Domain:'' der eigene Computername, bzw. der Name der Active Directory Domäne (wenn man eine hat)<br><br />
''Password:'' das Kennwort des Benutzers (wird verschlüsselt gespeichert)<br><br />
[[Datei:AutoLogon_Confim.png]]<br><br />
Nach dem Setzen der Einträge kann man Windows testweise neu starten lassen - und der mit Autologon eingetragene Benutzer wird automatisch mit seinem Passwort angemeldet. Für mehr Zugriffsschutz kann man nun auch den passwortgeschützten Bildschirmschoner aktivieren, und damit ein gewisses Maß an Zugriffsschutz auf den Rechner erreichen. Nach dem Autologon muss man nur noch FHEM starten, und fertig.<br><br />
''Hinweis: man kann einen aktivierten Autologon außer Kraft setzen, indem man während des Windows Starts die rechte Hochstelltaste (Shift) gedrückt hält, bis der Anmeldebildschirm erscheint''<br />
<br />
==== FHEM über eine Link-Datei (.lnk) starten ====<br />
Wenn man nur FHEM alleine starten möchte, ist die billigste Variante, eine Link (.lnk) Datei in den Autostart Ordner eines Benutzers zu legen, und für ihn einen Autologon (siehe vorigen Abschnitt) zu konfigurieren.<br><br />
Nachdem man sich mit dem Benutzerkonto angemeldet hat, öffnet man den Autostart Ordner des Benutzers über die Sequenz "Start" - "Alle Programme" - (Rechtsmausklick)"Autostart" - "Öffnen"<br>.<br />
[[Datei:Autostart_OpenFolder.png]]<br><br />
Es öffnet sich ein Fenster, in dem ggf. bereits exitierende Autostarts aufgelistet werden. Man fügt einen neuen Autostart hinzu, indem man irgendwo im leeren Fensterbereich (Rechtsmausklick)"Neue Verknüpfung" wählt. Es öffnet sich der Dialog zum Erstellen neuer Verknüpfungen.<br><br />
[[Datei:Autostart_CreateLink.png]]<br><br />
''Notwendige Angaben''<br><br />
''Eigabefeld "... Speicherort des Elements ..."'': "Pfad zum PERL Interpreter" - Leerzeichen - "fhem.pl" - Leerzeichen - "Name der FHEM Konfigurationsdatei" (idR "fhem.cfg"). Siehe Screenshot.<br><br />
Noch Klick auf "Weiter" folgt ein Dialog, in dem man dem Link irgendeinen Namen geben kann, ich habe ihn "Starte FHEM" genannt. Nach Klick auf "Beenden" wird der Link erstellt, aber er ist noch nicht ganz fertig.<br><br />
Damit der Link funktioniert, ist noch eine Änderung erforderlich, und eine weitere Änderung ist unter Umständen nützlich. Um den gerade erstellten Link zu ändern, muss man mit (Rechtsmausklick)Eigenschaften seine Einstellungen öffnen.<br><br />
[[Datei:Autostart_ModifyLink.png]]<br><br />
''Notwendige Angaben''<br><br />
''Ausführen in:'' Dateipfad (in Hochkommas) in dem FHEM installiert wurde.<br><br />
Ob man zusätzlich in der Auswahlliste ''"Ausführen"'' den Fenstermodus von "Normales Fenster" (Default) auf "Minimiert" (Das FHEM Fenster erscheint erst einmal nur in der Taskleiste, von wo man es bei Bedarf durch Anklicken auf den Bildschirm holen kann) ist Geschmackssache, ich finde es nützlich.<br><br />
Zum Testen kann man den neu erstellten Link jetzt per Doppelklick starten.<br><br />
[[Datei:Autostart_Success.png]]<br><br />
Wenn alles richtig installiert und eingestellt wurde, öffnet sich die FHEM Konsole. Solange alles gut läuft ist die FHEM Konsole nicht gerade gesprächig, aber wenn sie sich nicht sofort wieder schließt ist alles OK, und man kann sich jetzt mit dem Browser zur FHEM Benutzeroberfläche verbinden.<br><br />
Und dann kommt natürlich noch der letzte, entscheidende Test: nach jedem Login muss sich nun automatisch auch FHEM starten, entweder als Fenser, oder minimiert in der Tasklsiste. Zusammen mit dem vorstehend beschrieben automatischen Login ergibt sich ein selbstanmeldendes und selbststartendes FHEM. Es hat nur noch einen kleinen Schönheitsfehler: schließt man das FHEM Fenster versehentlich, wird FHEM beendet. Vor allem bei Computern, auf denen parallel zu FHEM auch gearbeitet wird, ist die folgend beschriebene Methode, FHEM im Hintergrund laufen zu lassen, besser geeignet.<br />
<br />
=== FHEM im Hintergrund als Windows Task starten ===<br />
Lässt man FHEM als Prozess im Hintergrund laufen, wird FHEM auch ausgeführt, wenn man sich überhaupt nicht anmeldet, folglich kann man sich das Autologon-Tool sparen. Es ist auch nicht möglich, FHEM durch einen versehentlichen Logout zu beenden, man muss FHEM - mit Administratorrechten - über die Windows Tools "Aufgabenplanung" bzw. "Task-Manager" stoppen.<br />
Nachteilig an dieser Betriebsart ist, dass man die Konsole von FHEM nicht mehr sehen kann, da im Hintergrud laufende Prozesse keine Bildschirmausgaben machen können. Die Fehlersuche wird daher etwas schwieriger. Ich gehe in der Praxis so vor, dass ich FHEM erst eine Weile mit der Autostart Methode laufen lasse, um die Konsole zu sehen. Wenn ich dann sicher bin, dass ich die Konfiguration fehlerfrei hinbekommen habe, und wenn FHEM stail läuft, verbanne ich es in den Hintergrund.<br />
Eins muss man sich vorher noch überlegen, ob man FHEM im Systemkontext (uneingeschränkte Rechte - Konto "SYSTEM") laufen lassen möchte, oder ob man ein eingeschränktes Benutzerkonto für FHEM erstellt. Ich möchte jetzt aber nicht auf das Thema Windows Sicherheit und FHEM auch noch eingehen, wer FHEM nur im eigenen Heimnetz betreibt kann das ziemlich entspannt sehen, wer FHEM allerdings per Portfreigabe durch seinen Router hindurch ins Internet stellt sollte dem Thema "Sicherheit" sehr viel mehr Aufmerksamkeit zukommen lassen - aber das würde den Rahmen dieser Anleitung endgültig sprengen.<br />
==== Einen Hintergrundprozess für FHEM konfigurieren ====<br />
Um FHEM als im Hintergrund auszuführen, muss man unter "Start" - "Systemsteuerung" - "System und Sicherheit" - "Verwaltung" - "Aufgaben planen" eine neue "Geplante Aufgabe" erstellen.<br><br />
[[Datei:Scheduler_NewTask.png]]<br><br />
Der Dialog "Aufgabe erstellen" erscheint, er hat fünf Karteikarten zur Einstellung der "Geplanten Aufgabe"<br><br />
[[Datei:Scheduler_NewTask_Common.png]]<br><br />
'''Karteikarte: "Allgemein"<br>'''<br />
Folgende Eingaben sind zu machen:<br><br />
''Name:'' Irgendein Name für den Task<br><br />
''Benutzerkonto:'' Unter "Benutzer oder Gruppe auswählen" entweder "SYSTEM" eingeben oder ein Benutzerkonto wählen<br><br />
''Anmerkung: wenn man ein Benutzerkonto verwendet, wird man aufgefordert, das Passwort zu hinterlegen. Das Passwort darf sich nicht ändern, deshalb muss man in den Konten-Einstellungen des Benutzerkontos die Option "Kennwort läuft nie ab" setzen, sonst läuft der FHEM Task nur einige Wochen lang, bis er mit einem Anmeldefehler abbricht. Es empfiehlt sich außerdem, dem Benutzerkonto so viele Berechtigungen als möglich wegzunehmen, dies vor allem dann, wenn man seinen FHEM Server per Portfreigabe ins Internet stellt. Wenn FHEM unter "SYSTEM" läuft würde ich meine FHEM Dienste überhaupt niemals nicht ins Internet stellen, dieses Konto lässt sich nicht einschränken, und hat alle Berechtigungen überall hin.''<br><br />
'''Karteikarte: Trigger'''<br><br />
[[Datei:Scheduler_NewTask_Trigger.png]]<br><br />
Folgende Eingaben sind zu machen:<br><br />
''Aufgabe starten:'' beim Start (des Computers/Betriebssystems)<br><br />
''Aktiviert'': akivieren<br><br />
'''Karteikarte Action'''<br><br />
[[Datei:Scheduler_NewTask_Action.png]]<br><br />
Folgende Eingaben sind zu machen:<br><br />
''Aktion:'' Programm starten<br><br />
''Programm/Script:'' Pfad zum PERL Interpreter, in Hochkomma<br><br />
''Argumene:'' fhem.pl - Leerzeichen - Name der FHEM Konfigurationsdatei (idR "fhem.cfg") <br><br />
''Starten in:'' das Verzeichnis, in dem FHEM installiert wurde, also wo sich fhem.pl und fhem.cfg befinden, und zwar - kurioserweise - '''keinesfalls''' in Hochkomma eingeschlossen, sonst lässt sich der Task nicht starten.<br><br />
'''Karteikarte Bedingungen'''<br><br />
[[Datei:Scheduler_NewTask_Condtions.png]]<br><br />
Folgende Eingaben sind zu machen:<br><br />
''Energie:'' Je nachdem ob der Rechner ein Laptop ist oder nicht, und wie man seinen Akku verwenden will, wird man hier seine Einstellungen wählen.<br><br />
'''Karteikarte Einstellungen'''<br><br />
[[Datei:Scheduler_NewTask_Settings.png]]<br><br />
Folgende Eingaben sind zu machen:<br><br />
''Ausführung bei Bedarf:'' Manuelle Steuerung des Tasks über die Aufgabenplanung ist erlaubt.<br><br />
''Aufgabe beenden, falls ...'' Deaktivieren, sonst wird FHEM nach 3 Tagen abgebrochen.<br><br />
''Beenden erzwingen:'' Abgestürztes FHEM manuell killen dürfen.<br><br />
''Vorhandene Instanz anhalten:'' Startet ein frisches FHEM, wenn man den Task mehrmals startet.<br><br />
Das wars, der Task ist definiert. Man kann den Task nun testweie gleich von Hand starten (links auf "Aufgabenplanungsbibliothek" wechseln, dann erscheint rechts eine Liste wo man den Task starten, und ggf, auch ändern kann) und sehen, ob er läuft, indem man die FHEM Weboberfläche öffnet. Ein weiteres Indiz ist, dass man im Task-Manager, sobald man die "Prozesse aller Benutzer anzeigen" Option aktiviert, den Task "Perl.exe" laufen sieht.<br><br />
[[Datei:Scheduler_NewTask_Success.png]]<br><br />
Beim nächsten Computerstart wird FHEM dann automatisch im Hintergrund gestartet.</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEM_Installation_Windows/en&diff=31125FHEM Installation Windows/en2019-08-14T13:37:04Z<p>Krikan: /* Installation Win32::SerialPort */ -> WIN32::SerialPort gehört seit 12/18 zu den mitgelieferten Modulen von StrawberryPerl</p>
<hr />
<div>'''{{PAGENAME}}''' describes the installation of FHEM as a portable software for Windows (no intervention in the registration database). The instructions are applicable for installation on a removable disk, for example a USB stick, and on an internal drive. When installed on an internal drive, you can register FHEM as a service.<br />
<br />
==basic Installation==<br />
===Installation FHEM===<br />
Download the current [https://fhem.de/#Download fhem-X.Y.zip package] (currently fhem-5.9.zip).<br />
<br />
Create a new folder for FHEM. For this article the folder <code>f:\my-fhem</code> was created.<br />
<br />
Extract the entire content of the folder <code>fhem-5.9\fhem-5.9</code> from the .zip-package to <code>f:\my-fhem</code>. <br />
<br />
''For control:'' In <code>f:\my-fhem</code> there is the file <code>fhem.pl</code>.<br />
<br />
===Installation Perl===<br />
Download a current [http://strawberryperl.com/releases.html Strawberry Perl Portable Edition] and extract it in the FHEM folder. <br />
<br />
In this case, the content of the package "strawberry-perl-5.24.1.1-32bit-portable.zip" was extracted to <code>f:\my-fhem</code>. <br />
<br />
''For control:'' In <code>f:\my-fhem</code> there is now an additional folder <code>perl</code>.<br />
<br />
===Start of FHEM===<br />
Open a command prompt (cmd), change to the previously created folder, and start FHEM:<br />
<br />
<syntaxhighlight lang="doscon"><br />
C:\> cd f:\my-fhem<br />
F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg<br />
</syntaxhighlight><br />
<br />
Now a Windows security alert appears that Windows Firewall is blocking the Perl interpreter. To access FHEM, you must set up a firewall exception. For this purpose, the security note must be terminated with the button {{Taste|Allow Access}}.<br />
<br />
''Note:'' There is no visible output and the command won't terminate. The command prompt cannot be closed as long as FHEM is running.<br />
<br />
===Calling the FHEM Web Interface (FHEMWEB)===<br />
Start a browser (Firefox, Chrome and Safari are recommended) and open:<br />
<br />
<code>http://localhost:8083/fhem</code><br />
<br />
The FHEM main page appears:<br />
<br />
[[Datei:ErsteSchritteInFhem01.png]]<br />
<br />
===Update of FHEM===<br />
FHEM is continuously being developed. Therefore, an update should be made to get the most recent version.<br />
<br />
In the command input field of FHEM, this is the white, rectangular text input field to the right of the FHEM logo. Type<br />
<br />
<code>update</code><br />
<br />
and then press {{Taste|Enter}}.<br />
<br />
It starts the update process, which can take a while. FHEM is showing progress. At the end of the update process, FHEM prompts for a "shutdown restart". Please ignore this and type in the command input field only<br />
<br />
<code>shutdown</code><br />
<br />
followed by {{Taste|Enter}} to exit FHEM.<br />
<br />
Now return to the command prompt window. Restart the updated FHEM; For example by the {{Taste|arrow up}} followed by {{Taste|Enter}} or re-entering<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg</syntaxhighlight><br />
<br />
This completes the installation of FHEM and [[First steps in FHEM]] invites you to try it out.<br />
<br />
==Installations Options==<br />
===Installation Win32::SerialPort===<br />
{{Hinweis|In the Strawberry Perl Portable versions released since 12/2018 Win32::SerialPort is one of the standard installed modules (see release notes for Strawberry Perl - List of distributions installed on top of Perl). This section is not required for these versions.}}<br />
<br />
The Win32:SerialPort module is required for most USB gateways (CUL, Z-Wave, EnOcean, ..). The module should be installed only after successful Windows driver installation for the gateway. Install the missing perl module by typing in the command window: <br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::SerialPort<br />
</syntaxhighlight><br />
<br />
===Installation of FHEM as a service===<br />
''Note:'' Setting up FHEM as a service requires an entry in the registration database created automatically in the following installation process.<br />
<br />
Exit FHEM by entering <code>shutdown</code> in the command input field. <br />
<br />
Open an command prompt and install missing Perl modules using the following commands::<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::Daemon<br />
F:\my-fhem> perl\bin\cpan -i Win32::Console<br />
</syntaxhighlight><br />
<br />
Run an command prompt as administrator and install FHEM as a service:<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg -i</syntaxhighlight><br />
<br />
In the Windows Administration Tool "services", the FHEM service is listed with the name "fhem server" after it has been successfully set up. After installation as a service FHEM starts invisible (without opened command prompt) during Windows startup.<br />
<br />
Unlike the start of FHEM via the command line, the <code>shutdown restart</code> command can be successfully executes with FHEM as a service.<br />
<br />
==What's next?==<br />
[[First steps in FHEM]]<br />
<br />
[[Kategorie:HOWTOS]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEM_Installation_Windows&diff=31124FHEM Installation Windows2019-08-14T13:31:09Z<p>Krikan: /* Installation Win32::SerialPort */ -> WIN32::SerialPort gehört seit 12/18 zu den mitgelieferten Modulen von StrawberryPerl</p>
<hr />
<div>'''{{PAGENAME}}''' beschreibt die Installation von FHEM als portable Software für Windows (keine Eingriffe in die Registrierungsdatenbank). Die Anleitung ist sowohl für die Installation auf einem Wechseldatenträger, zum Beispiel einem USB-Stick, als auch auf einem internen Laufwerk anwendbar. Bei Installation auf einem internen Laufwerk ist die abschließend dargestellte Einrichtung von FHEM als Dienst möglich.<br />
<br />
==Grundinstallation==<br />
===Installation FHEM===<br />
Das aktuelle [https://fhem.de/#Download fhem-X.Y.zip Paket] (momentan fhem-5.9.zip) herunterladen.<br />
<br />
Einen neuen Ordner für FHEM anlegen. Für diesen Artikel wurde der Ordner <code>f:\my-fhem</code> angelegt.<br />
<br />
Den gesamten Inhalt des Ordners <code>fhem-5.9\fhem-5.9</code> aus dem .zip-Paket nach <code>f:\my-fhem</code> entpacken. <br />
<br />
''Zur Kontrolle:'' In <code>f:\my-fhem</code> befindet sich anschließend unter anderem die Datei <code>fhem.pl</code>.<br />
<br />
===Installation Perl===<br />
Eine aktuelle [http://strawberryperl.com/releases.html Strawberry Perl Portable Edition] herunterladen und im Ordner von FHEM entpacken. <br />
<br />
Hier wurde der Inhalt des Pakets "strawberry-perl-5.24.1.1-32bit-portable.zip" nach <code>f:\my-fhem</code> entpackt. <br />
<br />
''Zur Kontrolle:'' In <code>f:\my-fhem</code> existiert anschließend unter anderem ein zusätzlicher Ordner <code>perl</code>.<br />
<br />
===Start von FHEM===<br />
Eine Eingabeaufforderung (cmd) in Windows öffnen, in den zuvor angelegten Ordner wechseln und FHEM starten:<br />
<br />
<syntaxhighlight lang="doscon"><br />
C:\> cd f:\my-fhem<br />
F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg<br />
</syntaxhighlight><br />
<br />
Jetzt erscheint ein Windows-Sicherheitshinweis, dass die Windows-Firewall den Perl Interpreter blockiert. Für den Zugriff auf FHEM muss eine Firewall-Ausnahme eingerichtet werden. Hierzu ist der Sicherheitshinweis mit dem Button {{Taste|Zugriff zulassen}} zu beenden.<br />
<br />
''Hinweis:'' In der Eingabeaufforderung erscheint keine Rückmeldung und das Programm beendet sich nicht. Die Eingabeaufforderung darf nicht geschlossen werden, so lange FHEM läuft.<br />
<br />
===Aufruf des FHEM-Webinterfaces (FHEMWEB)===<br />
Einen Browser öffnen (Firefox, Chrome und Safari werden empfohlen) und FHEM unter folgender Adresse aufrufen:<br />
<br />
<code>http://localhost:8083/fhem</code><br />
<br />
Es öffnet sich die FHEM-Hauptseite:<br />
<br />
[[Datei:ErsteSchritteInFhem01.png]]<br />
<br />
===Update von FHEM===<br />
FHEM wird kontinuierlich weiterentwickelt. Daher sollte direkt ein Update auf den aktuellen Entwicklungsstand durchgeführt werden. <br />
<br />
Im Befehls-Eingabefeld von FHEM, das ist das weiße, rechteckige Texteingabefeld rechts neben dem FHEM-Logo, den Befehl<br />
<br />
<code>update</code><br />
<br />
eingeben und mit {{Taste|Enter}} abschließen.<br />
<br />
Es beginnt der Update-Prozeß, der eine Weile dauern kann. Den Fortschritt zeigt FHEM an. Am Ende des Update-Prozesses fordert FHEM zu einem "shutdown restart" auf. Dies bitte ignorieren und im Befehls-Eingabefeld nur <br />
<br />
<code>shutdown</code><br />
<br />
gefolgt von {{Taste|Enter}} zum Beenden von FHEM eingeben.<br />
<br />
Nun wieder zum Fenster der Eingabeaufforderung wechseln. Das aktualisierte FHEM erneut starten; beispielsweise durch {{Taste|Pfeil hoch}} gefolgt von {{Taste|Enter}} oder erneute Eingabe von <br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg</syntaxhighlight><br />
<br />
Hiermit ist die Installation von FHEM bereits grundlegend abgeschlossen und [[Erste Schritte in FHEM]] lädt zum Ausprobieren ein.<br />
<br />
==Installations-Optionen==<br />
===Installation Win32::SerialPort===<br />
{{Hinweis|Bei den seit 12/2018 veröffentlichten Strawberry Perl Portable Versionen gehört Win32::SerialPort zu den standardmäßig installierten Modulen (siehe jeweils in Release Notes zu Strawberry Perl - List of distributions installed on top of Perl). Dieser Abschnitt ist bei diesen Versionen überflüssig.}}<br />
Für die meisten USB-Gateways (CUL, Z-Wave, EnOcean,..) wird das Modul Win32::SerialPort benötigt. Das Modul sollte erst nach erfolgreicher Windows-Treiberinstallation für das Gateway installiert werden. Zur Modulinstallation sind folgende Befehle in der Eingabeaufforderung von Windows abzusetzen:<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::SerialPort<br />
</syntaxhighlight><br />
<br />
===Installation von FHEM als Dienst===<br />
''Hinweis:'' Die Einrichtung von FHEM als Dienst erfordert einen automatisch im folgenden Installationsprozeß erstellten Eintrag in der Registrierungsdatenbank.<br />
<br />
FHEM durch Eingabe von <code>shutdown</code> im Befehls-Eingabefeld beenden. <br />
<br />
Eine Eingabeaufforderung öffnen und fehlende Perl-Module durch folgende Befehle installieren:<br />
<br />
<syntaxhighlight lang="doscon"><br />
F:\my-fhem> PATH=F:\my-fhem\c\bin;F:\my-fhem\perl\bin;%PATH%<br />
F:\my-fhem> perl\bin\cpan -i Win32::Daemon<br />
F:\my-fhem> perl\bin\cpan -i Win32::Console<br />
</syntaxhighlight><br />
<br />
Eine Eingabeaufforderung als Administrator öffnen und FHEM als Dienst einrichten:<br />
<br />
<syntaxhighlight lang="doscon">F:\my-fhem> perl\bin\perl fhem.pl fhem.cfg -i</syntaxhighlight><br />
<br />
Im Windows-Verwaltungswerkzeug "Dienste" wird der FHEM-Dienst nach erfolgreicher Einrichtung mit dem Namen "fhem server" aufgeführt. FHEM startet nach Installation als Dienst beim Windows-Start unsichtbar (ohne offene Eingabeaufforderung) im Hintergrund. <br />
<br />
Anders als beim Start von FHEM über die Eingabeaufforderung kann bei FHEM als Dienst nach einem <code>update</code> der Befehl <code>shutdown restart</code> erfolgreich ausgeführt werden.<br />
<br />
==Wie geht es weiter?==<br />
[[Erste Schritte in FHEM]]<br />
<br />
[[Kategorie:HOWTOS]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Elsner_Wetterstationen&diff=30932Elsner Wetterstationen2019-07-09T11:56:00Z<p>Krikan: Copy/Paste Fehler</p>
<hr />
<div>{{Baustelle}}<br />
<br />
Die Module [https://fhem.de/commandref.html#ElsnerWS ElsnerWS] und [https://fhem.de/commandref.html#ModbusElsnerWS ModbusElsnerWS] lesen die Daten der Elsner P03/3-RS485 Wetterstationen, Elsner P04/3-RS485 Wetterstationen oder Elsner P03/3-Modbus Wetterstationen aus, bereiten die Daten auf und erlauben so die Steuerung von Rollos, Markisen usw. Aus den Wetterdaten Windgeschwindigkeit, Regen und richtungsabhängige Helligkeit werden Statusreadings abgeleitet, deren Schwellwerte und Verzögerungszeiten individuell festgelegt werden können. Je nach Modell stehen auch GPS-basiert das aktuelle Datum, Uhrzeit, Längen- und Breitengrad sowie die Sonnenposition zur Verfügung.<br />
<br />
Das ElsnerWS-Modul nutzt eine RS485-Verbindung, um mit Elsner P0x/3-RS485 Wetterstationen zu kommunizieren. Es empfängt die Rohdaten, die die die Wetterstationen im Sekundentakt in einem firmenspezifischen Format senden. Die Elsner P0x/3-RS485 Wetterstationen werden u. a. im EnOcean-Umfeld eingesetzt. Die Rohdaten werden dabei von speziellen EnOcean Wetterdaten-Sendemodulen z. B. der Firmen Eltako und AWAG aufbereitet und als EnOcean-Telegramme propagiert. Das EnOcean Profil Environmental Applications (environmentApp / EEP A5-13-01 ... EEP A5-13-06) environmentApp (siehe https://fhem.de/commandref.html#EnOcean) bildet dann diese Daten in FHEM ab. Mit dem ElsnerWS-Modul können die EnOcean Wetterdaten-Sendemodule durch preiswerte RS485-USB-Transceiver ersetzt werden. <br />
<br />
Das weitere Modul ModbusElsnerWS nutzt auch eine RS485-Schnittstelle und baut auf den Basisfunktionen des Modbus-Moduls auf. Es liest die Modbusregister der Elsner P03/3-Modbus Wetterstationen periodisch aus und bereitet sie auf. Das Modul ist insbesondere für Anwender interessant, die vorhandene Modbus-Installationen ergänzen wollen.<br />
<br />
Sowohl das EnOcean-Profil environmentApp, ElsnerWS als auch ModbusElsnerWS sind funktional gleichwertig.<br />
<br />
Die Wetterstationen werden über ein abgeschirmtes Kabel 2x2x0.6 an den RS485 Transceiver angeschlossen. Die Anschlüsse des Sensors werden über dessen Pin A mit dem RS485 B(+)-Anschluss, Pin B mit RS485 A(-), Pin 1 mit + 24 V, Pin 2 mit - (GND) sowie der Abschirmung verdrahtet. Die RS485 A/B-Datenleitungen sind dabei überkreuz anzuschließen! Der serielle Bus sollte an dessen Enden mit jeweils 120 Ohm Widerständen terminiert werden. Grundsätzlich können mehrere Empfänger - beim Modbus auch mehrere Sensoren - parallel an den Bus angeschlossen werden. Weitere Hinweise für die Modbus-Wetterstation sind im Elsner P03/3-Modbus(GPS) Benutzerhandbuch zu finden.<br />
<br />
Die RS-485-USB-Transceiver Digitus DA-70157, In-Circuit USB-RS485-Bridge und DSD TECH SH-U10 USB to RS485 converter wurden erfolgreich an Raspberry PI in Verbindung mit den Wetterstationen getestet.<br />
<br />
In der FHEM commandref wird die Einrichtung und Nutzung der Wetterstationen in den Abschnitten [https://fhem.de/commandref.html#ElsnerWS ElsnerWS] und [https://fhem.de/commandref.html#ModbusElsnerWS ModbusElsnerWS] beschrieben. Das Profil ElsnerWS ermöglicht eine automatische Einrichtung per autocreate.<br />
<br />
==Links==<br />
* ElsnerWS: https://fhem.de/commandref.html#ElsnerWS<br />
** Elsner P0x/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren.html<br />
** Elsner P03/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren/p03-3-rs485.html<br />
** Elsner P04/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren/p04-3-rs485.html <br />
<br />
* ModbusElsnerWS: https://fhem.de/commandref.html#ModbusElsnerWS<br />
** Elsner P03/3-Modbus Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/modbus-sensoren/p03-3-modbus-747.html <br />
** Elsner P03/3-Modbus(GPS) Benutzerhandbuch: https://www.elsner-elektronik.de/shop/de/fileuploader/download/download/?d=1&file=custom%2Fupload%2F30146-30147_P033-Modbus_P033-Modbus-GPS_Datenblatt2-0_19Mar18_DBEEA6010.pdf<br />
<br />
* Getestete RS-485-USB-Transceiver an Raspberry Pi:<br />
** RS-485-USB-Transceiver Digitus DA-70157: https://www.digitus.info/produkte/computer-zubehoer-und-komponenten/computer-zubehoer/seriell-und-parallel-adapter/da-70157/<br />
** In-Circuit USB-RS485-Bridge: https://shop.in-circuit.de/product_info.php?cPath=33&products_id=81<br />
** DSD TECH SH-U10 USB to RS485 converter: http://www.dsdtech-global.com/2018/01/sh-u10-spp.html<br />
<br />
[[Kategorie:Wetterstationen]]<br />
[[Kategorie:EnOcean Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Elsner_Wetterstationen&diff=30931Elsner Wetterstationen2019-07-09T11:54:45Z<p>Krikan: Erstfassung / Textübernahme laut Developer-Wunsch</p>
<hr />
<div>{{Baustelle}}<br />
<br />
Die Module [https://fhem.de/commandref.html#ElsnerWS ElsnerWS] und [https://fhem.de/commandref.html#ModbusElsnerWS ModbusElsnerWS] lesen die Daten der Elsner P03/3-RS485 Wetterstationen, Elsner P04/3-RS485 Wetterstationen oder Elsner P03/3-Modbus Wetterstationen aus, bereiten die Daten auf und erlauben so die Steuerung von Rollos, Markisen usw. Aus den Wetterdaten Windgeschwindigkeit, Regen und richtungsabhängige Helligkeit werden Statusreadings abgeleitet, deren Schwellwerte und Verzögerungszeiten individuell festgelegt werden können. Je nach Modell stehen auch GPS-basiert das aktuelle Datum, Uhrzeit, Längen- und Breitengrad sowie die Sonnenposition zur Verfügung.<br />
<br />
Das ElsnerWS-Modul nutzt eine RS485-Verbindung, um mit Elsner P0x/3-RS485 Wetterstationen zu kommunizieren. Es empfängt die Rohdaten, die die die Wetterstationen im Sekundentakt in einem firmenspezifischen Format senden. Die Elsner P0x/3-RS485 Wetterstationen werden u. a. im EnOcean-Umfeld eingesetzt. Die Rohdaten werden dabei von speziellen EnOcean Wetterdaten-Sendemodulen z. B. der Firmen Eltako und AWAG aufbereitet und als EnOcean-Telegramme propagiert. Das EnOcean Profil Environmental Applications (environmentApp / EEP A5-13-01 ... EEP A5-13-06) environmentApp (siehe https://fhem.de/commandref.html#EnOcean) bildet dann diese Daten in FHEM ab. Mit dem ElsnerWS-Modul können die EnOcean Wetterdaten-Sendemodule durch preiswerte RS485-USB-Transceiver ersetzt werden. <br />
<br />
Das weitere Modul ModbusElsnerWS nutzt auch eine RS485-Schnittstelle und baut auf den Basisfunktionen des Modbus-Moduls auf. Es liest die Modbusregister der Elsner P03/3-Modbus Wetterstationen periodisch aus und bereitet sie auf. Das Modul ist insbesondere für Anwender interessant, die vorhandene Modbus-Installationen ergänzen wollen.<br />
<br />
Sowohl das EnOcean-Profil environmentApp, ElsnerWS als auch ModbusElsnerWS sind funktional gleichwertig.<br />
<br />
Die Wetterstationen werden über ein abgeschirmtes Kabel 2x2x0.6 an den RS485 Transceiver angeschlossen. Die Anschlüsse des Sensors werden über dessen Pin A mit dem RS485 B(+)-Anschluss, Pin B mit RS485 A(-), Pin 1 mit + 24 V, Pin 2 mit - (GND) sowie der Abschirmung verdrahtet. Die RS485 A/B-Datenleitungen sind dabei überkreuz anzuschließen! Der serielle Bus sollte an dessen Enden mit jeweils 120 Ohm Widerständen terminiert werden. Grundsätzlich können mehrere Empfänger - beim Modbus auch mehrere Sensoren - parallel an den Bus angeschlossen werden. Weitere Hinweise für die Modbus-Wetterstation sind im Elsner P03/3-Modbus(GPS) Benutzerhandbuch zu finden.<br />
<br />
Die RS-485-USB-Transceiver Digitus DA-70157, In-Circuit USB-RS485-Bridge und DSD TECH SH-U10 USB to RS485 converter wurden erfolgreich an Raspberry PI in Verbindung mit den Wetterstationen getestet.<br />
<br />
In der FHEM commandref wird die Einrichtung und Nutzung der Wetterstationen in den Abschnitten [https://fhem.de/commandref.html#ElsnerWS ElsnerWS] und [https://fhem.de/commandref.html#ModbusElsnerWS ModbusElsnerWS] beschrieben. Das Profil ElsnerWS ermöglicht eine automatische Einrichtung per autocreate.<br />
<br />
==Links==<br />
* ElsnerWS: https://fhem.de/commandref.html#ElsnerWS<br />
** Elsner P0x/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren.html<br />
** Elsner P03/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren/p03-3-rs485.html<br />
** Elsner P04/3-RS485 Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/rs485-sensoren/p04-3-rs485.html <br />
<br />
* ModbusElsnerWS: https://fhem.de/commandref.html#ModbusElsnerWS<br />
** Elsner P03/3-Modbus Wetterstationen: https://www.elsner-elektronik.de/shop/de/produkte-shop/gebaeudetechnik-konventionell/modbus-sensoren/p03-3-modbus-747.html <br />
** Elsner P03/3-Modbus(GPS) Benutzerhandbuch: https://www.elsner-elektronik.de/shop/de/fileuploader/download/download/?d=1&file=custom%2Fupload%2F30146-30147_P033-Modbus_P033-Modbus-GPS_Datenblatt2-0_19Mar18_DBEEA6010.pdf<br />
<br />
* Getestete RS-485-USB-Transceiver an Raspberry Pi:<br />
** RS-485-USB-Transceiver Digitus DA-70157: https://www.digitus.info/produkte/computer-zubehoer-und-komponenten/computer-zubehoer/seriell-und-parallel-adapter/da-70157/<br />
** In-Circuit USB-RS485-Bridge: https://shop.in-circuit.de/product_info.php?cPath=33&products_id=81<br />
** DSD TECH SH-U10 USB to RS485 converter: http://www.dsdtech-global.com/2018/01/sh-u10-spp.html<br />
<br />
[[Kategorie:Hardware Typen]]<br />
[[Kategorie:EnOcean Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=EnOcean_Starter_Guide&diff=30416EnOcean Starter Guide2019-05-08T13:13:39Z<p>Krikan: Todo ergänzt</p>
<hr />
<div>{{Todo|Noch einzuarbeitetende Moduländerungen : http://forum.fhem.de/index.php/topic,36237.msg285274.html#msg285274: Vereinfachte Anlage von FHEM-EnOcean-Devices gemäß 18 und 19 einarbeiten, Anlage Liste von nicht offiziellen EEPs und Zuordnung zu Geräten, bessere Einbindung von getNextId ++++ http://forum.fhem.de/index.php/topic,42354.0.html: Plot-Anlage einbinden ++++ http://forum.fhem.de/index.php/topic,45810.0.html: RLT ++++ https://forum.fhem.de/index.php/topic,97027.0.html: autocreate nur noch für Teach-In-Telegramm, wenn nicht "attr <IODev> learningDev all" gesetzt ist. }}<br />
<br />
<div style="float:right"><br />
{{Infobox Modul<br />
|Name=TCM<br />
|ModPurpose=Einbindung EnOcean-Gateway<br />
|ModType=d<br />
|ModCmdRef=TCM<br />
|ModForumArea=EnOcean<br />
|ModTechName=00_TCM.pm <br />
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])<br />
}}<br />
{{Infobox Modul<br />
|Name=EnOcean<br />
|ModPurpose=Ansteuerung EnOcean-Geräte über TCM<br />
|ModType=d<br />
|ModCmdRef=EnOcean<br />
|ModForumArea=EnOcean<br />
|ModTechName=10_EnOcean.pm <br />
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])<br />
}}<br />
</div><br />
<br />
== EnOcean ==<br />
[http://www.enocean.com/de/ EnOcean] ist <br />
* ein [http://www.enocean.com/de/enocean-wireless-standard/ ISO ratifizierter Funkstandard], ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch<br />
* ein Anbieter batterieloser Funksensoren<br />
EnOcean-Endgeräte mit dem von der EnOcean Alliance zur Verfügung gestellten EnOcean-Funkprotokoll werden von [http://www.enocean-alliance.org/de/hiererhaeltlich/ zahlreichen Hardware-Herstellern] angeboten. <br />
<br />
=== EnOcean Equipment Profile ===<br />
Abhängig von den Funktionen des EnOcean-Endgerätes werden bestimmte veröffentlichte Anwendungs-Profile/Funk-Telegramme, die sogenannten EnOcean Equipment Profiles (EEPs), zur Funkkommunikation genutzt. Technische Details zum EnOcean-Funkprotokoll und insbesondere zu den [http://www.enocean-alliance.org/eep/ EnOcean Equipment Profiles (EEPs)] sind auf der Internetseite der [http://www.enocean-alliance.org EnOcean Alliance] zu finden.<br />
<br />
==== Manufacturer Specific Communication ====<br />
EnOcean bietet - neben den veröffentlichten Standard-Enocean-Profilen - die Möglichkeit für die Nutzung von herstellerspezifischen Anwendungs-Profilen/Funk-Telegrammen (MSC = Manufacturer Specific Communication). Falls die Herstellerfirmen den Inhalt dieser MSC-Telegramme nicht veröffentlichen, ist eine Unterstützung durch FHEM grundsätzlich nicht möglich. Teilweise werden die Produkte sowohl mit MSC- als auch mit Standard-Enocean-Profilen vertrieben {{Link2Forum|Topic=19544|Message=132240}}. Angaben zu den verwendeten Profilen/Telegrammen sind den Bedienungsanleitungen der Produkte zu entnehmen.<br />
<br />
=== uni- versus bidirektional ===<br />
EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei '''unidirektionalen Endgeräten''' erfolgt die Funk-Kommunikation nur in eine Richtung. Einem Aktor, der Licht schaltet, kann zwar der Befehl zum An- bzw. Ausschalten gegeben werden, er liefert aber keine Rückinformation über die erfolgreiche Ausführung des Befehls. Bei '''bidirektionalen Endgeräten''' erfolgt die Funk-Kommunikation hingegen in zwei Richtungen: sie bieten <br />
# Sende- und <br />
# Empfangsmöglichkeiten. <br />
Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.<br />
<br />
=== SenderID ===<br />
Damit EnOcean Funk-Aktoren (z.B. Relais, Dimmer, Heizungsventil) auf EnOcean Sensoren (z.B. Taster, Temperatursensor, Fensterkontakt, Energieverbrauchsmesser) reagieren können, werden die Sensoren bei den Aktoren eingelernt (Teach-in). So wird festgelegt, dass z.B. "Funktaster 1" den "Dimmer 1" steuert. <br />
Alle EnOcean Geräte mit Sendefunktion haben mindestens eine eindeutige, unabänderliche 8-stellige Hex-SenderID (z.B. ffc54500; teilweise auch dargestellt mit Punkten oder Doppelpunkten dazwischen). Die SenderID ist meist auf den EnOcean Geräten aufgedruckt oder liegt der Verpackung des Endgerätes bei. Beim Anlernvorgang wird die eindeutige SenderID des Sensors in der Empfängertabelle des Aktors gespeichert.<br />
<br />
== EnOcean in FHEM ==<br />
=== Allgemein ===<br />
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_EnOcean-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.<br />
<br />
Die Nutzung von EnOcean in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach umsetzbar. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht EnOcean behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.<br />
<br />
Im Folgenden und auf den [[:Kategorie:EnOcean Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der [[Konfiguration]] sollte - zur Verhinderung von Fehlern - nach Möglichkeit immer über das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.<br />
<br />
=== Vorbereitung ===<br />
Die SenderIDs der EnOcean-Geräte haben eine zentrale Bedeutung in FHEM. Sie sind eindeutiges Unterscheidungsmerkmal, werden von FHEM im Rahmen der Funkkommunikation genutzt und in der Definition der Geräte bzw. den Attributen des Geräte hinterlegt. Auch wenn FHEM die SenderIDs des Gateways regelmäßig automatisch vergeben kann, ist für einen Überblick über die SenderIDs hilfreich eine Tabelle mit folgender oder ähnlicher Struktur aufzubauen:<br />
<br />
<table class="wikitable" border="1"><br />
<tr><br />
<th> A<br />
</th><br />
<th> B<br />
</th><br />
<th> C<br />
</th><br />
<th> D<br />
</th><br />
<th> E<br />
</th></tr><br />
<tr><br />
<th> Nr.<br />
</th><br />
<th> Name EnOcean<br />
</th><br />
<th> Name in FHEM<br />
</th><br />
<th> HEX (Sender-ID)<br />
</th><br />
<th> Zimmer<br />
</th></tr><br />
<tr><br />
<td><br />
</td><br />
<td> &lt;Name Hardwareschalter&gt;<br />
</td><br />
<td> &lt;Name in FHEM&gt;<br />
</td><br />
<td> &lt;HEX Code&gt;<br />
</td><br />
<td> &lt;Raumname&gt;<br />
</td></tr><br />
<tr><br />
<td><br />
</td><br />
<td> TCM_ESP3_0<br />
</td><br />
<td> TCM_ESP3_0<br />
</td><br />
<td> AABBCC00<br />
</td><br />
<td><br />
</td></tr><br />
<tr><br />
<td> 1<br />
</td><br />
<td> EnO_switch_123456<br />
</td><br />
<td> eg_fl_Licht<br />
</td><br />
<td> AABBCC01<br />
</td><br />
<td> EG_Flur<br />
</td></tr><br />
<tr><br />
<td> ...<br />
</td><br />
<td><br />
</td><br />
<td><br />
</td><br />
<td><br />
</td><br />
<td><br />
</td></tr><br />
<tr><br />
<td> 128<br />
</td><br />
<td><br />
</td><br />
<td><br />
</td><br />
<td><br />
</td><br />
<td><br />
</td></tr></table><br />
<br />
== Definition von TCM / Gateway ==<br />
FHEM kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden. <br />
Bisher gibt es zwei Transceiver Chips von EnOcean: <br />
* TCM120 (ausgelaufen)<br />
** für den USB-Port: [https://embedded-intelligence.de/de/products/hardware/bsc-bor.html BSC BOR] <br />
* TCM310 <br />
** als USB-Stick: [http://www.enocean.com/de/enocean_module/usb-300-oem/ USB 300] und [http://busware.de/tiki-index.php?page=EUL Busware EUL]<br />
** als Aufsteckmodul für Raspberry Pi: [http://www.enocean.com/de/enocean-pi/ EnOceanPi]<BR> <br />
::* Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]<br />
::* Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das EnOceanPi-Modul funktionsfähig ist. Zur Vorgehensweise siehe: {{Link2Forum|Topic=14814|Message=95265}}<br />
<br />
Zudem existiert eine {{Link2Forum|Topic=22635|Message=160582|LinkText=Lösung zur kabelgebundenen Anbindung}} des FHEM-Rechners mittels Eltako FGW14 an den [[EnOcean-Eltako-RS485-Bus|Eltako RS485-Bus]], über die sowohl Busaktoren als auch EnOcean-Funkaktoren gesteuert werden können und auch EnOcean-Funktelegramme über das [[EnOcean-Eltako-RS485-Bus|FAM14 Funkantennenmodul]] am RS485-Bus empfangen werden können.<br />
<br />
Das TCM-basierte Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> zumeist automatisch erkannt und grundlegend durch entsprechende Einträge in der Konfiguration definiert. Ein manuelles Anlegen des TCM-Moduls oder Eingriffe in die Konfiguration sind normalerweise nicht notwendig. Werden am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt, empfiehlt es sich zur Erhöhung der Betriebsstabilität das TCM-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] anzusprechen. Unter Windows ist ein manuelles Anlegen der Definition des TCM-Gateways wegen fehlender Unterstützung des Befehls <code>usb scan</code> notwendig. <br />
<br />
Bei RS485-basierte Gateways (bspw. FGW14) muss in der [[Konfiguration]] zusätzlich manuell das Attribut <code>comType</code> auf <code>RS485</code> gesetzt werden. <br />
<br />
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:<br />
<br />
EnOceanPi an Raspberry Pi:<br />
define TCM_ESP3_0 TCM ESP3 /dev/ttyAMA0@57600<br />
<br />
TCM310/USB300 an Fritzbox oder Raspberry Pi:<br />
define TCM_ESP3_0 TCM ESP3 /dev/ttyUSB0@57600<br />
<br />
Hier folgt ein Beispiel der define-Zeile in der Konfiguration für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle<br />
define TCM_ESP2_0 TCM ESP2 /dev/ttyS3@57600<br />
attr TCM_ESP2_0 comType RS485 <---- Manuell zu setzen<br />
<br />
Nach erfolgreicher Definition ist das Gateway im Raum "Everything" in der Gruppe "TCM" zu finden. Wenn neben dem Gatewaynamen "initialized" oder "opened" angezeigt wird, ist FHEM in der Lage mit den EnOcean-Geräten zu kommunizieren.<br />
<br />
Wie im [[#SenderID|Einführungsabschnitt]] bereits erläutert hat jedes sendende EnOcean-Endgerät mindestens eine eindeutige SenderID. Diese SenderID kann aus Sicherheitsgründen nicht vom EnOcean-Gateway simuliert werden. Vielmehr hat das Gateway eigene SenderIDs, die separat in die Endgeräte/Aktoren angelernt werden müssen. Das Gateway stellt 128 verschiedene SenderIDs zur Verfügung. Ausgehend von der baseID, die bei jedem Gateway grundsätzlich anders ist, werden die SenderIDs fortlaufend hexadezimal hochgezählt:<br />
* FHEM stehen 127 fortlaufende eigene SenderID zur Verfügung<br />
* beginnend mit der baseID des TCM + 1<br />
<br />
Die baseID des TCM erhält man durch Eingabe von<br />
get TCM_ESP3_0 baseID <br />
in das Befehl-Eingabefeld (TCM_ESP3_0 gegebenenfalls durch den eigenen Gatewaynamen ersetzen) oder duch Auswahl dieses Befehls in den Objektdetails des FHEM-Gateway-Device.<br />
<br />
Das Webfrontend zeigt dann beispielsweise:<br />
BaseID=AABBCC00,RemainingWriteCycles=0A<br />
Die niedrigste SenderID in diesem Beispiel ist AABBCC0'''1''' (BaseID=AABBCC00 +1 HEX!!!), die nächste AABBCC0'''2''' usw.<br />
<br />
Nach der Definition des Gateways und Ermittlung der baseID des Gateways kann nun der nächste Schritt, die Definition der EnOcean-Geräte in FHEM, erfolgen.<br />
<br />
== Definition von Geräten ==<br />
=== Definition / Anlernvorgang (Teach-In) ===<br />
Damit FHEM und EnOcean-Geräte miteinander kommunizieren können, müssen sie miteinander bekannt gemacht werden. Dies geschieht durch Definition des Gerätes in FHEM und den Anlernvorgang. Dazu muss sich FHEM im {{Link2CmdRef|Anker=TCM_learningMode|Label=learningMode}} befinden. Viele Geräte werden von FHEM während des Anlernvorgangs automatisch erkannt und definiert. Dennoch ist ein grundlegendes Verständnis der Anlernvorgänge und Unterscheidungsprinzipen in FHEM und EnOcean notwendig. Sofern das Gerät Bestätigungstelegramme verschicken kann, sind diese zwingend '''vorher''' am Gerät einzuschalten (u.a. Eltako). <br />
<br />
FHEM entnimmt die Angaben, wie ein Funk-Telegramm für ein bestimmtes Gerät aufgebaut ist, im Wesentlichen den folgenden Attributen der Definition des Gerätes:<br />
*<code>subtype</code>: FHEM-Profilname, der als Klartextname das genutzte EEP des Gerätes (EEP steht meist in der Bedienungsanleitung des Gerätes) repräsentiert . Einige FHEM-Profile z. B. "roomSensorControl.01" bedienen mehrere ähnliche EEP gleichzeitig.<br />
*<code>manufID</code>: Code für den Hersteller des Gerätes (Übersetzungstabelle Code zu Name ist in der [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/10_EnOcean.pm 10_EnOcean.pm] unter %EnO_manuf)<br />
*<code>model</code>: Modell des Gerätes<br />
*<code>eep</code>: EEP des Gerätes. Unter anderem werden die Informationen zur automatischen Anlage von [[FileLog]], [[SVG]] und des Attributs <code>webCmd</code> anhand des EEPs ermittelt.<br />
Während des Anlernvorgangs werden diese Angaben von FHEM soweit wie möglich automatisch in der Definition vorbelegt. Hinweise zu den Besonderheiten von bestimmten Geräten und EEP finden sich oft in der {{Link2CmdRef|Anker=EnOcean}} zu EnOcean. Darum bitte immer in der commandref zunächst nach dem speziellen Gerät (Modellbezeichnung) suchen, wenn dies keinen Treffer liefert nach dem verwendeten EEP suchen. Die gegebenen Hinweise und Erläuterungen dort beachten.<br />
<br />
Die Definition und der Anlernvorgang unterscheiden sich je nach Gerätetyp:<br />
* Sensoren:<br />
** [[#Schalter/Switch|Schalter (EEP RPS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.<br />
** [[#Kontakte|Kontakte (EEP 1BS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.<br />
** [[#Sonstige_Sensoren|Sonstige Sensoren (EEP 4BS)]]: Durch Versand eines speziellen Anlern-Funktelegramms können sie in FHEM automatisch mit den notwendigen Attributen angelegt werden. Im Anlerntelegramm übermittelt der Sensor FHEM die EEP-Profilangabe und die Hersteller-ID. Aufgrund dieser Angaben kann FHEM das Gerät eindeutig erkennen und die richtigen Attribute in FHEM setzen. Einige wenige Sensoren verschicken leider ein Anlerntelegramm ohne EEP-Profilangabe und/oder Herstellerangabe (Bsp: Omnio Ratio eagle-PM101). Bei diesen Sensoren müssen die Attribute subType, manufID und/oder model manuell in FHEM gesetzt werden, damit eine richtige Auswertung der Funktelegramme erfolgt.<br />
* Aktoren (4BS, VLD, UTE, MSC): Bei den Aktoren gibt es je nach Gerätetyp verschiedene Anlernvorgänge, die unterschiedlich in FHEM ausgeführt werden. Einige Aktoren unterstützen auch mehrere Anlernvorgänge. Grundsätzlich muss wegen abweichender Vorgehensweise in FHEM unterschieden werden zwischen<br />
** [[#uni- versus bidirektional|unidirektionalen]] Aktoren und<br />
*** [[#Teach-In_als_Tasteremulation|Teach-In als Tasteremulation]]<br />
*** [[#Teach-In_als_Gateway.2FPC-Steuerung|Teach-In als Gateway/PC-Steuerung]]<br />
** [[#uni- versus bidirektional|bidirektionalen]] Aktoren<br />
*** [[#Teach-In_als_Tasteremulation_2|Teach-In als Tasteremulation]]<br />
*** [[#Unidirektionales_4BS-Teach-In|Unidirektionales 4BS-Teach-In]]<br />
*** [[#Bidirektionales_4BS-Teach-In|Bidirektionales 4BS-Teach-In]]<br />
*** [[#UTE-Teach-In|UTE-Teach-In]]<br />
<br />
In den nachfolgenden Gliederungspunkten wird beispielhaft für je ein Gerät aus den obigen Gerätetypen die Einbindung in FHEM erläutert.<br />
<br />
Grundlegend gilt immer:<br />
FHEM legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn<br />
* in Konfiguration autocreate aktiviert ist:<br />
** <code>{{Link2CmdRef|Lang=de|Anker=autocreate|Label=define autocreate autocreate}}</code><br />
* FHEM/das TCM-Modul sich im <code>learningMode</code> befindet und<br />
* FHEM eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt<br />
Im Webfrontend werden automatisch angelegte neue Geräte im Raum "EnOcean" angezeigt.<br />
<br />
=== Sensoren ===<br />
'''Sensoren Beispiele:'''<br />
<br />
==== Schalter/Switch ====<br />
[[EnOcean-PTM-210-Taster|PTM 210 - Schaltermodul]] ([http://www.enocean.com/de/enocean_module/ptm-210-data-sheet-pdf/ Datenblatt])<br />
<br />
EEP: F6-02-xx<br />
<br />
FHEM in den learningMode (<code>set <nowiki><IODev> teach <time/s></nowiki></code>) versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
<br />
Dann einen beliebigen Taster des Moduls drücken (und loslassen). Beim Drücken des Tasters wird vom Taster eine Nachricht ausgesendet, die von FHEM empfangen wird. Daraufhin definiert FHEM automatisch den Taster und der Taster ist in FHEM angelernt. FHEM fügt dazu folgenden Code zur Konfiguration hinzu:<br />
* exemplarischer Auszug aus Konfiguration<br />
define EnO_switch_FFC54500 EnOcean FFC54500 <-- "FFC54500" ist die 8-stellige Hex-SenderID des Tasters<br />
attr EnO_switch_FFC54500 IODev TCM_ESP3_0<br />
attr EnO_switch_FFC54500 room EnOcean<br />
attr EnO_switch_FFC54500 subType switch <-- handelt sich um einen Schalter<br />
# attr EnO_switch_FFC54500 eventMap AI:off A0:on BI:an B0:aus <-- bei Bedarf ... die gemapten Werte (hier: off, on, an, aus) sollen eindeutig sein<br />
define FileLog_EnO_switch_FFC54500 FileLog ./log/EnO_switch_FFC54500-%Y.log EnO_switch_FFC54500<br />
attr FileLog_EnO_switch_FFC54500 logtype text<br />
<br />
Ein Schalter (hier: FT55) hat vier Taster:<br />
{|<br />
| '''Taster''' || '''in FHEM'''<br />
|-<br />
| links oben || A0<br />
|-<br />
| links unten || AI (nicht "eins" sondern "i"!)<br />
|-<br />
| rechts oben || B0<br />
|-<br />
| rechts unten || BI<br />
|}<br />
<br />
Das Log FileLog_EnO_switch_FFC54500 zeichnet beim einmaligen Drücken des linken unteren Tasters ("AI") folgendes auf:<br />
2014-01-01_07:00:01 EnO_switch_FFC54500 buttons: pressed<br />
2014-01-01_07:00:01 EnO_switch_FFC54500 channelA: AI<br />
2014-01-01_07:00:01 EnO_switch_FFC54500 AI<br />
2014-01-01_07:00:02 EnO_switch_FFC54500 buttons: released<br />
<br />
Der angelegte Sensor repräsentiert im Webfrontend den physischen Schalter (bspw. an der Wand). Ein Druck auf den physischen Taster ändert den Zustand im Webfrontend. Jedoch führt ein Schalten des Repräsentanten im Webfrontend nicht zu einer Schaltung des Aktors.<br />
<br />
FHEM kann sich '''nicht''' als einer der vorhandenen (automatisch angelegten) physischen Sensoren ausgeben (um z.B. das Licht zu schalten), sondern verwendet eigene SenderIDs. Diese FHEM-eigenen SenderIDs können in EnOcean-Aktoren eingelernt werden, damit die Aktoren auf FHEM reagieren [[#Aktoren|siehe unten]].<br />
<br />
==== Kontakte ====<br />
[[EnOcean-STM-250-Fenster-T%C3%BCrkontakt|STM 320 Batterieloses Magnetkontakt-Funkmodul]] ([http://www.enocean.com/de/enocean_module/stm-320-data-sheet-pdf/ Datenblatt])<br />
<br />
EEP: D5-00-01<br />
<br />
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
<br />
Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.<br />
<br />
Der Kontakt wird automatisch in FHEM definiert und ist angelernt.<br />
<br />
* exemplarischer Auszug aus Konfiguration<br />
define EnO_contact_0000FF53 EnOcean 0000FF53<br />
attr EnO_contact_0000FF53 IODev TCM_ESP3_0<br />
attr EnO_contact_0000FF53 room EnOcean<br />
attr EnO_contact_0000FF53 subType contact<br />
define FileLog_EnO_contact_0000FF53 FileLog ./log/EnO_contact_0000FF53-%Y.log EnO_contact_0000FF53<br />
attr FileLog_EnO_contact_0000FF53 logtype text<br />
attr FileLog_EnO_contact_0000FF53 room EnOcean<br />
<br />
==== Sonstige Sensoren ====<br />
===== 4BS-Teach-In =====<br />
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
Dann das Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann automatisch in FHEM definiert und ist angelernt.<br />
<br />
===== Profilloses 4BS-Teach-In =====<br />
Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor ([http://www.omnio.ch/content-en/downloads/Betriebsanleitungen/2902000_Betriebsanleitung_ea.pdf Betriebsanleitung])<br />
<br />
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
<br />
Das Anlerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)<br />
<br />
Im angelegten FHEM-Device manuell das Attribut <code>subType</code> auf <code>PM101</code> setzen.<br />
<br />
=== Aktoren ===<br />
Die Bedienungsanleitungen und die commandref liefern Informationen, welche Anlernvorgänge der Aktor unterstützt. Finden sich keine Hinweise auf besondere PC- oder Gateway-Anlernvorgänge, so kann FHEM als "Notlösung" immer als virtueller FHEM-Schalter (Tasteremulation) angelernt werden. Einige Aktoren unterstützen mehrere Arten von Anlernvorgängen. Hier ist der mit den meisten/besten Steuerungsmöglichkeiten zu bevorzugen.<br />
<br />
'''Aktoren Beispiele:'''<br />
<br />
==== unidirektionale Aktoren ====<br />
Bei unidirektionalen Aktoren steht eine SenderID des TCM-Gateways immer im <code>define</code> des FHEM-Devices. Mit dieser SenderID steuert FHEM den Aktor. Diese SenderID muss dazu im Aktor eingelernt werden.<br />
{{Hinweis|'''MERKE:''' Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im <code>define</code> des Devices stehen.<br/><br />
'''MERKE:''' Bei unidirektionalen Aktoren stimmt der Status des FHEM-Devices im Webfrontend nur mit dem realen Aktorzustand überein, wenn ausschließlich über FHEM gesteuert wird ([[#Physischer_EnOcean-_und_virtueller_FHEM-Schalter_zu_einem_Device_zusammenfassen|Abhilfe]])}}<br />
===== Teach-In als Tasteremulation =====<br />
PEHA 451 FU-EP o.T. (Schaltaktor unidirektional) <br />
<br />
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:<br />
define eg_fl_Licht EnOcean AABBCC01<br />
<br />
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definition ist dann folgendermaßen vorzunehmen:<br />
define eg_fl_Licht EnOcean getNextID<br />
<br />
Anschließend das Attribut <code>subType</code> beim erzeugten Device auf <code>switch</code> setzen. Durch diese Definition wird ein 8-fach EnOcean-Taster erzeugt. Der Taster hat 4 Kanäle (A,B,C,D) zu je 2 Tasten (0,I). Alle diese 8 Taster senden mit der gleichen SenderID des TCM. Das entspricht einem Gerät mit 4 Schaltwippen die jeweils "oben" '''oder''' "unten" gedrückt sein können. FHEM emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (darum auch "virtueller FHEM-Schalter"). Der Taster 0 des Kanal A wird "gedrückt" mit <code>set eg_fl_Licht A0</code>.<br />
<br />
Dieser virtuelle FHEM-Schalter wird in den Aktor wie ein physischer Schalter eingelernt. Den Aktor in den Anlernmodus bringen (Taste LRN/SET drücken) und den virtuellen FHEM-Schalter betätigen, indem im Befehl-Eingabefeld eingeben wird:<br />
set eg_fl_Licht B0<br />
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.<br />
<br />
* exemplarischer Auszug aus Konfiguration<br />
define eg_fl_Licht EnOcean AABBCC01 <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet <br />
attr eg_fl_Licht room EG_Flur<br />
attr eg_fl_Licht eventMap BI:off B0:on<br />
attr eg_fl_Licht subType switch<br />
define FileLog_eg_fl_Licht FileLog ./log/ eg_fl_Licht-%Y.log eg_fl_Licht<br />
attr FileLog_eg_fl_Licht logtype text<br />
<br />
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).<br />
<br />
===== Teach-In als Gateway/PC-Steuerung =====<br />
"ältere" Eltako FSB61 (Produktionszeitraum KW 43/10 - KW 40/11 [http://www.eltako.com/fileadmin/downloads/de/_bedienung/FSB61NP_30200420-3_dtsch.pdf Bedienungsanleitung])<br />
<br />
EEP: A5-3F-7F <br />
<br />
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:<br />
define eg_fl_Rollo EnOcean AABBCC02<br />
<br />
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definiton ist dann folgendermaßen vorzunehmen:<br />
define eg_fl_Rollo EnOcean getNextID<br />
<br />
Beim erzeugten FHEM-Device muss das Attribut <code>subType</code> auf <code>manufProfile</code> gesetzt werden. Die Attribute <code>manufID</code> und <code>model</code> sind auf die unten in der Konfiguration gezeigten Werte zu setzen.<br />
<br />
Dieser virtuelle FHEM-Schalter wird in den Aktor als PC/Szenentaster angelernt indem im Befehl-Eingabefeld eingeben wird:<br />
set eg_fl_Rollo teach<br />
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.<br />
<br />
* exemplarischer Auszug aus Konfiguration<br />
define eg_fl_Rollo EnOcean AABBCC02 <--- AABBCC02 ist eine der 127 SenderID's des TCM, mit der FHEM sendet <br />
attr eg_fl_Rollo room EG_Flur<br />
attr eg_fl_Rollo subType manufProfile<br />
attr eg_fl_Rollo manufID 00D<br />
attr eg_fl_Rollo model Eltako_FSB61<br />
<br />
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).<br />
<br />
==== bidirektionale Aktoren ====<br />
Bei bidirektionalen Aktoren steht die SenderID des Aktors im <code>define</code> des FHEM-Devices. FHEM ordnet empfangene Bestätigungstelegramme anhand der Aktor-SenderID dem passenden FHEM-Device zu. Eine SenderID des TCM-Gateways mit der FHEM den Aktor steuert steht bei bidirektionalen Aktoren immer im Attribut <code>subDef</code>. Diese SenderID muss dazu im Aktor eingelernt werden.<br />
{{Hinweis|'''MERKE:''' Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut <code>subDef</code> des Devices stehen.<br/><br />
'''MERKE:''' Bei bidirektionalen Aktoren stimmt nach korrekter Einbindung in FHEM der Status des FHEM-Devices im Webfrontend immer mit dem realen Aktorzustand überein.}}<br />
===== Teach-In als Tasteremulation =====<br />
[[EnOcean-FSR61VA-10A-Stromsto%C3%9F-Schaltrelais_mit_Strommessung|10A-Stromstoß-Schaltrelais mit Strommessung FSR61VA]]<br/><br />
Schaltrelais (bidirektional)<br />
<br />
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
<br />
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:<br />
define EnO_switch_FSR61VA EnOcean FFAABBC0<br />
<br />
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut <code>subDef</code> des angelegten Devices hinterlegen.<br />
<br />
Anschließend die Attribute <code>subType</code> und <code>switchMode</code> wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.<br />
<br />
Damit der FSR61VA auf FHEM reagieren kann (Ein/Ausschalten), wird das FHEM-Device EnO_switch_FSR61VA in den FSR61VA als Richtungstaster (bzw. Taster ein/aus) eingelernt:<br />
# Unterer Drehschalter je nach Produktionswoche des FSR61VA (aufgedruckt):<br />
## bis KW 2/13: "ca. Mitte" (Taster Ein/Aus einlernen)<br />
## ab KW 3/13 bis KW 10/14: "60" (Taster Ein/Aus einlernen)<br />
## ab KW 11/14: "40" (Richtungstaster einlernen)<br />
# Oberer Funktions-Drehschalter: "LRN" (LED blinkt)<br />
# FHEM Eingabefeld: „set EnO_switch_FSR61VA B0“, &lt;Enter&gt; (LED erlischt)<br />
# Oberer Funktions-Drehschalter: Eine der ESV-Einstellungen<br />
# Unterer Funktions-Drehschalter: auf "oo" einstellen (unendlich)<br />
<br />
* exemplarischer Auszug aus der Konfiguration<br />
define EnO_switch_FSR61VA EnOcean FFAABBC0 --> EnO_switch_FSR61VA ist ein frei gewählter eindeutiger Name<br />
für das FHEM-Device.<br />
FFAABBC0 ist die erste am Boden des FSR61VA aufgedruckte SenderID. <br />
Damit sendet das FSR61VA den Schaltzustand (B0/BI --> ein/aus)<br />
attr EnO_switch_FSR61VA IODev TCM_ESP3_0 --> TCM_ESP3_0 ist der Name des Devices, mit dem FHEM EnOcean-Funk <br />
sendet und empfängt.<br />
attr EnO_switch_FSR61VA subDef FF998877 --> FF998877 ist eine der 127 SendeIDs des TCM_ESP3_0, damit sendet FHEM an den FSR61VA<br />
attr EnO_switch_FSR61VA subType switch --> es handelt sich um einen EnOcean Schalter (der kann A0, AI, B0, BI,...)<br />
attr EnO_switch_FSR61VA switchMode pushbutton --> als "pushbutton" sendet FHEM bei einem <br />
"set EnO_switch_FSR61VA B0" nach dem Kommando (B0) noch ein "release".<br />
Das brauchts, wenn der FSR61VA als ES oder ESV betrieben wird.<br />
Sonst wird jedes "set"-Kommando vom FSR61VA als <br />
"länger als eine Sekunde gedrückt" interpretiert -> "Tasterdauerlicht".<br />
<br />
===== Unidirektionales 4BS-Teach-In =====<br />
[[EnOcean-FSR14-4x-RS485-Bus-Schaltaktor-4-Kanal-Stromsto%C3%9F-Schaltrelais|RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14]]<br/><br />
Schaltrelais (bidirektional)<br />
<br />
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:<br />
set TCM_ESP3_0 teach 600<br />
<br />
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:<br />
define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8<br />
<br />
{{Randnotiz|RNText=Ab {{Link2Forum|Topic=31450|Message=239937|LinkText=Updatestand 04.01.2015}} ist eine manuelle Vergabe einer freien SenderID per <code>subDef</code> nicht mehr notwendig. Beim ersten Senden des "teach"-Befehls an den Aktor wird eine freie SenderID vergeben, sofern keine gültige SenderID eingetragen war.}}<br />
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut <code>subDef</code> des angelegten Devices hinterlegen.<br />
<br />
Anschließend die Attribute <code>subType</code> und <code>gwCmd</code> wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.<br />
<br />
Jetzt den Aktor in den Lernmodus versetzen und dann von FHEM das Lerntelegramm verschicken:<br />
set EnOcean_switch_FEFF4AF8 teach<br />
Lernmodus am Aktor ausschalten<br />
<br />
* exemplarischer Auszug aus Konfiguration<br />
define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8 <--- FEFF4AF8 ist hier die SenderID eines FSR14-Kanals (Aktor)<br />
attr EnOcean_switch_FEFF4AF8 subDef AABBCC03 <--- AABBCC03 ist eine der 127 SenderID's des TCM, mit der FHEM sendet [[#Taster - physisch und in FHEM|(siehe unten)]]<br />
attr EnOcean_switch_FEFF4AF8 room EnOcean # Der Raum kann angepasst werden<br />
attr EnOcean_switch_FEFF4AF8 gwCmd switching # Wichtig für FSR14<br />
attr EnOcean_switch_FEFF4AF8 subType gateway # Wichtig für FSR14<br />
define FileLog_EnOcean_switch_FEFF4AF8 FileLog ./log/EnOcean_switch_FEFF4AF8-%Y.log EnOcean_switch_FEFF4AF8<br />
attr FileLog_EnOcean_switch_FEFF4AF8 logtype text<br />
<br />
===== Bidirektionales 4BS-Teach-In =====<br />
[[EnOcean-MD15-Kleinstellantrieb|Kleinstellantrieb MD15-FTL-xx]]<br/> <br />
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung (bidirektional)<br />
<br />
EEP: A5-20-01<br />
<br />
4BS-Bidirektionales-Teach-In:<br />
<br />
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand<br />
#Falls vorhanden, alle bisherigen FHEM-Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten<br />
#FHEM in Lernmodus schalten: <code>set <nowiki><IODev> teach <time/s></nowiki></code><br />
#Taster am MD15-FTL-xx so lange drücken, bis ein Signalton ertönt. MD15 bestätigt erfolgreichen Anlernvorgang durch das Aufleuchten der Status-LED und 2 Signaltöne<br />
#Aktor wird in FHEM automatisch mit allen notwendigen Parametern angelegt.<br />
<br />
* exemplarischer Auszug aus Konfiguration<br />
define EnO_sensor_01000EFA EnOcean 01000EFA<br />
attr EnO_sensor_01000EFA IODev TCM_ESP3_0<br />
attr EnO_sensor_01000EFA comMode biDir<br />
attr EnO_sensor_01000EFA destinationID unicast<br />
attr EnO_sensor_01000EFA manufID 00A<br />
attr EnO_sensor_01000EFA room EnOcean<br />
attr EnO_sensor_01000EFA subDef AABBCC04<br />
attr EnO_sensor_01000EFA subType hvac.01<br />
define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA<br />
attr FileLog_EnO_sensor_01000EFA logtype text<br />
attr FileLog_EnO_sensor_01000EFA room EnOcean<br />
<br />
===== UTE-Teach-In =====<br />
[[EnOcean-D-452-FU-EBIM-Aktor-2fach|Einbau-Aktor 452 FU-EBIM o.T.]]<br/><br />
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion<br />
<br />
EEP: D2-01-08<br />
<br />
UTE-Teach-In:<br />
<br />
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand<br />
#Falls vorhanden, alle bisherigen FHEM Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten<br />
#FHEM in Lernmodus schalten: <code>set <nowiki><IODev> teach <time/s></nowiki></code><br />
#Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)<br />
#Aktor-Kanal 0 oder 1 wird in FHEM automatisch mit allen notwendigen Parametern angelegt.<br />
#Das Anlernen für den zweiten Kanal wie nach 3. bis 5. beschrieben wiederholen<br />
<br />
Die Kanäle können jetzt geschaltet werden mit:<br />
<br />
*FHEM Device für Kanal 0: set <Name_0> on|off 0<br />
*FHEM Device für Kanal 1: set <Name_1> on|off 1<br />
<br />
Falls gewünscht, kann der Kanal mit dem Attribut attr <Name_0|1> defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.<br />
<br />
Die Statusrückmeldungen mit den aktuellen Werten des Energieverbrauches und der Leistung werden vom Aktor automatisch gesendet. Sie werden sowohl als Telegramme nach EEP D2-01-08 als auch nach EEP A5-11-04 mit unterschiedlichen SenderIDs (vgl. Etikett in Original-Verpackung) gesendet.<br />
Die Rückmeldungen nach EEP D2-01-08 werden von FHEM im Aktor-Device subType actuator.01 berücksichtigt. Die Rückmeldungen nach EEP A5-11-04 werden von FHEM in einem senor-device subType lightCtrlState.02 berücksichtigt. <br />
<br />
<br />
== Besonderheiten für die Anzeige im WebFrontend ==<br />
<br />
=== Aufteilung der Kanäle in unabhängige Devices ===<br />
===== Mehrkanalige bidirektionale Aktoren =====<br />
Mehrkanalige bidirektionale Aktoren (bspw. Eltako FMS61NP) haben teilweise nur eine SenderID und werden daher in FHEM über ein FHEM-Device im Webfrontend abgebildet und gesteuert. Um im WebFrontend für jeden Kanal ein separates FHEM-Device zur Anzeige und Steuerung zu erhalten, kann [[ReadingsProxy|readingsProxy]] genutzt werden.<br />
<br />
Zunächst wird der Aktor standardmäßig in FHEM definiert/angelernt und die Funktion geprüft (hier am Beispiel eines Aktor mit dem Namen "Aktor"). Anschließend wird pro Kanal ein readingProxy-Device mit Bezug auf das Reading channelA, channelB, ... angelegt:<br />
<br />
#Kanal A zur Steuerung mit on und off<br />
define AktorKanalA readingsProxy Aktor:channelA<br />
attr AktorKanalA setFn {($CMD eq "on")?"A0":"AI";;} <br />
attr AktorKanalA setList off on <br />
attr AktorKanalA valueFn {($VALUE eq "A0")?"on":"off"}<br />
attr AktorKanalA webCmd off:on <br />
<br />
#Kanal B zur Steuerung mit on und off<br />
define AktorKanalB readingsProxy Aktor:channelB<br />
attr AktorKanalB setFn {($CMD eq "on")?"B0":"BI";;} <br />
attr AktorKanalB setList off on <br />
attr AktorKanalB valueFn {($VALUE eq "B0")?"on":"off"}<br />
attr AktorKanalB webCmd off:on <br />
<br />
Jeder Kanal wird jetzt separat im WebFrontend durch das readingsProxy-Device abgebildet (Statusanzeige) und kann mit diesem gesteuert werden.<br />
<br />
Ein ausführlicheres readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider enthält dieser {{Link2Forum|Topic=59418|Message=512758}}.<br />
[[Datei:EnO_Jalousie_OmnioAktor_REGJ12-04.png|400px|thumb|center|readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider]]<br />
<br />
===== Virtuelle Schalter für unidirektionale Aktoren =====<br />
Um die 4 Kanäle jeweils einzeln als Schalter (einzelne Schaltwippe) im WebFrontend abzubilden kann [[ReadingsProxy|readingsProxy]] genutzt werden. So werden vier Schalter (im unten gezeigten Beispiel: fhemSchalterKanal[A-D]) mit nur einer der 127 eigenen SenderIDs zur Verfügung gestellt.<br />
{{Randnotiz|RNTyp=i|RNText=Ab [[version|Modulversion]] 11866/31.7.2016 besitzen auch virtuelle Schalter die Readings channel[A-D]. Ein readingsProxy sollte seitdem besser von diesen Readings, wie im [[#Mehrkanalige_bidirektionale_Aktoren|vorherigen Abschnitt]] dargestellt, abgeleitet werden. }}<br />
Anders als bei den bekannten bidirektionalen Aktoren und den FHEM-Devices der physischen Schalter, existiert bei den virtuellen Schaltern das Reading channelA, channelB, ... nicht. Daher muss das readingsProxy für den virtuellen Schalter vom Reading state abgeleitet werden:<br />
<br />
#Kanal A zur Steuerung mit on und off<br />
define fhemSchalterKanalA readingsProxy fhemSchalter:state<br />
attr fhemSchalterKanalA setFn {($CMD eq "on")?"A0":"AI";;}<br />
attr fhemSchalterKanalA setList on off<br />
attr fhemSchalterKanalA valueFn {$LASTCMD}<br />
attr fhemSchalterKanalA webCmd on:off<br />
<br />
#Kanal B zur Steuerung mit on und off<br />
define fhemSchalterKanalB readingsProxy fhemSchalter:state<br />
attr fhemSchalterKanalB setFn {($CMD eq "on")?"B0":"BI";;}<br />
attr fhemSchalterKanalB setList on off<br />
attr fhemSchalterKanalB valueFn {$LASTCMD}<br />
attr fhemSchalterKanalB webCmd on:off<br />
<br />
#Kanal C zur Steuerung mit on und off<br />
define fhemSchalterKanalC readingsProxy fhemSchalter:state<br />
attr fhemSchalterKanalC setFn {($CMD eq "on")?"C0":"CI";;}<br />
attr fhemSchalterKanalC setList on off<br />
attr fhemSchalterKanalC valueFn {$LASTCMD}<br />
attr fhemSchalterKanalC webCmd on:off<br />
<br />
#Kanal D zur Steuerung mit on und off<br />
define fhemSchalterKanalD readingsProxy fhemSchalter:state<br />
attr fhemSchalteKanalD setFn {($CMD eq "on")?"D0":"DI";;}<br />
attr fhemSchalterKanalD setList on off<br />
attr fhemSchalterKanalD valueFn {$LASTCMD}<br />
attr fhemSchalterKanalD webCmd on:off<br />
<br />
Werden diese FHEM-Taster (und etwaige physische Taster) in EnOcean-Aktoren eingelernt (siehe Anleitung des Aktors), so können nun die EnOcean-Aktoren mit physischen Tastern (sendet mit der 8-stelligen SenderID des Tasters) und mit virtuellen FHEM-Readingsproxy-Schaltern (senden mit einer der 127 eigenen SenderIDs) bedient werden.<br />
<br />
=== Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen ===<br />
Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei '''unidirektionalen''' Aktoren zu sehen, kann man eine <code>structure</code> nutzen:<br />
<br /><br />
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)<br />
<br />
#Definition des virtuellen FHEM-Schalters<br />
define fhemSchalter EnOcean AABBCC01 <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet<br />
attr fhemSchalter eventMap BI:off B0:on<br />
attr fhemSchalter icon icoBELEUCHTUNG.png<br />
attr fhemSchalter subType switch<br />
<br />
#Definition des physischen Tasters (z.B. durch autocreate erzeugt)<br />
define EnO_switch_0021E4BB EnOcean 0021E4BB <--- 0021E4BB ist die (aufgedruckte) 8-stellige SenderID des physischen Tasters<br />
attr EnO_switch_0021E4BB eventMap BI:off B0:on<br />
attr EnO_switch_0021E4BB room EnOcean<br />
attr EnO_switch_0021E4BB subType switch<br />
attr EnO_switch_0021E4BB dummy<br />
<br />
#fhemSchalter ist der Name des virtuellen FHEM-Schalters<br />
#EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) FHEM-Taster<br />
define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB<br />
attr Gruppe_test_notify eventMap BI:off B0:on<br />
attr Gruppe_test_notify room Gaestezimmer<br />
attr Gruppe_test_notify clientstate_behavior last<br />
<br />
Alternativ kann man für diesen Zweck auch ein <code>notify</code> in Verbindung mit <code> setreading <device> state <state></code> nutzen:<br />
<br />
define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT<br />
<br />
== FAQ ==<br />
=== Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physischen Taster/Schalter klicke bzw. mit <code>set <device> <command></code> ansteuere? ===<br />
:Aus Sicherheitsgründen können bei EnOcean keine physischen Geräte(-adressen) durch FHEM bzw. das TCM-Gateway emuliert werden. FHEM muss zur Steuerung separat an den Aktor angelernt werden. Dazu eine der TCM-Adressen an den Aktor anlernen.<br />
<br />
=== Welche Infos sollten Anfragen im EnOcean-Forum enthalten? ===<br />
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."<br />
* detaillierte Beschreibung des Problems<br />
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)<br />
* list des jeweiligen devices (Ausgabe von <code>list <device></code>)<br />
* passender Ausschnitt aus Logfile (siehe Link im FHEM-Menü links) generiert mit gesetztem Attribut verbose 5 am TCM-Device (<code>attr <IODev> verbose 5</code>)<br />
<br />
=== Wie kann ich zur Fortentwicklung der EnOcean-Module beitragen? ===<br />
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten EnOcean-Geräten im Forum mitteilen<br />
* In der {{Link2CmdRef}} als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden<br />
* Codeschnipsel und Ideen im Forum posten<br />
* Fehler und Probleme im Forum melden<br />
* Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen<br />
<br />
=== Wie findet man die Sender-ID eines bidirektionalen Aktors? ===<br />
* Aufkleber auf dem Aktor oder beigelegte Information in der Aktorverpackung<br />
* Ermittlung mit FHEM:<br />
# Bestätigungstelegramme am Aktor aktivieren<br />
# Funktaster am Aktor anlernen oder alternativ Taster am örtlichen Steuereingang anschließen<br />
# FHEM in den learningMode versetzen: <code>set <nowiki><IODev> teach <time/s></nowiki></code><br />
# [[Event monitor|Event Monitor]] aufrufen<br />
# Aktor mit Taster schalten<br />
# Im Event Monitor wird nun die Sender-ID des Aktors durch das Bestätigungstelegramm angezeigt. Sofern ein Funktaster zur Ansteuerung genutzt wird, zeigt der Event Monitor auch dessen Sender-ID.<br />
# FHEM hat mittels autocreate für das Bestätigungstelegramm ein Device angelegt, sofern das vorher noch nicht existierte. Dieses Device kann man nach eventueller Änderung des subType und dem Setzen anderer gegebenenfalls notwendiger Attribute an den Aktor anlernen.<br />
<br />
=== Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways? ===<br />
FHEM ermittelt eine freie SenderID automatisch, wenn die Definition folgermaßen erfolgt:<br />
* unidirektionaler Aktor:<br />
: <code><nowiki>define <name> EnOcean getNextID <EEP></nowiki></code><br />
: Im definierten Device ist "getNextID" durch eine freie SenderID des TCMs ersetzt.<br />
* bidirektionaler Aktor:<br />
: <code><nowiki>define <name> EnOcean <SenderId des Aktors> <EEP></nowiki></code><br />
: Dem definierten Device wird das Attribut <code>subDef</code> mit dem Wert <code>getNextId</code> zugewiesen: <code><nowiki>attr <name> subDef getNextID</nowiki></code>. "getNextID" ersetzt FHEM automatisch durch eine freie SenderID des TCMs<br />
<br />
<br />
Manuelle Ermittlung der freien SenderIDs, wenn die obige automatische mit FHEM fehlschlägt oder eine manuelle Vergabe gewünscht wird:<br />
* Aus der oben [[EnOcean_Starter_Guide#Vorbereitung|gezeigten Tabelle]]<br />
* Anzeige der nächsten freien Sender-ID: <pre>{EnOcean_CheckSenderID("getNextID","<IODev>","0000000")}; </pre><br />
* Auflistung der bereits vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getUsedID","<IODev>","0000000")}; </pre><br />
* Auflistung der noch nicht vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getFreeID","<IODev>","0000000")}; </pre><br />
Den jeweiligen Befehl in das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" kopieren, <IODev> durch den Namen des TCM-Devices ersetzen und dann Auslösen.<br />
<br />
=== Schaltet immer AI ein und A0 aus, BI ein und B0 aus usw. ? ===<br />
Nein. <br><br />
Das Verhalten der Aktoren ist abhängig vom Hersteller und/oder vom Anlernvorgang. Laut EEP schaltet xI ein und x0 aus. Dies wird von den meisten Herstellern entsprechend umgesetzt. Eltako definiert dies genau andersherum: xI schaltet aus und x0 ein. Analog sind auch die jeweiligen Bestätigungstelegramme der Aktoren herstellerspezifisch festgelegt. Zudem kann bei einigen Aktoren auch je nach Anlernvorgang ein anderes Verhalten erreicht werden; Details enthalten die Bedienungsanleitungen.<br />
<br />
=== Wie kann man einen Plot für ein EnOcean-Device anlegen? ===<br />
Bei der manuellen Anlage von Devices über das EEP und bei der automatischen Anlage durch die autocreate-Funktion beim teach-in werden neben dem Device selbst auch das FileLog-Device und -soweit als Vorlage von FHEM mitgeliefert- die SVG-Devices mit .gplot-Datei für die Plots automatisch erzeugt. Manuell sollten die Devices deshalb möglichst über die Vorgabe des EEP erzeugt werden:<br />
* <code><nowiki>define <name> EnOcean <ID> <EEP></nowiki></code> oder<br />
* <code><nowiki>define <name> EnOcean <EEP></nowiki></code><br />
<br />
Beispiel:<br />
<code><nowiki>define test EnOcean A5-04-02</nowiki></code><br />
<br />
Bei bestehenden Devices können die FileLog- und SVG-Devices nachträglich erzeugt werden. Hierzu wird im DEF das entsprechende EEP statt der ID eingetragen und {{Taste|modify <name>}} bestätigt. Nach dem automatischen Anlegen der zugehörigen Devices erscheint dort wieder die ID.<br />
<br />
Sollte für das EEP keine .gplot-Vorlage für einen Plot bzw. das SVG-Device existieren, kann ein Plot mit dem [[Plots erzeugen|.gplot-Editor]] erstellt werden.<br />
<br />
=== Was muss man beim Einsatz der "set extensions" (on-for-timer, on-till, ...) beachten? ===<br />
Die {{Link2CmdRef|Anker=setExtensions|Label=set extensions}} werden von EnOcean grundsätzlich unterstützt, wenn das Device als <br />
# set-Befehle "on" und "off" automatisch anbietet '''oder''' <br />
# dies manuell durch das Mapping (bspw. <code>eventMap BI:on B0:off</code>) erreicht wird.<br />
<br />
Im 1. Fall sind alle "set extensions"-Befehle automatisch funktionsfähig.<br />
<br />
{{Randnotiz|RNTyp=Info|RNText=Die Ergänzung des Attributs eventMap im 2. Fall ist nur bis FHEM-Updatestand 09.01.2019 vorzunehmen. Ab Updatestand 10.01.2019 müssen/dürfen durch das Mapping (bspw. <code>eventMap BI:on B0:off</code>) nur die Befehle "on" und "off" festgelegt werden.}}<br />
Im 2. Fall ist die eventMap jedoch zusätzlich - je nach gewünschten "set extensions"-Befehl - zwingend weiter zu ergänzen:<br />
* on-tor-timer: <code>attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off</code> ({{Link2Forum|Topic=28855|Message=214960}})<br />
* off-tor-timer: <code>attr <device> eventMap off-for-timer:off-for-timer BI:on B0:off</code><br />
* on-till: <code>attr <device> eventMap on-till:on-till BI:on B0:off</code> ({{Link2Forum|Topic=29993|Message=226886}})<br />
* off-till: <code>attr <device> eventMap off-till:off-till BI:on B0:off</code><br />
* blink: <code>attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off</code> ({{Link2Forum|Topic=31358|Message=239151}})<br />
* intervals: <code>attr <device> eventMap on-till:on-till BI:on B0:off</code><br />
Sollen mehrere "set extensions"-Befehle verwendet werden, so sind die obigen Codes entsprechend zu kombinieren.<br />
<br />
=== Für mein EnOcean-Gerät gibt es keine spezielle Wiki-Seite; wo finde ich dann Informationen? ===<br />
* In der {{Link2CmdRef}} nach dem Gerät suchen<br />
* In der commandref nach dem verwendeten EEP suchen<br />
* Im Wiki nach einem Gerät mit einer ähnlichen EEP/subType suchen<br />
* Im EnOcean-Forum nach Threads zum Gerät/EEP suchen<br />
<br />
=== Warum funktioniert mein Eltako-Gerät nicht wie in commandref/Wiki beschrieben? ===<br />
* Eltako-Geräte haben bei gleicher Produktbezeichnung teilweise je nach Produktionswoche unterschiedliche Funktionen/Eigenschaften<br />
* die Produktionswoche ist auf dem Gerät angegeben (z.B. 11/14 -> Elfte Woche im Jahr 2014)<br />
* in den nach Produktionswoche untergliederten [http://www.eltako.com/de/bedienungsanleitungen/gebaeudefunk-powerline.html Bedienungsanleitungen] stehen genauere Angaben<br />
* Angaben in commandref/Wiki analog für die Angaben laut Bedienungsanleitung für den speziellen Produktionszeitraum umsetzen<br />
* bei gravierenden Abweichungen und Neuerungen Info im Forum/Wiki<br />
<br />
=== Wie kann ich Eltako-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===<br />
* 12er Baureihe (ausgelaufen) = unidirektionale RS485-Bus-Aktoren für Hutschiene<br />
* 14er Baureihe = bidirektionale RS485-Bus-Aktoren für Hutschiene<br />
* 61er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Hohlwanddose)<br />
* 70/71er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Zwischendecke)<br />
* zwischen den Modellreihen gibt es bei uni- und bidirektonalen Aktoren bei der Ansteuerung Übereinstimmungen; Angaben können dementsprechend analog zwischen den Geräten übertragen werden<br />
<br />
=== Wie kann ich PEHA-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===<br />
* Easyclick-Unterputzempfänger: unidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält typischerweise die Buchstaben EP<br />
* Easyclickpro-Unterputzempfänger: bidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält die Buchstaben EBI oder EBIM (mit zusätzlicher Energiemessung)<br />
<br />
=== Wo finde ich Angaben zu Jäger Direkt - OPUS GreenNet EnOcean-Geräten? ===<br />
* Es handelt sich im Wesentlichen um umgelabelte Produkte anderer Hersteller (Peha, Eltako usw.). Anhand der Gehäuseform lassen sich Rückschlüsse ziehen<br />
* Angaben zu den "Original"-Produkten können grundsätzlich -soweit bekannt- auf OPUS GreenNet Geräte übertragen werden<br />
<br />
=== Wie ermittele ich die Signalstärke, Signalqualität durch die Anzeige des RSSI/Repeatingcounter? ===<br />
* Durch anlegen einer readingsGroup: <code>define TCM_Signal readingsGroup TYPE=EnOcean:+TCM_ESP3_0_RSSI,+TCM_ESP3_0_ReceivingQuality,+TCM_ESP3_0_RepeatingCounter,+TCM_ESP3_0_TIME</code><br />
Dabei muss TCM_ESP3_0 durch den Devicenamen des eigenen TCMs ersetzt werden!<br />
<br />
=== Wo genau ist der Unterschied zwischen "EEP Manufacturer Specific Applications" und "Inofficial EEP for special devices"? ===<br />
* Die inoffiziellen EEPs sind nichts anderes als Device-Vorlagen für bestimmte Aktoren. Dadurch soll dem Anwender u.a. manuelle Attributzuweisungen abgenommen werden. Teilweise werden auch spezielle Plots angelegt.<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:EnOcean Components|!]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=FHEMWiki:%C3%9Cber_FHEMWiki&diff=30415FHEMWiki:Über FHEMWiki2019-05-08T12:58:15Z<p>Krikan: /* Gewünschtes Verhalten / "Do and Don't" */ -> <source> auf <syntaxhighlight> geändert</p>
<hr />
<div>Administratives zum und '''über FHEMWiki'''.<br />
<br />
{{Randnotiz|RNTyp=y|RNText='''Aktuelle Wiki-Baustellen'''<br />
* Vorlage/Makro für Links auf (ELV-,...)Dokumente <br /> [[Vorlage:DocLink|DocLink]] / Status: läuft, Basisversion verfügbar / [[Benutzer Diskussion:Ph1959de|Peter]])<br />
* Konsolidierung von Kopiervorlagen (Hardware)<br />([[FHEMWiki Diskussion:Über FHEMWiki#Beispiel Neuer Artikel versus Infobox Hardware|Diskussion]] / Status: läuft / [[Benutzer Diskussion:Ph1959de|Peter]])<br />
<!--* Bereinigung [[FHEM Command Beispiele]]: Ausgliederung in eigene Artikel<br />([[Diskussion:Update|Diskussion]] / Status: läuft / [[Benutzer Diskussion:Ph1959de|Peter]])--><br />
<!-- * Kategorie(n) für Hardware-Eigenentwicklungen<br />([[Benutzer Diskussion:Tobias.faust#Unterkategorie(n) "Eigenentwicklung"|Diskussion]] / Status: läuft / [[Benutzer Diskussion:Tobias.faust|Tobias]])--><br />
<!-- * "HomeMatic Type xxx" - Konzept / Struktur...<br />([[Kategorie_Diskussion:Hardware_Typen|Diskussion]] / Status: läuft / [[Benutzer Diskussion:Strauch|Strauch]])--><br />
<hr /><br />
''Änderungen im Wiki, die an den verlinkten Stellen diskutiert / angeregt wurden''<br />
}}<br />
<br />
== Administratives ==<br />
=== Begrüßung neuer Mitschreiber ===<br />
{{Randnotiz|RNText=Begrüßungstext<br />
* Wünsche<br />
* Hinweis auf Administratives (also hierher)<br />
* Bitte um Einarbeitung in Wiki-Mitarbeit<br />
* Erste / nächste Schritte<br />
}}<br />
Neu angemeldete Benutzer können mit in etwa folgendem Text auf ihrer Benutzer-Diskussionsseite begrüßt werden:<br />
<br />
Ein solcher Text wird automatisch generiert durch Eintragung von <nowiki>{{subst:ph1959de/Hallo}}</nowiki> auf der Diskussionsseite des neuen Benutzers.<br />
<br />
=== Administratoren ===<br />
Zur Vermeidung von Spam und Vandalismus im Wiki gibt es generell keine Schreibberechtigung für anonyme Benutzer. Wer mitarbeiten will, muss die Einrichtung eines Benutzerkontos über E-Mail an einen der [[FHEMWiki:Administratoren|Administratoren]] beantragen.<br />
<br />
== Empfehlungen und Regeln ==<br />
Mitschreiber und Überarbeiter sind gebeten, sich an die in den folgenden Abschnitten zusammengestellten Empfehlungen zu halten.<br />
<br />
=== Erste Schritte / "Getting Started" ===<br />
* Lesen, lesen, lesen<br />
* bestehende Artikel ergänzen, verbessern, überarbeiten<br />
* neue Artikel anlegen, hierbei beachten:<br />
** Titel sorgfältig wählen; spätere Änderungen sind zwar möglich aber unnötiger Aufwand. Sollte doch einmal etwas falsch gelaufen sein, dann bitte nicht mit dem richtigen Titel eine neue Seite anlegen, sondern die falsch benannte ''verschieben'' (verbirgt sich unter "Mehr" oben neben dem Suchfeld).<br />
** Einordnen in die bestehende Kategorienstruktur<br />
** neuen Artikel - wo sinnvoll - in bestehenden Artikeln verlinken<br />
** Nicht jede kleine Änderung über "Seite speichern" kontrollieren, sondern mit "Vorschau zeigen" Zwischenschritte überprüfen<br />
* Nach und nach komplexere Dinge wie Vorlagen und spezielle Formatierungen (Tabellen, Divs, etc.) verwenden<br />
<br />
=== Gewünschtes Verhalten / "Do and Don't" ===<br />
{| class="wikitable"<br />
|-<br />
! Erwünscht !! ... damit... !! Unerwünscht !! ... weil<br />
|-<br />
| Vorschau verwenden<br />
| damit die Änderungshistorie übersichtlich bleibt<br />
| Experimente mit Seitentiteln<br />
| führen zu Leichen, Waisen oder unnötigen Weiterleitungen<br />
|- <br />
| Diskussionen<br />
| bitte auf den entsprechenden Seiten von Benutzern oder Artikeln führen<br />
| = Ebene1 =<br />
| Überschriften auf "Ebene 1" (ein "=") sollen im Wiki-Artikel nicht verwendet werden. Diese Ebene ist reserviert für den Artikel.<br />
|- <br />
| <nowiki><pre>...</pre></nowiki><br />
| benutzen, um "vorformatierten" Text (Code, .cfg-Ausschnitte, etc.) darzustellen. Alternativ kann auch jede Zeile mit einem Leerzeichen begonnen werden. Passagen im laufenden Text können/sollen mit <nowiki><code></nowiki><code>Text</code><nowiki></code></nowiki> formatiert werden. Attribute für den Bereich können beispielsweise so spezifiziert werden: <nowiki><pre style="width:50%;"></nowiki> (mit diesem Zusatz würde beispielsweise der Kasten um den vorformatierten Text nur die (linke) Hälfte der Seite einnehmen).<br />
| <nowiki><nowiki>... &lt;/nowiki&gt;</nowiki><br />
| soll nur dann verwendet werden, wenn der Text Wiki-Syntax enthält, die nicht aufgelöst werden soll (wie hier in den Formatierungsbeispielen). <br />
|- <br />
| <nowiki><syntaxhighlight lang="...">...</syntaxhighlight></nowiki><br />
| benutzen, um Codebeispiele mit [[Syntax Highlighting|Syntaxhervorhebung]] darzustellen. Unterstützte Sprachen, die für FHEM relevant sein könnten sind z.B. bash, gnuplot, java, javascript, perl, php<br />
| "Ich habe ...", "Man sollte..."<br />
| ... sind als Formulierung selten sinnvoll. Die Beschreibungen sollen neutral formuliert (also nicht '''ich''' oder '''man''') und präzise sein.<br />
|- <br />
| <nowiki>[[Lemma]]</nowiki><br />
| für die Verlinkung auf andere FHEM-Wikiseiten verwenden<br />
| <nowiki>[http://wiki.fhem.de/wiki/Lemma]</nowiki><br />
| stellt einen unnötigen externen Link auf eine Wiki-interne Seite dar und soll nicht benutzt werden.<br />
|- <br />
| Lesbarer Quelltext<br />
| Der Wiki-Quelltext soll soweit möglich lesbar sein und der "formatierten Version" entsprechen. Das betrifft insbesondere Leerzeilen. Allgemein sollen diese [https://de.wikipedia.org/wiki/Hilfe:Textgestaltung Wikipedia Richtlinien] befolgt werden.<br />
| HTML Tags <br />
| ... sollen möglichst vermieden werden. So sollen z.B. neue Abschnitte nicht über <nowiki><br (/)></nowiki> Tags erzeugt/erzwungen werden. Meistens ist es möglich und empfohlen, einfach eine Leerzeile im Quelltext einzufügen (siehe auch [https://de.wikipedia.org/wiki/Hilfe:Tags#br hier]).<br />
<!-- Schablone für neue Tabellenzeilen<br />
|- <br />
| Do<br />
| ...<br />
| Don't<br />
| ...<br />
--><br />
|}<br />
<br />
== Strukturen und Konzepte ==<br />
Die folgenden Strukturen und Konzepte haben sich bisher im FHEMWiki etabliert und sollen im Allgemeinen eingehalten werden. Änderungen bitte nicht eigenmächtig vornehmen, sondern voher an entsprechender Stelle zur Diskussion stellen.<br />
<br />
=== Artikelgliederung ===<br />
In Anlehnung an die Gebräuche bei Wikipedia, sollen innerhalb eines Artikels nur die Gliederungsebenen "2" (==) und tiefer verwendet werden. <br />
<br />
=== Beispiel: Neuer Artikel ===<br />
Am Beispiel eines Artikels über ein ''Device'' bzw. ''Modul'' (das '''XYZ''') soll der prinzipielle Aufbau einer Wiki-Seite veranschaulicht werden:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Quelltext !! Darstellung !! Bemerkungen<br />
|-<br />
| <code><nowiki>{{Infobox Hardware|...}}</nowiki> oder <nowiki>{{Infobox Modul|...}}</nowiki></code><br />
| ''Infobox'', am rechten Seitenrand dargestellt<br />
| Formatierte Tabelle mit spezifischen Daten; Beispiele: [[Special:Linkliste/Vorlage:Infobox Modul|Module]], [[Special:Linkliste/Vorlage:Infobox Hardware|Geräte]]<br />
|-<br />
| <code><nowiki>[[XYZ]] ist ein... </nowiki></code><br />
| '''XYZ''' ist ein...<br />
| Seitentitel als Intra-Wiki-Link (wird dadurch fett gedruckt) möglichst in einem einleitenden Satz / Abschnitt benutzen.<br />
|-<br />
| <code><s><nowiki>'''== XYZ ==''' ist ein... </nowiki></s></code><br />
| &nbsp;<br />
| Seitentitel '''nicht''' als erste Überschrift wiederholen!<br />
|-<br />
| <code><nowiki>== Features / Funktionen ... ==</nowiki></code><br />
| '''Features / Funktionen'''<br />
| Überschrift, Ebene&nbsp;2 (siehe [http://de.wikipedia.org/wiki/Hilfe:%C3%9Cberschrift Hilfe])<br />
|-<br />
| <code><nowiki>== Hinweise zum Betrieb mit FHEM ==</nowiki></code><br />
| '''Hinweise zum Betrieb mit FHEM'''<br />
| &nbsp;<br />
|-<br />
| <code><nowiki>== Bekannte Probleme ==</nowiki></code><br />
| '''Bekannte Probleme'''<br />
| &nbsp;<br />
|-<br />
| <code><nowiki>== Links ==</nowiki></code><br />
| '''Weblinks'''<br />
| Liste von Links auf externe Webseiten, Foren, etc.<br />
|-<br />
| <code><nowiki>[[Kategorie:XYZ Gerät]]</nowiki></code><br />
| Kategorie: XYZ Gerät (Unterkategorie von [[:Kategorie:Hardware]])<br />
| Kategorien werden gesammelt am Ende der Seite angezeigt; Bei Verwendung der Vorlage "Infobox Modul" wird automatisch der jeweils richtige Kategorieeintrag erzeugt.<br />
|}<br />
Das Ganze noch einmal "am Stück" (als "Sourcecode") dargestellt:<br />
<nowiki><br />
{{Infobox Hardware|...}} oder {{Infobox Modul|...}}<br />
[[XYZ]] ist ein... <br />
<br />
== Features / Funktionen ==<br />
Die Haupteigenschaften von XYZ sind<br />
* a<br />
* ...<br />
<br />
== Hinweise zum Betrieb mit FHEM ==<br />
Falls es besondere Einschränkungen / Voraussetzungen, etc. gibt...<br />
# ...<br />
# ...<br />
<br />
== Bekannte Probleme ==<br />
Keine (oder Liste der bekannten Probleme / Einschränkungen).<br />
<br />
== Weblinks ==<br />
* Erläuterung [http://www.xyz.de Linktitel]<br />
<br />
[[Kategorie:XYZ Gerät]]</nowiki><br />
<br />
Auch die Gliederung (Einrückungen, Leerzeichen, Leerzeilen) sollen so oder ähnlich beibehalten werden, um auch Anderen die Arbeit im Quelltext zu erleichtern. Die aufgeführten Überschriften sollten enthalten sein, weitere können bei Bedarf natürlich eingefügt werden.<br />
<br />
Kopiervorlagen für Seiten zu Geräten finden sich in der Dokumentation zur Vorlage [[Vorlage:Infobox Hardware|<nowiki>{{Infobox Hardware}}</nowiki>]] mit der eine einheitliche Infobox in allen Komponentenbeschreibungen erreicht werden soll. Analog dazu gibt es die Vorlage [[Vorlage:Infobox Modul|<nowiki>{{Infobox Modul}}</nowiki>]] für FHEM Befehle und Module.<br />
<br />
Viele gute (und sicherlich auch ein paar schlechte) Beispiele sind in der [[:Kategorie:Hardware]] und ihren Unterkategorien zu finden.<br />
<br />
=== Kategoriestruktur / -konzept ===<br />
[[Datei:Kategoriestruktur.png|mini|rechts|400px|Kategoriestruktur als "Mindmap"]]<br />
FHEMWiki hat die im Mindmap dargestellte Kategorienstruktur (Unterkategorien zu Hardware Typen sind der Übersichtlichkeit halber nicht vollständig erfasst). Bitte Artikel sinnvoll in bereits '''vorhandene''' Kategorie(n) einordnen. Neue Unterkategorien nur nach gründlicher Überlegung anlegen und gegebenenfalls zur Diskussion stellen. Bei Hardware bitte die Besonderheit beachten, dass regelmäßig die Aufnahme in 2 Kategorien zu erfolgen hat: in die hersteller-/protokollbezogene Hauptkategorie '''[[:Kategorie:Hardware]]''' sowie die aufgabenbezogene Hauptkategorie '''[[:Kategorie:Hardware Typen]]'''<br />
<br />
Weitergehende Hinweise zur Kategorienstruktur: <br />
<br />
# Grundlegende Änderungen an der Struktur (bspw. Neuanlage [[:Kategorie:FHEM|Hauptkategorien]], Verschieben Unterkategorien,..) bitte '''nur''' nach entsprechender [[FHEMWiki_Diskussion:Über_FHEMWiki|Diskussion]]<br />
# Unterteilung in zwei Hardware-Hauptkategorien mit jeweils einer Unterkategorieebene:<br />
## Aufgabenbezogene Hauptkategorie: "Hardware Typen"<br />
##* Gedacht für Benutzer, die sich einen Überblick über die Aufgaben verschaffen wollen, die von FHEM verwaltet werden können.<br />
##* Beispiele für Unterkategorien: Lichtsensoren, Feuchtesensoren, ...<br />
##* Keine Unterkategorie "sonstiges" da Aufgabe im Kategorienamen klar beschrieben sein muss<br />
## Herstellerbezogene Hauptkategorie: "Hardware" (aus historischen Gründen "Hardware" und nicht die treffendere Bezeichnung "Hardware Serien / Hardware Systeme")<br />
##* Gedacht für Benutzer, die wissen wollen, welche Module innerhalb einer Serie existieren bzw. in FHEM integriert sind. <br />
##* Beispiele für Unterkategorien: FS20, HMS, Homematic, ...<br />
##* Sammlung von Einzelgeräten unter "[[:Kategorie:Other Components]]"<br />
#* Keine neuen Unter-Unterkategorien um Übersichtlichkeit nicht zu verlieren.<br />
#* Kein Eintrag von einzelnen HW-Modulen in die Hauptkategorie. Dies soll immer über eine Unterkategorie erfolgen.<br />
# keine Unterkategorien zu [[:Kategorie:Glossary]] anlegen!<br />
# Neue Kategorien bitte im Mindmap dokumentieren ([[FHEMWiki_Diskussion:Über_FHEMWiki#Graphviz_Source|Dateivorlage]])<br />
<br />
== Vorlagen und Schablonen ==<br />
Im Folgenden werden die Vorlagen (Wiki templates), Schablonen (Kopierbeispiele) und Muster aufgeführt, die in diesem Wiki zur Verfügung stehen.<br />
<br />
=== Vorlagen ===<br />
Die folgenden FHEMWiki spezifischen (Format-)vorlagen (templates) sind bisher verfügbar:<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! Titel !! class="unsortable" | Syntax !! class="unsortable" | Bemerkungen !! class="unsortable" | Ref<br />
|-<br />
| [[Vorlage:Anker|Anker]]<br />
| <nowiki>{{Anker|Ankertext}}</nowiki><br />
| Fügt an der aktuellen Stelle im Artikel eine Sprungmarke ein, auf die mit <nowiki>[[Artikel#Ankertext]]</nowiki> referiert werden kann, wie sonst auf eine Überschrift. ''Ankertext'' darf innerhalb der Seite nur einmal vorkommen.<br />
| [[Special:Linkliste/Vorlage:Anker|hier]]<br />
|-<br />
| [[Vorlage:Baustelle|Baustelle]]<br />
| <nowiki>{{Baustelle}}</nowiki><br />
| Fügt einen Rahmen mit einem fest vorgegebenen Text ein; stellt den Artikel in die Kategorie [[:Kategorie:Baustelle|Baustelle]] ein<br />
| [[Special:Linkliste/Vorlage:Baustelle|hier]]<br />
|-<br />
| [[Vorlage:DocLink|DocLink]]<br />
| <nowiki>{{DocLink|#1|#2}}</nowiki><br />
| Generiert einen Link auf z.B. ELV Dokumente (zur Erleichterung der Anpassung an URL-Änderungen, wie im Mai/Juni 2015 bei ELV geschehen). Die Vorlage ist (Stand 08/2015) noch in Entwicklung und nur für ELV-Links verwendbar.<br />
| [[Special:Linkliste/Vorlage:DocLink|hier]]<br />
|-<br />
| [[Vorlage:Infobox Hardware|Infobox&nbsp;Hardware]]<br />
| <nowiki>{{Infobox Hardware|Bild=...}}</nowiki><br />
| Formatvorlage für die Beschreibung von Hardwarekomponenten (Geräten).<br />
| [[Special:Linkliste/Vorlage:Infobox Hardware|hier]]<br />
|-<br />
| [[Vorlage:Hinweis|Hinweis]]<br />
| <nowiki>{{Hinweis|Text...}}</nowiki><br />
| fügt (in voller Seiten- oder Spaltenbreite) einen Rahmen mit Text ein<br />
| [[Special:Linkliste/Vorlage:Hinweis|hier]]<br />
|-<br />
| [[Vorlage:Infobox Modul|Infobox&nbsp;Modul]]<br />
| <nowiki>{{Infobox Modul|Typ=...}}</nowiki><br />
| Formatvorlage für die Beschreibung von [[:Kategorie:Gerätemodul|Modulen]], [[:Kategorie:Hilfsmodul|Hilfsmodulen]], [[:Kategorie:FHEM Befehl|Befehlen]] und [[:Kategorie:Modul (Inoffiziell)|inoffiziellen Modulen]] <br />
| [[Special:Linkliste/Vorlage:Infobox Modul|hier]]<br />
|-<br />
| [[Vorlage:Löschkandidat|Löschkandidat]]<br />
| <nowiki>{{Löschkandidat|Grund für die Löschung}}</nowiki><br />
| Fügt einen Rahmen mit dem angegebenen Text ein; stellt den Artikel oder die Datei in die Kategorie [[:Kategorie:Löschkandidaten|Löschkandidaten]] ein; ein [[FHEMWiki:Administratoren|Administrator]] wird die Seite oder die Datei dann nach Prüfung des Löschantrags entfernen oder den Löschantrag zurückweisen.<br />
| [[Special:Linkliste/Vorlage:Löschkandidat|hier]]<br />
|-<br />
| [[Vorlage:Link2CmdRef|Link2CmdRef]]<br />
| <nowiki>{{Link2CmdRef|Anker= |Lang= |Label= }}</nowiki><br />
| Erzeugt einen Link auf einen Bereich in der Commandref. <br />
| [[Special:Linkliste/Vorlage:Link2CmdRef|hier]]<br />
|-<br />
| [[Vorlage:Link2Forum|Link2Forum]]<br />
| <nowiki>{{Link2Forum|Area= |Topic= |Message= |LinkText= }}</nowiki><br />
| Erzeugt einen Link auf einen Bereich (Area), ein Thema (Topic) oder einen Beitrag (Message) im FHEM Forum. Thema und Beitrag werden mit numerischen Werten spezifiziert, mit dem Parameter <code>LinkText=</code> kann ein alternativer Text für den Link angegeben werden.<br />
| [[Special:Linkliste/Vorlage:Link2Forum|hier]]<br />
|-<br />
| [[Vorlage:Link2FU|Link2FU]]<br />
| <nowiki>{{Link2FU|user#|userName}}</nowiki><br />
| Erzeugt einen Link auf die Profilseite eines Benutzers im FHEM Forum. Parameter ''user#'' ist die Nummer des Benutzers im Forum; dieser Parameter muss angegeben werden. Optional kann der Benutzername angegeben werden.<br />
| [[Special:Linkliste/Vorlage:Link2FU|hier]]<br />
|-<br />
| [[Vorlage:Randnotiz|Randnotiz]]<br />
| <nowiki>{{Randnotiz|RNTyp=[g|Info|y|Warn|r|Fehl]|RNText=Text}}</nowiki><br />
| fügt einen Rahmen mit Text ein; mögliche Typen: Info (g(reen)), Warn (y(ellow)), Fehl (r(ed)) mit jeweils unterschiedlicher Hintergrundfarbe <br />
| [[Special:Linkliste/Vorlage:Randnotiz|hier]]<br />
|-<br />
| [[Vorlage:stub|stub]]<br />
| <nowiki>{{stub}}</nowiki><br />
| Fügt einen Textrahmen ein und stellt den Artikel in die Kategorie [[:Kategorie:NeedsEditing|NeedsEditing]] ein<br />
| [[Special:Linkliste/Vorlage:stub|hier]]<br />
|-<br />
| [[Vorlage:Taste|Taste]]<br />
| <nowiki>{{Taste|Text}}</nowiki><br />
| Formatiert den spezifizierten ''Text'' wie eine {{Taste|Taste}} <br />
| [[Special:Linkliste/Vorlage:Taste|hier]]<br />
<br />
|-<br />
| [[Vorlage:Todo|Todo]]<br />
| <nowiki>{{Todo|was muss noch getan werden...}}</nowiki><br />
| Fügt einen Rahmen mit dem angegebenen Text ein; stellt den Artikel in die Kategorie [[:Kategorie:NeedsEditing|NeedsEditing]] ein<br />
| [[Special:Linkliste/Vorlage:Todo|hier]]<br />
|-<br />
| &nbsp;<br />
| &nbsp;<br />
| &nbsp;<br />
| &nbsp;<br />
|-<br />
| [[Vorlage:ph1959de/Hallo|Hallo]]<br />
| <nowiki>{{subst:ph1959de/Hallo}}</nowiki><br />
| Begrüßung für neue Wiki-Benutzer; (derzeit noch) im privaten Namensraum, kann aber von anderen Benutzern so verwendet werden, da es mit dem Speichern der Seite in den endgültigen Text aufgelöst wird. Muss auf der Diskussionsseite des Benutzers eingetragen werden, der begrüßt werden soll.<br />
| &nbsp;<br />
|-<br />
| [[Vorlage:ph1959de/Vorschau|Vorschau]]<br />
| <nowiki>{{subst:ph1959de/Vorschau}}</nowiki><br />
| Bitte um Benutzung der Vorschaufunktion; (derzeit noch) im privaten Namensraum, kann aber von anderen Benutzern so verwendet werden, da es mit dem Speichern der Seite in den endgültigen Text aufgelöst wird. Muss auf der Diskussionsseite des Benutzers eingetragen werden, der an die Benutzung der Vorschaufunktion erinnert werden soll.<br />
| &nbsp;<br />
<br />
|- <br />
! colspan="4" style="text-align:left" | Mit *xxx* gekennzeichnete Vorlagen existieren derzeit noch nicht<br />
|}<br />
<br />
=== Schablonen ===<br />
Hier bitte Formatierungsbeispiele für bestimmte Anwendungssituationen einfügen (z.&nbsp;B.: wie binde ich Bilder ein, wie erzeuge ich Tabellen, Listen, usw.).<br />
<br />
Viele Anregungen, Anleitungen, Regeln, Empfehlungen können auch aus der [http://de.wikipedia.org/wiki/Hilfe:%C3%9Cbersicht Wikipedia Hilfe] übernommen werden.<br />
<br />
=== Neue Seite(n) ===<br />
Kopiervorlagen für neue Seiten. Beispiel: [[FHEMWiki:Über FHEMWiki#Beispiel: Neuer Artikel|Neuer Artikel]]. Die Verwendung dieser Schablonen soll den einheitlichen Aufbau (Gliederung, Abfolge, etc.) von Artikeln über einen Themenbereich fördern.<br />
<br />
Spezielle Kopiervorlagen finden sich auch in der Dokumentation zu einigen Formatvorlagen:<br />
* Infobox Hardware<br />
* Infobox Modul<br />
<br />
[[Kategorie:FHEM Wiki]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Allowed&diff=30408Allowed2019-05-07T15:03:51Z<p>Krikan: /* Beispiele */</p>
<hr />
<div>{{SEITENTITEL:allowed}} <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --><br />
{{Infobox Modul<br />
|ModPurpose=Absicherung des FHEM-Servers<br />
|ModType=h<br />
|ModCmdRef=allowed<br />
|ModForumArea=Automatisierung<br />
|ModTechName=96_allowed.pm <br />
|ModOwner=rudolfkoenig / [http://forum.fhem.de/index.php?action=profile;u=8 rudolfkoenig]<br />
}}<br />
DE | [[Allowed/en|EN]]<br />
<br />
[[allowed]] ist ein Erweiterungsmodul um Zugriffe auf die von fhem.pl bereitgestellten Serverdienste (FHEM-Webserver und FHEM-telnet-Server) abzusichern und zu steuern.<br />
<br />
==Einführung==<br />
In der Grundkonfiguration kann jeder, der sich in dem selben Netzwerk<ref>Haben z.B. in Ihrem Heimnetzwerk alle angeschlossenen Geräte Adressen aus dem Bereich 192.168.178.x, wäre ein Zugriff von einem Gerät mit der Adresse 192.168.178.3 zulässig, nicht aber von 192.168.'''179'''.3 </ref> wie der FHEM-Server befindet, unverschlüsselt und ohne der Eingabe von Benutzerdaten auf FHEM zugreifen. FHEM weist mit einer Sicherheitswarnung auf diesen Umstand hin.<br />
Das Definieren einer allowed-Instanz ist eine Möglichkeit, die Installation abzusichern.<br />
<br />
Daher ist es erforderlich, eine allowed-Instanz zu definieren, um<br />
* Zugriffe auf FHEM aus anderen Netzwerken zu ermöglichen und/oder<br />
* die Möglichkeiten, auf FHEM zuzugreifen für Teilnehmer desselben Netzwerks einzuschränken oder auszuschließen.<br />
<br />
== Syntax ==<br />
Ein allowed-Device für ein- oder mehrere FHEMWEB oder telnet-Instanzen wird wie folgt definiert:<br />
<br />
<pre><br />
define <name> allowed <deviceList><br />
</pre><br />
<br />
==Weitere Hinweise==<br />
Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten neben der Definition einer oder mehrerer allowed-Instanzen zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. [[Apache_Authentication_Proxy|Apache]] oder [[HTTPS-Absicherung_%26_Authentifizierung_via_nginx_Webserver|nginx]].<br />
Es wird dringend empfohlen, für alle Webserver des Typs '''FHEMWEB''' mithilfe des Attributes {{Link2CmdRef|Anker=HTTPS|Lang=de|Label=HTTPS}} eine HTTPS-Verbindung zu aktivieren. Für telnet (welches mehr oder weniger ein TCP/IP Port ist) wird das Attribut {{Link2CmdRef|Anker=SSL|Lang=de|Label=SSL}} verwendet. <br />
<br />
<!--<br />
== Einschränkungen == <br />
--><br />
== Beispiele ==<br />
Festlegen eines Users samt Passwort für gängige FHEMWEB-Instanzen:<br />
<pre><br />
define allowedWEB allowed<br />
attr allowedWEB validFor WEB,WEBphone,WEBtablet<br />
attr allowedWEB basicAuth { "$user:$password" eq "admin:secret" }<br />
attr allowedWEB allowedCommands set,get<br />
</pre><br />
Dasselbe für Telnet:<br />
<pre><br />
define allowedTelnet allowed<br />
attr allowedTelnet validFor telnetPort<br />
attr allowedTelnet password secret<br />
</pre><br />
<br />
Die <code>set <allowed></code>-Befehle <code>basicAuth <username> <password></code>, <code>password <password></code> und <code>globalpassword <password></code> setzen das entsprechende Attribut, indem sie aus den Parameter(n) und Salt ein SHA256 Hashwert berechnen (Achtung: das Perl-Modul Digest::SHA wird benötigt.). Beim direkten Setzen der Attribute, beispielsweise über <code>attr</code>, erfolgt keine Umsetzung von Attributwerten; die Attribute werden so gespeichert, wie angegeben.<br />
<br />
Erweiterung, dass nicht bei jedem Login die Anmeldeinformationen abgefragt werden:<br />
<br />
<pre><br />
attr allowedWEB basicAuthExpiry 90<br />
</pre><br />
basicAuthExpiry erwartet einen Wert in Tagen (in diesem Beispiel also 90 Tage). Nach der Anmeldung wird ein Cookie in den Browser des Benutzers gesetzt, der ein erneutes Eingeben der Anmeldedaten obsolet macht. Dies sollte nur in sicheren Umgebungen gemacht werden und lässt sich nur in Kombination mit einem gesetzten basicAuth realisieren.<br />
<br />
== Weblinks ==<br />
*[https://demaya.de/fhem-eingeloggt-bleiben-basicauthexpiry/ Ausführliche Erklärung zu dem Attribut "basicAuthExpiry"]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Syntax_Highlighting&diff=30406Syntax Highlighting2019-05-07T13:56:18Z<p>Krikan: Umstellung von <source> auf das aktuelle <syntaxhighlight> im Beispielcode</p>
<hr />
<div>FHEMWiki unterstützt [[Syntax Highlighting]] mit dem [https://de.wikipedia.org/wiki/GeSHi GeSHi-Plugin], das ab Version 1.21 Bestandteil von Mediawiki ist. Dort findet sich auch eine kurze [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi Benutzungsanleitung].<br />
<br />
Ein Anwendungsbeispiel für die Sprache ''Perl'' ist in der folgenden Tabelle dargestellt:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Eingabe !! Formatierte Ausgabe<br />
|- <br />
| <pre><nowiki>&lt;syntaxhighlight lang="perl"&gt;<br />
#!/usr/bin/perl<br />
use strict;<br />
use warnings;<br />
<br />
use Path::Class;<br />
use autodie; # die if problem reading or writing a file<br />
<br />
my $dir = dir("/tmp"); # /tmp<br />
<br />
my $file = $dir->file("file.txt"); # /tmp/file.txt<br />
<br />
# Get a file_handle (IO::File object) you can write to<br />
my $file_handle = $file->openw();<br />
<br />
my @list = ('a', 'list', 'of', 'lines');<br />
<br />
foreach my $line ( @list ) {<br />
# Add the line to the file<br />
$file_handle->print($line . "\n");<br />
}<br />
&lt;/syntaxhighlight&gt;</nowiki></pre><br />
|<br />
<syntaxhighlight lang="perl"><br />
#!/usr/bin/perl<br />
use strict;<br />
use warnings;<br />
<br />
use Path::Class;<br />
use autodie; # die if problem reading or writing a file<br />
<br />
my $dir = dir("/tmp"); # /tmp<br />
<br />
my $file = $dir->file("file.txt"); # /tmp/file.txt<br />
<br />
# Get a file_handle (IO::File object) you can write to<br />
my $file_handle = $file->openw();<br />
<br />
my @list = ('a', 'list', 'of', 'lines');<br />
<br />
foreach my $line ( @list ) {<br />
# Add the line to the file<br />
$file_handle->print($line . "\n");<br />
}<br />
</syntaxhighlight><br />
|}<br />
<br />
Aus der umfangreichen Liste der unterstützten Sprachen dürften zumindest die folgenden für FHEM relevant sein: <br />
* bash,<br />
* gnuplot,<br />
* java,<br />
* javascript,<br />
* perl,<br />
* php.<br />
<br />
[[Kategorie:FHEM Wiki]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Vitoconnect&diff=30405Vitoconnect2019-05-07T13:37:07Z<p>Krikan: cmdref-Link repariert / Syntaxhighlught-Fehler beseitigt</p>
<hr />
<div>{{SEITENTITEL:vitoconnect}} <br />
{{Baustelle}}<br />
{{Infobox Modul<br />
|ModPurpose=Steuerung von Viessmann Heizungen<br />
|ModCategory=Heizungssteuerung/Raumklima<br />
|ModCmdRef=vitoconnect<br />
|ModType=d<br />
|ModForumArea=Heizungssteuerung/Raumklima<br />
|ModTechName=98_vitoconnect.pm<br />
|ModOwner=andreas13 ({{Link2FU|3360|Forum}}/[[Benutzer Diskussion:Andreas13|Wiki]])}}<br />
<br />
[https://www.viessmann.de/de/viessmann-apps/vitoconnect.html Vitoconnect] ist die Schnittstelle zwischen Heizkessel und der App ViCare zum Bedienen von Viessmann Heizungsanlagen. <br />
<br />
Mit dem FHEM Modul [[vitoconnect]] können die Daten, die über die Internetschnittstelle an den Herstellerserver gemeldet und von diesem über eine API zur Verfügung gestellt werden, in FHEM in Form von Readings angezeigt werden. Auch eine Steuerung der Heizung ist mit diesem Modul möglich.<br />
<br />
Wen stört, dass die Daten in der Herstellercloud liegen, sei das Modul [[Vitotronic 200 (Viessmann Heizungssteuerung)]] empfohlen.<br />
<br />
Die Idee zu dem Modul enstand aus dem Thread {{Link2Forum|Topic=86073|LinkText="Viessmann VitoConnect API"}}. Es basiert auf dem PHP Modul von [https://github.com/thetrueavatar/Viessmann-Api thetrueavatar].<br />
<br />
{{Hinweis|Das Modul befindet sich derzeit noch in der Entwicklung. <br />
<br />
Das Modul wurde nach besten Wissen und Gewissen programmiert. Da Änderungen an der Heizung nur über die Vissmann API erfolgen, sollte die Nutzung risikoarm sein. Allerdings kann ich keine Garantie übernehmen, dass es nicht doch zu irgendwelchen unerwünschten Nebeneffekten kommt. Nutzung auf eigene Gefahr!<br />
<br />
Diskussionen über Fehler, Verbesserungen usw. finden im Forum im Thread {{Link2Forum|Topic=93664|LinkText="Neues Modul: vitoconnect"}} statt.}}<br />
<br />
== Einrichtung ==<br />
=== Vorbereitung ===<br />
Zur Nutzung des Moduls muss vorhanden sein:<br />
* Eine aktuelle FHEM Installation <br />
* Internet-Schnittstelle Vitoconnect 100 (Typ OPTO1)<br />
* Ein Viessmann ViCare Account, wie er im Rahmen der Nutzung der ViCare App erstellt wird.<br />
* Die Perl Library libtypes-path-tiny-perl muss installiert sein. Entweder mit '''sudo apt install libtypes-path-tiny-perl''' oder path::tiny via cpan installieren<br />
<br />
=== Define des Devices ===<br />
Dann kann das Gerät angelegt werden: <code>define <name> vitoconnect <user> <password> <interval></code><br />
<br />
Z.B. : <code>define vitoconnect vitoconnect user@mail.xx geheim 60</code><br />
<br />
User und Passwort sind das gleiche wie in der ViCare App.<br />
<br />
Da die Parameter, die beim Definieren des Devices angelegt werden im Klartext in der Detailansicht lesbar sind, kann man beim Definieren einfach ein falsches Passwort eingeben und das richtige später mit einem "set"-Kommando setzen. Also zum Beispiel:<br />
<br />
<code>define vitoconnect vitoconnect user@mail.xx fakePassword 60</code><br><br />
<code>set vitoconnect password correctPassword 60</code><br />
<br />
== Readings ==<br />
===Readings ===<br />
Die Readings werden so ausgegeben, wie sie von der API geliefert werden! Alle Reading für HK1 sind auch für HK2 und HK3 verfügbar sofern die Heizung solche Readings liefert.<br />
<br />
{|class="wikitable"<br />
|-<br />
! Name !! Datentyp/<BR/>Wertebereich !! Bedeutung <br />
|-<br />
|Aktive_Heizkreise ||0,1,2 ||Liste der aktiven Heizkreise. 0 entspricht HK1<br />
|-<br />
| || ||<br />
|-<br />
|Aussen_Status || connected/notConnected ||Ist ein Außensensor angeschlossen?<br />
|-<br />
| ''Aussen_StatusWired'' || connected/notConnected ||Ist ein Außensensor per Kabel angeschlossen? (wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
| ''Aussen_StatusWireless'' || connected/notConnected ||Ist ein kabelloser Außensensor angeschlossen? (wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
|Aussentemperatur || 2.4 ||Außentemperatur in °C<br />
|-<br />
| || ||<br />
|-<br />
|Brenner_Betriebsstunden|| 934.336944444444 || Brenner Betriebsstunden<br />
|-<br />
|Brenner_Fehlercode || 0 || Brenner Fehlercode <br />
|-<br />
|Brenner_Modulation|| 11 || Brenner Modulation in %<br />
|-<br />
|Brenner_Starts|| 2717 || Brenner Starts<br />
|-<br />
|Brenner_Status || ok ||Brenner Status <br />
|-<br />
|Brenner_aktiv || 0,1|| Brenneraktiv <br />
|-<br />
| || ||<br />
|-<br />
|Controller_Seriennummer || 1234567890123456 || Controller Seriennummer <br />
|-<br />
|Device_Time_Offset || 61 || ???<br />
|-<br />
|Fehlereinträge_Historie ||ErrorListChanges||??? (noch nicht implementiert)<br />
|-<br />
|Fehlereinträge_aktive ||ErrorListChanges ||??? (noch nicht implementiert)<br />
|-<br />
| || ||<br />
|-<br />
|Gasverbrauch_Heizung/Jahr || 3293,0,0 ||Liste der jährlichen Gasverbräuche Heizung in kWH (aktuelles Jahr und die letzten beiden) '''(bis zum 09.12.2018 lieferte die API Werte, die noch durch 8 geteilt werden mussten, um auf kWh zu kommen!'''<br />
Außerdem liefert Vissmann für manche Heizungstypen (noch) '''keine getrennten Werte für Heizung und WW'''. D.h. in den Reading für WW und Heizung steht der gleiche Wert (vermutlich der Gesamtverbrauch)!<br />
|-<br />
|Gasverbrauch_Heizung/Monat || 1078,1384,590,241,0,0,0,0,0,0,0,0,0 ||Liste der monatlichen Gasverbräuche Heizung in kWH<br />
|-<br />
|Gasverbrauch_Heizung/Tag || 76,104,113,99,76,65,60,70 ||Liste der täglichen Gasverbräuche Heizung in kWH (aktueller und die letzten 7 Tage)<br />
|-<br />
|Gasverbrauch_Heizung/Woche ||555,409,416,472,289,196,254,209,24,46,<br />
183,192,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,<br />
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 <br />
|| Liste der wöchentlichen Gasverbräuche Heizung in kWH<br />
|-<br />
|Gasverbrauch_WW/Jahr || 235,705,0 || Liste der jährlichen Gasverbräuche Warmwasser in kWH<br />
|-<br />
|Gasverbrauch_WW/Monat || 27,208,213,193,215,84,0,0,0,0,0,0,0 ||Liste der monatlichen Gasverbräuche Warmwasser in kWH<br />
|-<br />
|Gasverbrauch_WW/Tag || 2,6,0,0,0,2,9,0 ||Liste der täglichen Gasverbräuche Warmwasser in kWH<br />
|-<br />
|Gasverbrauch_WW/Woche || 17,0,37,43,51,50,41,53,52,47,41,52,44,49,41,45,52,47,45,49,51,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ||Liste der wöchentlichen Gasverbräuche Warmwasser in kWH<br />
|-<br />
| || ||<br />
|-<br />
|HK1-Betriebsart ||standby, dwh, dhwAndHeating, forcedReduced, forcedNormal ||Aus, Nur Warmwasser aktiv , Heizung und Warmwasser aktiv, Dauernd Reduziert, Dauernd Tagbetrieb <br />
|-<br />
| || ||<br />
|-<br />
|HK1-External_Temperatur || 0 ||Temperatur Raumsensor?<br />
|-<br />
|HK1-External_aktiv || 0 ||Raumsensor aktiv?<br />
|-<br />
| || ||<br />
|-<br />
|HK1-Frostschutz_Status || on, off ||Frostschutz Status <br />
|-<br />
| || ||<br />
|-<br />
|HK1-Heizkurve-Niveau || 0 || Heizkurve-Niveau <br />
|-<br />
|HK1-Heizkurve-Steigung || 1.4 || Heizkurve-Steigung <br />
|-<br />
| || ||<br />
|-<br />
|HK1-Programmstatus || standby, reduced, normal, forcedReduced, forcedNormal ||Programmstatus <br />
|-<br />
|HK1-Raum_Status || error ||Raumsensor?<br />
|-<br />
|HK1-Raum_Temperatur || 20 ||Temperatur Raumsensor? Nur vorhanden, wenn HK1-Raum_Status "ok"<br />
|-<br />
|HK1-Reduzierte_Temperatur_erzwungen || 0,1 ||xxx<br />
|-<br />
|HK1-Solltemperatur_aktiv || 0,1 || Solltemperatur aktiv<br />
|-<br />
|HK1-Solltemperatur_comfort || 22 || Comfort Solltemeratur<br />
|-<br />
|HK1-Solltemperatur_comfort_aktiv || 0,1 || Comfort aktiv<br />
|-<br />
|HK1-Solltemperatur_eco || 24 || Eco Solltemperatur<br />
|-<br />
|HK1-Solltemperatur_eco_aktiv || 0,1 || Eco aktiv<br />
|-<br />
|HK1-Solltemperatur_erzwungen || 0,1 || Solltemperatur erzwungen<br />
|-<br />
|HK1-Solltemperatur_normal || 24 || Solltemperatur normal<br />
|-<br />
|HK1-Solltemperatur_reduziert || 16 || Solltemperatur reduziert<br />
|-<br />
|HK1-Solltemperatur_reduziert_aktiv || 0,1 || Reduziert aktiv<br />
|-<br />
|HK1-Standby_aktiv || 0,1 || Standby aktiv<br />
|-<br />
| || ||<br />
|-<br />
|HK1-Urlaub_Ende || 2019-02-16T00:00:00.000Z ||Urlaubsabsenkung Ende<br />
|-<br />
|HK1-Urlaub_Start || 2019-02-02T23:59:59.000Z ||Urlaubsabsenkung Start<br />
|-<br />
|HK1-Urlaub_aktiv || 0,1 || Urlaubsabsenkung aktiv<br />
|-<br />
| || ||<br />
|-<br />
|HK1-Vorlauftemperatur || 81 || Vorlauftemperatir<br />
|-<br />
|HK1-Vorlauftemperatur_aktiv || connected || Vorlauftemperatursensor verbunden<br />
|-<br />
| || ||<br />
|-<br />
|HK1-WW_aktiv || 0,1 ||Modus WW (dhw) aktiv<br />
|-<br />
|HK1-WW_und_Heizen_aktiv || 0,1 || Modus WW und Heizen (dhwAndHeating) aktiv<br />
|-<br />
|HK1-Zeitsteuerung_Heizung || <br />
wed start:05:00 mode:normal end:08:00 position:0, mode:normal end:23:00 position:1 start:16:00, sat position:0 end:23:00 mode:normal start:06:00,<br />
thu position:0 mode:normal end:08:00 start:05:00, start:16:00 end:23:00 mode:normal position:1, sun start:06:00 position:0 end:23:00 mode:normal,<br />
mon start:05:00 position:0 end:08:00 mode:normal, start:16:00 position:1 mode:normal end:23:00,<br />
fri start:05:00 position:0 end:08:00 mode:normal, position:1 mode:normal end:23:00 start:16:00,<br />
tue position:0 mode:normal end:08:00 start:05:00, mode:normal end:23:00 position:1 start:16:00, <br />
|| Zeitplan für Heizung<br />
|-<br />
|HK1-Zeitsteuerung_Heizung_aktiv || 0,1 || Zeitplan Heizung aktiv<br />
|-<br />
|''HK1-Zeitsteuerung_Zirkulation'' || 0,1 || Zeitplan für Zirkulationspumpe. Ist irgendwann nach WW gewandert?<br />
|-<br />
|''HK1-Zeitsteuerung_Zirkulation_aktiv'' || 0,1 || Zirkulationspumpe zeitgesteuert<br />
|-<br />
| HK1-Zirkulationspumpe || on,off || Zirkulationspumpe aktiv (neu seit 16.12.18?)<br />
|-<br />
|HK1-aktiv || 1 ||HK1 aktiv<br />
|-<br />
| || ||<br />
|-<br />
|Kessel_Common_Supply || error || ??? (neu seit 16.12.18?)<br />
|-<br />
|Kessel_Status || connected ||xxx<br />
|-<br />
|Kesseltemperatur || 53 ||xxx<br />
|-<br />
|Kesseltemperatur_exact|| 53 ||??? (neu seit 16.12.18?)<br />
|-<br />
|Mehrfamilienhaus_aktiv || 0,1 ||xxx<br />
|-<br />
| || ||<br />
|-<br />
|''Service_Betriebsstunden_seit_letzten'' || 0 ||(wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
|''Service_Intervall_Betriebsstunden'' || 0 ||(wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
|Service_Intervall_Monate || 0 || ???<br />
|-<br />
|Service_Letzter || 1970-01-01T00:00:00.000Z || ???<br />
|-<br />
|''Service_Letzter_brennerbasiert'' || 1970-01-01T00:00:00.000Z ||(wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
|Service_Monate_aktiv_seit_letzten_Service || 0 || ???<br />
|-<br />
|Service_fällig || 0,1 || Service fällig?<br />
|-<br />
|''Service_fällig_brennerbasiert'' || ||(wird seit 16.12.18 nicht mehr geliefert?)<br />
|-<br />
| || ||<br />
|-<br />
|Stromverbrauch/Jahr|| 35573,66052,0 || Stromverbrauch im Jahr in Wh(?) (analog Gasverbrauch) (neu seit 15.02.19?)<br />
|-<br />
|Stromverbrauch/Monat|| 11860,23713,22851,19264,17924,6013,0,0,0,0,0,0,0 || Stromverbrauch im Monat(analog Gasverbrauch) (neu seit 15.02.19?)<br />
|-<br />
|Stromverbrauch/Tag|| 409,828,720,733,731,727,708,682 || Stromverbrauch im Tag (analog Gasverbrauch) (neu seit 15.02.19?)<br />
|-<br />
|Stromverbrauch/Woche|| 4418,5058,5514,5802,5249,5109,5156,5702,5179,5547,4286,4710,5087,4236,<br />
4075,4633,4307,3675,3721,4148,4594,1419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 <br />
|| Stromverbrauch im Woche (analog Gasverbrauch) (neu seit 15.02.19?)<br />
|-<br />
| || ||<br />
|-<br />
|WW-Aufladung|| 0,1 || WW Vorrat wird erhitzt (neu seit 16.12.18?)<br />
|-<br />
|WW-Haupttemperatur|| 54 || ?? (neu seit 16.12.18?)<br />
|-<br />
|WW-Isttemperatur || 56 || WW Ist-Temperatur<br />
|-<br />
|WW-Sensoren_Auslauf_Status|| error || ??? (neu seit 16.12.18?)<br />
|-<br />
|WW-Solltemperatur || 53 || WW Solltemperatur<br />
|-<br />
|WW-Temperatur_aktiv || connected || WW aktiv<br />
|-<br />
|WW-Zeitplan ||<br />
fri position:0 mode:on end:22:30 start:06:30, mon start:06:30 mode:on end:22:30 position:0, <br />
sat start:06:30 position:0 mode:on end:22:30, wed end:22:30 mode:on position:0 start:06:30,<br />
thu start:06:30 position:0 mode:on end:22:30,<br />
tue position:0 mode:on end:22:30 start:06:30, sun mode:on end:22:30 position:0 start:06:30,<br />
|| WW Zeitplan<br />
|-<br />
|WW-Zirkulationspumpe_Zeitsteuerung_aktiv || 0,1 || Zeitsteuerung Zirkulationspumpe aktiv(neu seit 16.12.18?)<br />
|-<br />
|WW-Zirkulationspumpe_Status|| on || Status Zirkulationspumpe(neu seit 16.12.18?)<br />
|-<br />
|WW-Zirkulationspumpe_Zeitplan ||<br />
wed start:04:30 mode:on end:22:30 position:0, mon start:04:30 position:0 end:22:30 mode:on,<br />
sun start:04:30 position:0 mode:on end:22:30, sat start:04:30 position:0 end:22:30 mode:on, thu start:04:30 end:22:30 mode:on position:0,<br />
tue start:04:30 mode:on end:22:30 position:0, fri position:0 end:22:30 mode:on start:04:30,<br />
|| Zeitplan für die Zirkulationspumpe (neu seit 16.12.18?)<br />
|-<br />
|WW-Zirkulationspumpe_primaer|| off || (neu seit 16.12.18?)<br />
|-<br />
|WW-aktiv || 0,1 || WW aktiv<br />
|-<br />
|WW-onTimeCharge_aktiv || 0,1 || einmaliges WW Aufladen aktiv<br />
|-<br />
|WW-zeitgesteuert_aktiv || 0,1 || WW zeitgesteuert<br />
|-<br />
| || ||<br />
|-<br />
|state || ok, Login failure|| Status<br />
|-<br />
<br />
|}<br />
<br />
== Settings ==<br />
<br />
===Set Befehle ===<br />
'''Benutzung der Set-Befehle auf eigenes Risiko!'''<br />
<br />
Das Modul prüft nicht, ob ein Befehl oder die Parameter für die Heizung sinnvoll und möglich sind. Die API scheint dies mit einem Fehler quittieren.<br />
<br />
Befehle für HK1 sind auch für HK2 und HK3 verfügbar. <br />
<br />
{|class="wikitable"<br />
|-<br />
! Name !! Datentyp/<BR/>Wertebereich !! Beschreibung <br />
|-<br />
|update|| ||löst ein Update der Reading zwischen manuell aus<br />
|-<br />
|clearReadings|| || clear all readings immeadiatlely <br />
|-<br />
|password <passwd>||String|| store password in key store<br />
|-<br />
|logResponseOnce|| || dumps the json response of Vissmann server to entities.json, gw.json, actions.json in FHEM log directory<br />
|-<br />
| || || <br />
|-<br />
|HK1-Heizkurve-Niveau <shift>||-13 bis 40 || set shift of heating curve<br />
|-<br />
|HK1-Heizkurve-Steigung <slope>||0.2 bis 3.5 || set slope of heating curve <br />
|-<br />
|HK1-Betriebsart <mode>||standby,dhw,dhwAndHeating,forcedReduced or forcedNormal ||set HK1-Betriebsart<br />
|-<br />
|HK1-Solltemperatur_comfort_aktiv <activate,deactivate>|| ||activate/deactivate comfort temperature<br />
|-<br />
|HK1-Solltemperatur_comfort <targetTemperature>|| || set comfort target temperatur <br />
|-<br />
|HK1-Solltemperatur_eco_aktiv activate,deactivate || || activate/deactivate eco temperature<br />
|-<br />
|HK1-Urlaub_Start <start>|| 2019-02-02T23:59:59.000Z|| set holiday start time <br />
|-<br />
|HK1-Urlaub_Ende <end>||2019-02-16T00:00:00.000Z || set holiday end time <br />
|-<br />
|HK1-Urlaub_unschedule|| || remove holiday start and end time <br />
|-<br />
|HK1-Solltemperatur_normal <targetTemperature>|| 3 and 37|| sets the normale target temperature <br />
|-<br />
|HK1-Solltemperatur_reduziert <targetTemperature>|| 3 and 37|| sets the reduced target temperature <br />
|-<br />
| || || <br />
|-<br />
|WW-einmaliges_Aufladen activate,deactivate|| ||activate or deactivate one time charge for hot water <br />
|-<br />
|WW-Zirkulationspumpe_Zeitplan <schedule>|| || not implemented <br />
|-<br />
|WW-Zeitplan <schedule>|| || not implemented <br />
|-<br />
|WW-Haupttemperatur <targetTemperature>||10 and 60 || sets hot water main temperature to targetTemperature <br />
|-<br />
|WW-Solltemperatur <targetTemperature>|| 10 and 60|| sets hot water temperature to targetTemperature <br />
|}<br />
<br />
== Get ==<br />
<br />
Derzeit gibt es keine "get"-Kommandos.<br />
<br />
{|class="wikitable"<br />
|-<br />
! Name !! Beschreibung<br />
|-<br />
| || <br />
|}<br />
<br />
== Attribute ==<br />
<br />
===Attribute ===<br />
<br />
{|class="wikitable"<br />
|-<br />
! Name !! Datentyp/<BR/>Wertebereich !! Default-Wert !! Beschreibung<br />
|-<br />
|disable|| 0,1 || ||disable updates<br />
|-<br />
|verbose|| 0,1,2,3,4,5 || ||Loglevel<br />
|-<br />
|vitoconnect_raw_readings|| 0,1 || ||lege Reading mit dem JSON Namen wie 'heating.circuits.0.heating.curve.slope' statt der Deutschen Bezeichnungen an<br />
|-<br />
|vitoconnect_actions_active|| 0,1 || || erzeuge Readings for Befehle wie 'heating.circuits.0.heating.curve.setCurve'<br />
|}<br />
<br />
== Hilfsmittel ==<br />
=== Attribut zum Speichern der wichtigsten Werte mittels DbLog ===<br />
<syntaxhighlight lang="Perl">attr vitoconnect DbLogInclude Gasverbrauch_gestern,Gasverbrauch_Heizung/Jahr,Gasverbrauch_aktuelle_Woche,Gasverbrauch_aktueller_Monat,Gasverbrauch_heute,WW-aktiv,<br />
HK1-Frostschutz_Status,HK1-WW_und_Heizen_aktiv,HK1-WW_aktiv,HK1-Betriebsart,HK1-Programmstatus,Aussentemperatur,HK1-Solltemperatur_normal,Brenner_aktiv,<br />
HK1-Vorlauftemperatur,Kesseltemperatur,WW-Isttemperatur,WW-Solltemperatur</syntaxhighlight><br />
<br />
=== Userreadings um Reading für Einzelwerte von Gasverbräuche zu erzeugen ===<br />
<syntaxhighlight lang="Perl"><br />
attr vitoconnect userReadings<br />
Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_Heizung/Tag",0))[0] },<br />
Gasverbrauch_gestern:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Tag",0))[1] },<br />
Gasverbrauch_aktuelle_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Woche",0))[0] },<br />
Gasverbrauch_letzte_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Woche",0))[1] },<br />
Gasverbrauch_aktueller_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Monat",0))[0] },<br />
Gasverbrauch_letzter_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Monat",0))[1] },<br />
Gasverbrauch_aktuelles_Jahr:Gasverbrauch_Heizung/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Jahr",0))[0] },<br />
Gasverbrauch_letztes_Jahr:Gasverbrauch_Heizung/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Jahr",0))[1] },<br />
<br />
Gasverbrauch_WW_heute:Gasverbrauch_WW/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_WW/Tag",0))[0] },<br />
Gasverbrauch_WW_gestern:Gasverbrauch_WW/Tag.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Tag",0))[1] },<br />
Gasverbrauch_WW_aktuelle_Woche:Gasverbrauch_WW/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Woche",0))[0] },<br />
Gasverbrauch_WW_letzte_Woche:Gasverbrauch_WW/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Woche",0))[1] },<br />
Gasverbrauch_WW_aktueller_Monat:Gasverbrauch_WW/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Monat",0))[0] },<br />
Gasverbrauch_WW_letzter_Monat:Gasverbrauch_WW/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Monat",0))[1] },<br />
Gasverbrauch_WW_aktuelles_Jahr:Gasverbrauch_WW/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Jahr",0))[0] },<br />
Gasverbrauch_WW_letztes_Jahr:Gasverbrauch_WW/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_WW/Jahr",0))[1] },<br />
<br />
Stromverbrauch_heute:Stromverbrauch/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Tag",0))[0] },<br />
Stromverbrauch_gestern:Stromverbrauch/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Tag",0))[1] },<br />
Stromverbrauch_aktuelle_Woche:Stromverbrauch/Woche.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Woche",0))[0] },<br />
Stromverbrauch_letzte_Woche:Stromverbrauch/Woche.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Woche",0))[1] },<br />
Stromverbrauch_aktueller_Monat:Stromverbrauch/Monat.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Monat",0))[0] },<br />
Stromverbrauch_letzter_Monat:Stromverbrauch/Monat.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Monat",0))[1] },<br />
Stromverbrauch_aktuelles_Jahr:Stromverbrauch/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Jahr",0))[0] },<br />
Stromverbrauch_letztes_Jahr:Stromverbrauch/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Jahr",0))[1] }<br />
<br />
</syntaxhighlight><br />
<br />
=== ReadingsGroup für eine kompakte Darstellung ===<br />
<br />
<syntaxhighlight lang="perl" style="width:90%;"><br />
defmod vitoconnect_rg readingsGroup<br />
vitoconnect:Aussentemperatur<br />
<Brenner><br />
vitoconnect:Brenner_Betriebsstunden<br />
vitoconnect:Brenner_Fehlercode<br />
vitoconnect:Brenner_Modulation<br />
vitoconnect:Brenner_Starts<br />
vitoconnect:Brenner_Status<br />
vitoconnect:Brenner_aktiv<br />
<HK1><br />
vitoconnect:HK1-aktiv<br />
vitoconnect:HK1-Betriebsart<br />
<br />
vitoconnect:HK1-Frostschutz_Status<br />
<br />
vitoconnect:HK1-Heizkurve-Niveau<br />
vitoconnect:HK1-Heizkurve-Steigung<br />
<br />
vitoconnect:HK1-Programmstatus<br />
vitoconnect:HK1-Raum_Status<br />
vitoconnect:HK1-Reduzierte_Temperatur_erzwungen<br />
vitoconnect:HK1-Solltemperatur_aktiv<br />
vitoconnect:HK1-Solltemperatur_erzwungen<br />
vitoconnect:HK1-Solltemperatur_normal<br />
vitoconnect:HK1-Solltemperatur_reduziert<br />
vitoconnect:HK1-Solltemperatur_reduziert_aktiv<br />
vitoconnect:HK1-Standby_aktiv<br />
<br />
vitoconnect:HK1-Urlaub_Ende<br />
vitoconnect:HK1-Urlaub_Start<br />
vitoconnect:HK1-Urlaub_aktiv<br />
<br />
vitoconnect:HK1-Vorlauftemperatur<br />
<br />
vitoconnect:HK1-WW_aktiv<br />
vitoconnect:HK1-WW_und_Heizen_aktiv<br />
<br />
vitoconnect:HK1-Zeitsteuerung_Heizung_aktiv<br />
vitoconnect:HK1-Zeitsteuerung_Zirkulation_aktiv<br />
<br />
vitoconnect:HK1-Zirkulationspumpe<br />
<Kessel><br />
vitoconnect:Kesseltemperatur<br />
vitoconnect:Kesseltemperatur_exact<br />
<WW><br />
vitoconnect:WW-Aufladung<br />
vitoconnect:WW-Haupttemperatur<br />
vitoconnect:WW-Isttemperatur<br />
vitoconnect:WW-Solltemperatur<br />
vitoconnect:WW-Zirklationspumpe_Zeitsteuerung_aktiv<br />
vitoconnect:WW-Zirkulationspumpe_Status<br />
vitoconnect:WW-Zirkulationspumpe_primaer<br />
vitoconnect:WW-aktiv<br />
vitoconnect:WW-onTimeCharge_aktiv<br />
vitoconnect:WW-zeitgesteuert_aktiv<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="perl" style="width:90%;"><br />
attr vitoconnect_rg alias Heizung<br />
attr vitoconnect_rg cellStyle { <br />
"c:0"=>'style="text-align:left"', <br />
"c:1"=>'style="text-align:right"', <br />
"r:2"=>'style="text-align:right;;;;font-weight:bold"'<br />
}<br />
attr vitoconnect_rg mapping {<br />
"Aussentemperatur" => "Aussentemperatur",<br />
<br />
"Brenner_Betriebsstunden" => "Betriebsstunden",<br />
"Brenner_Fehlercode" => "Fehlercode",<br />
"Brenner_Modulation" => "Modulation",<br />
"Brenner_Starts" => "Starts",<br />
"Brenner_Status" => "Status",<br />
"Brenner_aktiv" => "aktiv",<br />
<br />
"HK1-aktiv" => "aktiv",<br />
"HK1-Betriebsart" => "Betriebsart",<br />
"HK1-Frostschutz_Status" => "Frostschutz_Status",<br />
"HK1-Heizkurve-Niveau" => "Heizkurve-Niveau",<br />
"HK1-Heizkurve-Steigung" => "Heizkurve-Steigung",<br />
"HK1-Programmstatus" => "Programmstatus",<br />
"HK1-Raum_Status" => "Raum Status",<br />
"HK1-Reduzierte_Temperatur_erzwungen" => "Reduzierte Temperatur erzwungen",<br />
"HK1-Solltemperatur_aktiv" => "Solltemperatur aktiv",<br />
"HK1-Solltemperatur_erzwungen" => "Solltemperatur erzwungen",<br />
"HK1-Solltemperatur_normal" => "Solltemperatur normal",<br />
"HK1-Solltemperatur_reduziert" => "Solltemperatur reduziert",<br />
"HK1-Solltemperatur_reduziert_aktiv" => "Solltemperatur reduziert_aktiv",<br />
"HK1-Standby_aktiv" => "Standby aktiv",<br />
"HK1-Urlaub_Ende" => "Urlaub Ende",<br />
"HK1-Urlaub_Start" => "Urlaub Start",<br />
"HK1-Urlaub_aktiv" => "Urlaub aktiv",<br />
"HK1-Vorlauftemperatur" => "Vorlauftemperatur",<br />
"HK1-WW_aktiv" => "WW aktiv",<br />
"HK1-WW_und_Heizen_aktiv" => "WW und Heizen aktiv",<br />
"HK1-Zeitsteuerung_Heizung_aktiv" => "Zeitsteuerung Heizung aktiv",<br />
"HK1-Zirkulationspumpe" => "Zirkulationspumpe",<br />
<br />
"Kesseltemperatur" => "Kesseltemperatur",<br />
"Kesseltemperatur_exact" => "Kesseltemperatur exact",<br />
<br />
"WW-Aufladung" => "Aufladung",<br />
"WW-Haupttemperatur" => "Haupttemperatur",<br />
"WW-Isttemperatur" => "Isttemperatur",<br />
"WW-Solltemperatur" => "Solltemperatur",<br />
"WW-Zirklationspumpe_Zeitsteuerung_aktiv" => "Zirkulationspumpe Zeitsteuerung aktiv",<br />
"WW-Zirkulationspumpe_Status" => "Zirkulationspumpe Status",<br />
"WW-Zirkulationspumpe_primaer" => "Zirkulationspumpe primaer",<br />
"WW-aktiv" => "aktiv",<br />
"WW-onTimeCharge_aktiv" => "onTimeCharge aktiv",<br />
"WW-zeitgesteuert_aktiv" => "zeitgesteuert aktiv"<br />
}<br />
<br />
attr vitoconnect_rg nostate 1<br />
attr vitoconnect_rg notime 1<br />
attr vitoconnect_rg room Heizung<br />
attr vitoconnect_rg sortby 1<br />
attr vitoconnect_rg valueFormat { "Brenner_Betriebsstunden" => "%2d" }<br />
attr vitoconnect_rg valueIcon {'Brenner_aktiv.0' => '1px-spacer', <br />
'Brenner_aktiv.1' => 'icoHEIZUNG',<br />
'HK1-Solltemperatur_reduziert_aktiv.0' => '10px-kreis-rot',<br />
'HK1-Solltemperatur_reduziert_aktiv.1' => '10px-kreis-gruen'<br />
}<br />
<br />
attr vitoconnect_rg valueSuffix {<br />
Aussentemperatur => "°C", <br />
<br />
Brenner_Betriebsstunden => "h",<br />
Brenner_Modulation => "%",<br />
<br />
'HK1-Solltemperatur_normal' => "°C",<br />
'HK1-Solltemperatur_reduziert' => "°C",<br />
'HK1-Vorlauftemperatur' => " °C",<br />
<br />
Kesseltemperatur => "°C",<br />
Kesseltemperatur_exact => "°C",<br />
<br />
'WW-Solltemperatur' => " °C",<br />
'WW-Isttemperatur' => " °C",<br />
<br />
'WW-Solltemperatur' => "°C"<br />
}<br />
</syntaxhighlight><br />
<br><br />
<br />
[[Datei:ReadingsGroup für Vitoconnect Modul 3.jpg|200px]]<br />
<br />
=== ReadingsGroup für eine kompakte Darstellung der Verbräuche ===<br />
<br />
<syntaxhighlight lang="Perl" style="width:100%;"><br />
defmod Heizung_Verbrauch readingsGroup <>,<Periode>,<Heizung>,<Wasser>,<Strom>\<br />
vitoconnect:,<heute>,Gasverbrauch_heute,Gasverbrauch_WW_heute,Stromverbrauch_heute\<br />
vitoconnect:,<gestern>,Gasverbrauch_gestern,Gasverbrauch_WW_gestern,Stromverbrauch_gestern\<br />
vitoconnect:,<Woche>,Gasverbrauch_aktuelle_Woche,Gasverbrauch_WW_aktuelle_Woche,Stromverbrauch_aktuelle_Woche\<br />
vitoconnect:,<letzte>,Gasverbrauch_letzte_Woche,Gasverbrauch_WW_letzte_Woche,Stromverbrauch_letzte_Woche\<br />
vitoconnect:,<Monat>,Gasverbrauch_aktueller_Monat,Gasverbrauch_WW_aktueller_Monat,Stromverbrauch_aktueller_Monat\<br />
vitoconnect:,<letzter>,Gasverbrauch_letzter_Monat,Gasverbrauch_WW_letzter_Monat,Stromverbrauch_letzter_Monat\<br />
vitoconnect:,<Jahr>,Gasverbrauch_aktuelles_Jahr,Gasverbrauch_WW_aktuelles_Jahr,Stromverbrauch_aktuelles_Jahr\<br />
vitoconnect:,<letztes>,Gasverbrauch_letztes_Jahr,Gasverbrauch_WW_letztes_Jahr,Stromverbrauch_letztes_Jahr\<br />
<br />
attr Heizung_Verbrauch cellStyle { \<br />
"r:1"=>'style="text-align:left;;;;font-weight:bold"',\<br />
"c:1"=>'style="text-align:right;;;;font-weight:bold"'\<br />
}<br />
attr Heizung_Verbrauch mapping &nbsp;;<br />
attr Heizung_Verbrauch nostate 1<br />
attr Heizung_Verbrauch room Heizung<br />
attr Heizung_Verbrauch style style="text-align:right;;;;font-size:18px"<br />
attr Heizung_Verbrauch valueFormat {\<br />
Gasverbrauch_heute => "%.0f kWh",\<br />
Gasverbrauch_WW_heute => "%.0f kWh",\<br />
Stromverbrauch_heute => "%.0f kWh",\<br />
Gasverbrauch_gestern => "%.0f kWh",\<br />
Gasverbrauch_WW_gestern => "%.0f kWh",\<br />
Stromverbrauch_gestern => "%.0f kWh",\<br />
Gasverbrauch_aktuelle_Woche => "%.0f kWh",\<br />
Gasverbrauch_WW_aktuelle_Woche => "%.0f kWh",\<br />
Stromverbrauch_aktuelle_Woche => "%.0f kWh",\<br />
Gasverbrauch_letzte_Woche => "%.0f kWh",\<br />
Gasverbrauch_WW_letzte_Woche => "%.0f kWh",\<br />
Stromverbrauch_letzte_Woche => "%.0f kWh",\<br />
Gasverbrauch_aktueller_Monat => "%.0f kWh",\<br />
Gasverbrauch_WW_aktueller_Monat => "%.0f kWh",\<br />
Stromverbrauch_aktueller_Monat => "%.0f kWh",\<br />
Gasverbrauch_letzter_Monat => "%.0f kWh",\<br />
Gasverbrauch_WW_letzter_Monat => "%.0f kWh",\<br />
Stromverbrauch_letzter_Monat => "%.0f kWh",\<br />
Gasverbrauch_aktuelles_Jahr => "%.0f kWh",\<br />
Gasverbrauch_WW_aktuelles_Jahr => "%.0f kWh",\<br />
Stromverbrauch_aktuelles_Jahr => "%.0f kWh",\<br />
Gasverbrauch_letztes_Jahr => "%.0f kWh",\<br />
Gasverbrauch_WW_letztes_Jahr => "%.0f kWh",\<br />
Stromverbrauch_letztes_Jahr => "%.0f kWh"\<br />
}<br />
</syntaxhighlight><br />
[[Datei:Readuingsgroup Verbräuche aus Vitoconnect 2.jpg|200px]]<br />
<br />
=== SVG Graphen ===<br />
==== Gas- und Stromverbrauch ====<br />
<br />
[[Datei:SVG Gasverbrauch für vitoconnect Modul.jpg|800px]]<br />
[[Datei:Verbräuche aus Vitoconnect.jpg|800px]]<br />
<br />
==== weitere Graphen ====<br />
[[Datei:Beispiel für Grafiken aus vitoconnect Daten.jpg|800px]]<br />
<br />
== Weblinks ==<br />
* {{Link2Forum|Topic=93664|LinkText="Thread zum Modul im Forum"}}<br />
<br />
[[Kategorie:Heizungssteuerung]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=DoorBird&diff=30401DoorBird2019-05-07T09:43:00Z<p>Krikan: </p>
<hr />
<div>{{Infobox Modul<br />
|Name=DoorBird<br />
|ModPurpose= Anbindung eines DoorBird Interkommunikations-Systems<br />
|ModType=d<br />
<!-- |ModCategory= (noch?) nicht verwendet --><br />
|ModCmdRef=DoorBird<br />
|ModForumArea=Sonstiges<br />
|ModTechName=73_DoorBird.pm<br />
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=4705 Sailor]<br />
}}<br />
<br />
== Allgemein ==<br />
<!-- Bitte aus rechtlichen Gründen eigene Aufnahmen einstellen [[Datei:D2101V.png|1024px|thumb|left |DoorBird D2101V<BR>Quelle: "Bird Home Automation GmbH" <BR> &copy; Bird Home Automation]]<br />
[[Datei:D2101KV.png|1024px|thumb|left |DoorBird D2101KV<BR>Quelle: "Bird Home Automation GmbH" <BR> &copy; Bird Home Automation]]--><br />
<br />
Das Modul 73_DoorBird.pm erm&ouml;glicht die Anbindung einer DoorBird T&uuml;r Interkommunikations Einheit an einen FHEM-Server zur Konfiguration und Kommunikation.<br />
<div style="clear:both;"></div><br />
<br />
<br />
== Vorbereitungen ==<br />
=== Vorbereitungen der Hardware ===<br />
<br />
==== Installation der Hardware ====<br />
Die DoorBird Ger&auml;te m&uuml;ssen entsprechend der Installationsanleitung hardwareseitig installiert werden. <br />
Insbesondere bei Verwendung von Wireless LAN (WLAN) Sollte man auf eine stabile Verbindung bzw. ausreichend Feldst&auml;rke achten.<br />
Sollte die DoorBird Anlage mittels LAN - Kabel angeschlossen werden, muss man die Entfernungseinschr&auml;nkungen insbesondere bei der Verwendung der Power over Ethernet (PoE) - Injektion beachten.<br />
<br />
<br />
==== Update der Firmware ====<br />
Um eine funktionsf&auml;hige Kommunikation zwischen dem FHEM-Modul und dem DoorBird Ger&auml;t aufbauen zu k&ouml;nnen, muss ein entsprechender Firmwarestand installiert werden.<br />
Die Firmware h&auml;ngt vom angeschlossenen Ger&auml;t ab. Aus diesem Grund muss ggf. vor der Definition in FHEM die Firmware auf den letzten Stand gebracht werden.<br />
<br />
Die Kommunikation wir erst ab den unten aufgef&auml;hrten Firmware - Versionen funktionieren:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Device !! Hardware Version !! Firmware version<br />
|-<br />
| DoorBird Video Door Station D10x || 1.00+ || 000099+<br />
|-<br />
| DoorBird Video Door Station D20x || 1.00+ || 000099+<br />
|-<br />
| DoorBird Video Door Station D21x || 1.00+ || 000108+<br />
|-<br />
| BirdGuard B10x || 1.00+ || 000099+<br />
|-<br />
|}<br />
<br />
Es ist jederzeit m&ouml;glich, den Firmware-Stand seines DoorBird - Ger&auml;tes unter diesem Link zu &uuml;berpr&uuml;fen: https://www.doorbird.com/de/checkonline<br />
<br />
==== Einrichtung des DoorBird Anlage ====<br />
Neben der individuellen Einrichtung der DoorBird - Anlage, müssen noch zusätzlich die Einstellungen für die SIP Telefonverbindungen vorgenommen werden.<br />
Je nachdem welches System man verwendet, kommen verschiedene Anleitungen in Frage.<br />
Die entsprechenden individuellen Anleitungen zur Einrichtung der SIP - Verbindungen sind hier zu finden:<br />
https://www.doorbird.com/de/sip<br />
<br />
Die große Masse der User dürfte allerdings eine FritzBox Ihr eigen nennen.<br />
In der entsprechenden [https://www.doorbird.com/downloads/cnt_avm.pdf Anleitung] ist insbesondere unter 2.5 „Eingehende Anrufe erlauben“ darauf zu achten, dass eine individuell für den DoorBird in der Fritz!Box vergebene SIP Telefonnummer angegeben wird.<br />
<br />
<br />
=== Vorbereitungen in Linux ===<br />
Damit das Modul unter FHEM und Linux funktioniert m&uuml;ssen zus&auml;tzliche Perl-Bibliotheken installiert werden.<br />
<br />
Damit die st&auml;ndige Eingabe des „sudo“ Befehls zur Installation der einzelnen Module „muss mit Root-Rechten erfolgen“ umgangen werden kann, bitte folgenden Befehl eingeben und mit Password freigeben.<br />
<br />
Code: <br />
:<Code>sudo bash</code><br />
<br />
Zur Vermeidung bekannter Fehler aufgrund Versionsunterschiede, sollte man seine bereits installierten Pakete auf den neusten Stand bringen:<br />
<br />
:<Code>apt-get update</code><br />
<br />
:<Code>apt-get upgrade</code><br />
<br />
<br />
<br />
Dann nacheinander die u.g. Module per (Copy/Paste) und Best&auml;tigung per {{Taste|Enter}} installieren.<br />
<br />
Code:<br />
:<Code>apt-get install cpanminus</code><br />
:<Code>apt-get install sox</code><br />
:<Code>apt-get install libsox-fmt-all</code><br />
:<Code>apt-get install libsodium-dev</code><br />
:<Code>cpanm LWP::UserAgent</code><br />
:<Code>cpanm HTTP::Request::StreamingUpload</code><br />
:<Code>cpanm Crypt::Rijndael</code><br />
:<Code>cpanm Alien::Base::ModuleBuild:</code><br />
:<Code>cpanm Alien::Sodium</code><br />
:<Code>cpanm Crypt::NaCl::Sodium</code><br />
:<Code>sudo cpanm MIME::Base64</code><br />
<br />
<br />
Zum Abschluss nach erfolgter Installation der Module noch mit Eingabe des Code:<br />
:<Code>exit</code> <br />
<br />
wieder in den User-Mode wechseln.<br />
<br />
=== Vorbereitung in FHEM ===<br />
<br />
<br />
==== SIP und Text2Speech ====<br />
Es werden f&uuml;r die Ausgabe von Sprachmeldungen am Doorbird System 2 zus&auml;tzliche FHEM Devices ben&ouml;tigt.<br />
Zur Installation bitte den Anweisungen im FHEM Wiki folgen:<br />
<br />
a) [[SIP-Client]] <BR><br />
b) Text2Spech (Anleitung im wiki für den SIP-Client enthalten)<br />
<br />
Darüber hinaus muss ggf. noch die entsprechende Einrichtung der Telefonnummer für den FHEM SIP - Client in dem Heim-Router (e.g. FritzBox) erfolgen.<br />
<br />
==== Aktivierung und Definition in FHEM ====<br />
In der [[Konfiguration|fhem.cfg]] das Modul definieren mit:<br />
<br />
:<Code>define <devicename> DoorBird <IPAdresse des DoorBird> <Username> <pers&ouml;nliches Passwort></code><br />
<br />
Hierbei werden die barewort Username und Passwort verschlüsselt abgelegt. Nach erfolgreicher Definition sollten diese mit <Code>Crypt:</Code> voran in der Definition stehen.<br />
(Browser Refresh <F5> durchführen)<br />
<br />
<br />
==== Einstellungen &uuml;ber Attribute ====<br />
Es k&ouml;nnen neben den Standard Attributen wie "room" oder "verbose" noch folgende f&uuml;r das DoorBird-Modul individuelle Attribute in der fhem.cfg erg&auml;nzt werden.<br />
<br />
<pre style="width:650px;"><br />
attr <devicename> PollingTimeout <time in sec><br />
attr <devicename> MaxHistory <1 or 0><br />
attr <devicename> KeepAliveTimeout <time in sec><br />
attr <devicename> UdpPort <6524 oder 35344><br />
attr <devicename> SipDevice <FHEM device name><br />
attr <devicename> SipNumber <Telefonnummer des DoorBird><br />
</pre><br />
<br />
<br />
;PollingTimeout<br />
:Zeitraum in dem das auf eine Antwort seitens des DoorBird Moduls warten soll. Sollte ein sehr langsames Heimnetz vorhanden sein, so muss der Wert entsprechend hochgesetzt werden.<br />
:Der Default-Wert ist 10s.<br />
<br />
;MaxHistory<br />
:Die maximale Anzahl angezeigter und heruntergeladener Bilder für die Event-Historie.<br />
:Der Default-Wert is 50 = maximale Anzahl.<br />
<br />
;KeepAliveTimeout<br />
:Zeitraum in Sekunden nach dem das Gaerät als "disconnected" definiert wird. Der DoorBird sendet in der Regel alle 7 Sekunden ein "Still-Alive" Datagramm aus, auf welches dieses Modul reagiert<br />
:Der Default-Wert ist 30s.<br />
<br />
;UdpPort<br />
:Port Nummer auf welcher das DoorBird - Modul nach den UDP Datagrammen der DoorBird - Anlage h&ouml;ren soll. Die Ports sind von der Firmware vorgegeben.<br />
:Der Default Port ist 6524<br />
<br />
;SipDevice<br />
:Name des FHEM SIP Device dessen Nummer in der DoorBird - Anlage hinterlegt wurde, welche die DoorBird - Anlage anrufen d&uuml;rfen.<br />
:Der Default Wert ist das erste SIP device welches in FHEM zu finden ist.<br />
<br />
;SipNumber<br />
:Die Telefonnummer unter der die DoorBird / Anlage registriert wurde und erreicht werden kann.<br />
:Die Default Nummer ist **620<br />
<br />
== Bekannte Probleme ==<br />
<br />
=== Fehlermeldung: "" ===<br />
<br />
<u>'''Beschreibung / Ursache:'''</u><br />
<br />
<u>'''L&ouml;sung:'''</u><br />
<br />
<BR><br />
<BR><br />
<BR><br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=25540}} zur Entwicklung und Support des Moduls<br />
* [[SIP-Client]]<br />
* [https://www.doorbird.com/downloads/cnt_avm.pdf Anleitung zur SIP Registrierung des DoorBirds in der Fritz!Box]<br />
* [https://www.doorbird.com/ Hauptseite des Herstellers: Bird Home Automation]<br />
<br />
[[Kategorie:Other Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=DoorBird&diff=30400DoorBird2019-05-07T09:29:30Z<p>Krikan: Kategorie korrigiert</p>
<hr />
<div>{{Infobox Modul<br />
|Name=DoorBird<br />
|ModPurpose= Anbindung eines DoorBird Interkommunikations-Systems<br />
|ModType=d<br />
<!-- |ModCategory= (noch?) nicht verwendet --><br />
|ModCmdRef=DoorBird<br />
|ModForumArea=Sonstiges<br />
|ModTechName=73_DoorBird.pm<br />
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=4705 Sailor]<br />
}}<br />
<br />
== Allgemein ==<br />
[[Datei:D2101V.png|1024px|thumb|left |DoorBird D2101V<BR>Quelle: "Bird Home Automation GmbH" <BR> &copy; Bird Home Automation]]<br />
[[Datei:D2101KV.png|1024px|thumb|left |DoorBird D2101KV<BR>Quelle: "Bird Home Automation GmbH" <BR> &copy; Bird Home Automation]]<br />
<br />
Das Modul 73_DoorBird.pm erm&ouml;glicht die Anbindung einer DoorBird T&uuml;r Interkommunikations Einheit an einen FHEM-Server zur Konfiguration und Kommunikation.<br />
<div style="clear:both;"></div><br />
<br />
<br />
== Vorbereitungen ==<br />
=== Vorbereitungen der Hardware ===<br />
<br />
==== Installation der Hardware ====<br />
Die DoorBird Ger&auml;te m&uuml;ssen entsprechend der Installationsanleitung hardwareseitig installiert werden. <br />
Insbesondere bei Verwendung von Wireless LAN (WLAN) Sollte man auf eine stabile Verbindung bzw. ausreichend Feldst&auml;rke achten.<br />
Sollte die DoorBird Anlage mittels LAN - Kabel angeschlossen werden, muss man die Entfernungseinschr&auml;nkungen insbesondere bei der Verwendung der Power over Ethernet (PoE) - Injektion beachten.<br />
<br />
<br />
==== Update der Firmware ====<br />
Um eine funktionsf&auml;hige Kommunikation zwischen dem FHEM-Modul und dem DoorBird Ger&auml;t aufbauen zu k&ouml;nnen, muss ein entsprechender Firmwarestand installiert werden.<br />
Die Firmware h&auml;ngt vom angeschlossenen Ger&auml;t ab. Aus diesem Grund muss ggf. vor der Definition in FHEM die Firmware auf den letzten Stand gebracht werden.<br />
<br />
Die Kommunikation wir erst ab den unten aufgef&auml;hrten Firmware - Versionen funktionieren:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Device !! Hardware Version !! Firmware version<br />
|-<br />
| DoorBird Video Door Station D10x || 1.00+ || 000099+<br />
|-<br />
| DoorBird Video Door Station D20x || 1.00+ || 000099+<br />
|-<br />
| DoorBird Video Door Station D21x || 1.00+ || 000108+<br />
|-<br />
| BirdGuard B10x || 1.00+ || 000099+<br />
|-<br />
|}<br />
<br />
Es ist jederzeit m&ouml;glich, den Firmware-Stand seines DoorBird - Ger&auml;tes unter diesem Link zu &uuml;berpr&uuml;fen: https://www.doorbird.com/de/checkonline<br />
<br />
==== Einrichtung des DoorBird Anlage ====<br />
Neben der individuellen Einrichtung der DoorBird - Anlage, müssen noch zusätzlich die Einstellungen für die SIP Telefonverbindungen vorgenommen werden.<br />
Je nachdem welches System man verwendet, kommen verschiedene Anleitungen in Frage.<br />
Die entsprechenden individuellen Anleitungen zur Einrichtung der SIP - Verbindungen sind hier zu finden:<br />
https://www.doorbird.com/de/sip<br />
<br />
Die große Masse der User dürfte allerdings eine FritzBox Ihr eigen nennen.<br />
In der entsprechenden [https://www.doorbird.com/downloads/cnt_avm.pdf Anleitung] ist insbesondere unter 2.5 „Eingehende Anrufe erlauben“ darauf zu achten, dass eine individuell für den DoorBird in der Fritz!Box vergebene SIP Telefonnummer angegeben wird.<br />
<br />
<br />
=== Vorbereitungen in Linux ===<br />
Damit das Modul unter FHEM und Linux funktioniert m&uuml;ssen zus&auml;tzliche Perl-Bibliotheken installiert werden.<br />
<br />
Damit die st&auml;ndige Eingabe des „sudo“ Befehls zur Installation der einzelnen Module „muss mit Root-Rechten erfolgen“ umgangen werden kann, bitte folgenden Befehl eingeben und mit Password freigeben.<br />
<br />
Code: <br />
:<Code>sudo bash</code><br />
<br />
Zur Vermeidung bekannter Fehler aufgrund Versionsunterschiede, sollte man seine bereits installierten Pakete auf den neusten Stand bringen:<br />
<br />
:<Code>apt-get update</code><br />
<br />
:<Code>apt-get upgrade</code><br />
<br />
<br />
<br />
Dann nacheinander die u.g. Module per (Copy/Paste) und Best&auml;tigung per {{Taste|Enter}} installieren.<br />
<br />
Code:<br />
:<Code>apt-get install cpanminus</code><br />
:<Code>apt-get install sox</code><br />
:<Code>apt-get install libsox-fmt-all</code><br />
:<Code>apt-get install libsodium-dev</code><br />
:<Code>cpanm LWP::UserAgent</code><br />
:<Code>cpanm HTTP::Request::StreamingUpload</code><br />
:<Code>cpanm Crypt::Rijndael</code><br />
:<Code>cpanm Alien::Base::ModuleBuild:</code><br />
:<Code>cpanm Alien::Sodium</code><br />
:<Code>cpanm Crypt::NaCl::Sodium</code><br />
:<Code>sudo cpanm MIME::Base64</code><br />
<br />
<br />
Zum Abschluss nach erfolgter Installation der Module noch mit Eingabe des Code:<br />
:<Code>exit</code> <br />
<br />
wieder in den User-Mode wechseln.<br />
<br />
=== Vorbereitung in FHEM ===<br />
<br />
<br />
==== SIP und Text2Speech ====<br />
Es werden f&uuml;r die Ausgabe von Sprachmeldungen am Doorbird System 2 zus&auml;tzliche FHEM Devices ben&ouml;tigt.<br />
Zur Installation bitte den Anweisungen im FHEM Wiki folgen:<br />
<br />
a) [[SIP-Client]] <BR><br />
b) Text2Spech (Anleitung im wiki für den SIP-Client enthalten)<br />
<br />
Darüber hinaus muss ggf. noch die entsprechende Einrichtung der Telefonnummer für den FHEM SIP - Client in dem Heim-Router (e.g. FritzBox) erfolgen.<br />
<br />
==== Aktivierung und Definition in FHEM ====<br />
In der [[Konfiguration|fhem.cfg]] das Modul definieren mit:<br />
<br />
:<Code>define <devicename> DoorBird <IPAdresse des DoorBird> <Username> <pers&ouml;nliches Passwort></code><br />
<br />
Hierbei werden die barewort Username und Passwort verschlüsselt abgelegt. Nach erfolgreicher Definition sollten diese mit <Code>Crypt:</Code> voran in der Definition stehen.<br />
(Browser Refresh <F5> durchführen)<br />
<br />
<br />
==== Einstellungen &uuml;ber Attribute ====<br />
Es k&ouml;nnen neben den Standard Attributen wie "room" oder "verbose" noch folgende f&uuml;r das DoorBird-Modul individuelle Attribute in der fhem.cfg erg&auml;nzt werden.<br />
<br />
<pre style="width:650px;"><br />
attr <devicename> PollingTimeout <time in sec><br />
attr <devicename> MaxHistory <1 or 0><br />
attr <devicename> KeepAliveTimeout <time in sec><br />
attr <devicename> UdpPort <6524 oder 35344><br />
attr <devicename> SipDevice <FHEM device name><br />
attr <devicename> SipNumber <Telefonnummer des DoorBird><br />
</pre><br />
<br />
<br />
;PollingTimeout<br />
:Zeitraum in dem das auf eine Antwort seitens des DoorBird Moduls warten soll. Sollte ein sehr langsames Heimnetz vorhanden sein, so muss der Wert entsprechend hochgesetzt werden.<br />
:Der Default-Wert ist 10s.<br />
<br />
;MaxHistory<br />
:Die maximale Anzahl angezeigter und heruntergeladener Bilder für die Event-Historie.<br />
:Der Default-Wert is 50 = maximale Anzahl.<br />
<br />
;KeepAliveTimeout<br />
:Zeitraum in Sekunden nach dem das Gaerät als "disconnected" definiert wird. Der DoorBird sendet in der Regel alle 7 Sekunden ein "Still-Alive" Datagramm aus, auf welches dieses Modul reagiert<br />
:Der Default-Wert ist 30s.<br />
<br />
;UdpPort<br />
:Port Nummer auf welcher das DoorBird - Modul nach den UDP Datagrammen der DoorBird - Anlage h&ouml;ren soll. Die Ports sind von der Firmware vorgegeben.<br />
:Der Default Port ist 6524<br />
<br />
;SipDevice<br />
:Name des FHEM SIP Device dessen Nummer in der DoorBird - Anlage hinterlegt wurde, welche die DoorBird - Anlage anrufen d&uuml;rfen.<br />
:Der Default Wert ist das erste SIP device welches in FHEM zu finden ist.<br />
<br />
;SipNumber<br />
:Die Telefonnummer unter der die DoorBird / Anlage registriert wurde und erreicht werden kann.<br />
:Die Default Nummer ist **620<br />
<br />
== Bekannte Probleme ==<br />
<br />
=== Fehlermeldung: "" ===<br />
<br />
<u>'''Beschreibung / Ursache:'''</u><br />
<br />
<u>'''L&ouml;sung:'''</u><br />
<br />
<BR><br />
<BR><br />
<BR><br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=25540}} zur Entwicklung und Support des Moduls<br />
* [[SIP-Client]]<br />
* [https://www.doorbird.com/downloads/cnt_avm.pdf Anleitung zur SIP Registrierung des DoorBirds in der Fritz!Box]<br />
* [https://www.doorbird.com/ Hauptseite des Herstellers: Bird Home Automation]<br />
<br />
[[Kategorie:Other Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Raspberry_Pi_3:_GPIO-Port_Module_und_Bluetooth&diff=30399Raspberry Pi 3: GPIO-Port Module und Bluetooth2019-05-07T09:15:07Z<p>Krikan: Link korrigiert</p>
<hr />
<div>__NOTOC__<br />
{{Hinweis|Die Vorbereitung der UART-Schnittstelle ist auch in [[Raspberry Pi]] beschrieben. Hier sollten zukünftig nur Besonderheiten und Abweichungen stehen!}}<br />
Der Raspberry Pi 3 nutzt für den GPIO-Port standardmäßig den UART1 (ttyS0), während die vorherigen Raspberry Pi-Modelle noch den UART0 dafür verwendeten. Der UART0 (ttyAMA0) wird beim Pi 3 durch das neu eingeführte Bluetooth-Modul softwaremäßig belegt. Der UART1 des Pi 3 mit Anhängigkeiten von CPU-Frequenz, CPU-Last, Temperatur und anderem ist für den Betrieb von Aufsteckmodulen jedoch häufig nicht stabil genug. Der Pi 3 muss daher zur Verwendung von einigen Aufsteckmodulen für den GPIO-Port, die über GPIO 14/15 kommunizieren so umkonfiguriert werden, dass der GPIO-Port wie bei den Vorgängermodellen wieder den UART0 einsetzt. <br />
<br />
Unter anderem folgende Aufsteckmodule setzen für einen stabilen Betrieb die Nutzung des UART0 für den GPIO-Port voraus:<br />
* EnOceanPi ([[:Kategorie:EnOcean Components|EnOcean]]-Gateway)<br />
* Razberry ([[:Kategorie:Z-Wave Components|ZWave]]-Gateway)<br />
* RaspBee ([[:Kategorie:ZigBee|ZigBee]]-Gateway)<br />
<br />
Immer wieder angeführte und einfach umzusetzende Lösung ist Bluetooth zu deaktivieren und dann den UART0 (ttyAMA0) auf den GPIO-Port umzumappen (siehe beispielsweise {{Link2Forum|Topic=52161|Message=439757}}). Damit kann man aber das im Pi 3 eingebaute Bluetooth-Modul nicht mehr nutzen. Ein Vorteil des Pi 3 zu den Vorgängermodellen geht somit verloren.<br />
<br />
{{Link2FU|14179|robert.heinze}} hat aufbauend auf seinen Erkenntnissen in diesem {{Link2Forum|Topic=51112}} nachfolgendes HowTo zur Verfügung gestellt,<br />
nach dessen Abarbeitung eine parallele Verwendung von Aufsteckmodulen für den GPIO-Port und Bluetooth in FHEM mit dem Pi 3 möglich ist. <br />
<br />
== HowTo ==<br />
Standardmäßig belegt der Raspberry 3 den Software-UART-ttyAMA0 mit Bluetooth. Da wir diese Schnittstelle aber für serielle Module wie z.B. hier den EnOceanPi verwenden, legen wir den integrierten Bluetooth-Empfänger des Raspberry Pi 3 auf ttyS0 (UART1 - „mini UART“) um den Hardware-UART auf die TX/RX-Pins zu legen (UART0 - „full UART“). Hierfür sind einige Maßnahmen vorzunehmen, die nachfolgend schrittweise beschrieben werden. <br />
<br />
=== Schritt 1: ===<br />
Im ersten Schritt gilt es den Raspberry Pi 3 zu konfigurieren:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo raspi-config<br />
</syntaxhighlight><br />
<br />
A7 Serial auf enabled setzen<br />
<br />
=== Schritt 2: ===<br />
Zur Bearbeitung von Textdateien wird hier und bei allen folgenden Schritten der Editor nano genutzt. Selbstverständlich kann auch auf einen anderen Editor zurückgegriffen werden.<br />
<syntaxhighlight lang="bash"><br />
sudo nano /boot/cmdline.txt<br />
</syntaxhighlight><br />
Diese Zeile suchen:<br />
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait<br />
und editieren. Der Eintrag <code>console=serial0,115200</code> sollte wie schon beim RPi2 entfernt werden, wenn es gesetzt ist, damit die UART-Schnittstelle von Zusatzmodulen wie EnOceanPi verwendet werden kann. Der genaue Inhalt der Zeile kann sich je nach System unterscheiden.<br />
<br />
Hinweis: Ändert man nachträglich noch einmal etwas über "raspi-config", so kann es vorkommen, dass <code>console=serial0,115200</code> wieder in der Zeile ergänzt wird.<br />
<br />
=== Schritt 3: ===<br />
Raspberry auf aktuellen Stand bringen:<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get update<br />
sudo apt-get upgrade<br />
</syntaxhighlight><br />
<br />
=== Schritt 4: ===<br />
Firmware aktualisieren:<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install rpi-update<br />
sudo rpi-update <br />
sudo reboot<br />
</syntaxhighlight><br />
Ein rpi-update soll nur gemacht werden, wenn es unbedingt erforderlich ist. (Quelle: [https://www.elektronik-kompendium.de/sites/raspberry-pi/2006061.htm])<br />
<br />
=== Schritt 5: ===<br />
In der Config-Datei /boot/config.txt wird das dementsprechende Overlay geladen, um Bluetooth auf mini UART zu legen:<br />
<br />
dtoverlay=pi3-miniuart-bt <br />
<br />
Die Taktfrequenz muss beim Starten auf eine konstante Frequenz eingestellt werden:<br />
<br />
enable_uart=1<br />
<br />
UART1 wird auf die Maximalfrequenz oder Minimalfrequenz gelegt, da der mini UART die Baudrate abhängig von der System Clock variiert:<br />
force_turbo=1 oder core_freq=250, wir entscheiden uns für force_turbo=1 sofern ein dementsprechendes Netzteil (2,5A) verwendet wird.<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo nano /boot/config.txt<br />
</syntaxhighlight><br />
Am Ende der Datei einfach die folgenden Zeilen hinzufügen:<br />
<br />
dtoverlay=pi3-miniuart-bt<br />
enable_uart=1<br />
force_turbo=1<br />
<br />
=== Schritt 6: ===<br />
Dieser Schritt ist nach Mai 2016 nicht mehr notwendig.<br />
<br />
Der Bluetooth UART-Service muss auf ttyS0 gelegt werden. <br />
<br />
<syntaxhighlight lang="bash"><br />
sudo nano /lib/systemd/system/hciuart.service<br />
</syntaxhighlight><br />
<br />
In der Datei 2x ttyAMA0 gegen ttyS0 (oder alternativ /dev/serial1) tauschen, was in folgendem Code resultiert:<br />
<br />
<pre><br />
[Unit]<br />
Description=Configure Bluetooth Modems connected by UART<br />
ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins<br />
Before=bluetooth.service<br />
After=dev-ttyS0.device<br />
<br />
[Service]<br />
Type=forking<br />
ExecStart=/usr/bin/hciattach /dev/ttyS0 bcm43xx 921600 noflow -<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</pre><br />
<br />
=== Schritt 7: ===<br />
Dieser Schritt ist fragwürdig und ab September 2017 durch Anpassungen in der fhem.pl nicht mehr notwendig.<br />
<br />
<br />
Auf Grund eines Timing-Problems in der Boot-Phase zwischen Bluetooth und dem FHEM Start muss der FHEM-Service 10 Sekunden verzögert werden.<br />
<syntaxhighlight lang="bash"><br />
sudo nano /etc/init.d/fhem<br />
</syntaxhighlight><br />
<br />
In der ersten Zeile der Datei<br />
sleep 10<br />
einfügen.<br />
<br />
Nun sollten nach einem Reboot das GPIO-Port-Aufsteckmodul (ttyAMA0) und Raspi 3-Bluetooth (ttyS0) parallel funktionieren.<br />
<br />
=== Schritt 8 (optional) ===<br />
Wenn Bluetooth noch nicht installiert wurde, muss es noch installiert werden. <br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install pi-bluetooth<br />
</syntaxhighlight><br />
<br />
=== Schritt 9: (optional) ===<br />
Sollte es immer noch nicht möglich sein, auf die Schnittstelle /dev/ttyAMA0 zuzugreifen,<br />
so sollte man die rechte überprüfen:<br />
<syntaxhighlight lang="bash"><br />
ls -lha /dev/ttyAMA0<br />
</syntaxhighlight><br />
Hierbei muss sichergestellt sein, dass der User "fhem" zur angezeigten Gruppe (z.B. dialout) gehört.<br />
Ist dies nicht der Fall, dann den User "fhem" hinzufügen<br />
<syntaxhighlight lang="bash"><br />
usermod -a -G dialout fhem<br />
</syntaxhighlight><br />
Quelle: [https://forum.fhem.de/index.php/topic,50651.msg576004.html#msg576004]<br />
<br />
=== Schritt 10: (optional) ===<br />
Den Dienst serial-getty deaktivieren<br />
<syntaxhighlight lang="bash"><br />
systemctl disable serial-getty@ttyAMA0.service <br />
</syntaxhighlight><br />
Quelle: [https://forum.fhem.de/index.php/topic,50651.msg576004.html#msg576004]<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:Raspberry Pi]]<br />
[[Kategorie:Bluetooth]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=TR%C3%85DFRI&diff=30397TRÅDFRI2019-05-07T09:12:14Z<p>Krikan: Kategorie korrigiert</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=tradfri<br />
|ModPurpose=Anbindung IKEA TRÅDFRI Gateway<br />
|ModType=d<br />
<!-- |ModCategory= (noch?) nicht verwendet --><br />
|ModCmdRef=tradfri<br />
|ModForumArea=Zigbee<br />
|ModTechName=30_tradfri.pm<br />
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])<br />
}}<br />
</div><br />
<br />
== tradfri ==<br />
<br />
TRÅDFRI ist die Serie smarter Beleuchtungslösungen von IKEA. Ähnlich von Phillips [[Hue]] gibt es diverse LEDs in Glühbirnenform, LED-Streifen-Treiber, Flächenleuchten, Wandtaster, Bewegungsmelder, Fernbedienung, Dimmer, etc. und alles via Funk gekoppelt. Außerdem ein Gateway, das sich via Ethernetstecker ins heimische LAN einbinden lässt und die Bedienung via IKEA-App auf dem Handy ermöglicht. Daneben ist auch eine Anbindung in FHEM möglich, dazu funktionieren zwei alternative Lösungen:<br />
<br />
1. IKEA Trådfri Modul (TYPE ''TradfriDevice'' und ''TradfriGateway'', mehr Infos: https://forum.fhem.de/index.php/topic,70653.0.html seit April 2017)<br />
* Erkennt Lampen<br />
* Fernbedienung erscheint zwar in der Geräteliste, lässt sich aber nicht als Gerät anlegen oder Status lesen<br />
2. tradfri-fhem Modul (TYPE ''HUEDevice'' und ''tradfri'' Gateway, mehr Infos: https://forum.fhem.de/index.php/topic,96125.0.html seit Januar 2019, Beschreibung folgt auf dieser Seite)<br />
* Erkennt Lampen (als [[Hue#HUE-Device|HUE-Device]])<br />
* Erkennt Fernbedienung (Batteriestatus als einzigstes Reading)<br />
* Erstellt (wenn gewünscht) automatisch Gruppen<br />
* Bewegungsmelder scheinen nicht unterstützt<br />
<br />
=== Einrichtung in FHEM ===<br />
<br />
# node installieren (mindestens version 8)<br />
# sudo npm install -g tradfri-fhem<br />
# <code>define <tradfri> tradfri</code><br />
# <code>attr <tradfri> tradfriFHEM-securityCode <security code></code><br />
<br />
wenn das gateway nicht automatisch erkannt wird:<br />
<code>attr <tradfri> tradfriFHEM-params --ip <ip></code><br />
<br />
WICHTIG: danach in FHEM einmal die Konfiguration speichern damit der Pairing-Key gesichert wird. Sonst muss beim nächsten FHEM-Neustart das Pairing erneut durchgeführt werden.<br />
<br />
== HUE-Device ==<br />
Alle auf dem Gateway bekannten Geräte automatisch als [[Hue#HUE-Device|HUEDevice]] in FHEM angelegt:<br />
* Lampen, Stecker, Trafos, ...<br />
: Hiermit werden die einzelnen Leuchten gesteuert<br />
* Gruppen<br />
: Hiermit lassen sich ganze Gruppen und Räume steuern<br />
* Fernbedienungen<br />
: aktuell gibt es nur ein battery Reading<br />
<br />
=== Darstellung im Webfrontend ===<br />
Wenn man die SVG Icons verwendet ist es sinnvoll, das Attribut color-icons zu setzen. Mit <code>attr HUEDevice1 color-icons 2</code> werden z.B. die Farben und der Dimmzustand der Lampe als Icon dargestellt.<br />
Damit das ganze funktioniert, müsst ihr auch noch das <code>attr WEB iconPath fhemSVG:openautomation:default</code> setzen.<br />
<br />
[[Kategorie:ZigBee]]<br />
[[Kategorie:Lichteffektgeräte]]<br />
[[Kategorie:IP Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Hue&diff=30396Hue2019-05-07T09:11:36Z<p>Krikan: Kategorie korrigiert</p>
<hr />
<div><div style="float:right">{{Infobox Modul<br />
|Name=HUEBridge<br />
|ModPurpose=Anbindung Bridge des Philips Hue Lighting System<br />
|ModType=d<br />
<!-- |ModCategory= (noch?) nicht verwendet --><br />
|ModCmdRef=HUEBridge<br />
|ModForumArea=Zigbee<br />
|ModTechName=30_HUEBridge.pm<br />
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])<br />
}}<br />
{{Infobox Modul<br />
|Name=HUEDevice<br />
|ModPurpose=Ansteuerung Geräte des Philips Hue Lighting System über HUEBridge<br />
|ModType=d<br />
<!-- |ModCategory= (noch?) nicht verwendet --><br />
|ModCmdRef=HUEDevice<br />
|ModForumArea=Zigbee<br />
|ModTechName=31_HUEDevice.pm<br />
|ModOwner=Andre ([http://forum.fhem.de/index.php?action=profile;u=430 Forum] / [[Benutzer Diskussion:justme|Wiki]])<br />
}}<br />
</div><br />
<br />
== HUE-Bridge ==<br />
<br />
=== Einrichtung in fhem ===<br />
Die Einrichtung ist wirklich einfach. Mit<br />
<br />
<code>define Wiesollesheißen HUEBridge eu.re.ip.1</code><br />
<br />
wird die Bridge eingebunden. Dann einfach auf den runden Knopf in der Mitte der Bridge drücken und sie wird von FHEM erkannt. Die drei Lampen des Starterkits werden automatisch erkannt und sind ansteuerbar -> fertig!<br />
<br />
WICHTIG: danach in FHEM einmal die Konfiguration speichern damit der Pairing-Key gesichert wird. Sonst muss beim nächsten FHEM-Neustart das Pairing erneut durchgeführt werden.<br />
<br />
Falls die Hue Bridge resetet wurde bleibt der Status auf "paired" und geht nicht mehr auf connected. Um das paring erneut durchzuführen muss das Attribut "key" gelöscht werden.<br />
<br />
=== Nonblocking ===<br />
Wenn man möchte, dass die Versuche, die HUEBridge zu kontaktieren, FHEM nicht blockieren, sollte man <br />
<br />
<pre>attr <HUEBridge_Name> httpUtils 1</pre><br />
<br />
setzen.<br />
<br />
== HUE-Device ==<br />
Als Gerät können alle Hue und LightLink kompatiblen Modelle verwendet werden. Dies sind unter anderem:<br />
*HueBulbs (E27, GU10, Lux, White, ...)<br />
*Hue Beyond und Phoenix<br />
*Friends of Hue LightStrips und LivingColors Bloom<br />
*LivingColors ab gen2<br />
*LivingColors Bloom, Iris und Aura<br />
*LivingWhites Energiesparlampen<br />
*LivingWhites Leuchtenadapter<br />
*LivingWhites Bulbs<br />
*[[HUE_Dimmer_Switch|Hue Tap und Hue Dimmer]] (mit Einschränkungen)<br />
*dresden elektronik Vorschaltgeräte<br />
*OSRAM LIGHTIFY Lampen (an der Hue Bridge angelernt)<br />
*Müller Licht tint<br />
<br />
Diese sind jeweils über eine Bridge (HueDevice) steuerbar. Die LivingColors und LivingWhites Geräte sind vorher mit Hilfe einer LivingColors oder LivingWhites Fernbedienung an der Bridge anzulernen.<br />
<br />
Es werden auch alle HUE Sensoren unterstützt. Diese werden aber nicht per autocreate angelegt sondern müssen manuell definiert werden. Hier ist auf ein passendes polling Intervall zu achten. Siehe: [[HUE_Dimmer_Switch|HUE Dimmer Switch]]. Das [[Hue#RaspBee|RaspBee]] Gateway unterstützt auch ein PushAPI über das Sensoren ohne polling eingebunden werden können.<br />
<br />
=== Grundlagen - Farbmodelle ===<br />
Ein HueDevice kann per set-Befehl über unterschiedliche Farbmodelle gesteuert werden. In der folgenden Tabelle ist dargestellt, welche Werte-Kombinationen sinnvoll sind:<br />
{| class="wikitable"<br />
|-<br />
! Farbmodell !! Bestandteile !! Beispiel<br />
|-<br />
| xyY || x- und y-Koordinate im Farbraum, Y ist die Helligkeit || <code> set bulb1 xy 0.4595,0.4105 : bri 220 </code><br />
|-<br />
| hue,sat,bri || Farbwert, Sättigung und Helligkeit || <code> set bulb1 hue 14922 : sat 144 : bri 220 </code><br />
|-<br />
| ct || Farbwert über Farbtemperatur || <code> set bulb1 color 2600 </code><br />
|-<br />
| rgb || Farbbestandteile rot, grün und blau || <code> set bulb1 rgb FFC698 </code><br />
|}<br />
'''Hinweis:''' Zur Regelung der Helligkeit sind die Befehle ''bri'' und ''pct'' gleichwertig. ''bri'' hat den Bereich 0..254, ''pct'' 0..100 .<br><br />
Das Modul lässt die Mischung von Angaben aus unterschiedlichen Farbmodellen technisch zu, jedoch sind diese nicht immer sinnvoll.<br />
<br />
=== Darstellung im Webfrontend ===<br />
Wenn man die SVG Icons verwendet ist es sinnvoll, das Attribut color-icons zu setzen. Mit <code>attr HUEDevice1 color-icons 2</code> werden z.B. die Farben und der Dimmzustand der Lampe als Icon dargestellt.<br />
Damit das ganze funktioniert, müsst ihr auch noch das <code>attr WEB iconPath fhemSVG:openautomation:default</code> setzen.<br />
<br />
== RaspBee & ConBee ==<br />
Das HUEBridge Modul unterstützt auch die ZigBee Gateway Module RaspBee und ConBee von Dresden Elektronik über die zugehörige deCONZ Software und die Wireless Light Control WebApp und die Phoscon WebApp (kommt zusammen mit deConz). Die hierzu erhältlichen Funk-Vorschaltgeräte sind noch nicht getestet sollten aber auch funktionieren.<br />
<br />
Im {{Link2Forum|Topic=80985|LinkText=Forum}} gibt es eine Betaversion der HUE Module, die das deCONZ PushAPI über Websockets unterstützen. Sensoren müssen hier nicht mehr gepollt werden.<br />
<br />
Mittlerweile funktioniert die Einbindung der RaspBee und ConBee Module auf einem sehr einfachen Weg. Dieser ist in {{Link2Forum|Topic=95288|LinkText=Forum}} zusammengefasst. Zusätzliche Plugins sind nicht mehr nötig.<br />
<br />
=== Installation von deCONZ unter Proxmox auf einem Intel Nuc ===<br />
<br />
Folgende Schritte sind notwendig um unter Proxmox zu installieren:<br />
<br />
<br />
* Installation einer Ubuntu oder Debian VM:<br />
<pre><br />
cd /var/lib/vz/template/iso/<br />
wget http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso<br />
</pre><br />
<br />
oder<br />
<br />
<pre><br />
cd /var/lib/vz/template/iso/<br />
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.8.0-amd64-xfce-CD-1.iso<br />
</pre><br />
<br />
<br />
* Weiterreichen des USB Devices in die VM:<br />
<br />
Auflistung der verfügbaren USB Geräte:<br />
<pre><br />
root@node1:~# lsusb<br />
Bus 002 Device 004: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)<br />
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub<br />
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
Der Conbee meldet sich als "Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)", hier ist die ID wichtig (0403:6015).<br />
<br />
Anschließend kann das USB Gerät an die VM weitergeleitet werden. Der Wert 804 ist durch die ID der VM zu ersetzen. <br />
<pre><br />
qm set 804 -usb0 host=0403:6015<br />
</pre><br />
<br />
<br />
* Installation von deCONZ: <br />
<br />
<pre><br />
apt-get update && apt-get upgrade -y<br />
wget http://www.dresden-elektronik.de/deconz/ubuntu/beta/deconz-2.05.60-qt5.deb<br />
sudo dpkg -i deconz-2.05.60-qt5.deb <br />
sudo apt install -f<br />
sudo systemctl enable deconz<br />
reboot now<br />
</pre><br />
<br />
=== Installation von deCONZ unter Docker ===<br />
<br />
https://hub.docker.com/r/marthoc/deconz/<br />
<br />
== HUE auf der Fritzbox ==<br />
Da auf der FB standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden: Man lädt das JSON-Paket http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz, packt es aus und kopiert den Inhalt vom <b>lib-Verzeichnis</b> nach \fhem\lib\perl5\site_perl\5.12.2<br />
<br />
== HUE auf der Synology Diskstation ==<br />
Da auf der DS standardmäßig kein JSON installiert ist, muss dies nachinstalliert werden, die Anleitung dazu {{Link2Forum|Topic=19093|Message=224641|LinkText=hier}}<br />
<br />
<br />
[[Kategorie:ZigBee]]<br />
[[Kategorie:Lichteffektgeräte]]<br />
[[Kategorie:IP Components]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Enecsys_Monitoring_System&diff=30395Enecsys Monitoring System2019-05-07T09:11:01Z<p>Krikan: Kategorie korrigiert</p>
<hr />
<div>= MiniJoule / Enecsys Monitoring System =<br />
Die Wechselrichter von Enecsys haben Zigbee Transceiver eingebaut, die die aktuellen Energiewerte der angeschlossenen Solarpanels übertragen.<br />
Dazu gibt es von Enecsys einen Gateway (z.B. bei MiniJoule zu beziehen), der die Daten aufbereitet und an einen Webservice bei Enecsys überträgt.<br />
<br />
Da das Protokoll der Daten noch nicht entschlüsselt ist, gibt es derzeit nur die Möglichkeit das Flash Webinterface zu nutzen, um sich die Daten anzuschauen.<br />
<br />
Mit folgendem Script ist es möglich, die aktuellen Verbrauchswerte auszulesen und in FHEM einzubinden.<br />
Dazu legt man sich in FHEM ein Dummy-Device an und lässt das Script per Timer alle 2 Minuten aufrufen:<br />
<br />
'''FHEM Config:'''<br />
<nowiki>define Photovoltaik dummy <br />
define pv_timer at +*00:02:00 &quot;/Users/akw/enecsys.sh&quot;</nowiki><br />
'''Shell script:'''<br />
<nowiki>#!/bin/sh<br />
USERNAME=&quot;&lt;EMAIL&gt;&quot;<br />
PASSWORD=&quot;&lt;PASSWORD&gt;&quot;<br />
FILEPATH=/tmp<br />
<br />
touch $FILEPATH/cookies.txt<br />
curl -s https://monitor.enecsys.net/ews/InstallationService.asmx/GetCurrentInstallationStatus -b $FILEPATH/cookies.txt &gt; $FILEPATH/soap.xml<br />
<br />
grep -q &quot;No valid installation id available in session&quot; $FILEPATH/soap.xml<br />
<br />
if [ &quot;$?&quot; = 0 ]; then<br />
echo &quot;Session expired!&quot;<br />
<br />
curl -s https://monitor.enecsys.net/default.aspx?q=login -c $FILEPATH/cookies.txt &gt; $FILEPATH/page.html<br />
VIEWSTATE=$(cat $FILEPATH/page.html | awk -F\&quot; '/__VIEWSTATE/ { print $8 }')<br />
EVENTVALIDATION=$(cat $FILEPATH/page.html | awk -F\&quot; '/__EVENTVALIDATION/ { print $8 }')<br />
rm -f $FILEPATH/page.html<br />
<br />
echo &quot;Posting login...&quot; <br />
curl -s https://monitor.enecsys.net/ -b $FILEPATH/cookies.txt -c $FILEPATH/cookies.txt \<br />
--data-urlencode &quot;__VIEWSTATE=$VIEWSTATE&quot; \<br />
--data-urlencode &quot;__EVENTVALIDATION=$EVENTVALIDATION&quot; \<br />
--data-urlencode &quot;login1%24UserName=$USERNAME&quot; \<br />
--data-urlencode &quot;login1%24Password=$PASSWORD&quot; \<br />
--data-urlencode &quot;login1%24btnLogin=Login&quot; &gt; /dev/null<br />
<br />
echo &quot;Loading loginChoice.aspx...&quot;<br />
curl -s https://monitor.enecsys.net/Pages/loginChoice.aspx -b $FILEPATH/cookies.txt -c $FILEPATH/cookies.txt &gt; /dev/null<br />
<br />
echo &quot;Loading customerInstallations.aspx...&quot;<br />
curl -s https://monitor.enecsys.net/Pages/customerInstallations.aspx -b $FILEPATH/cookies.txt -c $FILEPATH/cookies.txt &gt; /dev/null<br />
else<br />
POWER=$(cat $FILEPATH/soap.xml | awk -F&quot;[&lt;&gt;]&quot; '/&lt;CurrentACPower&gt;/ { print $3 }')<br />
rm -f $FILEPATH/soap.xml<br />
echo &quot;W: $POWER&quot;<br />
/Users/akw/src/fhem/fhem.pl 7073 &quot;set Photovoltaik W: $POWER&quot;<br />
fi</nowiki><br />
<br />
<br />
=== Links ===<br />
* [http://www.minijoule.com/de/minijoule-zubehor.html http://www.minijoule.com/de/minijoule-zubehor.html]<br />
* [https://monitor.enecsys.net https://monitor.enecsys.net]<br />
<br />
[[Kategorie:HOWTOS]]<br />
[[Kategorie:ZigBee]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Codemirror&diff=30394Codemirror2019-05-07T06:22:58Z<p>Krikan: allowed schützt nicht/kaum vor csrf</p>
<hr />
<div>{{Randnotiz|RNTyp=Fehl|RNText=Die Befehlsvervollständigungsfunktion funktioniert Stand 05/2019 nur, wenn der [[CsrfToken-HowTo|csrfToken]] in der entsprechenden FHEMWEB-Instanz abgeschaltet ist (<code>attr <FHEMWEB> csrfToken none</code>). Aus Sicherheitsgründen empfiehlt sich den csrfToken nur zur Bearbeitung zu deaktivieren und/oder andere geeignete Sicherheitsmaßnahmen zu ergreifen ( -> Aufmerksamkeit des Anwenders! ).}}<br />
<br />
{{SEITENTITEL:codemirror}}<br />
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster ("se" getippt, dann Strg+Leertaste gedrückt)]]<br />
Bei der Bearbeitung der [[Konfiguration]] über das [[FHEMWEB]]-Frontend bietet FHEM optional Anwenderunterstützung durch Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen. Hierzu ist der Editor [https://codemirror.net codemirror] in FHEM eingebunden.<br />
<br />
== Aktivierung in FHEMWEB ==<br />
Um die Funktionalität in FHEM zu aktivieren, muss folgendes Attribut auf die entsprechende FHEMWEB-Instanz gesetzt werden:<br />
:<code>attr <FHEMWEB-Devicename> JavaScripts codemirror/fhem_codemirror.js</code><br />
<br />
Für alle FHEMWEB-Instanzen der aktuellen Konfiguration wird die Funktionalität folgendermaßen aktiviert.<br />
:<code>attr TYPE=FHEMWEB JavaScripts codemirror/fhem_codemirror.js</code><br />
<br />
== Wichtige Tastenkombinationen ==<br />
Im erweiterten Editor ist Suchen und Ersetzen mit folgenden Tastenkombinationen möglich:<br />
* 'STRG + F' => Suche starten<br />
* 'STRG + G' => Zum nächsten Treffer<br />
* 'SHIFT + Ctrl + G' => Zum vorherigen Treffer<br />
* 'SHIFT + Ctrl + F' => Einzeln Ersetzen<br />
* 'SHIFT + Ctrl + R' => Im gesamten Dokument Ersetzen<br />
<br />
Folgende hilfreiche Tastenkombinationen werden desweiteren automatisch erstellt:<br />
* 'TAB' => Einrücken von Text, auch mehrerer markierter Zeilen auf einmal, oder mindestens einer komplett markierten Zeile. <br />
* 'SHIFT + TAB' => Verringern der Einrückung der aktuellen Zeile, oder auch mehrerer markierter Zeilen auf einmal.<br />
* 'STRG + Q' => Auskommentieren oder Kommentar der Zeile entfernen in welcher sich der Cursor gerade befindet, oder mehrerer markierter Zeilen auf einmal.<br />
* 'STRG + UP' oder 'STRG + DOWN' => Hoch-/Runterscrollen des Textes ohne den Cursor umzusetzen.<br />
* 'ALT + G' => Jump-To-Line, falls das Modul jump-to-line.js über den entsprechenden codemirrorParam geladen wurde.<br />
<br />
== Anpassung ==<br />
Der Editor kann mit dem FHEMWEB-Attribut ''codemirrorParam'' und den Parametern, welche auf der [https://codemirror.net/doc/manual.html#config codemirror Seite] zu finden sind, noch weiter angepasst werden, z.B.: <br />
:<code>attr TYPE=FHEMWEB codemirrorParam { "indentWithTabs":false, "indentUnit":2, "autocomplete":false, "height":"auto" }</code><br />
In diesem Beispiel würde der Text statt mit Tabulatoren mit Leerzeichen und statt der standardmäßigen vier Leerzeichen, nur noch mit zwei Leerzeichen bei Verwenden von 'TAB' oder 'SHIFT+TAB' eingerückt werden, und Autovervollständigung mit STRG+SPACE wird deaktiviert (die Dateien show-hint.js und show-hint.css werden nicht mehr geladen); darüber hinaus wird die Höhe des Editors automatisch dem Inhalt angepasst.<br />
<br />
Folgende codemirror-Parameter werden standardmäßig gesetzt und können unter anderen mit dem Attribut ''codemirrorParam'' überschrieben werden:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Standardwert !! Wert !! Bemerkungen<br />
|-<br />
| "matchBrackets"<br />
| true<br />
| boolean<br />
| Lädt das Modul ''matchbrackets.js'' und aktiviert die Markierung zusammengehörender Klammern.<br />
|-<br />
| "autoRefresh"<br />
| true<br />
| boolean<br />
| Lädt das Modul ''autorefresh.js'', durch welches unter anderem verhindert wird, dass beim zweiten Aufruf von Codemirror ein schwarzer Editor ohne Inhalt angezeigt wird.<br />
|-<br />
| "search"<br />
| true<br />
| boolean<br />
| Lädt die Module ''search.js, searchcursor.js, dialog.js'', sowie den stylesheet ''dialog.css'' und aktiviert die Suchen & Ersetzen Funktionalität.<br />
|-<br />
| "comment"<br />
| true<br />
| boolean<br />
| Lädt das Modul ''comment.js'' und aktiviert die Funktionalität mit STRG+Q Zeilen auszukommentieren / Kommentare zu entfernen.<br />
|-<br />
| "autocomplete"<br />
| true<br />
| boolean<br />
| Lädt das Modul ''show-hint.js'' sowie den stylesheet ''show-hint.css'' und aktiviert die Funktionalität, mit STRG+SPACE die Autovervollständigung zu verwenden.<br />
|-<br />
| "autocompleteAlways"<br />
| false<br />
| boolean<br />
| Wenn zusätzlich zu "autocomplete" aktiviert, wird die Befehlsvervollständigung bei jedem Tastendruck durchgeführt (nicht nur durch STRG+SPACE).<br />
|-<br />
| "autoCloseBrackets"<br />
| true<br />
| boolean<br />
| Lädt das Modul ''closebrackets.js'' und aktiviert die Funktionalität, dass ()[]{}''"" automatisch geschlossen werden.<br />
|-<br />
| "jumpToLine"<br />
| false<br />
| boolean<br />
| Lädt das Modul ''jump-to-line.js'' und aktiviert die Funktionalität, dass mit ALT+G zu bestimmten Zeilen gesprungen werden kann.<br />
|-<br />
| "jumpToLine_extraKey"<br />
| false<br />
| z.B. "ALT-H"<br />
| Hierdurch lässt sich die Standardtastenbelegung ALT+G für jumpToLine anpassen.<br />
|-<br />
| "keyMap"<br />
| false<br />
| "vim"<br />
| Hierdurch wird wie in dem Beispiel die Datei fhem/www/codemirror/vim.js oder eine andere in diesem Ordner befindliche *.js Datei geladen.<br />
|-<br />
| "indentUnit"<br />
| 4<br />
| integer<br />
| Gibt an, wieviele Leerzeichen ein TAB-Block umfasst.<br />
|-<br />
| "type"<br />
| "fhem"<br />
| string<br />
| Der Standard codemirror-mode, default wird hier die ''fhem.js'' geladen. <br />
|-<br />
| "theme"<br />
| "blackboard"<br />
| string<br />
| Das Standard codemirrer-theme, default wird hier die ''blackboard.css'' geladen.<br />
|-<br />
| "indentWithTabs"<br />
| true<br />
| boolean<br />
| Wenn aktiviert, wird mit Tabulator statt Leerzeichen eingerückt.<br />
|-<br />
| "autofocus"<br />
| true<br />
| boolean<br />
| Wenn aktiviert, wird der Fokus beim laden von codemirror automatisch in das Editor-Fenster gesetzt.<br />
|-<br />
| "lineNumbers"<br />
| true<br />
| boolean<br />
| Wenn aktiviert, werden die Zeilennummern im Editor angezeigt.<br />
|-<br />
| "smartIndent"<br />
| false<br />
| boolean<br />
| Kontext-sensitive Einrückung (''true'') oder "gleiche Einrückung wie vorherige Zeile" (''false'').<br />
|-<br />
| "height"<br />
| false<br />
| integer / "auto"<br />
| Entweder die standard, automatische, oder benutzerdefinierte Höhe des Editorfensters verwenden. (Im DEF sowie bei Attributen)<br />
|}<br />
<br />
== Links ==<br />
Der Forums-Thread unter der Überschrift {{Link2Forum|Topic=20444|LinkText=Javascript Editor einbinden}} enthält die Diskussion zum Entwicklungsprozess.<br />
<br />
[[Kategorie:Glossary]]<br />
[[Kategorie:FHEM Frontends]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Ventus_Wetterstation_433MHz&diff=30393Ventus Wetterstation 433MHz2019-05-06T15:10:10Z<p>Krikan: Link korrigiert</p>
<hr />
<div><!-- Infobox muss noch ergänzt werden. Hilfe unter [[Vorlage:Infobox Hardware]] --><br />
{{Infobox Hardware<br />
|Bild=Windmesser_W132.jpg<br />
|Bildbeschreibung=Wetterstation Außensensor W132<br />
|HWProtocol=[[Unbekannte_Funkprotokolle#Modulationsverfahren|433MHz OOK]]<br />
|HWType=Tem/Hum/Wind-Sensor<br />
|HWCategory=[[:Kategorie:Wetterstationen|Wetterstationen]] [[:Kategorie:Feuchtesensoren|Feuchtesensoren]] [[:Kategorie:Temperatursensoren|Temperatursensoren]] [[:Kategorie:Regensensor|Regensensor]] [[:Kategorie:Windsensoren|Windsensoren]]<br />
|HWComm=433 MHz<br />
|HWChannels=<br />
|HWVoltage=3 V<br />
|HWPowerConsumption=<br />
|HWPoweredBy=2x LR6/Mignon/AA<br />
|HWSize=<br />
|HWDeviceFHEM=[[CUL_TCM97001]]<br />
|HWManufacturer=Ventus<br />
}}<br />
<br />
Die Familie der Wetterstationen für 433 MHz umfasst die Stationen W137, W155 und W177. Andere Stationen arbeiten über Wifi oder 868 MHz. Die Sensoren verwenden Außenstationen, die auch einzeln erhältlich sind. Für den Betrieb mit FHEM ist die Basis nicht notwendig. Die Sensoren sind <br />
W132 (Temperatur, Luftfeuchte, Windrichtung, Windgeschwindigkeit)<br />
W174 (Regenmenge)<br />
<br />
== Features ==<br />
* Batteriebetrieb (2 x Mignon/LR6/AA)<br />
* Funkfrequenz 433 MHz<br />
* Temperaturmessbereich <br />
* Relative Luftfeuchte 1 % bis 99 %<br />
* Windgeschwindigkeit<br />
* Windrichtungsmesser in Grad (8 Richtungen bekannt)<br />
* Regenmengenmesser<br />
* Datenübermittlung alle 60 Sekunden<br />
* Übermittlung des Batteriestatus<br />
<br />
[[Kategorie:Wetterstationen]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=Erste_Schritte_in_FHEM&diff=30392Erste Schritte in FHEM2019-05-06T10:05:41Z<p>Krikan: /* Der erste Einstieg */ -> RAW-Import durch mehrzeiliges Eingabefeld ersetzt. :-/</p>
<hr />
<div>Für alle, die das erste mal mit FHEM arbeiten, hier ein kleiner Kurs zum Einstieg.<br />
Dieser ist so aufgebaut, dass man noch keine Hardware benötigt und nach dem Installieren der FHEM-Software sofort loslegen kann.<br />
<br />
Diese Anleitung wurde ursprünglich von Ulrich Maass publiziert, der die Genehmigung erteilt hat, sie auch im Wiki zu veröffentlichen.<br />
<br />
Anmerkung zur Bearbeitung: Korrekturen von Tippfehlern kann jeder machen. Redaktionelle Änderungen und Erweiterungen aber bitte mit dem Autor (z.B. auf der [[Diskussion:Erste Schritte in FHEM|zugehörigen Diskussionsseite]]) abstimmen.<br />
<br />
==Der erste Einstieg==<br />
Um FHEM zum ersten Mal aufzurufen, geben Sie im Browser ein:<br />
<nowiki>http://<ip-Adresse>:8083</nowiki><br />
also z.B. <nowiki>http://192.168.1.1:8083</nowiki>.<br />
Sie gelangen auf den Startbildschirm:<br />
<br />
[[Datei:ErsteSchritteInFhem01.png]]<br />
<br />
*Am oberen Bildschirmrand sehen Sie das weiße ''Kommandofeld'', in das Sie Befehle tippen können.<br />
*Links daneben befindet sich ein umrahmtes "+"-Symbol, über das Sie ein mehrzeiliges Eingabefeld erreichen können; mehr dazu später.<br />
*Als ersten Menüpunkt sehen Sie die Schaltfläche ''Save config'', mit der Änderungen so gespeichert werden, dass sie auch nach einem Neustart noch vorhanden sind.<br />
*Außerdem gibt es bereits die Räume ''Unsorted'' und ''Everything'', die wir bald kennenlernen.<br />
*Im unteren Block befinden sich weitere Links, auf die wir später ebenfalls eingehen.<br />
<br />
Der Hinweis ''Security Check'' besagt, dass Sie noch kein Passwort für FHEM eingerichtet haben. Wie man einen Passwortschutz einrichten kann, steht im Detail in der FHEM-Befehlsreferenz {{Link2CmdRef|Lang=de|Anker=allowed}}, in der es übrigens eine Beschreibung zu allen Funktionen und Modulen von FHEM gibt. Um diese Meldung erst einmal zu unterdrücken, geben Sie in das Kommandofeld ein:<br />
attr global motd none<br />
und bestätigen Ihre Eingabe mit der {{Taste|Enter}}-Taste oder klicken alternativ einfach auf den gleichnamigen Link.<br />
<br />
[[Datei:ErsteSchritteInFhem02.png]]<br />
<br />
==Device anlegen - define==<br />
<br />
Das Grundgerüst von FHEM sind "devices". Typische Devices sind beispielsweise Funksteckdosen, Rolladenmotoren, Temperaturmessgeräte, Magnetventile usw. Aber andere Dinge, die man auf den ersten Blick nicht als physisches Gerät bezeichnen würde, sind Device: So etwa ist die Benutzeroberfläche von FHEM selbst ein device ("FHEMWEB"), ebenso gibt es Devices ohne physische Geräte, die dazu benutzt werden können, um eine Variable zu speichern. Ein sehr einfaches Device, dummy genannt, legen wir jetzt an.<br />
<br />
Das dummy devices ist insofern ein besonderes Objekt, weil es nicht unbedingt ein korrespondierendes physisches Gerät (eine physische Lampe, ein Rolladen, ein Magnetventil) benötigt. So können Sie diese Schritte auch ohne ein Hardware-System durchführen bzw. kann hier eine allgemeine Einführung erfolgen, ohne auf die Unterschiede der einzelnen Hardwaresysteme einzugehen. Ein Dummy-Device sieht auf der FHEM-Oberfläche im Allgemeinen genau so aus, wie ein FHEM-Device zu einem physisch vorhandenen Gerät Ihres Hardwaresystems.<br />
<br />
Zunächst legen wir einen Schalter an. Dieser soll einen Lichtschalter an der Wand simulieren. Geben Sie dazu folgenden Befehl in das Kommandofeld ein:<br />
define mySwitch1 dummy<br />
"define" ist der FHEM-Befehl, "mySwitch1" der zukünftige Name des devices und "dummy" bezeichnet den Typ. Die Worte define und dummy gehören zur Befehlssyntax von FHEM und können nicht verändert werden, mySwitch1 ist (mehr oder weniger) frei wählbar. Nach drücken der {{Taste|Enter}}-Taste wird die Detail-Ansicht des neuen FHEM-Device ''mySwitch1'' angezeigt.<br />
<br />
[[Datei:ErsteSchritteInFhem03.png]]<br />
<br />
{{Hinweis|Jedes Device hat genau einen "Typ". Dieser Typ legt gleichzeitig die Perl-Befehlsdatei (man spricht präziser vom "Modul") fest, in der bestimmte Routinen und Eigenschaften festgehalten sind. Ist etwa ein Device vom Typ dummy, so weiß FHEM, dass die Routinen und Eigenschaften im Modul 98_dummy.pm liegen. (Die Zahl 98 hatte früher eine Bedeutung, heute ist das nicht mehr der Fall, aus historischen Gründen wird sie aber immer noch verwendet.)}}<br />
{{Hinweis|Diese Einleitung soll Ihnen ein Gefühl für die Funktionsweise von FHEM vermitteln, ohne dass Ihnen konkrete physische Geräte (spezielle Funk- oder WLAN-Steckdosen, 433MHz-Sender, Homematic-Lampen, ZWave-Aktoren usw.) zur Verfügung stehen müssen. Um für diesen Kurs ein rein "virtuelles Gerät" nutzen zu können, greifen wir auf ein dummy-device zurück. Ein ''dummy'' wird Ihnen auch später noch häufig begegnen, wenn es darum geht, einen Testaufbau zu erläutern oder zur Steuerung eines Programmablaufs Informationen userseitig verfügbar zu machen. Beachten Sie dabei aber bitte immer, dass Ihnen später auch '''sehr viele andere Möglichkeiten''' offenstehen, um Informationen abzuspeichern, auszuwerten oder anzuzeigen, sobald Sie FHEM-Geräte für physische Hardware angelegt haben. Statt hierfür Geräte des Typs ''dummy'' zu verwenden, wird es für Sie zukünftig häufig übersichtlicher sein, Informationen zu einem Gerät direkt bei diesem zu verwalten. Neben den Attributen und Readings, die die hierfür jeweils genutzen Module bereits automatisch bereitstellen, können Sie z.B. bei allen Devices weitere Attribute (userattr) oder Readings (setreading) selbst in fast beliebigem Umfang generieren und darin Ihre eigenen Informationen bereitstellen.}}<br />
<br />
Devices haben einen "Zustand", der sich im Zeitablauf ändert und den FHEM registriert. So ist beispielsweise ein Fenster offen, ein Rolladenpanzer geschlossen und eine Funksteckdose hat Spannung. Ein Zustand muss dabei nicht exakt eine Variable beinhalten (Fenster entweder "offen" oder "geschlossen"), ein Zustand kann auch durch mehrere Variablen beschrieben werden (der Zustand eines Raspberry-Systems, device-type sysmon, umfasst beispielsweise die CPU-Frequenz, die CPU-Temperatur, den load und vieles mehr). <br />
<br />
Dieser Zustand wird in FHEM durch insgesamt drei Größen erfasst. Diese Größen heißen Internals, Attribute und Readings. Es wäre jetzt zu früh, auf die Bedeutung der drei Begriffe im Detail einzugehen, aber folgende Anmerkungen sind für die nachfolgenden Schritte wichtig:<br />
*''Internals'' enthalten ganz grundlegende Informationen zu dem device. Sie werden vom Nutzer in den seltensten Fällen direkt bearbeitet (meist nur bei der Einrichtung des devices).<br />
*''Attribute'' sollen das Verhalten des devices steuern. Sie können vom Anwender typischerweise verändert (oder erst angelegt) werden. <br />
*''Readings'' besitzen im Gegensatz zu den beiden anderen Größen einen Zeitstempel. Hier werden üblicherweise Messwerte des Gerätes erfasst. <br />
<br />
Verwirrend für einen Anfänger kann sein, dass manchmal Internals wie auch Readings mit gleichem Namen (STATE und state) existieren können. Allerdings unterscheidet Perl zwischen Groß- und Kleinschreibung!<br />
<br />
{{Hinweis|Der Block '''''Internals''''' zeigt immer die grundlegende Ausprägung eines FHEM-device an:<br />
*'''''NAME''''' ist der von Ihnen vergebene Name.<br />
*'''''TYPE''''' ist der Typ des FHEM-device, hier dummy.<br />
*'''''STATE''''' ist der in allen Übersichten angezeigte Status des Geräts. Da noch keine Zuordnung stattgefunden hat, ist dieser zunächst '''''???'''''.}}<br />
<br />
==Räume definieren==<br />
Im nächsten Schritt wollen wir Geräte ordnen und geeignet zusammenfassen. Beispielsweise könnten Sie es für sinnvoll erachten, die Geräte, die sich physisch (tatsächlich) in einem Raum befinden, auch in FHEM entsprechend anzuordnen. In einem "Schlafzimmer" sollen dann also entsprechende devices "Rolladen", "Zeitschalter" und "Radios" zu finden sein. Sie können aber auch andere Zuordnungen vornehmen; man könnte etwa alle Messinstrumente wie Thermometer, Stromzähler und Feuchtigkeitsfühler in einem (eventuell nur logisch und nicht physisch existierenden) Raum "Messinstrumente" erfassen. Der Name eines Raumes ist dabei beliebig. <br />
<br />
Um dies zu tun, müssen Sie allen devices, die zum Raum gehören sollen, ein "Attribut" (siehe oben) hinzufügen. Dieses Attribut heißt room und muss als Wert den Namen des Raumes bekommen. Versuchen wir dies für unseren dummy. Hierzu verwenden Sie folgenden Befehl (abschließen der Eingabe mit {{Taste|Enter}}):<br />
attr mySwitch1 room Training<br />
<br />
Durch diesen Befehl wird dem Device ''mySwitch1'' das Attribut ''room'' mit dem Wert ''Training'' hinzugefügt. Wieder gehören attr, mySwitch1 und room zur Befehlssyntax von FHEM und können nicht verändert werden, Training ist frei wählbar. <br />
<br />
''mySwitch1'' gehört jetzt zum room ''Training''. Durch diese Zuordnung ist dieser Raum in der Navigationsleiste links zur Liste der Räume hinzugefügt worden. Klicken Sie einmal auf den Raum ''Training''.<br />
<br />
[[Datei:ErsteSchritteInFhem04.png]]<br />
<br />
Es werden nun alle Geräte angezeigt, die diesem Raum zugeordnet wurden. Bisher haben wir hier nur ein Gerät: ''mySwitch1'', unseren dummy. <br />
Neben dem Device-Namen wird immer der Status des Device angezeigt, hier noch ''???''.<br />
Wenn Sie auf den Namen ''mySwitch1'' klicken, gelangen Sie wieder in dessen Detailansicht.<br />
<br />
Unser dummy wird in einem Block mit der Typbezeichnung ''dummy'' dargestellt. Diese Typbezeichnung können Sie ebenfalls ändern, wenn Sie ein weiteres Attribut "group" hinzufügen und einen (ebenfalls frei wählbaren) Namen vergeben: Gruppen sortieren devices innerhalb eines Raumes. <br />
<br />
Anmerkung: Wenn Sie einen Raum löschen wollen, so tun Sie dies, indem Sie sämtliche devices aus dem Raum entfernen. Für unser Beispiel des Raums ''Training'' bedeutet es, dass in allen devices das Attribut room entfernt wird. Der Raum ''Training'' verschwindet dann von alleine. <br />
<br />
==Schaltbefehle definieren==<br />
Nun soll unser ''mySwitch1'' Schalterflächen für ''on'' und ''off'' bekommen.<br />
attr mySwitch1 webCmd on:off<br />
<br />
Auch hier handelt es sich um ein Attribut mit dem Namen webCmd und den Werten on:off, das dem device ''mySwitch1'' hinzugefügt wird. Statt den o.g. Befehl in das Kommandofeld einzugeben, können Sie auch im unteren Bereich der Detailansicht das gewünschte Attribut (hier: '''''webCmd''''') auswählen und in dem Textfeld rechts daneben die gewünschten Werte eintragen, hier '''''on:off'''''. Schließen Sie Ihre Eingabe durch Klick auf den Button {{Taste|attr}} ab.<br />
<br />
[[Datei:ErsteSchritteInFhem05.png]]<br />
<br />
Klicken Sie nun wieder links auf den Raum ''Training''.<br />
<br />
Sie sehen, dass durch die Attribut-Angabe im vorhergehenden Schritt nun in der Raumansicht die Schaltflächen für ''on'' und ''off'' hinzugekommen sind.<br />
<br />
[[Datei:ErsteSchritteInFhem06.png]]<br />
<br />
Klicken Sie versuchsweise auf ''on'' und ''off'': Statt der bisher angezeigten ''???'' erscheint nun ein Glühbirnensymbol, das den aktuellen Status darstellt.<br />
<br />
Wenn Sie durch Klicken auf den Device-Namen ''mySwitch1'' wieder in die Detailansicht wechseln, sehen Sie, dass im Block ''Internals'' nun auch der aktuelle Zustand ''STATE'' angezeigt wird. Dieser wird in der Raumansicht als Icon (Glühbirne) dargestellt.<br />
<br />
[[Datei:ErsteSchritteInFhem07.png]]<br />
<br />
Auch sehen Sie im Detail-Bildschirm einen neuen Block ''Readings''.<br />
<br />
Schalten Sie ''mySwitch1'' noch einmal aus. Achten Sie beim Schalten auf die Readings: Neben dem Internal ''STATE'' gibt es ein Reading gleichen Namens, das aber (siehe oben: Grundbegriffe; Perl unterscheidet zwischen Groß- und Kleinschreibung) mit einem Zeitstempel versehen ist. Prüfen Sie, ob das Reading ''state'' incl. seines Zeitstempels aktualisiert wurde.<br />
<br />
==Event monitor==<br />
<br />
Devices kommunizieren über so genannte ''Events'' (Ereignisse) miteinander. Ein device sendet ein Event an FHEM und FHEM verteilt dieses Event an alle devices. Diese devices wiederum entscheiden dann, ob und wie sie auf das Event reagieren. Das Verständnis von Events und wie sie aufgebaut sind ist elementar und wir werden sie noch oft benötigen. Wir wollen daher Events ein wenig näher kennenlernen und uns dazu den Eventmonitor anschauen. Dieser Eventmonitor zeigt alle aktuellen Events in FHEM an. <br />
<br />
Öffnen Sie dazu in Ihrem Browser ein zusätzliches Fenster, in dem Sie neben FHEM den '''[[Event monitor]]''' anzeigen. Am schnellsten geht das, indem Sie mit der rechten Maustaste auf ''Event monitor'' klicken und aus dem Kontextmenü des Browsers ''Öffnen in neuem Fenster'' auswählen. Legen Sie die Fenster so übereinander, dass Sie gleichzeitig den Event monitor sehen und Ihren ''mySwitch1'' bedienen können. Unter Windows ab Version 7 geht das am Einfachsten, wenn Sie zuerst das eine Fenster aktivieren und {{Taste|Windows}}+{{Taste|Pfeil rechts}} drücken, anschließend das selbe mit dem anderen Fenster und {{Taste|Windows}}+{{Taste|Pfeil links}} wiederholen.<br />
<br />
[[Datei:ErsteSchritteInFhem08.png]]<br />
<br />
Schalten wir ''mySwitch1'', so löst unser device ein Event aus und FHEM verteilt es an alle anderen devices. Bei jeder Betätigung des Schalters erscheint ein neues Event im ''Event monitor''. Probieren Sie auch, was passiert, wenn Sie zweimal hintereinander auf ''on'' klicken.<br />
<br />
Im Eventmonitor wird ein Event immer durch einen Zeitstempel beschrieben. Es folgen der Typ des auslösenden Gerätes (hier ''dummy''), der Name des Device, welches das Ereignis auslöst (hier ''mySwitch1'') und zuletzt der ausgelöste Befehl (hier ''on'' oder ''off'').<br />
<br />
Andere FHEM-Geräte (beispielsweise eine Fernbedienung oder ein Funkschalter an der Wand) erzeugen bei jedem Tastendruck oder bei Klick einen Event. Diese Events erscheinen ebenfalls im Event monitor.<br />
<br />
==Schalten von Geräten - set==<br />
''mySwitch1'' kann also über Klicken auf ''on'' oder ''off'' geschaltet werden. Alternativ geht das auch über die Eingabe eines Befehls in das Kommandofeld.<br />
<br />
Geben Sie dazu in das Kommandofeld <code>set mySwitch1 on</code> oder <code>set mySwitch1 off</code> ein und bestätigen jeweils mit der {{Taste|Enter}}-Taste. Auch hierbei ändert sich der Schaltzustand und ein Event wird ausgelöst. Den ''set''-Befehl werden wir ebenfalls noch häufig verwenden.<br />
<br />
Für weitere Tests legen wir nun ein neues Device '''''myLamp1''''' an. Diese wollen wir später mit '''''mySwitch1''''' bedienen.<br />
define myLamp1 dummy<br />
Da dies eine Lampe, also einen Aktor darstellen soll, werden wir der Lampe selbst keine Buttons für ''on'' oder ''off'' geben.<br />
<br />
Die Lampe soll im Training stehen. Diese Zuordnung könnten Sie wie zuvor über die Kommandozeile erreichen. Diesmal sind wir aber tippfaul und möchten die Zuordnung durch Klicken vornehmen.<br />
<br />
Da ''myLamp1'' noch keinem Raum zugeordnet ist, erscheint sie im Raum ''Unsorted''. Wechseln Sie in diesen Raum und klicken Sie auf den Namen von ''myLamp1'', um in die Detailansicht zu gelangen.<br />
<br />
[[Datei:ErsteSchritteInFhem09.png]]<br />
<br />
Im unteren Bereich können wir wieder die Attributzuordnung vornehmen.<br />
<br />
Praktischerweise ist das Attribut ''room'' bereits ausgewählt. Bei einem Klick in das Eingabefeld neben ''room'' öffnet sich eine Dialogbox mit allen in FHEM bereits angelegten Räumen. Durch Anklicken der Raumnamen können Sie ein oder mehrere Räume auswählen. Wählen Sie den Raum ''Training'' aus und bestätigen Sie die Dialogbox mit OK. Der ausgewählte Raum wird in das Eingabefeld übernommen und Sie müssen nur noch auf den Button {{Taste|attr}} klicken.<br />
<br />
Wechseln Sie nun wieder in den Raum ''Training''. Es werden beide Geräte angezeigt.<br />
<br />
[[Datei:ErsteSchritteInFhem10.png]]<br />
<br />
==Bei Event ausführen - notify==<br />
<br />
Im nächsten Schritt werden wir FHEM beibringen, auf einen Event von ''mySwitch1'' zu reagieren. Im Beispiel soll immer dann, wenn ''mySwitch1'' einen Event mit dem Befehl ''on'' auslöst, das Gerät ''myLamp1'' eingeschaltet werden.<br />
<br />
Dazu wird in FHEM ein "notify" verwendet. Die Befehlsstruktur ist<br />
define <NAME> notify <REGEXP> <command><br />
Diese Befehlsstruktur besteht erkennbar aus drei Teilen.<br />
<br />
*Der Name '''<NAME>''' dient später dazu, dieses FHEM-Device anzeigen und wiederfinden zu können. Als Name verwende ich hier ''n_mySwitch1_on'', also ''n_'' um es als Notify kenntlich zu machen, dann das auslösende Gerät ''mySwitch1'' und den auslösenden Event ''on''. Sie können das notify ganz nach Gusto ''n1'' nennen oder ''Karlheinz''. Mein Name scheint auf den ersten Blick kompliziert, ist aber hilfreich, wenn Sie später mehrere Notify angelegt haben. Device-Namen dürfen aus den Zeichen '''a-z''', '''A-Z''', '''0-9''', '''Unterstrich _''' und '''Punkt .''' bestehen, wobei ein Punkt nicht an erster Stelle stehen darf. Sie werden später sehen, dass der Punkt in perl und damit FHEM eine besondere Bedeutung hat, wenn möglich sollten Sie daher auf seine Verwendung in Device-Namen verzichten.<br />
*'''<REGEXP>''' steht für "Regular Expression" (auch reguläre Ausdrücke) und definiert die Bedingung, wann das Notify ausgeführt werden soll. Hierauf gehen wir gleich genauer ein, da reguläre Ausdrücke in perl und FHEM sehr häufig verwendet werden. <br />
*'''<command>''' definiert, was denn eigentlich ausgeführt werden soll. In unserem Beispiel soll das <code>set myLamp1 on</code> sein.<br />
<br />
Reguläre Ausdrücke dienen dazu, bestimmte (syntaktische) Eigenschaften von Zeichenketten zu beschreiben. So kann man mit Hilfe eines Regex beispielsweise prüfen, ob ein bestimmtes Wort in einer Zeichenkette enthalten ist oder ob es nicht in der Zeichenkette vorkommt, man kann Zahlen in einer Zeichenkette identifizieren und vieles mehr. Sie werden sich mit Regex später detaillierter auseinandersetzen dürfen :)<br />
<br />
Wann immer in FHEM ein Event auftritt, wird dieses an alle notifies weitergeleitet. Jedes Notify prüft nun, ob es auf das Ereignis reagieren soll. Das geschieht, indem mit Hilfe reguläre Ausdrücke geprüft wird, ob das gerade weitergeleitete Event den oben genannten Befehl auslösen soll. Man spricht auch davon dass geprüft wird, ob Ereignis und notify "matchen". In unserem Fall löst ''mySwitch1'' ein Event mit dem Befehl ''on'' aus. Um dieses Event "abzufangen" und darauf zu reagieren, wird für die Regular Expression die Schreibweise <code>mySwitch1:on</code> verwendet. In einem notify werden Events also dadurch abgefangen, indem wir das device (auf das reagiert werden soll) und der Befehl (auf den reagiert wird) durch einen Doppelpunkt trennen. Diese Syntax gilt für alle notifies. (Bei anderen Modulen kann es sein, dass Events durch eine andere Schreibweise "angefangen" werden müssen.) <br />
<br />
Unser Notify wird also erstellt mit<br />
define n_mySwitch1_on notify mySwitch1:on set myLamp1 on<br />
<br />
Nach Eingabe dieses Befehls in das Kommandofeld, abgeschlossen durch {{Taste|Enter}}, sehen Sie wieder die Detailansicht des neuen FHEM-Device, also des Notify (siehe TYPE).<br />
<br />
[[Datei:ErsteSchritteInFhem11.png]]<br />
<br />
Im Block ''Internals'' sehen Sie hier die Definition '''DEF'''. Angezeigt wird hier alles, was bei der Definition nach dem Wort "notify", also nach dem Gerätetyp angegeben wurde. Es erscheinen also ''<regexp>'' und ''<command>''.<br />
{{Hinweis|Im Block '''''Probably associated with''''' werden alle FHEM-Devices angezeigt, die mit dem Notify verbunden sind. Die Geräte werden als klickbare Device-Namen angezeigt. Das ist praktisch, da man so mit einem Klick zur Detailansicht des jeweiligen Geräts springen kann.}}<br />
<br />
Ordnen Sie auch das Notify unserem Training zu (im unteren Bereich das Attribut ''room'' und den passenden Raum auswählen und dann auf ''attr'' klicken).<br />
<br />
Wenn Sie nun im FHEM-Menü auf ''Training'' klicken, werden unsere drei FHEM-Devices angezeigt.<br />
<br />
[[Datei:ErsteSchritteInFhem12.png]]<br />
<br />
{{Hinweis|Üblicherweise würde man das Notify keinem Raum zuordnen, da es später für den Benutzer gar nicht sichtbar sein soll. Für unsere Testdurchläufe ist es aber praktischer.}}<br />
<br />
Wenn Sie nun ''mySwitch1'' auf ''on'' schalten, wird auch ''myLamp1'' auf ''on'' geschaltet. Das funktioniert scheinbar nur beim ersten Mal – wenn Sie aber den Event Monitor prüfen oder in der Detailansicht von ''myLamp1'' auf den Zeitstempel der letzten Statusänderung schauen, werden Sie sehen, dass es jedes Mal ausgeführt wird.<br />
<br />
Damit das Ganze auch beim Ausschalten funktioniert, legen Sie ein zweites notify an:<br />
define n_mySwitch1_off notify mySwitch1:off set myLamp1 off<br />
Funktioniert es wie erwartet?<br />
<br />
<br />
Natürlich möchte man nicht für jeden Befehl, den ein Device auslöst, ein eigenes Notify anlegen. Es geht auch einfacher.<br />
Statt<br />
define n_mySwitch1_on notify mySwitch1:on set myLamp1 on<br />
define n_mySwitch1_off notify mySwitch1:off set myLamp1 off<br />
definieren wir nun<br />
define n_mySwitch1 notify mySwitch1 set myLamp1 '''$EVENT'''<br />
Wir sehen, dass die Regex nun nicht mehr unterscheidet, ob ''mySwitch1'' den Event ''on'' oder ''off'' sendet. Lassen wir diese Angabe weg, löst dieses Notify bei jedem Event von ''mySwitch1'' aus, egal mit welchem Kommando. Im auszuführenden ''set''-Befehl verwenden wir nun die FHEM-Variable '''$EVENT''' (Groß/Kleinschreibung beachten!). Dies ist ein Platzhalter für den Befehl, der vom auslösenden Event übernommen wird. Wenn also ''mySwitch1'' ein ''on'' auslöst, nimmt '''$EVENT''' den Wert ''on'' an. Entsprechend für ''off'' oder jeden anderen Befehl.<br />
<br />
==Devices löschen oder deaktivieren – delete, disable==<br />
Wenn Sie den Event Monitor beachten, werden Sie sehen, dass nach jeder Betätigung von ''mySwitch1'' der Befehl für ''myLamp1'' nun zweimal ausgeführt wird. Das liegt daran, dass auf jeden Event von ''mySwitch1'' zwei Notify reagieren – sowohl die "alten" Notify wie auch das Neue. Um dies zu umgehen, müssen wir die alten Notify loswerden. Dazu gibt es zwei Möglichkeiten.<br />
<br />
#Löschen Sie ein Notify mit dem Befehl <code>delete <name></code>, z.B. mit <code>delete n_mySwitch1_on</code>. Der <code>delete</code> Befehl funktioniert übrigens für jedes Objekt in FHEM. Sie können damit also auch "echte" Devices löschen.<br />
#Deaktivieren Sie ein Notify, indem Sie das Attribut ''disable'' verwenden. Das können Sie wieder über die Detailansicht des Notify setzen (im unteren Bereich das Attribut ''disable'' und den Wert ''1'' auswählen, dann {{Taste|attr}} klicken), oder in der Kommandozeile <code>attr n_mySwitch1_off disable 1</code> eingeben.<br />
<br />
==Save Config==<br />
<br />
Wann immer Sie mit dem aktuellen Zustand Ihrer FHEM-Konfiguration zufrieden sind, klicken Sie im FHEM-Menü oben links einmal auf '''''Save config''''' oder geben Sie in das Kommandofeld den Befehl <code>save</code> ein. Ihre Konfiguration wird nun gespeichert. Tun Sie das nicht, sind alle Änderungen nach dem nächsten FHEM-Neustart '''verloren'''. FHEM erinnert Sie deshalb an ungespeicherte Änderungen durch ein rotes Fragezeichen neben '''''Save config'''''.<br />
<br />
==Bestehende Devices verändern – modify==<br />
<br />
Wir legen nun eine zweite Lampe an, die ebenfalls durch unseren ''mySwitch1'' und unser Notify geschaltet werden soll.<br />
Die neue Lampe wird durch folgende Eingabe in das Kommandofeld erzeugt:<br />
define myLamp2 dummy<br />
<br />
Durch "Zusammenklicken" im Detail-Bildschirm von ''myLamp2'' ordnen Sie diese ebenfalls dem Raum ''Training'' zu und weisen ihr über das Attribut ''webCmd'' Schaltflächen für ''on'' und ''off'' zu.<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem13.png]]<br />
<br />
<br />
Nun passen wir das Notify ''n_mySwitch1'' an. Dazu navigieren Sie auf den Detail-Bildschirm des Notify: Wechseln Sie in den Raum ''Training'' und klicken Sie auf den Namen von ''n_mySwitch1''.<br />
<br />
Im Detail-Bildschirm befindet sich die Zeile ''DEF'', die wir uns vorhin schon einmal angeschaut haben. Wenn Sie auf das Wort ''DEF'' klicken, können Sie die Definition eines FHEM-Objekts bearbeiten.<br />
<br />
{{Hinweis|Im Feld ''DEF'' wird nur der Teil der Definition angezeigt, der beim Anlegen dieses Notify nach dem Objekttyp, also ''notify'' folgt. Sie finden hier also zunächst die Regex auf die das Notify reagiert, dann nach einer Leerstelle den auszuführenden Befehl.<br />
Der Lesbarkeit halber ist im Folgenden immer das gesamte define-Statement dargestellt, auch wenn man es im Feld ''DEF'' nicht vollständig sieht.}}<br />
<br />
Wir ändern hier also von <br />
define n_mySwitch1 notify mySwitch1 set myLamp1 $EVENT<br />
zu<br />
define n_mySwitch1 notify mySwitch1 set myLamp1,myLamp2 $EVENT<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem14.png]]<br />
<br />
<br />
Zum Beenden der Bearbeitung klicken Sie auf die Schaltfläche '''''modify <name>''''', hier also {{Taste|modify n_mySwitch1}}. Wenn Sie die Angaben im Detail-Bildschirm prüfen, sehen Sie, dass die ''DEF''inition des Notify angepasst wurde.<br />
<br />
[[Datei:ErsteSchritteInFhem14B.png]]<br />
<br />
Beachten Sie auch hier wieder, dass im Detailscreen im unteren Bereich unter ''Probably associated with'' die geschalteten Lampen erscheinen – das wird noch oft nützlich sein.<br />
<br />
{{Hinweis|Über den Link '''''Device specific help''''' können Sie sich übrigens den gesamten Hilfe-Text zu Ihrem device-Typ aus der commandref anschauen, hier also den Hilfetext zu ''notify''. Dieser Link ist gerade zu Beginn häufig hilfreich.}}<br />
<br />
Nun können Sie testen, ob ein Klick auf ''mySwitch1'' auch wirklich beide Lampen schaltet. Schauen Sie sich dabei auch wieder in einem separaten Fenster mit dem Event Monitor die entstehenden Events an.<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem15.png]]<br />
<br />
==Mehrere Devices schalten==<br />
<br />
Zum Schalten mehrerer Devices kann also verwendet werden<br />
set <device1>,<device2> on<br />
<br />
Eine alternative Schreibweise dafür ist<br />
set <device1> on; set <device2> on<br />
<br />
Auch eine Kombination ist möglich:<br />
set <device1>,<device2> on; set <device3> off<br />
<br />
<br />
Auch innerhalb eines notify (oder anderen FHEM-Befehlen) kann man mehrere Befehle auflisten, jedoch ist hier eines zu beachten:<br />
define n1 notify mySwitch1:on set myLamp1 on;set myLamp2 off<br />
Die Befehle sind durch ein Semikolon getrennt. Effekt ist: Das notify schaltet myLamp1 wann immer mySwitch1 den Event on sendet. Der nächste Befehl in dieser Zeile ist ''set myLamp2 off''. Dieser wird '''sofort''' bei der Eingabe der o.g. Befehlszeile abgearbeitet. Es schaltet also myLamp2 sofort, myLamp1 erst nach dem Event von mySwitch1.<br />
<br />
Soll auch der zweite Befehl ''set myLamp2 off'' erst nach dem Event ausgeführt werden, muss ein doppeltes Semikolon genutzt werden:<br />
define n1 notify mySwitch1:on set myLamp1 on;;set myLamp2 off<br />
<br />
Die kombinierte Variante könnte so aussehen:<br />
define n1 notify mySwitch1:on set myLamp1 on;;set myLamp2 off;set myLampe3 on<br />
Diese Befehlszeile würde also myLampe3 sofort schalten, aber erst nach dem Event von mySwitch1 schalten myLamp1 und myLamp2.<br />
<br />
==Devices umbenennen==<br />
<br />
Schließlich wollen wir (zur Übung) noch ein Device umbenennen: Aus '''''myLamp2''''' soll '''''myStandardLamp''''' werden. Dafür verwenden wir<br />
rename <alterName> <neuerName><br />
<br />
Hierbei ist zu beachten, dass zugehörige notify-Anweisungen '''nicht''' automatisch aktualisiert werden. Beachten Sie also vor dem Umbenennen im unteren Bereich des Detail-Bildschirms die Liste ''Probably associated with'', damit Sie bei der folgenden Anpassung keines Ihrer Notify vergessen.<br />
<br />
Geben Sie also in das Kommandofeld ein<br />
rename myLamp2 myStandardLamp<br />
und passen Sie anschließend ''n_mySwitch1'' an, indem Sie auf dessen Detail-Bildschirm im Bereich ''DEF'' die Definition anpassen.<br />
<br />
Nach der Änderung muss das Notify lauten<br />
define n_mySwitch1 notify mySwitch1 set myLamp1,myStandardLamp $EVENT<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem16.png]]<br />
<br />
<br />
==Zeitgesteuert schalten - at==<br />
<br />
Im nächsten Schritt soll eine Zeitsteuerung eingerichtet werden.<br />
Zunächst möchten wir erreichen, dass ''myLamp1'' nach einer Minute ausgeschaltet wird wie z.B. ein Treppenhauslicht.<br />
<br />
{{Hinweis|Damit Sie den Effekt sehen können, schalten Sie ''myLamp1'' vorher auf ''on''.}}<br />
<br />
Für Zeitsteuerungen gibt es den FHEM-Device-Typ ''at''. Die Befehlsstruktur ist<br />
define <name> at <timespec> <command><br />
'''<name>''' und '''<command>''' haben hier dieselbe Funktion wie bei notify. Neu ist hier lediglich '''<timespec>''' (time specification), also die Zeitangabe. Diese erfolgt in der Schreibweise ''HH:MM:SS'' oder ''HH:MM''.<br />
<br />
Um '''''myLamp1''''' also '''in einer Minute auszuschalten''', erzeugen Sie folgendes ''at'':<br />
define a_myLamp1 at +00:01:00 set myLamp1 off<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem17.png]]<br />
<br />
<br />
Probieren Sie es aus.<br />
Wird ''myLamp1'' nach einer Minute ausgeschaltet?<br />
Wird dabei ein Event erzeugt?<br />
<br />
Wenn Sie sich die Detailansicht des ''at'' anschauen möchten, müssen Sie sich übrigens beeilen: Nach der einmaligen Ausführung wird das ''at'' automatisch gelöscht. Falls FHEM schneller war, können Sie es ja noch einmal anlegen und ggf. eine längere Zeitspanne angeben :-)<br />
<br />
Bei <timespec> kann man die Sekunden auch weglassen und einfach nur HH:MM schreiben. Außerdem gibt es mehrere Varianten:<br />
{|class="wikitable"<br />
|+Varianten von Zeitangaben für ''at''<br />
|-<br />
!Notation<br />
!Erklärung<br />
|-<br />
|style="text-align: right;"|+00:02:00<br />
|In zwei Minuten; einmalige Ausführung<br />
|-<br />
|style="text-align: right;"|00:02:00<br />
|Um zwei Minuten nach Mitternacht, also um 00:02 Uhr und 0 Sekunden; einmalige Ausführung<br />
|-<br />
|style="text-align: right;"|*00:02:00<br />
|Täglich um 00:02 Uhr<br />
|-<br />
|style="text-align: right;"|+*00:02:00<br />
|Alle 2 Minuten<br />
|-<br />
|style="text-align: right;"|+*{3}00:02<br />
|Dreimal, alle zwei Minuten<br />
|-<br />
|style="text-align: right;"|*{3}00:02<br />
|Dreimal um 00:02 Uhr<br />
|-<br />
|style="text-align: right;"|*{sunset_rel()}<br />
|Täglich zu Sonnenuntergang<br />
|-<br />
|style="text-align: right;"|*{sunrise(+120)}<br />
|Täglich 2 Minuten (120 Sekunden) nach Sonnenaufgang<br />
|}<br />
*Durch die Angabe von '''*''' wird also eine dauerhafte Wiederholung definiert. Die Wiederholungen laufen so lange, bis das ''at'' gelöscht oder disabled wird.<br />
*Durch die Angabe von '''+''' wird die angegebene Zeit nicht mehr als absolute Uhrzeit interpretiert, sondern als Timer, nach wie vielen Stunden:Minuten:Sekunden der Befehl ausgeführt wird. <br />
*Durch die Angabe von '''''{n}''''' wird das ''at'' nur n-mal durchlaufen.<br />
*Die Funktionen '''''{sunset_rel()}''''' und '''''{sunrise()}''''' liefern die passende Uhrzeit zurück. Durch Angabe von '''''*''''' wird dies täglich wiederholt. Die geschweiften Klammer zeigen an, dass FHEM den Inhalt dieser Klammern direkt als Perl-Funktionen ausführt. <br />
<br />
Um bspw. täglich zu Sonnenaufgang die Gartenbeleuchtung auszuschalten, definieren Sie so etwas wie<br />
define a_gardenLight_morning_off at *{sunrise()} set gardenLight off<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem18.png]]<br />
<br />
Im Detailscreen eines ''at'' wird übrigens im ''STATE'' der Zeitpunkt der nächsten Ausführung angezeigt. <br />
<br />
Diese Info erscheint auch in der Raum-Ansicht, falls Sie das ''at'' dort anzeigen lassen:<br />
<br />
[[Datei:ErsteSchritteInFhem18B.png]]<br />
<br />
==Timer bei einem Event starten - notify und at==<br />
{{Randnotiz|RNText='''Zeit- und Ereignissteuerung mit DOIF'''<br />
Seit Erscheinen des ursprünglichen Artikels Anfang 2014 ist eine weitere Möglichkeit der Zeit- und Ereignissteuerung eingeführt worden.<br />
<br />
Siehe: [[DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erläuterungen#Erste_Schritte_mit_DOIF:_Zeit-_und_Ereignissteuerung|'''Erste Schritte mit DOIF: Zeit- und Ereignissteuerung''']]<br />
<br />
Der Autor des ursprünglichen Artikels hat freundlicherweise zugestimmt diesen Artikel mit einem Link zu ergänzen.}}<br />
Als letzte Übung wollen wir ein ''notify'' und ein ''at'' verbinden. Der Timer soll nun nicht starten, wenn Sie den Befehl in das Kommandofeld eingeben, sondern wenn ein Event eintritt.<br />
<br />
[[Datei:GotoRAW-Import firststeps.PNG|thumb|left|300px]]Dazu basteln wir uns ein Stairwell: Legen Sie dafür die Dummy-Devices ''sw_Switch'' und ''sw_Light'' im Raum ''Stairwell'' an. Um die folgenden Befehle an einem Stück eingeben zu können, klicken Sie auf das umrahmte "+"-Symbol neben der Kommandozeile, fügen die folgenden Zeilen mit copy&paste in das daraufhin erscheinende Dialogfeld ein und drücken auf {{Taste|Execute}}: <br />
define sw_Switch dummy<br />
attr sw_Switch room Stairwell<br />
attr sw_Switch webCmd on<br />
define sw_Light dummy<br />
attr sw_Light room Stairwell<br />
[[Datei:RAW-Import firststeps.PNG]]<br />
<br />
Anschließend können Sie das Dialogfeld wieder schließen oder auch die nachfolgenden Befehle darüber eingeben. Beachten Sie, dass mit ''Execute'' alle Anweisungen aus dem Dialogfeld ausgeführt werden, was ggf. zu Fehlermeldungen führen kann, wenn z.B. ein Gerät bereits definiert ist. Zeilen mit Anweisungen, die bereits in die Konfiguration übernommen wurden, können Sie daher getrost löschen, um solche Effekte zu vermeiden.<br />
<br />
Nun fehlt noch das Notify, welches auf ''sw_Switch:on'' reagiert und daraufhin zwei Befehle ausführt: <br />
*Einschalten des Treppenhauslichts mit <code>set sw_Light on</code><br />
*Einen Timer starten, der es nach einer Minute wieder ausschaltet. Also <code>define a1 at +00:01 set sw_Light off</code>.<br />
<br />
Das sieht dann so aus (und muss ins Kommandofeld als '''eine''' Zeile eingegeben werden):<br />
define n_sw_Switch_on notify sw_Switch:on <br />
set sw_Light on;;define a1 at +00:01 set sw_Light off<br />
Beim Auslösen des Notify wird also als Kommando das Einschalten des Treppenhauslichts ausgelöst, wie auch das Definieren eines Timers, der es eine Minute später wieder ausschaltet.<br />
Funktioniert es?<br />
<br />
<br />
[[Datei:ErsteSchritteInFhem19.png]]<br />
<br />
<br />
Da das ja doch recht sperrig ist, gibt es noch eine etwas einfachere Alternative:<br />
define n_sw_Switch_on notify sw_Switch:on set sw_Light on;;sleep 60;;set sw_Light off<br />
<br />
Manche Hardwaresysteme bieten auch den Befehl ''on-for-timer'', mit dem man alternativ schreiben kann<br />
define n_sw_Switch_on notify sw_Switch:on set sw_Light on-for-timer 60<br />
<br />
==Wie geht es weiter?==<br />
<br />
Sie haben nun kennengelernt:<br />
* Das Anlegen von FHEM-Devices mit '''define'''<br />
* '''Events''' und den Event-Monitor<br />
* Schalten von Devices mit '''set'''<br />
* Verändern von Devices mit '''modify''', '''rename''' und '''delete'''<br />
* Das Setzen und Bearbeiten von '''Attributen'''<br />
* Event-getriebene Aktionen durch '''notify'''<br />
* Zeitgesteuertes Schalten mit '''at'''<br />
<br />
Damit kennen Sie die grundlegendsten Mechanismen von FHEM. Details zu diesen Befehlen finden Sie in der FHEM Befehlsreferenz {{Link2CmdRef}}.<br />
<br />
'''Tipp:''' Zu vielen FHEM-Befehlen und Gerätetypen gibt es auch eine deutschsprachige Beschreibung. Klicken Sie dazu in der commandref oben links auf den Link "DE".<br />
<br />
In der commandref finden Sie neben der Beschreibung aller FHEM-Befehle auch die Liste aller Gerätetypen, die in FHEM eingebunden werden können.<br />
<br />
Sie werden feststellen, dass "echte" FHEM-Devices grundsätzlich genau so aussehen, wie die dummy-Devices, die Sie hier bereits kennengelernt haben. Der wesentliche Unterschied ist, dass Sie die verfügbaren Befehle nicht mehr selbst mittels ''attr webCmd'' festlegen müssen, da diese bereits durch das FHEM-Device vorgegeben sind. Und Events werden nicht nur ausgelöst, wenn Sie im FHEM-Webfrontend klicken, sondern auch, wenn das physische Gerät (also der Bewegungssensor oder der Lichtschalter an der Wand) auslöst.<br />
<br />
Sobald Sie ihre ersten Geräte an FHEM gekoppelt haben, schauen Sie sich den Event-Monitor an, um zu sehen, wann welche Events ausgelöst werden.<br />
<br />
Einen umfangreicheren Einstieg in FHEM finden Sie im Dokument [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung-mit-FHEM]<br />
<br />
Die für FHEM wichtigen Grundlagen der Programmiersprache Perl kann man in den ersten Kapiteln eines Perl-Buches oder diversen frei im Internet verfügbaren Perl-Tutorials nachlesen.<br />
<br />
Viel Spaß und Erfolg mit FHEM !<br />
<br />
[[Kategorie:HOWTOS]]</div>Krikanhttp://wiki.fhem.de/w/index.php?title=List&diff=30391List2019-05-06T08:32:09Z<p>Krikan: Kategorie FHEM entfernt</p>
<hr />
<div>{{SEITENTITEL:list}}<br />
{{Infobox Modul<br />
|ModPurpose=Befehl zur Auflistung von Gerätedefinitionen<br />
|ModType=cmd<br />
|ModCmdRef=list<br />
|ModForumArea=Sonstiges<br />
|ModTechName=fhem.pl ("Built-in")<br />
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])<br />
}}<br />
Der Befehl [[list]] dient dazu, Informationen über Geräte (Devices) anzuzeigen. Dabei können entweder Details zu einem einzelnen Gerät ausgegeben werden, oder eine Liste von Geräten (Gerätenamen) mit bestimmten gemeinsamen Attributen. Wenn mehrere Geräte aufgelistet werden, lässt sich zu jedem zusätzlich der Wert eines oder mehrerer Internals, Readings oder Attribute mit ausgeben.<br />
<br />
Der Befehl kann direkt über das Eingabefeld des [[FHEMWEB|Webfrontends]] oder über die telnet Schnittstelle eingegeben werden. <br />
<br />
== Beispiele ==<br />
{{Randnotiz|RNText=Für alle Beispiele gilt: im Webfrontend lassen sich die Namen der ausgegebenen Geräte direkt anklicken, um in die zugehörige Detail-Ansicht zu gelangen. Dies ist besonders für [[weblink]], [[SVG]] oder [[readingsGroup]] Geräte nützlich, die in der Raum-Ansicht eventuell keinen solchen Link auf die Detail-Ansicht zeigen.}}<br />
=== Alle Geräte mit bestimmten Namen mit ihrer Definition ===<br />
Auflistung der Definitionen aller Geräte von FHEM:<br />
:<code><nowiki>list .* DEF</nowiki></code><br />
<br />
Auflistung der Definitionen der Geräte, die mit wz beginnen.<br />
:<code><nowiki>list wz.* DEF</nowiki></code><br />
<br />
=== Alle Geräte eines bestimmten Typs ===<br />
Mit dem Befehl <br />
:<code><nowiki>list TYPE=FS20</nowiki></code><br />
wird eine Liste (die Namen) aller Geräte des Typs [[FS20]] ausgegeben. <br />
<br />
=== Alle Geräte ohne TYPE ===<br />
Manche Fehlersituationen in FHEM werden verursacht durch Geräte, bei denen kein ''Internal'' mit dem Namen ''TYPE'' festgelegt ist (was eigentlich eine ungültige Definition ist). Diese Geräte-Definitionen lassen sich mit dem Befehl <br />
:<code><nowiki>{ join("\n", grep { !defined($defs{$_}{TYPE}) } keys %defs) }</nowiki></code><br />
identifizieren. Mithilfe dieser Information lässt sich dann z.B. ein solches Gerät [[delete|löschen]]. <br />
<br />
Ein derartiges Szenario ist unter anderem in diesem {{Link2Forum|Topic=41137|LinkText=Forenthema}} beschrieben.<br />
<br />
=== Alle Geräte mit einem bestimmten Attribut ===<br />
Im Zusammenhang mit Verhaltensänderungen eines Attributs (wie z.B. bei [[userReadings]] geschehen), kann es sinnvoll sein, alle Devices aufzulisten, bei denen dieses Attribut verwendet wurde.<br />
;alle Devices, bei denen das Attribut ''userReadings'' (auf einen beliebigen Wert gesetzt) ist:<br />
:<code>list userReadings=[a-zA-Z].*</code> oder <br /><code>list userReadings=.+</code> oder <br /><code>list userReadings=\w.*</code> oder <br /><code>list userReadings=..*</code><br />
<br />
=== Alle Geräte in einem Raum ===<br />
[[Datei:ListRoom.png|mini|right|Ausgabebeispiel eines ''list'' Befehls]]<br />
Mit dem Befehl <br />
:<code><nowiki>list room=TV</nowiki></code><br />
werden die Namen aller Geräte aufgeführt, die ein Attribut ''room'' mit dem Wert ''TV'' haben. Durch einen Klick auf den Gerätenamen wird die Detailansicht des Gerätes aufgerufen.<br />
<br />
=== Attributwert zu mehreren Geräten ===<br />
Mit dem Befehl<br />
:<code>list TYPE=CUL_HM serialNr</code><br />
werden die Seriennummern aller Homematic Geräte aufgelistet.<br />
<br />
=== Mehrere Werte zu mehreren Geräten ===<br />
Mit dem Befehl<br />
:<code>list TYPE=CUL_HM:FILTER=serialNr=..* serialNr model</code><br />
werden die Seriennummer und die Modellbezeichnung aller Homematic Geräte aufgelistet, die auch eine Seriennummern haben.<br />
<br />
=== Gezieltes Auflisten von Internal, Reading oder Attribut ===<br />
Bei manchen Geräten gibt es Internals, Readings oder Attribute mit gleichem Namen. Da ''list'' jeweils nur das erste Vorkommen zeigt und nicht sichtbar macht, was genau gefunden wurde, ist die Ausgabe manchmal nicht eindeutig. Um das zu vermeiden, lässt sich mit dem Präfix i:, r: oder a: vor dem Namen des anzuzeigenden Wertes angeben, welcher der drei möglichen Typen ausgegeben werden soll.<br />
<br />
== Erweiterte Optionen ==<br />
Mit den Optionen -r und -R kann eine erweiterte Ausgabe erzielt werden. Diese sollte bei der Erstellung eines Threads im Forum zu allen beteiligten Geräten mit angegeben werden. Die Optionen können auch hilfreich sein, um Teile der [[Konfiguration]] schnell zwischen unterschiedlichen Installationen zu kopieren, z.B. von einem oder in ein Testsystem (siehe auch [[Import von Code Snippets]]). <br />
=== list -r ===<br />
Dabei werden auch die derzeitigen Stände der Readings mit ausgegeben. Für die Angabe des Gerätenamens ist dabei die Verwendung jeder {{Link2CmdRef|Anker=devspec|Label=devspec}} zulässig.<br />
=== list -R ===<br />
Mit dieser Option werden auch die Geräte samt aktueller Zustände mit ausgegeben, die als '''probably associated with'' erkannt worden sind.<br />
<br />
== Links ==<br />
* [[Import von Code Snippets|RAW Definition]]<br />
<br />
[[Kategorie:FHEM-Verwendung]]</div>Krikan