OWCOUNT: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K (Infobox eingefügt + kleinere Änderungen) |
||
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=Beispiel= | {{Infobox Modul | ||
|ModPurpose=1-Wire Frontendmodul | |||
|ModType=d | |||
|ModForumArea=1Wire | |||
|ModTechName=21_OWCOUNT.pm | |||
|ModOwner=Pahenning ({{Link2FU|376|Forum}}/[[Benutzer Diskussion:Pahenning|Wiki]])<br>ntruchsess ({{Link2FU|677|Forum}}/[[Benutzer Diskussion:Ntruchsess|Wiki]]) | |||
}} | |||
[[OWCOUNT]] ist ein Frontendmodul für FHEM und dient zur Kommunikation mit [[1-Wire]] Komponenten DS2423 (Dual Counter plus RAM) bzw. dessen Nachbau auf Basis von ATtiny-Prozessoren. Dabei wird als Backendmodul sowohl [[OWX]] zugelassen, als auch [[OWServer]]. | |||
== Definition == | |||
define <name> OWCOUNT [<model>] <ROM_ID> [interval] | |||
define <name> OWCOUNT <FAM_ID>.<ROM_ID> [interval] | |||
Darin ist | |||
*<name> der FHEM Gerätename | |||
*<model> die Typenbezeichnung, entweder ''DS2423'' oder ''DS2423emu'' (Default DS2423) | |||
*<FAM_ID> eine 1-Wire Family ID, gegenwärtig erlaubter Wert ist ''1D'' | |||
*<ROM_ID> eine 12-Zeichen (6 Byte) 1-Wire ROM ID (ohne Family ID) | |||
*[interval] das Messintervall in Sekunden (Default ist 300) | |||
Bei der Initialisierung wird automatisch geprüft, ob ein interner RAM vorhanden ist. Wenn nicht, wird ''model=DS2423emu'' gesetzt. | |||
== Get == | |||
*get <name> id => FAM_ID.ROM_ID.CRC | |||
*get <name> present => 1 if device present, 0 if not | |||
*get <name> interval => query interval | |||
*get <name> memory <page> => 32 byte string from page 0..13 | |||
*get <name> midnight <channel> => todays starting value (formatted) for counter | |||
*get <name> month => summary and average for month | |||
*get <name> year => summary and average for year | |||
*get <name> raw <channel> => raw value for counter | |||
*get <name> counters => formatted values for both counters | |||
*get <name> version => OWX version number | |||
== Set == | |||
*set <name> interval => set query interval for measurement | |||
*set <name> memory <page> => 32 byte string into page 0..13 | |||
*set <name> midnight <channel> => todays starting value for counter | |||
== Attribute == | |||
*attr <name> LogM <string> = device name (not file name) of monthly log file | |||
*attr <name> LogY <string> = device name (not file name) of yearly log file | |||
*attr <name> nomemory = 1|0 (when set to 1, disabels use of internal memory) | |||
*attr <name> <channel>Name <string>|<string> = name for the channel | a type description for the measured value | |||
*attr <name> <channel>Unit <string>|<string> = unit of measurement for this channel | its abbreviation | |||
*attr <name> <channel>Rate <string>|<string> = name for the channel ratw | a type description for the measured value | |||
*attr <name> <channel>Offset <float> = offset added to the reading in this channel | |||
*attr <name> <channel>Factor <float> = factor multiplied to (reading+offset) in this channel | |||
*attr <name> <channel>Mode <string> = counting mode = normal(default) or daily | |||
*attr <name> <channel>Period <string> = period for rate calculation = hour (default), minute or second | |||
== Beispiel == | |||
*A-Kanal | *A-Kanal | ||
**Dieser Kanal zählt Tastendrücke, diese haben den Namen ''GPunkte'' erhalten (steht für Gummipunkte, um Fehlinterpretationen zuvorzukommen ...), ein Datentyp wird nicht festgesetzt. | **Dieser Kanal zählt Tastendrücke, diese haben den Namen ''GPunkte'' erhalten (steht für Gummipunkte, um Fehlinterpretationen zuvorzukommen ...), ein Datentyp wird nicht festgesetzt. | ||
Zeile 46: | Zeile 96: | ||
define OWCY.FL FileLog /home/fhem/fhemlogs/OWCY-%Y.log OWC.*month.* | define OWCY.FL FileLog /home/fhem/fhemlogs/OWCY-%Y.log OWC.*month.* | ||
attr OWCY.FL room Obergeschoss | attr OWCY.FL room Obergeschoss | ||
== Zugriff auf rohe Datenwerte == | |||
Der midnight-Wert von Kanal B des als OWC definierten 1-Wire Counters ist enthalten in | |||
$defs{'OWC'}->{owg_midnight}->[1] | |||
Der rohe Zählerwert steht in | |||
$defs{'OWC'}->{owg_val}->[1] | |||
Um irgendetwas in den angezeigten Wert für den B-Kanal zu setzen, muss die Variable | |||
$defs{'OWC'}{READINGS}{<channel-name>}{VAL} | |||
überschrieben werden, sie wird berechnet als (roher wert + offset)*factor - mdnight. | |||
Ähnlich könnte man auch die B-Rate überschreiben, sie steht in | |||
$defs{'OWC'}{READINGS}{<channel-name>}{VAL} | |||
[[Kategorie:1-Wire]] |
Aktuelle Version vom 16. Juli 2015, 06:22 Uhr
OWCOUNT | |
---|---|
Zweck / Funktion | |
1-Wire Frontendmodul | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | 1Wire |
Modulname | 21_OWCOUNT.pm |
Ersteller | Pahenning (Forum /Wiki) ntruchsess (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
OWCOUNT ist ein Frontendmodul für FHEM und dient zur Kommunikation mit 1-Wire Komponenten DS2423 (Dual Counter plus RAM) bzw. dessen Nachbau auf Basis von ATtiny-Prozessoren. Dabei wird als Backendmodul sowohl OWX zugelassen, als auch OWServer.
Definition
define <name> OWCOUNT [<model>] <ROM_ID> [interval] define <name> OWCOUNT <FAM_ID>.<ROM_ID> [interval]
Darin ist
- <name> der FHEM Gerätename
- <model> die Typenbezeichnung, entweder DS2423 oder DS2423emu (Default DS2423)
- <FAM_ID> eine 1-Wire Family ID, gegenwärtig erlaubter Wert ist 1D
- <ROM_ID> eine 12-Zeichen (6 Byte) 1-Wire ROM ID (ohne Family ID)
- [interval] das Messintervall in Sekunden (Default ist 300)
Bei der Initialisierung wird automatisch geprüft, ob ein interner RAM vorhanden ist. Wenn nicht, wird model=DS2423emu gesetzt.
Get
- get <name> id => FAM_ID.ROM_ID.CRC
- get <name> present => 1 if device present, 0 if not
- get <name> interval => query interval
- get <name> memory <page> => 32 byte string from page 0..13
- get <name> midnight <channel> => todays starting value (formatted) for counter
- get <name> month => summary and average for month
- get <name> year => summary and average for year
- get <name> raw <channel> => raw value for counter
- get <name> counters => formatted values for both counters
- get <name> version => OWX version number
Set
- set <name> interval => set query interval for measurement
- set <name> memory <page> => 32 byte string into page 0..13
- set <name> midnight <channel> => todays starting value for counter
Attribute
- attr <name> LogM <string> = device name (not file name) of monthly log file
- attr <name> LogY <string> = device name (not file name) of yearly log file
- attr <name> nomemory = 1|0 (when set to 1, disabels use of internal memory)
- attr <name> <channel>Name <string>|<string> = name for the channel | a type description for the measured value
- attr <name> <channel>Unit <string>|<string> = unit of measurement for this channel | its abbreviation
- attr <name> <channel>Rate <string>|<string> = name for the channel ratw | a type description for the measured value
- attr <name> <channel>Offset <float> = offset added to the reading in this channel
- attr <name> <channel>Factor <float> = factor multiplied to (reading+offset) in this channel
- attr <name> <channel>Mode <string> = counting mode = normal(default) or daily
- attr <name> <channel>Period <string> = period for rate calculation = hour (default), minute or second
Beispiel
- A-Kanal
- Dieser Kanal zählt Tastendrücke, diese haben den Namen GPunkte erhalten (steht für Gummipunkte, um Fehlinterpretationen zuvorzukommen ...), ein Datentyp wird nicht festgesetzt.
- Eine Einheit wird nicht festgesetzt, demnach wird die Default-Einheit cts (für counts) verwendet.
- Als Periode für die Ratenberechnung wird 1 Minute (minute)verwendet, die Rate heißt GRate. Ein Datentyp wird nicht festgesetzt, die Einheit ergibt sich automatisch als cts/min.
- Der Kanal ist im inkrementierenden ("normalen") Modus, wird demnach nicht täglich auf Null gesetzt.
- B-Kanal
- Dieser Kanal zählt Impulse (à la Stromzähler - obwohl beim Autor zu Testzwecken ein Timer dranhängt, der alle 4 Sekunden ein Signal abgibt).
- Der Kanal hat den Name E-Energy und den Datentyp energy erhalten.
- Die Einheit im Kanal sind Kilowattstunden, sowohl die Langform als auch die Kurzform dieser Einheit werden als kWh gesetzt.
- Dabei steht jeder Impuls für 0,001 kWh => BFactor ist 0.001.
- Als Periode für die Ratenberechnung wird 1 Stunde (hour) verwendet, die Rate heißt E-Power, die Einheit ergibt sich automatisch als kW (Hinweis: derzeit wird nur die Einheit kWh/h automatisch durch kW ersetzt).
- Dieser Kanal ist im täglichen Modus BMode=daily, es wird also jeden Nacht kurz vor Mitternacht der Mitternachtswert extrapoliert und als day Wert ausgegeben. Dieser Wert wird auch im internen Memory als midnight B gespeichert und vom Zählerstand abgezogen. Bei dem Testgerät sind das also pro Tag 21,6 kWh = 86400 Sekunden / 4 Sekunden * 0,001 kWh
- Das monatliche Logging erfolgt durch das FileLog OWCM.FL, das jährliche Logging durch das FileLog OWCY.FL. Diese Namen müssen dem Modul als Attribute LogM und LogY bekannt gemacht werden.
Insgesamt ergibt sich also als Konfiguration dieses DS2423
define OWC OWCOUNT 1D.CE780F000000 60 attr OWC model DS2423 attr OWC room Obergeschoss attr OWC AName GPunkte| attr OWC ARate GRate| attr OWC APeriod minute attr OWC BName E-Energy|energy attr OWC BRate E-Power|power attr OWC BUnit kWh|kWh attr OWC BFactor 0.001 attr OWC BMode daily attr OWC LogM OWCM.FL attr OWC LogY OWCY.FL
Das tägliche Logging kann erfolgen mit
define OWC.FL FileLog /home/fhem/fhemlogs/OWC-%Y-%m-%d.log OWC.*GPunkte.*E-Energy.* attr OWC.FL room Obergeschoss
Für das monatliche Logging definiert man ein FileLog als
define OWCM.FL FileLog /home/fhem/fhemlogs/OWCM-%Y-%m.log OWC.*day.* attr OWCM.FL room Obergeschoss
Darin stehen Zeilen wie:
2014-01-09_23:59:42 OWC day: D09 GPunkte: 49.0 cts GPunktem: 49.0 cts E-Energy: 21.6 kWh E-Energym: 21.60 kWh 2014-01-10_23:59:43 OWC day: D10 GPunkte: 89.0 cts GPunktem: 89.0 cts E-Energy: 21.6 kWh E-Energym: 43.20 kWh 2014-01-11_23:59:39 OWC day: D11 GPunkte: 89.0 cts GPunktem: 89.0 cts E-Energy: 21.6 kWh E-Energym: 64.80 kWh 2014-01-12_23:59:55 OWC day: D12 GPunkte: 89.0 cts GPunktem: 89.0 cts E-Energy: 21.6 kWh E-Energym: 86.4 kWh 2014-01-13_23:59:11 OWC day: D13 GPunkte: 89.0 cts GPunktem: 89.0 cts E-Energy: 21.6 kWh E-Energym: 108.0 kWh
Damit wird durch das Modul OWCOUNT in der 9. und der 15. Spalte der kumulierte monatliche Wert berechnet, der sich mit get month und get year abfragen lässt.
Das jährliche Logging erfolgt beispielsweise mit
define OWCY.FL FileLog /home/fhem/fhemlogs/OWCY-%Y.log OWC.*month.* attr OWCY.FL room Obergeschoss
Zugriff auf rohe Datenwerte
Der midnight-Wert von Kanal B des als OWC definierten 1-Wire Counters ist enthalten in
$defs{'OWC'}->{owg_midnight}->[1]
Der rohe Zählerwert steht in
$defs{'OWC'}->{owg_val}->[1]
Um irgendetwas in den angezeigten Wert für den B-Kanal zu setzen, muss die Variable
$defs{'OWC'}{READINGS}{<channel-name>}{VAL}
überschrieben werden, sie wird berechnet als (roher wert + offset)*factor - mdnight. Ähnlich könnte man auch die B-Rate überschreiben, sie steht in
$defs{'OWC'}{READINGS}{<channel-name>}{VAL}