<script type="text/javascript">
    RED.nodes.registerType('watt2kwh',{
        category: 'function',
        color: '#A6BBCF',
        defaults: {
            format: {value:"kwh"},
	    maximum: {value:"60", validator: function(v) { return !v || !isNaN(v)}},
	    maximumunit: {value:"mins"},
	    name: {value:""}
        },
        inputs:1,
        outputs:1,
        icon: "power.png",
        label: function() {
            return this.name||"watt2kwh";
        }
    });
</script>

<script type="text/x-red" data-template-name="watt2kwh">

    <div class="form-row">
        <label for="node-input-name"><i class="icon-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>

    <div class="form-row">
        <label for="node-input-format"><i class="fa fa-envelope"></i> Output Format</label>
        <select id="node-input-format">
            <option value="j">joule</option>
	    <option value="kj">kilojoule</option>
            <option value="wh">watt hour</option>
            <option value="kwh">kilowatt hour</option>
            <option value="mwh">megawatt hour</option>
        </select>
    </div>

    <div class="form-row">
        <label for="node-input-maximum"><i class="fa fa-history"></i> Timeout</label>
        <input type="number" id="node-input-maximum" style="width:180px;">
        <select id="node-input-maximumunit" style="width:120px;">
            <option value="secs">Seconds</option>
            <option value="mins">Minutes</option>
            <option value="hours">Hours</option>
        </select>
    </div>
 </script>

<script type="text/x-red" data-help-name="watt2kwh">
<h2 id="noderedcontribwatt2kwh">node-red-contrib-watt2kwh</h2>

<p>A node specifically written to convert power (watts) to energy (kWh).</p>

<h3 id="inputs">Inputs</h3>

<p>The node accepts a msg.payload input in the format of a number (example 6) or a string (example "6") provided that the string only contains numbers.</p>

<h3 id="outputs">Outputs</h3>

<p>The msg.payload contains the energy output, which can be set in the node config to be;</p>

<ul>
<li>Joules</li>

<li>Watt hour</li>

<li>Kilowatt hour or</li>

<li>Megawatt hour</li>
</ul>

<h3 id="details">Details</h3>

<p>As the calculation is dependent upon the relationship between the amount of power used, (or generated) <strong>and</strong> the interval between consecutive data points; <strong>interval x power = energy</strong> the very first value fed into the node will not produce an output, because the node requires a second value to be able to calculate the interval between the two values. </p>

<p>After subsequent feed inputs, the node will output the corresponding energy used or generated within that interval.  </p>

<p>The Timeout setting in the node's configuration, should be set to at least the maximum interval between successive readings. This is to avoid the situation where for example, a sensor is taken off line, develops a fault or there is a communication problem, resulting in a break of several hours between readings and the calculation - <strong>interval x power = energy</strong> would then be inaccurate.</p>

<p>For example flows - see the <a href="https://github.com/Paul-Reed/node-red-contrib-watt2kwh/">README</a></p>
</script>