98_powerMap.pm: set NotifyOrderPrefix & fix <a> by Beta-User (Forum #125923)

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@25617 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2022-02-02 18:14:41 +00:00
parent 99f8588974
commit 46cfd9565c

View File

@ -520,12 +520,13 @@ sub powerMap_Initialize($) {
. "_eventChainWarnOnly:1,0 " . "_eventChainWarnOnly:1,0 "
. $readingFnAttributes; . $readingFnAttributes;
addToAttrList( $TYPE . "_noEnergy:1,0" ); addToAttrList( $TYPE . "_noEnergy:1,0", 'powerMap' );
addToAttrList( $TYPE . "_noPower:1,0" ); addToAttrList( $TYPE . "_noPower:1,0" , 'powerMap' );
addToAttrList( $TYPE . "_interval" ); addToAttrList( $TYPE . "_interval" , 'powerMap' );
addToAttrList( $TYPE . "_rname_P:textField" ); addToAttrList( $TYPE . "_rname_P:textField" , 'powerMap' );
addToAttrList( $TYPE . "_rname_E:textField" ); addToAttrList( $TYPE . "_rname_E:textField" , 'powerMap' );
addToAttrList( $TYPE . ":textField-long" ); addToAttrList( $TYPE . ":textField-long" , 'powerMap' );
$hash->{NotifyOrderPrefix} = '30-';
} }
# regular Fn ################################################################## # regular Fn ##################################################################
@ -1541,111 +1542,119 @@ sub powerMap_update($;$) {
1; 1;
__END__
# commandref ################################################################## # commandref ##################################################################
=pod =pod
=encoding utf8
=item helper =item helper
=item summary maps power and calculates energy (as Readings) =item summary maps power and calculates energy (as Readings)
=item summary_DE leitet Leistung ab und berechnet Energie (als Readings) =item summary_DE leitet Leistung ab und berechnet Energie (als Readings)
=begin html =begin html
<a name="powerMap"></a> <a id="powerMap"></a>
<h3>powerMap</h3> <h3>powerMap</h3>
(en | <a href="commandref_DE.html#powerMap">de</a>)
<div> <div>
<ul> <ul>
powerMap will help to determine current power consumption and calculates powerMap will help to determine current power consumption and calculates
energy consumption either when power changes or within regular interval.<br> energy consumption either when power changes or within regular interval.<br>
These new values may be used to collect energy consumption for devices w/o These new values may be used to collect energy consumption for devices w/o
power meter (e.g. fridge, lighting or FHEM server) and for further processing power meter (e.g. fridge, lighting or FHEM server) and for further processing
using module <a href="#ElectricityCalculator">ElectricityCalculator</a>. using module <a href="#ElectricityCalculator">ElectricityCalculator</a>.<br>
Note: As this module will derive some additional readings when readings are changed
(with event) in the supervised FHEM devices to prepare for further processing with
other event handlers, this will happen on a rather early stage of the entire event
processing. So do not expect powerMap to work properly when setting own values
(e.g. using notify or DOIF in combination with "setreading" commands).
<br> <br>
<a name="powerMapdefine"></a> <a id="powerMap-define"></a>
<b>Define</b> <h4>Define</h4>
<ul> <ul>
<code>define &lt;name&gt; powerMap</code><br> <code>define &lt;name&gt; powerMap</code><br>
You may only define one single instance of powerMap. You may only define one single instance of powerMap.
</ul><br> </ul><br>
<a name="powerMapset"></a> <a id="powerMap-set"></a>
<b>Set</b> <h4>Set</h4>
<ul> <ul>
<li> <a id="powerMap-set-assign"></a><li>
<code>assign <a href="#devspec">&lt;devspec&gt;</a></code><br> <code>assign <a href="#devspec">&lt;devspec&gt;</a></code><br>
Adds pre-defined powerMap attributes to one or more devices Adds pre-defined powerMap attributes to one or more devices
for further customization. for further customization.
</li> </li>
</ul><br> </ul><br>
<a name="powerMapget"></a> <a id="powerMap-get"></a>
<b>Get</b> <h4>Get</h4>
<ul> <ul>
<li> <a id="powerMap-get-devices"></a><li>
<code>devices</code><br> <code>devices</code><br>
Lists all devices having set an attribute named 'powerMap'. Lists all devices having set an attribute named 'powerMap'.
</li> </li>
</ul><br> </ul><br>
<a name="powerMapreadings"></a> <a id="powerMap-readings"></a>
<b>Readings</b><br> <h4>Readings</h4><br>
<ul> <ul>
Device specific readings: Device specific readings:
<ul> <ul>
<li> <a id="powerMap-readings-pM_energy"></a><li>
<code>pM_energy</code><br> <code>pM_energy</code><br>
A counter for consumed energy in Wh.<br> A counter for consumed energy in Wh.<br>
Hint: In order to have the calculation working, attribute Hint: In order to have the calculation working, attribute
<code>timestamp-on-change-reading</code> may not be set for <code>timestamp-on-change-reading</code> may not be set for
reading pM_energy! reading pM_energy!
</li><br> </li><br>
<li> <a id="powerMap-readings-pM_energy_begin"></a><li>
<code>pM_energy_begin</code><br> <code>pM_energy_begin</code><br>
Unix timestamp when collection started and device started to consume Unix timestamp when collection started and device started to consume
energy for the very first time. energy for the very first time.
</li><br> </li><br>
<li> <a id="powerMap-readings-pM_consumption"></a><li>
<code>pM_consumption</code><br> <code>pM_consumption</code><br>
Current power consumption of device in W. Current power consumption of device in W.
</li> </li>
</ul><br> </ul><br>
</ul> </ul>
<a name="powerMapattr"></a> <a id="powerMap-attr"></a>
<b>Attribute</b> <h4>Attributes</h4>
<ul> <ul>
<li> <a id="powerMap-attr-disable"></a><li>
<code>disable 1</code><br> <code>disable 1</code><br>
No readings will be created or calculated by this module. No readings will be created or calculated by this module.
</li><br> </li><br>
<li> <li><a href="#do_not_notify">do_not_notify</a></li>
<a id="powerMap-attr-powerMap_eventChainWarnOnly"></a><li>
<code>powerMap_eventChainWarnOnly &lt;1&gt;</code><br> <code>powerMap_eventChainWarnOnly &lt;1&gt;</code><br>
When set, event chain will NOT be repaired automatically if readings When set, event chain will NOT be repaired automatically if readings
were found to be required for powerMap but their events are currently were found to be required for powerMap but their events are currently
suppressed because they are either missing from attributes event-on-change-reading suppressed because they are either missing from attributes event-on-change-reading
or event-on-update-reading. Instead, manual intervention is required. or event-on-update-reading. Instead, manual intervention is required.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_interval"></a><li>
<code>powerMap_interval &lt;seconds&gt;</code><br> <code>powerMap_interval &lt;seconds&gt;</code><br>
Interval in seconds to calculate energy.<br> Interval in seconds to calculate energy.<br>
Default value is 900 seconds. Default value is 900 seconds.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_noEnergy"></a><li>
<code>powerMap_noEnergy 1</code><br> <code>powerMap_noEnergy 1</code><br>
No energy consumption will be calculated for that device. No energy consumption will be calculated for that device.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_noPower"></a><li>
<code>powerMap_noPower 1</code><br> <code>powerMap_noPower 1</code><br>
No power consumption will be determined for that device and No power consumption will be determined for that device and
consequently no energy consumption at all. consequently no energy consumption at all.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_rname_E"></a><li>
<code>powerMap_rname_E</code><br> <code>powerMap_rname_E</code><br>
Sets reading name for energy consumption.<br> Sets reading name for energy consumption.<br>
Default value is 'pM_energy'. Default value is 'pM_energy'.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_rname_P"></a><li>
<code>powerMap_rname_P</code><br> <code>powerMap_rname_P</code><br>
Sets reading name for power consumption.<br> Sets reading name for power consumption.<br>
Default value is 'pM_consumption'. Default value is 'pM_consumption'.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap"></a><li>
<code>powerMap<pre> <code>powerMap<pre>
{ {
'&lt;reading&gt;' =&gt; { '&lt;reading&gt;' =&gt; {
@ -1718,9 +1727,8 @@ sub powerMap_update($;$) {
=begin html_DE =begin html_DE
<a name="powerMap"></a> <a id="powerMap"></a>
<h3>powerMap</h3> <h3>powerMap</h3>
(<a href="commandref.html#powerMap">en</a> | de)
<div> <div>
<ul> <ul>
powerMap ermittelt die aktuelle Leistungsaufnahme eines Ger&auml;ts und powerMap ermittelt die aktuelle Leistungsaufnahme eines Ger&auml;ts und
@ -1730,32 +1738,37 @@ sub powerMap_update($;$) {
Ger&auml;te ohne Z&auml;hler (z.B. K&uuml;hlschrank, Beleuchtung oder Ger&auml;te ohne Z&auml;hler (z.B. K&uuml;hlschrank, Beleuchtung oder
FHEM-Server) zu erfassen und mit dem Modul ElectricityCalculator weiter FHEM-Server) zu erfassen und mit dem Modul ElectricityCalculator weiter
zu verarbeiten.<br> zu verarbeiten.<br>
Zur Beachtung: Da powerMap dazu gedacht ist, zusätzliche Readings zu erzeugen,
greift es zu einem frühen Zeitpunkt in der gesamten Eventverarbeitung auf
(triggernde) Änderungen zu. Dies ist v.a. dann zu beachten, wenn versucht
werden sollte, eigene Readings oder Werte mit anderen Eventhandlern
(z.B. notify oder DOIF, per "setreading" Kommando) zu setzen.
<br> <br>
<a name="powerMapdefine"></a> <a id="powerMapdefine"></a>
<b>Define</b> <h4>Define</h4>
<ul> <ul>
<code>define &lt;name&gt; powerMap</code><br> <code>define &lt;name&gt; powerMap</code><br>
Es kann immer nur eine powerMap Instanz definiert sein. Es kann immer nur eine powerMap Instanz definiert sein.
</ul><br> </ul><br>
<a name="powerMapset"></a> <a id="powerMap-set"></a>
<b>Set</b> <b>Set</b>
<ul> <ul>
<li> <a id="powerMap-set-assign"></a><li>
<code>assign <a href="#devspec">&lt;devspec&gt;</a></code><br> <code>assign <a href="#devspec">&lt;devspec&gt;</a></code><br>
Weist einem oder mehreren Ger&auml;ten vordefinierte powerMap Attribute zu, Weist einem oder mehreren Ger&auml;ten vordefinierte powerMap Attribute zu,
um diese anschlie&szlig;end anpassen zu k&ouml;nnen. um diese anschlie&szlig;end anpassen zu k&ouml;nnen.
</li> </li>
</ul><br> </ul><br>
<a name="powerMapget"></a> <a id="powerMap-get"></a>
<b>Get</b> <h4>Get</h4>
<ul> <ul>
<li> <a id="powerMap-get-devices"></a><li>
<code>devices</code><br> <code>devices</code><br>
Listet alle Ger&auml;te auf, die das Attribut 'powerMap' gesetzt haben. Listet alle Ger&auml;te auf, die das Attribut 'powerMap' gesetzt haben.
</li> </li>
</ul><br> </ul><br>
<a name="powerMapreadings"></a> <a id="powerMap-readings"></a>
<b>Readings</b><br> <h4>Readings</h4><br>
<ul> <ul>
Ger&auml;tespezifische Readings: Ger&auml;tespezifische Readings:
<ul> <ul>
@ -1777,49 +1790,49 @@ sub powerMap_update($;$) {
</li> </li>
</ul><br> </ul><br>
</ul> </ul>
<a name="powerMapattr"></a> <a id="powerMap-attr"></a>
<b>Attribute</b> <h4>Attribute</h4>
<ul> <ul>
<li> <a id="powerMap-attr-disable"></a><li>
<code>disable 1</code><br> <code>disable 1</code><br>
Es werden keine Readings mehr durch das Modul erzeugt oder berechnet. Es werden keine Readings mehr durch das Modul erzeugt oder berechnet.
</li><br> </li><br>
<li> <li><a href="#do_not_notify">do_not_notify</a></li>
<code>powerMap_eventChainWarnOnly &lt;1&gt;</code><br> <a id="powerMap-attr-powerMap_eventChainWarnOnly"></a><li>
Sofern gesetzt, wird die Ereigniskette NICHT automatisch repariert, falls Sofern gesetzt, wird die Ereigniskette NICHT automatisch repariert, falls
Readings zwar als f&uuml;r powerMap notwendig identifiziert wurden, ihre Readings zwar als f&uuml;r powerMap notwendig identifiziert wurden, ihre
Events jedoch derzeit dadurch unterdr&uuml;ckt werden, weil sie nicht in Events jedoch derzeit dadurch unterdr&uuml;ckt werden, weil sie nicht in
einem der Attribute event-on-change-reading oder event-on-update-reading einem der Attribute event-on-change-reading oder event-on-update-reading
enthalten sind. Stattdessen ist ein manueller Eingriff erforderlich. enthalten sind. Stattdessen ist ein manueller Eingriff erforderlich.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_interval"></a><li>
<code>powerMap_interval &lt;seconds&gt;</code><br> <code>powerMap_interval &lt;seconds&gt;</code><br>
Intervall in Sekunden, in dem neue Werte f&uuml;r die Energie berechnet Intervall in Sekunden, in dem neue Werte f&uuml;r die Energie berechnet
werden.<br> werden.<br>
Der Vorgabewert ist 900 Sekunden. Der Vorgabewert ist 900 Sekunden.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_noEnergy"></a><li>
<code>powerMap_noEnergy 1</code><br> <code>powerMap_noEnergy 1</code><br>
F&uuml;r das Ger&auml;t wird kein Energieverbrauch berechnet. F&uuml;r das Ger&auml;t wird kein Energieverbrauch berechnet.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_noPower"></a><li>
<code>powerMap_noPower 1</code><br> <code>powerMap_noPower 1</code><br>
F&uuml;r das Ger&auml;t wird keine Leistungsaufnahme abgeleitet und F&uuml;r das Ger&auml;t wird keine Leistungsaufnahme abgeleitet und
daher auch kein Energieverbrauch berechnet. daher auch kein Energieverbrauch berechnet.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_rname_E"></a><li>
<code>powerMap_rname_E</code><br> <code>powerMap_rname_E</code><br>
Definiert den Reading Namen, in dem der Z&auml;hler f&uuml;r die bisher Definiert den Reading Namen, in dem der Z&auml;hler f&uuml;r die bisher
bezogene Energie gespeichert wird.<br> bezogene Energie gespeichert wird.<br>
Der Vorgabewert ist 'pM_energy'. Der Vorgabewert ist 'pM_energy'.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap_rname_P"></a><li>
<code>powerMap_rname_P</code><br> <code>powerMap_rname_P</code><br>
Definiert den Reading Namen, in dem die aktuelle Leistungsaufnahme Definiert den Reading Namen, in dem die aktuelle Leistungsaufnahme
des Ger&auml;tes gespeichert wird.<br> des Ger&auml;tes gespeichert wird.<br>
Der Vorgabewert ist 'pM_consumption'. Der Vorgabewert ist 'pM_consumption'.
</li><br> </li><br>
<li> <a id="powerMap-attr-powerMap"></a><li>
<code>powerMap<pre> <code>powerMap<pre>
{ {
'&lt;reading&gt;' =&gt; { '&lt;reading&gt;' =&gt; {