OWCOUNT

Aus FHEMWiki
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}