<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dropins &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<atom:link href="https://www.smarthomeng.de/tag/dropins/feed" rel="self" type="application/rss+xml" />
	<link>https://www.smarthomeng.de</link>
	<description>Die Device Integrations-Plattform für Dein Smart Home</description>
	<lastBuildDate>Sat, 20 Oct 2018 14:10:20 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>

<image>
	<url>https://www.smarthomeng.de/wp-content/uploads/global/logo_small_152x152-150x150.png</url>
	<title>dropins &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<link>https://www.smarthomeng.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Integration von SteelSeries-Canvas in die smartVISU 2.9 (mit Daten des SMA_EM-Plugins)</title>
		<link>https://www.smarthomeng.de/beispiel-integration-von-steelseries-canvas-in-die-smartvisu</link>
					<comments>https://www.smarthomeng.de/beispiel-integration-von-steelseries-canvas-in-die-smartvisu#comments</comments>
		
		<dc:creator><![CDATA[Marc René Frieß]]></dc:creator>
		<pubDate>Thu, 29 Mar 2018 09:30:21 +0000</pubDate>
				<category><![CDATA[Beispiel-Implementierungen]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[dropins]]></category>
		<category><![CDATA[sma_em]]></category>
		<category><![CDATA[smartVISU]]></category>
		<category><![CDATA[smartVISU 2.9]]></category>
		<category><![CDATA[steelseries-canvas]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=738</guid>

					<description><![CDATA[Obwohl mit smartVISU 2.9 die Anzahl der direkt mitgelieferten Widgets deutlich steigt, so können in manchen Situationen die mitgelieferten Widgets nicht ausreichend sein. In diesem Kurz-Tutorial wird beschrieben, wie sich das Widget-Framework SteelSeries-Canvas (Beispiele) in die smartVISU 2.9 integrieren lässt. Dies wird am Beispiel einer &#8222;Bezug/Einspeisungs&#8220;-Anzeige mit Daten aus dem<a class="moretag" href="https://www.smarthomeng.de/beispiel-integration-von-steelseries-canvas-in-die-smartvisu"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p>Obwohl mit <a href="http://www.smartvisu.de/" target="_blank" rel="noopener">smartVISU 2.9</a> die Anzahl der direkt mitgelieferten Widgets deutlich steigt, so können in manchen Situationen die mitgelieferten Widgets nicht ausreichend sein.</p>
<p>In diesem Kurz-Tutorial wird beschrieben, wie sich das Widget-Framework <a href="https://github.com/HanSolo/SteelSeries-Canvas" target="_blank" rel="noopener">SteelSeries-Canvas</a> (<a href="https://plus.google.com/105784522827877256999/posts/BnLRUttBN5a" target="_blank" rel="noopener">Beispiele</a>) in die <a href="http://www.smartvisu.de/" target="_blank" rel="noopener">smartVISU 2.9</a> integrieren lässt. Dies wird am Beispiel einer &#8222;Bezug/Einspeisungs&#8220;-Anzeige mit Daten aus dem SMA_EM-Plugin durchgeführt. Das Plugin ist aber keine Pflicht: es können aber auch beliebige andere Items mit ähnlichen Daten verwendet werden.</p>
<p>Der Thread zu SteelSeries-Canvas im Forum findet sich mit weiteren Beispielen in <a href="https://knx-user-forum.de/forum/supportforen/smartvisu/39225-steelseries-canvas-in-smartvisu" target="_blank" rel="noopener">https://knx-user-forum.de/forum/supportforen/smartvisu/39225-steelseries-canvas-in-smartvisu</a>.</p>
<h1>SMA_EM-Plugin einrichten</h1>
<p>Das SMA_EM-Plugin (<a href="https://knx-user-forum.de/forum/supportforen/smarthome-py/1030610-sma_em-plugin" target="_blank" rel="noopener">Support-Thread im Forum</a>, <a href="https://www.smarthomeng.de/user/plugins_doc/config/sma_em.html" target="_blank" rel="noopener">generierte Doku</a>, <a href="https://github.com/smarthomeNG/plugins/tree/master/sma_em" target="_blank" rel="noopener">Plugin auf Github</a>) kann man nutzen, wenn man ein EnergyMeter der Firma SMA in der ersten Generation besitzt. Dieses schickt einen Netzwerk-Multicast auf die Adresse <code>239.12.255.254</code>, den das Plugin einfach &#8222;mithört&#8220;.</p>
<p>Das Plugin basiert auf der Implementierung <a href="https://github.com/datenschuft/SMA-EM/" target="_blank" rel="noopener">https://github.com/datenschuft/SMA-EM/</a> von Florian Wenger. Teile des (open-source) Quelltexts wurden mit freundlicher Genehmigung des Entwicklers im Plugin wiederverwendet.</p>
<p>Das Plugin ist relativ schnell eingerichtet. Mit folgendem Eintrag in der <code>plugin.yaml</code> ist es getan:</p>
<pre><code class="language-yaml">
sma_em:
    class_name: SMA_EM
    class_path: plugins.sma_em
    time_sleep: 4
    serial: xxxxxxxxxxx
</code></pre>
<p>Die Serial ist dabei die des <a href="https://www.sma.de/produkte/monitoring-control/sma-energy-meter.html" target="_blank" rel="noopener">SMA Energy Meters</a>. Sie kann über die Weboberfläche einfach ausgelesen werden:</p>
<p><img fetchpriority="high" decoding="async" src="https://www.smarthomeng.de/wp-content/uploads/2018/03/sma-energy-meter.png" alt="" class="alignnone wp-image-740" width="457" height="325" srcset="https://www.smarthomeng.de/wp-content/uploads/2018/03/sma-energy-meter.png 718w, https://www.smarthomeng.de/wp-content/uploads/2018/03/sma-energy-meter-300x214.png 300w" sizes="(max-width: 457px) 100vw, 457px" /><br />
<code>time_sleep</code> ist die Zeit, die nach jedem Auslesen gewartet werden soll.</p>
<p>Die wichtigsten Items sind:</p>
<pre><code class="language-yaml">
# items/items.yaml
%YAML 1.1
---

smaem:

    psurplus:
        name: Solar Energy Surplus
        sma_em_data_type: psurplus
        type: num

        kw:
            type: num
            eval: sh.smaem.psurplus() / 1000
            eval_trigger: smaem.psurplus

    pregard:
        name: Energy Regard
        sma_em_data_type: pregard
        type: num

        kw:
            type: num
            eval: sh.smaem.pregard() / 1000
            eval_trigger: smaem.pregard
</code></pre>
<p><strong>Anmerkung:</strong> Neben diesen Items können über das SMA_EM-Plugin noch eine Vielzahl weiterer Daten ausgelesen werden.</p>
<p>Nach einem Neustart von SmartHomeNG ist das Plugin aktiv und Daten sollten in die entsprechenden Items fließen.</p>
<h1>Erweiterung der smartVISU 2.9 mit SteelSeries-Canvas</h1>
<p><strong>Anmerkung:</strong> Diese Anleitung basiert bereits auf der Funktionalität der smartVISU 2.9 und verwendet das <code>smartvisu/dropins</code> Verzeichnis (Details zum Dropin-System der SV2.9 siehe <a href="https://github.com/Martin-Gleiss/smartvisu/blob/develop/dropins/README.md" target="_blank" rel="noopener">https://github.com/Martin-Gleiss/smartvisu/blob/develop/dropins/README.md</a>).</p>
<p>Direkt unter <code>smartvisu/dropins</code> werden die Dateien <code>steelseries-min.js</code> und <code>tween-min.js</code> aus dem <a href="https://github.com/HanSolo/SteelSeries-Canvas" target="_blank" rel="noopener">SteelSeries-Canvas Github Repository</a> abgelegt. Diese werden nun automatisch von der smartVISU 2.9 eingebunden, wie im HTML Quelltext verifiziert werden kann:</p>
<p><img decoding="async" src="https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries-link.png" alt="" class="alignnone size-full wp-image-741" width="602" height="45" srcset="https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries-link.png 602w, https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries-link-300x22.png 300w" sizes="(max-width: 602px) 100vw, 602px" /></p>
<p>Als Nächstes wird unter <code>smartvisu/dropins/widgets</code> eine Datei namens <code>steelseries.html</code> angelegt. In dieser definiert man seine SteelSeries-Widgets, die nun automatisch eingebunden werden:</p>
<pre><code class="language-twig">
/**
  * Displays a steelseries radial for energy balance
  *
  * @param unique id for this widget
  * @param the gad for the surplus
  * @param the gad for the regard
  * @param min value
  * @param max value
  * @param widgetSize size of the widget in pixels. if left empty, 200 is set.
  * @param pointerColor according to steelseries.ColorDef, e.g. RED or GREEN
  * @param title
  * @param unit
  */
{% macro radial_energy(id, gad_surplus, gad_regard, minValue, maxValue, widgetSize, pointerColor, title, unit) %}
  {% if not widgetSize %}{% set widgetSize = 200 %}{% endif %}
  &lt;canvas id="{{ uid(page, id) }}" data-widget="steelseries.radial_energy" data-item="{{ gad_surplus }}, {{ gad_regard}}" width="{{ widgetSize }}" height="{{ widgetSize }}" data-widgetsize="{{ widgetSize }}" data-title="{{ title }}" data-unit="{{ unit }}" data-min-value="{{ minValue }}" data-max-value="{{ maxValue }}" {% if pointerColor %}data-pointercolor="{{ pointerColor }}"{% endif %}&gt;
  &lt;/canvas&gt;
{% endmacro %}
</code></pre>
<p>Weiterhin muss unter <code>smartvisu/dropins/widgets</code> eine Datei namens <code>steelseries.js</code> angelegt werden:</p>
<pre><code class="language-javascript">$.widget("sv.steelseries_radial_energy", $.sv.widget, {

        initSelector: 'canvas[data-widget="steelseries.radial_energy"]',

        options: {
          title: "",
          unit: "",
          widgetsize: 200,
          pointercolor: null,
          'min-value': null,
          'max-value': null,
        },

        _steelseries: null,

        _create: function() {
          this._super();

          var areas = [steelseries.Section(this.options['min-value'], 0, 'rgba(220, 0, 0, 0.3)'),
                    steelseries.Section(0, this.options['max-value'], 'rgba(0, 220, 0, 0.3)')];
          var params = {
              gaugeType: steelseries.GaugeType.TYPE4,
              size: this.options.widgetsize,
              titleString: this.options.title,
              unitString: this.options.unit,
              frameDesign: steelseries.FrameDesign.BLACK_METAL,
              backgroundColor: steelseries.BackgroundColor.TURNED,
              minValue: this.options['min-value'],
              maxValue: this.options['max-value'],
              ledVisible: false,
              lcdVisible: true,
              area: areas,
              lcdDecimals: 1,
              useOdometer: false
          };
          if(this.options.pointercolor)
            params.pointerColor = steelseries.ColorDef[this.options.pointercolor];

          this._steelseries = new steelseries.Radial(this.element[0].id, params);

        },

        _update: function(response) {
          if (response[0] &gt; 0) {
             this._steelseries.setValueAnimated((-1)*parseFloat(response[0]));
          } else {
             this._steelseries.setValueAnimated(parseFloat(response[1]));
          }
        },
    });
</code></pre>
<p>Nachdem man gespeichert hat, kann man das Widget nun in seinen Pages mit folgendem Block nutzen:</p>
<pre><code class="language-twig">
&lt;div class="block"&gt;
    &lt;div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true"&gt;
        &lt;div data-role="collapsible" data-collapsed="false"&gt;

            {{ steelseries.radial_energy('steel.radial_smaem','smaem.pregard','smaem.psurplus', -8000, 8000, '267', '', 'Energiebilanz', 'Watt') }}

        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p>&nbsp;</p>
<h3>Strombezug / Einspeisung &#8211; aktuell</h3>
<p>Im Fall meiner Photovoltaik-Anlage habe ich &#8222;pi mal Daumen&#8220; maximal 8000 Watt Erzeugung, daher die Normierung auf den Bereich -8000 (Bezug) bis +8000 (Einspeisung). Der Wert 267 gibt die Größe (<code>widgetSize</code>) des Widgets an &#8211; wird diese leer gelassen, ist der Default 200 Pixel. Die Farbe des Zeigers würde sich mit dem Wert <code>pointerColor</code> (im Beispiel leer) noch anpassen lassen.</p>
<p>Das fertige Resultat kann nun live bewundert werden:<br />
<img decoding="async" src="https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries.png" alt="" class="alignnone size-full wp-image-739" width="523" height="352" srcset="https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries.png 523w, https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries-300x202.png 300w, https://www.smarthomeng.de/wp-content/uploads/2018/03/steelseries-272x182.png 272w" sizes="(max-width: 523px) 100vw, 523px" /></p>
<p>&nbsp;</p>
<p><em>(Die in diesem Artikel verwendeten Screenshots wurden selber erstellt.)</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/beispiel-integration-von-steelseries-canvas-in-die-smartvisu/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
