<?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>Entwicklung &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<atom:link href="https://www.smarthomeng.de/tag/entwicklung/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>Sun, 29 Mar 2020 09:22:14 +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>Entwicklung &#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>Fehlerbehandlung für Plugins bei nicht installierten Python Packages</title>
		<link>https://www.smarthomeng.de/fehlerbehandlung-fuer-plugins-bei-nicht-installierten-python-packages</link>
					<comments>https://www.smarthomeng.de/fehlerbehandlung-fuer-plugins-bei-nicht-installierten-python-packages#comments</comments>
		
		<dc:creator><![CDATA[Martin Sinn]]></dc:creator>
		<pubDate>Sun, 12 Aug 2018 08:54:08 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1973</guid>

					<description><![CDATA[UPDATE: Im develop Branch (also für SmartHomeNG v1.6) ist eine allgemein gültige Lösung implementiert. (Danke an ohinckel für die Idee). Ab der Version muss der Fehler nicht mehr im einzelnen Plugin abgefangen werden, es sei denn, man möchte nicht das Laden des Plugins unterbinden, sondern vielleicht nur einzelne Funktionen des<a class="moretag" href="https://www.smarthomeng.de/fehlerbehandlung-fuer-plugins-bei-nicht-installierten-python-packages"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p><strong>UPDATE</strong>:</p>
<p>Im develop Branch (also für SmartHomeNG v1.6) ist eine allgemein gültige Lösung implementiert. (Danke an ohinckel für die Idee).</p>
<p>Ab der Version muss der Fehler nicht mehr im einzelnen Plugin abgefangen werden, es sei denn, man möchte nicht das Laden des Plugins unterbinden, sondern vielleicht nur einzelne Funktionen des Plugins deaktivieren.</p>
<hr />
<p>&nbsp;</p>
<p>Wenn ein Plugin ein spezielles Python Package benötigt (Requirement) und dieses auf dem System des Anwenders nicht installiert ist, wird im Log beim ersten Zugriff auf Funktionen dieses Packages eine Exception in das Logfile geschrieben.</p>
<p>Für viele Anwender ist es schwierig, aus der Fehlermeldung auf die eigentliche Ursache zu schließen.</p>
<p>Durch einen kleinen Kniff im Plugin, kann im Logfile eine klare Fehlermeldung geschrieben werden. Außerdem kann das Laden des Plugins unterbunden werden, um Folgefehler zu vermeiden.</p>
<p>&nbsp;</p>
<h3>Vorgehen</h3>
<p>Die zwei notwendigen Änderungen sind hier Beispiel des <strong>homematic</strong> Plugins und des benötigten Packages <strong>pyhomematic</strong> beschrieben.</p>
<p>&nbsp;</p>
<p>Normalerweise wird das Package folgendermaßen importiert:</p>
<pre><code class="language-python">
from pyhomematic import HMConnection
</code></pre>
<p>Um den Fehler zu behandeln, werden folgende zwei Änderungen vorgenommen:</p>
<ol>
<li>Um den Fehler zu erkennen, wird die <strong>import</strong> Anweisung in ein <strong>try/except</strong> Konstrukt eingebettet und abhängig vom Ergebnis eine Variable gesetzt. (Zeilen 8 bis 12 im folgenden Beispiel)</li>
<li>Um den erkannten Fehler auszuwerten, wird eine <strong>If-Anweisung</strong> zur<strong>__init__</strong> Methode hinzugefügt (Zeilen 37 bis 41), die Im Fehlerfall einen sinnvollen Log-Eintrag schreibt und durch das setzen der Variable self._init_complete signaliseiert, dass das Plugin sich nicht fehlerfrei initialisieren konnte. Das anschließende <strong>return</strong> sorgt dann noch für den Abbruch der Initialisierung.</li>
</ol>
<p>&nbsp;</p>
<pre data-line="8-12,37-41"><code class="language-python">
#  You should have received a copy of the GNU General Public License
#  along with SmartHomeNG. If not, see &lt;http://www.gnu.org/licenses/&gt;.
#
#########################################################################

import logging

try:
    from pyhomematic import HMConnection
    REQUIRED_PACKAGE_IMPORTED = True
except:
    REQUIRED_PACKAGE_IMPORTED = False

from lib.module import Modules
from lib.model.smartplugin import *

from time import sleep


class Homematic(SmartPlugin):
    """
    Main class of the Plugin. Does all plugin specific stuff and provides
    the update functions for the items
    """
    
    PLUGIN_VERSION = '1.5.0'
    
    connected = False
    

    def __init__(self, sh, *args, **kwargs):
        """
        Initalizes the plugin. The parameters descriptions for this method are pulled from the entry in plugin.yaml.
        """
        self.logger = logging.getLogger(__name__)

        # Exit if the required package(s) could not be imported
        if not REQUIRED_PACKAGE_IMPORTED:
            self.logger.error("{}: Unable to import Python package 'pyhomematic'".format(self.get_fullname()))
            self._init_complete = False
            return

        # get the parameters for the plugin (as defined in metadata plugin.yaml):
        #   self.param1 = self.get_parameter_value('param1')


</code></pre>
<p>Im Logfile wird der Fehler dann durch zwei Zeilen, wie im folgenden Beispiel angezeigt:</p>
<pre><code class="language-batch">
2018-08-12  09:59:03 ERROR    plugins.homematic   homematic_hm1: Unable to import Python package 'pyhomematic'
2018-08-12  09:59:03 ERROR    lib.plugin          Plugins: Plugin 'homematic' initialization failed, plugin not loaded
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/fehlerbehandlung-fuer-plugins-bei-nicht-installierten-python-packages/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Widget-Handling für smartVISU</title>
		<link>https://www.smarthomeng.de/widget-handling-fuer-smartvisu</link>
					<comments>https://www.smarthomeng.de/widget-handling-fuer-smartvisu#respond</comments>
		
		<dc:creator><![CDATA[Martin Sinn]]></dc:creator>
		<pubDate>Sun, 10 Sep 2017 10:46:58 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[avm]]></category>
		<category><![CDATA[enigma2]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[smartVISU]]></category>
		<category><![CDATA[visu_smartvisu]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=419</guid>

					<description><![CDATA[Widget-Handling für smartVISU Überblick Das Plugin visu_smartvisu unterstützt auch die Installation von Widgets in der smartVISU, die von anderen SmartHomeNG Plugins bereitgestellt werden. Plugin Entwickler können mit ihrem Plugin smartVISU Widgets ausliefern, welche die Plugin Daten visualisieren können. Diese Widgets werden durch das smartVISU Plugin automatisch in die Visu installiert<a class="moretag" href="https://www.smarthomeng.de/widget-handling-fuer-smartvisu"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h1>Widget-Handling für smartVISU</h1>
<h2>Überblick</h2>
<p>Das Plugin visu_smartvisu unterstützt auch die Installation von Widgets in der smartVISU, die von anderen SmartHomeNG Plugins bereitgestellt werden.</p>
<p>Plugin Entwickler können mit ihrem Plugin smartVISU Widgets ausliefern, welche die Plugin Daten visualisieren können. Diese Widgets werden durch das smartVISU Plugin automatisch in die Visu installiert und stehen ohne weitere Anpassungen in der Visu zur Verfügung. Dadurch können die Widgets auch direkt in der automatischen Generierung von smartVISU Seiten eingesetzt werden.</p>
<h2>Beispiele für Plugins, die Widgets mitbringen</h2>
<ul>
<li>AVM</li>
<li>Enigma2</li>
</ul>
<p>(Beispiele zur Plugins die Widgets mitbringen folgen in Kürze)</p>
<h2>Nutzung der Widgets</h2>
<p>Die README Datei des jeweiligen Plugins sollte Auskunft geben, wie die Widgets auf gerufen werden. Im Idealfall liegen den Plugins auch Screenshots bei, damit man vorab einen Eindruck des Widgets bekommt.</p>
<p>Wenn jemand an einem Widget Veränderungen vornimmt, muss er in der smartVISU eine Kopie erzeugen, um zu verhindern dass es bei Updates überschrieben wird. Dann muss man auch selber für die Einbindung des Widgets in die smartVISU Seiten sorgen.</p>
<h2>Einbindung von Widgets in Plugins</h2>
<p>Für Plugin Entwickler, die Widgets mit ihren Plugins ausliefern wollen, is die Lektüre der Seite <a href="https://www.smarthomeng.de/developer/plugins/visu_smartvisu/developer_doc.html">Visualisation plugin (smartVISU support) &#8211; for developers</a> empfohlen.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/widget-handling-fuer-smartvisu/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
