home-assistant.github.io/components/sensor.dsmr/index.html
2018-03-09 18:51:31 +00:00

297 lines
16 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>DSMR or Slimme meter - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions how to integrate DSMR Smartmeter within Home Assistant.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/sensor.dsmr/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="DSMR or Slimme meter">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/sensor.dsmr/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions how to integrate DSMR Smartmeter within Home Assistant.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="DSMR or Slimme meter">
<meta name="twitter:description" content="Instructions how to integrate DSMR Smartmeter within Home Assistant.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header class='site-header'>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href="/getting-started/">Getting started</a></li>
<li><a href="/components/">Components</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/cookbook/">Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
</ul>
</nav>
<div class='search-container' style='display: none'>
<div class='search'>
<i class="icon-search"></i>
<input id='search' placeholder='Search the docs…'>
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
</div>
</div>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<header>
<h1 class="title indent">
DSMR or Slimme meter
</h1>
</header>
<hr class="divider">
<p>A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as Slimme meter or P1 poort.</p>
<ul>
<li>Currently support DSMR V2.2 and V4 through the <a href="https://github.com/ndokter/dsmr_parser">dsmr_parser</a> module by Nigel Dokter.</li>
<li>For official information about DSMR refer to: <a href="http://www.netbeheernederland.nl/themas/hotspot/hotspot-documenten/?dossierid=11010056&amp;title=Slimme%20meter&amp;onderdeel=Documenten">DSMR Document</a></li>
<li>For unofficial hardware connection examples refer to: <a href="http://domoticx.com/p1-poort-slimme-meter-hardware/">Domoticx</a></li>
</ul>
<p class="img">
<img src="/images/screenshots/dsmr.png" />
</p>
<p>This component is known to work for:</p>
<ul>
<li>Iskra ME382 / MT382 (DSMR 2.2)</li>
<li>Landis+Gyr E350 (DMSR 4)</li>
<li>Landis+Gyr ZCF110 / ZM F110 (DSMR 4.2)</li>
<li>Kaifa E0026</li>
<li>Kamstrup 382JxC (DSMR 2.2)</li>
</ul>
<p>USB serial converters:</p>
<ul>
<li>Cheap (Banggood/ebay) Generic PL2303</li>
<li>https://sites.google.com/site/nta8130p1smartmeter/webshop</li>
<li>https://www.sossolutions.nl/slimme-meter-kabel</li>
</ul>
<p>Serial to network proxies:</p>
<ul>
<li>ser2net - http://ser2net.sourceforge.net/</li>
</ul>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">dsmr</span>
</code></pre>
</div>
<div class="config-vars">
<h3><a class="title-link" name="configuration-variables" href="#configuration-variables"></a> Configuration Variables</h3>
<dl class="">
<dt><a class="title-link" name="port" href="#port"></a> port</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001).</span></p>
</dd>
<dt><a class="title-link" name="host" href="#host"></a> host</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">Host to which Smartmeter is connected (default: (connected via serial or USB, see <strong>port</strong>)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13).</span></p>
</dd>
<dt><a class="title-link" name="name" href="#name"></a> name</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">Version of DSMR used by meter. Choices: 2.2, 4, 5. Defaults to 2.2.</span></p>
</dd>
</dl>
</div>
<p>Full configuration examples can be found below:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry for USB/serial connected Smartmeter</span>
<span class="s">sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">dsmr</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">/dev/ttyUSB1</span>
<span class="s">dsmr_version</span><span class="pi">:</span> <span class="s">4</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">meter_readings</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Meter readings</span>
<span class="s">entities</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">sensor.power_consumption_low</span>
<span class="pi">-</span> <span class="s">sensor.power_consumption_normal</span>
<span class="pi">-</span> <span class="s">sensor.power_production_low</span>
<span class="pi">-</span> <span class="s">sensor.power_production_normal</span>
<span class="pi">-</span> <span class="s">sensor.gas_consumption</span>
</code></pre>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry for remote (TCP/IP, i.e. via ser2net) connection to host which is connected to Smartmeter</span>
<span class="s">sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">dsmr</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.1.13</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">2001</span>
<span class="s">dsmr_version</span><span class="pi">:</span> <span class="s">4</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">meter_readings</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Meter readings</span>
<span class="s">entities</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">sensor.power_consumption_low</span>
<span class="pi">-</span> <span class="s">sensor.power_consumption_normal</span>
<span class="pi">-</span> <span class="s">sensor.power_production_low</span>
<span class="pi">-</span> <span class="s">sensor.power_production_normal</span>
<span class="pi">-</span> <span class="s">sensor.gas_consumption</span>
</code></pre>
</div>
<p>Optional configuration example for ser2net:</p>
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="c"># Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters</span>
2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
</code></pre>
</div>
<p>or</p>
<div class="language-sh highlighter-rouge"><pre class="highlight"><code><span class="c"># Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv2.2 smart meters</span>
2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS
</code></pre>
</div>
<p><a href="/getting-started/installation-raspberry-pi-image/">HASSbian</a> users have to give dialout permission to the user <code class="highlighter-rouge">homeassistant</code>:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$ sudo usermod -a -G dialout homeassistant
</code></pre>
</div>
<p>and after that you need to reboot!</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$ sudo reboot
</code></pre>
</div>
<h3><a class="title-link" name="technical-overview" href="#technical-overview"></a> Technical overview</h3>
<p>DSMR is a standard to which Dutch smartmeters must comply. It specifies that the smartmeter must send out a telegram every 10 seconds over a serial port.</p>
<p>The contents of this telegram differ between version but they generally consist of lines with obis (Object Identification System, a numerical ID for a value) followed with the value and unit.</p>
<p>This module sets up an asynchronous reading loop using the <code class="highlighter-rouge">dsmr_parser</code> module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of <code class="highlighter-rouge">obis</code>/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the <code class="highlighter-rouge">obis</code> are know for each DSMR version the Entities for this component are create during bootstrap.</p>
<p>Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated.</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/sensor.dsmr.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/netbeheernederland.jpg' />
</div>
<div class='section'>
IoT class<sup><a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'><i class="icon-info-sign"></i></a></sup>: Local Push
</div>
<div class='section'>
Introduced in release: 0.34
</div>
<div class='section'>
Source:
<a href='https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/sensor/dsmr.py'>sensor/dsmr.py</a>
</div>
<div class='section'>
<h1 class="title delta">Category Energy</h1>
<ul class='divided'>
<li>
<a href='/components/sensor.comed_hourly_pricing/'>ComEd Hourly Pricing</a>
</li>
<li>
DSMR or Slimme meter
</li>
<li>
<a href='/components/sensor.dte_energy_bridge/'>DTE Energy Bridge</a>
</li>
<li>
<a href='/components/sensor.efergy/'>Efergy</a>
</li>
<li>
<a href='/components/sensor.eliqonline/'>Eliqonline</a>
</li>
<li>
<a href='/components/sensor.hydroquebec/'>Hydro-Québec</a>
</li>
<li>
<a href='/components/sensor.loop_energy/'>Loop Energy</a>
</li>
<li>
<a href='/components/sensor.neurio_energy/'>Neurio</a>
</li>
<li>
<a href='/components/sensor.ohmconnect/'>OhmConnect</a>
</li>
<li>
<a href='/components/sensor.pvoutput/'>PVOutput Sensor</a>
</li>
<li>
<a href='/components/sensor.sma/'>SMA Solar WebConnect</a>
</li>
<li>
<a href='/components/sensor.sense/'>Sense</a>
</li>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
<script type="text/javascript">
docsearch({
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
indexName: 'home-assistant',
inputSelector: '#search',
debug: false // Set debug to true if you want to inspect the dropdown
});
document.querySelector('.search .close').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'none';
});
document.querySelector('.show-search').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'block';
document.getElementById('toggle').checked = false;
document.querySelector('.search-container input').focus();
});
</script>
</body>
</html>