HMinfo
HMInfo ist ein Modul, das alle HomeMatic repräsentiert. Es bietet Funktionen zur Übersicht, Kontrolle, Archivierung und, begrenzt, zur Programmierung der Homematic Komponenten. Somit soll es eine Hilfestellung bei Konfiguration und Fehlerbehandlung geben.
Definition
HMInfo wird erstellt / angelegt mit dem Befehl
define HM HMinfo
Danach können alle Funktionen aufgelistet werden mit
set HM help
Integritätsprüfungen
Befehle, um die Gültigkeit von verschiedenen HomeMatic Eigenschaften zu überprüfen:
Erläuterungen | Definition |
---|---|
Überprüfen, ob alle peerings auch beidseitig sind: | set HM peerCheck
|
Überprüfen, ob alle register korrekt gelesen wurden: | set HM regCheck
|
Kombination von peerCheck und regCheck | set HM configCheck
|
Anzeigen zur Übertragungssituation
RSSI
get HM rssi [<filter>]
Erzeugt eine Tabelle aller RSSI Werte.
set hm clear [<filter>] rssi
setzt die RSSI Werte aller devices gemäß filter zurück. Eine neue Messung kann beginnen
protoEvents
getHM protoEvents [<filter>][short|long]
Es wird eine Tabelle mit allen wichtigen Ereignissen zur Datenübertragung erzeugt. Dies beinhaltet Wiederholungen sowie Übertragungsfehler. short ist eine Fassung ohne Zeitstempel und lässt sich besser am Bildschirm darstellen. Ausserdem kann man sehen, welche Abfragen noch in der queue sind, z.B. durch autoReadReg erzeugt. Die Zustände aller für HM zuständigen IOs sind beinhaltet. Alles in allen ist hier ein kompletter Überblick zur Kommunikation zu sehen. Insbesondere bei
set hm clear [<filter>] Protocol
setzt die Protokol Einträge aller gemäß filter zurück. Kann gut vor einer Konfigurations-aktion genutzt werden um hinterher zu kontrollieren, ob Fehler aufgetreten sind.
msgStat
set hm msgStat
Statistic der Übertragenen Messages insgesamt. Es gibt eine Tabelle über die letzten 24h und eine über die letzte Woche.
Speichern von Konfigurationen
HMInfo speichert Konfigurationen der Geräte in Files. Mit dem Attribut configDir kann man eine directory festlegen, in die alles geschrieben wird.
saveConfig
Peers und Register werden in ein file geschrieben. Die Daten kann man ggf. wieder in ein gerät oder ein Austauschgerät schreiben. Die Speicherung erfolgt kumulativ, man kann alles in ein File schreiben.
set HM saveConfig [<filter>] [<file>]
archConfig
Arbeiter prinzipiell wie saveConfig. Es werden jedoch nur vollständige Registersätze gespeichert.
set HM archConfig [-a] [<file>]
Mit dem Attribut autoArchive kann man einstellen, dass automatisch nach einem erfolgreichen Lesen einer Device-Konfiguration diese Archiviert wird. Das Speichern erfolgt auch hier Kumulativ, jedoch wird ab einer Filegröße von 1MB gepurged, also alles bis auf den neusten Eintrag für eine Entity gelöscht.
Will man eine bekannt gute Konfiguration sicherm, muss man sich ggf. eine Kopie des Archivs machen - dies wird bei nächster Gelegenheit überschrieben.
Template erstellen:
set HM saveConfig -f ^meinDevice$ <myTempalteFile>
loadConfig
set hm loadConfig [<filter>] [<filename>]
Liest die Registerwerte, welche für eine Entity in einem File gespeichert sind, zurück in die Readings. Sollten die Register schon in FHEM vorhanden sein, wird nicht überschrieben. Sinn macht dies beispielsweise für remotes, welche nicht automatisch gelesen werden sollen. Man kann somit nach einem system-reboot die Register "rekonstruieren" und wieder darstellen. Es liegt im ermessen des User, eine bekannt aktuelle Version der Register einzulesen.
purgeConfig
set hm purgeConfig [<filename>]
Löscht alle älteren Datensätze in einem File.
Register setzen
Register von einem Peer kopieren:
set HM cpRegs Licht1:peer7 Licht3:peer2
web Einträge und Readings
Readings und Internals von HMInfo bieten eine Zusammenfassung des Zustands aller HM Komponenten. Diese sind in Fehler ERR' , Warnungen W_ und Information I_ untergliedert. Die Prüfung und Erneuerung der Zähler und Werte wird mit:
set hm update
erreicht. Mit dem Attribut autoUpdate kann man es automatisch regelmäßig starten.
Fehlermeldungen
Als Fehler erkannte Zustände werden in Variablem beginnend mit ERR dargestellt. Erfasste Fehler sind Kritische RSSI werte und Protokoll/Übertragungsfehler. Ausserdem kann man im Attribut sumERROR eintragen, welche Readings zu einer Fehlermeldung führen sollen. Eingetragen werden: Reading:<gutwert>. Wenn ein Reading mit einen anderen als dem "gutwert" gefunden wird, wird dies alarmiert. Beispiel:
battery:ok
hat eine HM Komponente ein Reading "battery" und dieses hat einen anderen Wert als "ok" wird dies alarmiert. In den Readings von HMInfo würde im Feherfall
internal: ERR_names <devicename1>,<devicename2> Readings: ERR_battery low:2
Der default aller Error-meldungen ist battery:ok,sabotageError:off,powerError:ok,overload:off,overheat:off,reduced:off,motorError:no,error:none,uncertain:yes,smoke_detect:none,cover:closed
Diese zusammenfassung der Fehlermeldungen könnte man nutzen, um über notify einen Alarm auszulösen oder eine email zusenden.
Warnungen
Hierzu gehören Wiederholungen von Nachrichten (nicht aber Abbrüche, das sind Fehler). Es wird auch ausstehendes Lesen der Konfiguration, welches durch autoReadReg getriggert wird hier angezeigt.
Statusmeldungen
Analog zu den Fehlermeldungen kann man mit dem Attribut sumStatus gewisse Readings zählen lassen. Beipiel wäre
attr HM sumStatus motor
HMInfo zeigt in dem Reading I_sum_motor dann an, welcher Inhalt des Readings "motor" wie oft gefinden wurde. Es könnte so aussehen
stop:on:4;stop:1;
4 Komponenten stehen auf motor: stop:on und einer steht auf motor: stop
Das Internal I_HM_IOdevices zeigt die von HM Komponenten genutzten IOs und deren State.
Infos
get hm models [-f <regexp>] get hm models get hm models -f remote get hm models -f HM_RC
zeigt alle in FHEM unterstützten Modelle und deren wesentliche Parameter. Man kann mittels regexp die Liste filtern.
get hm param [<typefilter>] [-f <nameFilter>] parameter1 parameter2 get hm param -d IODev DEF model get hm param -c -f Rollo peerList
man kann sich listen von Parametern anzeigen lassen
get hm register [<typefilter>] [-f <nameFilter>]
zeigt Register in tabellarischer Form.
get hm peerXref[<typefilter>] [-f <nameFilter>]
gibt an, wer mit wem gepeert ist
Readings Rücksetzen
Counter zurücksetzen:
set HM clear [<typeFilter>] [Protocol|readings|msgStat|register|rssi]
Filter
Kommandos in HMInfo wirken auf alle HM Komponenten. Man kann dies mit Hilfe der Filter einschränken. Zum einen gibt es modelsFilter, womit man nur devices, nur channels, nur virtuellen Entities bearbeiten kann
set <name> <cmd> [-dcasevi] [params] entities according to list will be processed" d - device :include devices" c - channels :include channels" i - ignore :include devices marked as ignore" v - virtual :supress fhem virtual" p - physical :supress physical" a - aktor :supress actor" s - sensor :supress sensor" e - empty :include results even if requested fields are empty"
Ein auf -d gefiltertes Kommando wird nur auf devices, nicht aber auf channels angewendet.
Dann gibt es noch dem nameFilter, mit dem man mittels regexp auf dem Namen der Entity gefiltert werden kann
-f Rollo # alle Entities mit Rollo im Namen -f ^Rollo$ # nur Entity mit Namen "Rollo" -f Rollo$ # nur Entity deren Name auf Rollo endet
Die Filter kann man kombinieren mit
-c -f Rollo # alle Kanäle mit Rollo im Namen
Beispiel: Zeige mir die Parameter IODev und room der Devices mit Rollo im Namen
set hm param -d -f Rollo IODev room
Attribute
- configDir bietet die Möglichkeit ein directory zu definieren, in welches HMInfo Files ablegen und von welchem es die Files lesen wird.
- configFilename legt einen default Namen fest, der bei save und archive genutzt wird.
- autoArchive automatisch archivieren von vollständigen Konfigurationen.
- autoUpdate started regelmäsig das Komamndo "update". Die Wiederholzeit wird eingestellt mit hh:mm. Sinnvoll erscheint z.B. alle 5 Minuten, also 00:05.
Quellen
- Thread HMinfo im Fhem Forum
- Thread HMINfo, Intention, Sinn und Zweck im Fhem Forum