<?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>Bernd Meiners &#8211; SmartHomeNG | smarthome knx homematic mqtt hue 1wire home automation</title>
	<atom:link href="https://www.smarthomeng.de/author/bmx/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, 24 May 2020 20:12:59 +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>Bernd Meiners &#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>Installationsstatistik auf verschiedenen Plattformen</title>
		<link>https://www.smarthomeng.de/installationsstatistik-auf-verschiedenen-plattformen</link>
					<comments>https://www.smarthomeng.de/installationsstatistik-auf-verschiedenen-plattformen#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Tue, 22 May 2018 07:11:50 +0000</pubDate>
				<category><![CDATA[FAQ]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1715</guid>

					<description><![CDATA[Die überwiegende Mehrheit der Nutzer nutzt SmartHomeNG auf einem Raspberry Pi. Dabei führt der Pi3 mit etwa 43% aller Nutzer direkt vor dem Pi 2 mit 23 % aller Nutzer. Der Pi 1 ist nur noch mit 10% der Nutzer vertreten. Immerhin haben fast 15% eine virtuelle Maschine installiert unter<a class="moretag" href="https://www.smarthomeng.de/installationsstatistik-auf-verschiedenen-plattformen"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://www.smarthomeng.de/wp-content/uploads/2018/05/Usage-228x300.png" alt="" class="alignnone size-medium wp-image-1717" height="300" width="228" srcset="https://www.smarthomeng.de/wp-content/uploads/2018/05/Usage-228x300.png 228w, https://www.smarthomeng.de/wp-content/uploads/2018/05/Usage.png 454w" sizes="(max-width: 228px) 100vw, 228px" /></p>
<p>Die überwiegende Mehrheit der Nutzer nutzt SmartHomeNG auf einem Raspberry Pi. Dabei führt der Pi3 mit etwa 43% aller Nutzer direkt vor dem Pi 2 mit 23 % aller Nutzer. Der Pi 1 ist nur noch mit 10% der Nutzer vertreten.<br />
Immerhin haben fast 15% eine virtuelle Maschine installiert unter der SmartHomeNG seinen Dienst verrichtet und 10% nutzen einen NUC von Intel.<br />
Die restlichen Nutzer verwenden dann ODroid, BeagleBone, Docker Container, Banana Pi und sonstige Plattformen.<br />
Stand dieser Nutzungsstatistik ist Mai 2018 mit über 160 Teilnehmern.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/installationsstatistik-auf-verschiedenen-plattformen/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Startphase von SmartHomeNG</title>
		<link>https://www.smarthomeng.de/startphase-von-smarthomeng</link>
					<comments>https://www.smarthomeng.de/startphase-von-smarthomeng#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Sun, 29 Oct 2017 00:11:24 +0000</pubDate>
				<category><![CDATA[Core]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=353</guid>

					<description><![CDATA[Startphase von SmartHomeNG Für das tiefere Verständnis und Fehlersuche ist es unter Umständen wichtig zu wissen, wie der Start von SmartHomeNG abläuft. Prinzipiell gibt es 8 Bereiche die man betrachten kann: Der Kern mit Basisfunktionalitäten Zeitplanung von Ereignissen (Scheduler) Verbindungen über Netzwerke Module Plugins Items Logiken Szenen Folgende Schritte werden<a class="moretag" href="https://www.smarthomeng.de/startphase-von-smarthomeng"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<div class="markdown-body">
<h1 class="gh-header-title instapaper_title">Startphase von SmartHomeNG</h1>
<p>Für das tiefere Verständnis und Fehlersuche ist es unter Umständen wichtig zu wissen, wie der Start von SmartHomeNG abläuft. Prinzipiell gibt es 8 Bereiche die man betrachten kann:</p>
<ul>
<li>Der Kern mit Basisfunktionalitäten</li>
<li>Zeitplanung von Ereignissen (Scheduler)</li>
<li>Verbindungen über Netzwerke</li>
<li>Module</li>
<li>Plugins</li>
<li>Items</li>
<li>Logiken</li>
<li>Szenen</li>
</ul>
<p>Folgende Schritte werden beim Start von SmartHomeNG durchlaufen:</p>
<p>Zunächst Initialisierungen und Vorbereitungen für den Kern:</p>
<ul>
<li>Logging initialisieren aus etc/logging.yaml</li>
<li>Startzeit überprüfen: Ist Echtzeit für Raspi vorhanden?</li>
<li>Laden von etc/smarthome.yaml (bzw. smarthome.conf)</li>
<li>Aktuelle Zeitzone prüfen</li>
<li>Versionsinformationen ausgeben</li>
<li>Zeichensatz UTF-8 im System voreingestellt?</li>
<li>Objekte für Sonne und Mond erstellen (dazu wird Länge, Breitengrad und Höhe benötigt)</li>
</ul>
<p>Dann der Hauptthread der nacheinander folgende Aufgaben ausführt und dann in einer Schleife weiterarbeitet</p>
<ol>
<li>Init Scheduler</li>
<li>Start Scheduler</li>
<li>Init Connections</li>
<li>Laden von etc/module.yaml</li>
</ol>
<ul>
<li>Init Modules z.B. http, dummy &#8211;&gt; cherrypy wird gestartet (wird für das Backend benötigt)</li>
<li>Start Modules</li>
</ul>
<ol start="5">
<li>Laden von etc/plugin.yaml</li>
</ol>
<ul>
<li>Init Plugins z.B. backend, database, knx, &#8230;</li>
<li>Laden von plugins/pluginname/plugin.yaml</li>
<li>Laden von plugins fertig: <strong>sh.plugin_load_complete == True</strong></li>
</ul>
<ol start="6">
<li>Start initialization of items</li>
</ol>
<ul>
<li>Laden von items/*.yaml bzw. *.conf</li>
<li>Laden von Items fertig <strong>sh.item_load_complete == True</strong> Achtung: Änderung zu erwarten, wenn Items dynamisch erstellt/verändert/gelöscht werden</li>
</ul>
<ol start="7">
<li>Init logics</li>
</ol>
<ul>
<li>Laden von Logiken aus etc/logics.yaml bzw. etc/logics.conf</li>
<li>Laden von Logiken fertig wird nicht signalisiert, da es ab Version 1.4 während der Laufzeit neue Logiken geben kann</li>
</ul>
<ol start="8">
<li>Init Scenes</li>
<li>Scheduler für Connections hinzufügen</li>
<li>Plugins starten</li>
</ol>
<ul>
<li>plugin_start_complete == True Achtung: Änderung zu erwarten, wenn Plugins zur Laufzeit eingebunden/aktiviert/deaktiviert/entfernt werden</li>
</ul>
<ol start="11">
<li>Scheduler für Garbage Collection hinzufügen</li>
<li>Hauptschleife</li>
</ol>
<ul>
<li>Verbindungen auf anliegende Daten prüfen</li>
<li>läuft bis ein Signal zum Beenden empfangen wird</li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/startphase-von-smarthomeng/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Wie funktionieren eval und eval_trigger</title>
		<link>https://www.smarthomeng.de/wie-funktionieren-eval-und-eval_trigger</link>
					<comments>https://www.smarthomeng.de/wie-funktionieren-eval-und-eval_trigger#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 00:35:59 +0000</pubDate>
				<category><![CDATA[FAQ]]></category>
		<category><![CDATA[Items]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=358</guid>

					<description><![CDATA[eval und eval_trigger Ein Attribut eval enthält eine Zeile Python die genau einen Wert zurückliefert. Es ist quasi eine Einzeilenfunktion. Der Syntax entspricht einer Python conditional expression. Wenn in dieser Funktion Werte von Items genutzt werden sollen, dann müssen die Aufrufe die Form sh&#8230;.&#60;Item-Name&#62;() haben. Sollte man sh. am Anfang<a class="moretag" href="https://www.smarthomeng.de/wie-funktionieren-eval-und-eval_trigger"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h2>eval und eval_trigger</h2>
<p>Ein Attribut <strong>eval</strong> enthält eine Zeile Python die genau einen Wert zurückliefert. Es ist quasi eine Einzeilenfunktion. Der Syntax entspricht einer Python <a href="https://www.python.org/dev/peps/pep-0308/">conditional expression</a>.</p>
<p>Wenn in dieser Funktion Werte von Items genutzt werden sollen, dann müssen die Aufrufe die Form sh&#8230;.&lt;Item-Name&gt;() haben. Sollte man sh. am Anfang vergessen funktioniert es genauso wenig, wie wenn man die Klammern am Ende wegläßt.</p>
<p>Ein Attribut <strong>eval_trigger</strong> ist nur eine Auflistung von Itemnamen, diese werden jedoch ohne sh. am Anfang aufgeführt.</p>
<p>&nbsp;</p>
<h3>eval Syntax</h3>
<p>Ein Beispiel für einen eval Ausdruck:</p>
<p style="padding-left: 30px;"><span>eval=value if value&gt;0 else 0</span></p>
<p><strong>Achtung</strong>: Ein if-Statement in einem eval-Ausdruck muss auch einen else-Zweig haben.</p>
<p>&nbsp;</p>
<h3>Beispiele</h3>
<p><strong>Richtig</strong>:</p>
<pre><code class="language-yaml">
myitem:
    eval: sh.my.value<mark>()</mark></code>
    eval_trigger: my.value|my.other.value
</code></pre>
<p>&nbsp;<br />
<strong>Falsch</strong>: </p>
<pre><code class="language-yaml">
myitem:
    eval: sh.my.value
    eval_trigger: <mark>sh.</mark>my.value|<mark>sh.</mark>my.other.value)
</code></pre>
<hr />
<p><small>08.04.2018: Ergänzt um Informationen aus einem Wiki Beitrag von <strong>henfri</strong>.</small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/wie-funktionieren-eval-und-eval_trigger/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>knxd &#8211; Der KNX Daemon</title>
		<link>https://www.smarthomeng.de/knxd-der-knx-daemon</link>
					<comments>https://www.smarthomeng.de/knxd-der-knx-daemon#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Sun, 13 Aug 2017 23:14:46 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[KNX]]></category>
		<category><![CDATA[Zusatzsoftware]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=341</guid>

					<description><![CDATA[knxd v0.12 herunterladen, bauen und installieren Der knxd implementiert Zugriffe auf verschiedenste Schnittstellen zum KNX Bus (z.B. IP-Router, IP-Schnittstelle, USB-Schnittstelle, etc.) und bietet dafür eine dokumentierte Softwareschnittstelle für Programme an. SmartHomeNG nutzt den knxd über seine TCP/IP Schnittstelle um Daten auf den KNX Bus zu schreiben oder zu lesen. Der<a class="moretag" href="https://www.smarthomeng.de/knxd-der-knx-daemon"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h1>knxd v0.12 herunterladen, bauen und installieren</h1>
<p>Der knxd implementiert Zugriffe auf verschiedenste Schnittstellen zum KNX Bus (z.B. IP-Router, IP-Schnittstelle, USB-Schnittstelle, etc.) und bietet dafür eine dokumentierte Softwareschnittstelle für Programme an. SmartHomeNG nutzt den knxd über seine TCP/IP Schnittstelle um Daten auf den KNX Bus zu schreiben oder zu lesen.</p>
<p>Der Einsatz von knxd (oder der Vorgänger Software eibd) ist Voraussetzung um das KNX Plugin von SmartHomeNG nutzen zu können.</p>
<p>Wer keinen KNX-Bus einsetzt, kann die Installation von knxd auslassen. Für den Fall, das die knxd Installation ausgelassen wird, kann es sein, das für weitere Module wie SmartHomeNG einige Pakete fehlen. Diese müßten dann per <strong>sudo apt-get install paketname</strong> nachinstalliert werden.</p>
<p>Grundsätzlich findet sich auf der <a href="https://github.com/knxd/knxd" title="https://github.com/knxd/knxd" rel="noreferrer">knxd-Seite</a> die Anleitung für die Installation. Auf der Github Seite kann unter <strong>Code</strong> immer der Branch ausgewählt werden. Jeder Branch hat sein eigenes Read.me. Support für knxd gibt es im knxd-Forum <a href="https://knx-user-forum.de/forum/projektforen/knxd">https://knx-user-forum.de/forum/projektforen/knxd</a></p>
<blockquote><p><strong>Wichtig:</strong> Der knxd wird derzeit aktiv weiterentwickelt. Ab Version 0.12.x ist pthsem nicht mehr notwendig und es wird libev eingesetzt. Wer genügend Wissen zum Testen hat ist herzlich eingeladen hier mitzuhelfen oder zu spenden. Auch bitte <strong>vor</strong> der Installation hier noch einen Blick auf <a href="https://github.com/knxd/knxd" title="https://github.com/knxd/knxd" rel="noreferrer">knxd-Seite</a> werfen um aktuelles nicht zu verpassen.</p>
<p>Diese Anleitung wird zwar in regelmäßigen Abständen aktualisiert aber eben nicht unbedingt wöchentlich oder gar täglich.</p></blockquote>
<p>Die folgenden Installationsschritte beziehen sich auf Version <strong>0.12</strong>.</p>
<h2>zusätzliche Pakete installieren</h2>
<p>Zunächst müssen für den Bau einige grundlegende Tools installiert werden:</p>
<pre><code class="language-bash">
sudo apt-get install git-core build-essential
</code></pre>
<p>debhelper-Erweiterung zur Behandlung von systemd-Dateien</p>
<pre><code class="language-bash">
sudo apt-get install dh-systemd
</code></pre>
<p>Erstellt automatisch configure-Skripte</p>
<pre><code class="language-bash">
sudo apt-get install autoconf
</code></pre>
<p>Generisches Skript zur Unterstützung von Bibliotheken</p>
<pre><code class="language-bash">
sudo apt-get install libtool
</code></pre>
<p>Bibliothek zum Programmieren von USB-Anwendungen ohne Kenntnis der Linux-Kernel-Interna</p>
<pre><code class="language-bash">
sudo apt-get install libusb-1.0-0-dev
</code></pre>
<p>Pkg-config ist ein System zur Verwaltung von Schaltern für die Übersetzung und Verknüpfung von Bibliotheken, das mit automake und autoconf arbeitet.</p>
<pre><code class="language-bash">
sudo apt-get install pkg-config
</code></pre>
<p>Die Bibliothek sd-daemon stellt eine Referenzimplementierung mehrerer APIs für neuartige Daemons bereit, wie sie vom Initialisierungssystem systemd implementiert werden</p>
<pre><code class="language-bash">
sudo apt-get install libsystemd-daemon-dev
</code></pre>
<p>Nun noch libev-dev installieren</p>
<pre><code class="language-bash">
sudo apt-get install libev-dev
</code></pre>
<h2>Quellcode laden, compilieren und ein Paket schnüren</h2>
<p>Zunächst den Quellcode für den knxd vom github laden und sicherstellen, das der 0.12 branch gewählt wird:</p>
<pre><code class="language-bash">
git clone https://github.com/knxd/knxd.git
cd knxd
git checkout v0.12
</code></pre>
<p>Dann übersetzen und das Paket schnüren:</p>
<pre><code class="language-bash">
dpkg-buildpackage -b -uc
</code></pre>
<p>Wichtig ist, das am Ende der Paketerstellung keine Fehler gemeldet wurden.</p>
<p>Sollte die Paketerstellung fehlerfrei ablaufen, dann kann das Paket nun noch installiert werden mit:</p>
<pre><code class="language-bash">
cd ..
sudo dpkg -i knxd_*.deb knxd-tools_*.deb
</code></pre>
<h2>knxd konfigurieren</h2>
<p>Als nächstes muß die Konfiguration des knxd für die zu verwendende Schnittstelle angepasst werden. Dazu muß bei Systemen mit systemd die Datei <strong>/etc/knxd.conf</strong> bearbeitet werden:</p>
<pre><code class="language-bash">
sudo nano /etc/knxd.conf
</code></pre>
<p>Die Originalzeile <strong>KNXD_OPTS=&#8220;-e 0.0.1 -E 0.0.2:8 -u /tmp/eib -b ip:&#8220;</strong> am besten auskommentieren und in der Zeile darunter dann die gewählten Parameter eintragen.</p>
<p>Details zu Schnittstellen finden sich auf der <a href="https://github.com/knxd/knxd" title="https://github.com/knxd/knxd" rel="noreferrer">Github-Seite vom knxd</a>. Das <strong>-c</strong> ist für den knxd eigenen Cache. Danach folgen die Optionen für die Verwendung der Schnittstelle:</p>
<ul>
<li>IP Schnittstelle: <strong>KNXD_OPTS=&#8220;-e 0.0.1 -E 0.0.2:8 -c -b ipt:<em>IP der knx Schnittstelle</em>&#8222;</strong></li>
<li>IP Router: <strong>KNXD_OPTS=&#8220;-e 0.0.1 -E 0.0.2:8 -c -b ip:<em>IP des knx Routers</em>&#8222;</strong></li>
<li>USB-Interface: Bitte <a href="https://github.com/knxd/knxd/tree/v0.12" title="https://github.com/knxd/knxd/tree/v0.12" rel="noreferrer">Wiki zum knxd</a> konsultieren.</li>
</ul>
<p>Es kann sein, das bei KNXD_OPTS hinter dem <strong>-c</strong> bei einigen Interfaces noch ein <strong>&#8211;send-delay=30</strong> eingefügt werden muß um Telegrammverlust bei hohen Lasten zu minimieren. Die 30 bedeutet dabei eine zusätzliche Wartezeit von 30msec. Es wird damit zwischen den Paketen eine kleine Pause eingelegt um ein überfahren der Schnittstelle zu vermeiden. Der Parameter <strong>&#8211;no-tunnel-client-queuing</strong> ist obsolet und sollte nicht mehr eingesetzt werden.</p>
<h2>knxd und systemd</h2>
<p>Um die Änderungen wirksam werden zu lassen, muß der knxd die neue Konfiguration noch berücksichtigen dazu muß er ggf. beendet und neu gestartet werden. Der knxd hat dazu zwei Einträge, zum einen <code>knxd.socket</code> der die normalerweise die Kommunikation über der Port 6720 übernimmt und der <code>knxd.service</code> der die restlichen Aufgaben übernimmt.</p>
<p>Zunächst beenden des knxd:</p>
<pre><code class="language-bash">
sudo systemctl stop knxd.socket
sudo systemctl stop knxd.service
</code></pre>
<p>Die Reihenfolge ist wichtig: beenden wir erst den knxd, kann ein Prozess genau dann einen Socket öffnen und der systemd startet ihn sofort wieder.</p>
<p>Um sicher zu gehen, das der knxd mit dem Systemstart auch gestartet wird muß dem systemd mitgeteilt werden das diese beiden Einträge auch eingeschaltet also <code>enabled</code> sind.</p>
<pre><code class="language-bash">
sudo systemctl enable knxd.service
sudo systemctl enable knxd.socket
</code></pre>
<p>Jetzt können wir den knxd starten mit</p>
<pre><code class="language-bash">
sudo systemctl start knxd.socket
sudo systemctl start knxd.service
</code></pre>
<p>Auch hier ist die Reihenfolge wichtig: Starten wir erst den Service, werden dem knxd die Sockets nicht vom systemd übergeben.</p>
<p>Mit den folgenden Kommandos kann geprüft werden, ob die beiden Einträge ordnungsgemäßt funktionieren:</p>
<pre><code class="language-bash">
sudo systemctl status knxd.socket
sudo systemctl status knxd.service
</code></pre>
<p>Wenn alles ok ist, dann sieht das etwa so aus:</p>
<pre><code class="language-bash">
$ sudo systemctl status knxd.service
● knxd.service - KNX Daemon
   Loaded: loaded (/lib/systemd/system/knxd.service; enabled)
   Active: active (running) since Sa 2016-08-13 10:03:27 CEST; 5 days ago
 Main PID: 30769 (knxd)
   CGroup: /system.slice/knxd.service
           └─30769 /usr/bin/knxd -c -b ipt:192.168.10.38

$ sudo systemctl status knxd.socket
● knxd.socket - KNX Daemon (socket)
   Loaded: loaded (/lib/systemd/system/knxd.socket; enabled)
   Active: active (running) since Sa 2016-08-13 10:03:23 CEST; 5 days ago
   Listen: /var/run/knx (Stream)
           [::]:6720 (Stream)
</code></pre>
<p>Die Funktion des knxd läßt sich z.B. testen mit einer Gruppenadresse (hier: 1/0/170) für einen Schaltaktor mit 1 oder 0.</p>
<pre><code class="language-bash">
knxtool groupswrite ip:localhost 1/0/170 1
</code></pre>
<p>Sollte sich jetzt nichts tun, dann gibt es irgendwo einen Fehler und alles muß noch einmal geprüft werden. Vielleicht ist der Neustart des knxd vergessen oder ein Build-Fehler übersehen worden.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/knxd-der-knx-daemon/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Wie gehe ich vor wenn die Installation nicht funktioniert wie sie soll?</title>
		<link>https://www.smarthomeng.de/wie-gehe-ich-vor-wenn-die-installation-nicht-funktioniert-wie-sie-soll</link>
					<comments>https://www.smarthomeng.de/wie-gehe-ich-vor-wenn-die-installation-nicht-funktioniert-wie-sie-soll#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Mon, 14 Nov 2016 15:42:41 +0000</pubDate>
				<category><![CDATA[FAQ]]></category>
		<guid isPermaLink="false">http://test.smarthomeng.de/?p=221</guid>

					<description><![CDATA[Checkliste für die Fehlersuche Wenn etwas nach erfolgter Installation nicht funktioniert, kann anhand folgender Punkte geprüft werden, was nicht klappt. Hilfe gibt es auch im KNX-User-Forum unter SmartHomeNG. Aber bitte erstmal alles durchdenken und prüfen. Wenn andere weiterhelfen sollen, dann müssen einige Informationen beigesteuert werden: Debug Ausgabe anhängen, mindestens bis<a class="moretag" href="https://www.smarthomeng.de/wie-gehe-ich-vor-wenn-die-installation-nicht-funktioniert-wie-sie-soll"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<h1>Checkliste für die Fehlersuche</h1>
<p>Wenn etwas nach erfolgter Installation nicht funktioniert, kann anhand folgender Punkte geprüft werden, was nicht klappt. Hilfe gibt es auch im KNX-User-Forum unter <a href="https://knx-user-forum.de/forum/supportforen/smarthomeng" rel="nofollow" title="https://knx-user-forum.de/forum/supportforen/smarthomeng">SmartHomeNG</a>. Aber bitte erstmal alles durchdenken und prüfen. Wenn andere weiterhelfen sollen, dann müssen einige Informationen beigesteuert werden:</p>
<ul>
<li>Debug Ausgabe anhängen, mindestens bis das Problem ersichtlich geloggt wird. (Dazu SmartHome.py mit &#8218;-d&#8216; starten)</li>
<li>Error und Warnings soweit möglich <b>bereits vorher beseitigen</b></li>
<li>evtl. die <code>etc/plugin.conf</code> und die items mit denen das Problem vermutlich zusammenhängt</li>
<li>Wichtig ist auch u.U. die verwendete Hardware (VM oder Raspi 1, 2, 3) das Betriebssystem (Raspbian, Ubuntu x.y, Debian x.y) und ob eibd oder knxd genutzt werden.</li>
</ul>
<p>Davor bitte einmal durch diese Liste durcharbeiten.</p>
<h2>Läuft SmartHomeNG?</h2>
<p>Auf dem Rechner auf dem SmartHomeNG laufen soll eine Shell öffnen und <code class="“language-bash“">ps ax | grep smarthome</code> eingeben.</p>
<p>In der Ausgabe darauf sollte in etwa folgendes zu finden sein:</p>
<pre><code class="language-bash">smarthome@«yourcomputer»:~$ ps ax | grep smarthome
 1341 ?         Ss     0:00 sshd: smarthome [priv]
 1390 ?         S      0:52 sshd: smarthome@pts/0
 &lt;Prozess-ID&gt; pts/0    Sl+    8:24 python3 smarthome.py -d
11015 pts/1     S+     0:00 grep --color=auto smarthome
smarthome@«yourcomputer»:~$
</code></pre>
<p>Die beiden Zeilen oben mit <code>sshd</code> zeigen, das der User <strong>smarthome</strong> angemeldet ist.<br />
Interessant ist die Zeile mit <strong>smarthome.py</strong>. Im Beispiel läuft der Prozess <code>smarthome.py</code> bereits und zwar im Debug Modus, erkennbar am <code>-d</code>. Sollte diese oder eine ähnliche Zeile nicht auftauchen, dann ist SmartHomeNG auch noch nicht gestartet.</p>
<p>Es darf von SmartHomeNG nur eine Instanz zur Zeit ausgeführt werden. Ein Versuch SmartHomeNG mehrfach zu starten wird immer mit Problemen bei der Bindung an diverse konfiguerierte IP und Ports quittiert. Das läßt sich im Debuglog ersehen:</p>
<pre><code class="language-bash">ERROR    Connections  WebSocket: problem binding 192.168.x.y:2424 (TCP): [Errno 98] Address already in use
ERROR    Connections  CLI: problem binding 0.0.0.0:2323 (TCP): [Errno 98] Address already in use
</code></pre>
<p>Wenn Fehler dieser Art gezeigt werden dann ist dies ein klares Indiz dafür, das SmartHomeNG bereits läuft.<br />
Um SmartHomeNG also im Debugmodus zu starten, muß die laufende Instanz erst beendet werden. Das geht mit <code class="language-bash">smarthome.py -s</code> oder aber man startet auf der Shell</p>
<pre><code class="language-bash">kill <mark>«prozess-id»</mark></code></pre>
<p>. Die Prozess ID wird beim Aufruf von <code class="language-bash">ps ax | grep smarthome</code> angezeigt, siehe weiter siehe oben.</p>
<h2>SmartHomeNG im Debugmodus starten</h2>
<pre><code class="language-bash">cd /usr/local/smarthome/bin
python3 smarthome.py -d
</code></pre>
<p>Jetzt sollte eine Menge an Loggingdaten aufgelistet werden. Der Debugmodus ist die Grundlage für weitere Fehlersuche. In den Loggingdaten werden Meldungen des Programmes angezeigt. Im Debugmodus werden sehr viele Logginginformationen dargestellt. Wichtig für die Fehlersuche sind vor allem Einträge die <code>WARNING</code> oder <code>ERRROR</code> enthalten.</p>
<h2>Zugriff auf den KNX via eibd</h2>
<pre><code class="language-bash">ps ax | grep eibd
</code></pre>
<p>Nun sollte so etwas ähnliches gezeigt werden:</p>
<pre><code class="language-bash">smarthome@sh13:~$ ps ax | grep eibd
  908 ?        Ss     1:13 /usr/bin/eibd --daemon --Server --Tunnelling --no-tunnel-client-queuing --Discovery --GroupCache --listen-tcp -d/tmp/eibd.log --pid-file=/var/run/eibd.pid --eibaddr=1.1.208 ipt:«ip der knx schnittstelle»
11045 pts/1    S+     0:00 grep --color=auto eibd
smarthome@sh13:~$
</code></pre>
<p>Im obigen Fall handelt es sich beim laufenden eibd um eine Installation, die auf eine KNX Schnittstelle zugreift. Wichtig ist hier, das die Zeile <strong>/usr/bin/eibd</strong> auftaucht. Wenn das der Fall ist, dann läuft der eibd.</p>
<p>Ob der eibd auch schalten kann stellt man fest mit</p>
<pre><code class="language-bash">groupswrite ip:localhost 1/0/170 1
</code></pre>
<p>wobei hier 1/0/170 die Gruppenadresse eines Schaltaktors ist, der mit 1 eingeschaltet werden soll</p>
<h2>Zugriff auf den KNX via knxd</h2>
<p>Hier hängt die weitere Vorgehensweise davon ab auf welchem System der knxd installiert ist. Bei Ubuntu &gt; 15.x oder Debian 8.x ist die Wahrscheinlichkeit recht hoch, das der Start vom systemd übernommen wurde. Sollte es ein älteres System sein, dann kann es auch sein, das ein herkömmliches Startskript verwendet wurde. In diesem Fall ist die Vorgehensweise wie oben unter eibd, nur das nun synonym dazu knxd benutzt wird.</p>
<p>Um festzustellen ob der knxd läuft auf der Shell <code class="language-bash">systemctl status</code> eingeben. Die Ausgabe sieht dann ähnlich aus wie hier:</p>
<pre><code class="language-bash">«username»@«hostname»:~$ systemctl status
● sh11
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Fr 2016-03-11 10:49:08 CET; 2 weeks 1 days ago
   CGroup: /
           ├─1 /sbin/init
           ├─system.slice
           │ ├─avahi-daemon.service
           │ │ ├─463 avahi-daemon: running [sh11.local
           │ │ └─489 avahi-daemon: chroot helpe
           ...
           │ ├─knxd.service
           │ │ └─1204 /usr/bin/knxd -u /tmp/eib -b ipt:«ip der knx schnittstelle»
           ...
           └─user.slice
             └─user-1000.slice
               ├─session-7.scope
               │ └─2757 python3 ./smarthome.py -d
               ├─user@1000.service
               │ ├─1152 /lib/systemd/systemd --user
               │ └─1153 (sd-pam)
               └─session-1119.scope
                 ├─27926 sshd: smarthome [priv
                 ├─27928 sshd: smarthome@pts/
                 ├─27929 -bash
                 ├─28229 systemctl status
                 └─28230 pager
lines ... -.../«n» (END)
</code></pre>
<p>Sollte der knxd.service nicht laufen, so muß er zunächst lauffähig gemacht werden. Wenn knxd jedoch läuft, kann die Funktion des knxd getestet werden z. B. mit<br />
Gruppenadresse = 1/0/170 für einen Schaltaktor mit 1 oder 0.<br />
<code class="language-bash">knxtool groupswrite ip:localhost 1/0/170 1</code><br />
Sollte sich jetzt nichts tun, dann gibt es irgendwo einen Fehler und alles muß noch einmal geprüft werden. Vielleicht wurde der Neustart des knxd vergessen oder beim Erstellen des knxd packages ein Build-Fehler übersehen worden.</p>
<h2>Kann SmartHomeNG schalten?</h2>
<p>Nun kann geprüft werden, ob sich von SmartHomeNG ein Schaltvorgang auslösen läßt. Dazu muß entweder <code>CLI</code>&#8211; oder das <code>Backend</code>-Plugin installiert und konfiguriert sein (ist es bei den existierenden Anleitungen seit SmartHomeNG 1.3 eigentlich immer, das läßt sich durch einen Blick in die Datei <code>etc/plugin.yaml</code> feststellen)</p>
<h3>Test mit CLI-Plugin</h3>
<p>Zunächst muß über ein Telnetprogramm eine Verbindung zum <code>CLI</code>-Plugin hergestellt werden. Das Plugin lauscht standardmäßig auf Port 2323. Dazu wird eine zusätzliche Shell auf dem SmartHomeNG Rechner eröffnet und darin <code>telnet localhost 2323</code> eingegeben.</p>
<pre><code class="language-bash">«username»@«yourcomputer»:~$ telnet localhost 2323
Trying 127.0.1.1...
Connected to «hostname SmartHomeNG Rechner»
Escape character is '^]'.
SmartHome.py v1.1.26
Enter 'help' for a list of available commands.
</code></pre>
<p>Da unter Windows das mitgelieferte Telnet Programm nicht mit dem <code>CLI</code>-Plugin funktioniert, kann man auch <b>Putty</b> oder besser noch <b>Kitty</b> nutzen.<br />
In Putty/Kitty bitte folgende Einstellungen setzen:</p>
<ul>
<li>Session:
<ul>
<li>Connection type → RAW wählen (nicht Telnet!)</li>
<li>Host Namen des Servers eintragen, Port 2323 (oder wie er in der plugin.yaml konfiguriert ist)</li>
</ul>
</li>
<li>Terminal:
<ul>
<li>Implicit CR in every LF → Haken setzen</li>
</ul>
</li>
<li>Connection &#8211; Telnet:
<ul>
<li>Keyboard sends Telnet special commands → Haken setzen</li>
<li>Return key sends Telnet New Line instead of ^M -→ Haken entfernen</li>
</ul>
</li>
</ul>
<p>Nach erfolgreichem Aufbau der Verbindung <strong>help</strong> eingeben.</p>
<pre><code class="language-text">&gt; help
cl: clean (memory) log
ls: list the first level items
ls item: list item and every child item (with values)
la: list all items (with values)
lo: list all logics and next execution time
lt: list current thread names
update item = value: update the specified item with the specified value
up: alias for update
tr logic: trigger logic
rl logic: reload logic
rr logic: reload and run logic
rt: return runtime
quit: quit the session
q: alias for quit
&gt;</code></pre>
<p>Am einfachsten, die Befehle werden mal ausprobiert, z.B. <strong>ls</strong> um die First Level Items aufzulisten, dann <strong>ls item</strong> um ein bestimmten item abzufragen und schließlich <strong>update item = 1</strong> für z.B. einen Schaltaktor einer Lampe um das Licht anzuschalten.</p>
<p>Wenn es bis hierher geklappt hat, dann ist das Grundsystem funktional.</p>
<h2>Kontakt mit SmartVISU</h2>
<p>Um mit der SmartVISU in Kontakt zu kommen sollten alle Punkte oberhalb schon funktional sein, also SmartHomeNG muß erfolgreich gestartet sein, keine Fehler oder Warnungen mehr im Log auftauchen und das grundsätzliche Schalten von Items über CLI- oder Backend-Plugin sollte funktionieren.</p>
<p>Für die Fehlersuche macht es Sinn SmartHomeNG im Debugmodus zu starten und parallel in einem Browserfenster die SmartVISU aufzurufen.<br />
Bei der SmartVISU sollte sichergestellt sein, das der Seitencache ausgeschaltet ist, sonst werden Änderungen an einer html-Datei der SmartVISU nicht vom Browser angezeigt werden.</p>
<p>Im Debugmodus kann jetzt verfolgt werden, was passiert, wenn z.B. auf der Visu ein Button geklickt wird. Beispielsweise enthält das Log dann eine solche Zeile:</p>
<pre><code class="language-text">2018-04-01 12:39:17 DEBUG    item         Main         lib.item         Item ArbeitszimmerOG.Deckenlicht = False via Visu 192.168.20.70:54284 None -- item.py:__update:901</code></pre>
<p>Passiert auf einen Tastendruck nichts, so kann es sein, das die SmartVISU nicht mit SmartHomeNG kommunizieren kann. Im Normalfall gibt es dann eine Fehlermeldung oben rechts.<br />
Das erste, was dann kontrolliert werden muß ist die Konfiguration in der SmartVISU: Dort muß als Treiber SmartHomeNG eingetragen sein (Oder für SmartVISU 2.8 noch Smarthome.py), der Hostname des Rechners, auf dem SmartHomeNG läuft und als Port 2424.</p>
<p>Die häufigsten Fehler sind:</p>
<table>
<thead>
<tr>
<th align="left"><strong>Ursache</strong></th>
<th align="left"><strong>Fehlerbild</strong></th>
<th align="left"><strong>Behebungsansatz</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Dateiformat der Item-Datei ist nicht im UTF-8 ohne BOM angelegt.</td>
<td align="left">Beim Start von SmartHomeNG bricht der Einlesevorgang für die Items in der betreffenden Datei ab und die Items werden nicht angelegt.</td>
<td align="left">Per Telnet verbinden und Items auflisten lassen</td>
</tr>
<tr>
<td align="left">In der Smartvisu werden bei den Widgets doppelte ID vergeben oder Itemname und ID vertauscht oder aber Leerzeichen innerhalb der ID oder des Itemnamen</td>
<td align="left">Keine Funktion bei einigen Widgets bzw. merkwürdige Seiteneffekte</td>
<td align="left">Debugausgabe zeigt zu ändernde Items an, diese auf Plausibilität prüfen</td>
</tr>
<tr>
<td align="left">Zugriff auf ein Item ist über die Visu nicht gegeben</td>
<td align="left">Kein Schalten möglich, Werte werden nicht aktualisiert</td>
<td align="left">visu_acl = rw oder visu = yes fehlt bei einem Item</td>
</tr>
</tbody>
</table>
<p>Mehr Informationen unter: <a href="https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin" title="https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin" rel="noreferrer">CLI-Plugin</a><br />
&nbsp;</p>
<h2>Fehlersuche mit Backend</h2>
<p>Ab Version SmartHomeNG 1.2 gibt es das Plugin Backend. Das Backend Plugin muß in der<br />
<code>plugin.conf</code> konfiguriert werden und wird über <code>http://«ip-adresse von smarthomeng»:8383</code> im Browser aufgerufen. Es ist eigentlich selbsterklärend und bildet über den Browser ein wenig mehr Informationen ab als das CLI Plugin.</p>
<p>Prinzipiell ist es eine gute Idee im Backend zunächst zu schauen, ob selbst definierte Items auftauchen. Wenn das nicht der Fall ist, dann hat es beim Start von SmartHomeNG bereits Probleme gegeben. Fehlerquellen sind hier gerne mal</p>
<ul>
<li>falsche Codierung der betreffenden Datei <code>Items/«meine items».yaml</code>, also äöü enthalten aber nicht als UTF8 ohne BOM abgespeichert.</li>
<li>Strukturfehler in der Datei die ein Item definiert, also falsche Einrückung oder inkonsistente Verwendung von TAB und Leerzeichen</li>
<li>Ein reserviertes Python Wort (z.B. <code>set</code> oder <code>get</code> wurde verwendet</li>
<li>Ein Itemname beginnt mit einer Zahl (z.B. <code>1Wire</code>)</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/wie-gehe-ich-vor-wenn-die-installation-nicht-funktioniert-wie-sie-soll/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installation Grafana</title>
		<link>https://www.smarthomeng.de/installation-grafana</link>
					<comments>https://www.smarthomeng.de/installation-grafana#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Thu, 05 May 2016 15:10:08 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[Graph]]></category>
		<category><![CDATA[influxdb]]></category>
		<category><![CDATA[Messwerte]]></category>
		<guid isPermaLink="false">http://test.smarthomeng.de/?p=208</guid>

					<description><![CDATA[Grafana ist ein grafisches Frontend um zeitabhängige Meßreihen aus Datenbanken anprechend darzustellen. Eine Möglichkeit ist die Nutzung von Daten aus InfluxDB. Installieren von Grafana Es steht gerade eine neue Version 3.0 von Grafana für die Installation kurz vor der Release und damit ändert sich auch einges mit systemd. Bitte solange<a class="moretag" href="https://www.smarthomeng.de/installation-grafana"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p>Grafana ist ein grafisches Frontend um zeitabhängige Meßreihen aus Datenbanken anprechend darzustellen. Eine Möglichkeit ist die Nutzung von Daten aus InfluxDB.</p>
<h2>Installieren von Grafana</h2>
<p>Es steht gerade eine neue Version 3.0 von Grafana für die Installation kurz vor der Release und damit ändert sich auch einges mit systemd. Bitte solange dem Link folgen und danach vorgehen. Wenn die Beta abgeschlossen ist und eine stable vorliegt, wird dieser Artikel im Wiki überarbeitet.</p>
<h2>Datenverbindung zur Influx Datenbank</h2>
<p>Wie oben müßt ihr mit Eurem Browser nun auf Port 3000 auf den Grafana Server zugreifen. Dort könnt ihr Euch dann mit Benutzer admin und Passwort admin anmelden. Der nächste Schritt ist die Einrichtung der Datenverbindung. Dazu wählt ihr <code>Data Sources</code> aus und dann oben in der Leiste <code>Add New</code>. Danach gebt Ihr als Name <code>influxdb</code> ein und als Type <code>influxDB 0.9.x</code>; den Haken bei default setzt man zweckmäßigerweise auch. Bei den http-Settings gebt Ihr die<code>http://&lt;IP&gt;:8086</code>, Access auf <code>direct</code>. Bei den InfluxDB Details als Datenbank <code>smarthome</code>mit User = <code>root</code> und Passwort <code>root</code>. Jetzt sollte <code>Test Connection</code> erfolgreich sein. Mit Klick auf <code>Save</code> seid Ihr jetzt einsatzfähig.</p>
<h2>Erstes Dashboard anlegen</h2>
<p>Ihr klickt jetzt auf <code>Dashboards</code> und anschließend auf <code>Home</code>. Weiter unten könnt Ihr nun <code>+New</code>auswählen um ein neues Dashboard zu erzeugen. Wenn das geschehen ist, gibt es ein kleines grünes Rechteck. Darauf klickt ihr und dann weiter auf <code>Add Panel</code> und im Submenü <code>Graph</code>. Jetzt erscheint ein leeres Feld mit einem roten Ausrufezeichen in der oberen linken Ecke und einer Überschrift <code>no title (click here)</code>. Darauf klickt ihr nun und wählt aus dem Popup Dialog <code>Edit</code> aus.</p>
<p>Unter Metrics ist jetzt eine Abfrage. Dort könnt Ihr &#8211; wenn bis dato alles richtig verlaufen ist und schon Werte in der Influx Datenbank zu finden sind &#8211; unter <code>FROM</code> <em>select measurement</em> eure erste Datenreihe eintragen. Ein Klick ganz oben auf das Diskettensymbol speichert nun das dashboard. Der Rest geht am besten über ausprobieren. Ein Klick auf den Farbstrich der Datenreihenlegende erlaubt es zu wählen ob die linke oder rechte Achse zur Anzeige genommen und welche Farbe zur Anzeige verwendet wird.</p>
<p>Viel Spaß!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/installation-grafana/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installation InfluxDB</title>
		<link>https://www.smarthomeng.de/installation-influxdb</link>
					<comments>https://www.smarthomeng.de/installation-influxdb#respond</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Thu, 05 May 2016 14:59:26 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[influxdb]]></category>
		<category><![CDATA[Messwerte]]></category>
		<guid isPermaLink="false">http://test.smarthomeng.de/?p=205</guid>

					<description><![CDATA[Installation der InfluxDB Datenbank Damit SmarthomeNG Meßwerte loggen kann existiert eine Schnittstelle zur SQLite Datenbank. Als Alternative für umfangreichere Auswertungen und mehr Performance gibt es ein neues Plugin um Meßdaten in eine Influx Datenbank zu schreiben. Die Influx Datenbank wurde speziell entwickelt für Meßwerte mit Zeitstempeln. Sie verfügt über Schnittstellen<a class="moretag" href="https://www.smarthomeng.de/installation-influxdb"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<div class="markdown-body">
<h1>Installation der InfluxDB Datenbank</h1>
<p>Damit SmarthomeNG Meßwerte loggen kann existiert eine Schnittstelle zur SQLite Datenbank. Als Alternative für umfangreichere Auswertungen und mehr Performance gibt es ein neues Plugin um Meßdaten in eine Influx Datenbank zu schreiben. Die Influx Datenbank wurde speziell entwickelt für Meßwerte mit Zeitstempeln. Sie verfügt über Schnittstellen zu gängigen Programmiersprachen und es gibt eine interaktives Command Line Interface.</p>
<h2>Vorbedingung</h2>
<p>Die folgende Anleitung geht davon aus, das ein Debian Jessie System als 64-bit Variante vorliegt und damit der systemd benutzt wird um Dienste zu starten und zu beenden. Ihr könnt testen, welches System bei Euch installiert ist mit:</p>
<pre><code class="language-bash">
getconf -a | grep LONG_BIT
</code></pre>
<p>Das ergibt für ein 64 Bit System <code>LONG_BIT 64</code>.</p>
<p>(Alternativ kann man auch die Sourcen für InfluxDB holen und eine 32 Bit Version bauen. Allerdings sprengt das den Rahmen dieses How-to.</p>
<p>Zunächst der Download der <a href="https://influxdata.com/downloads/#influxdb" rel="nofollow" title="https://influxdata.com/downloads/#influxdb">InfluxDB</a> Datenbank mit</p>
<pre><code class="language-bash">
wget https://dl.influxdata.com/influxdb/releases/influxdb_0.12.2-1_amd64.deb
sudo dpkg -i influxdb_0.12.2-1_amd64.deb 
</code></pre>
<p>Jetzt muß Influx noch einmalig gestartet werden:</p>
<pre><code class="language-bash">
sudo systemctl start influxdb.service
</code></pre>
<p>Ob die Datenbank nun im Hintergrund läuft, läßt sich prüfen mit</p>
<pre><code class="language-bash">
sudo systemctl status influxdb.service
</code></pre>
<p>Damit das Plugin später auch Daten in eine Datenbank schreiben kann, legen wir eine Datenbank an. Dazu starten wir das influx command line interface:</p>
<pre><code class="language-bash">
influx
</code></pre>
<p>Um die existierenden Datenbanken aufzulisten, geben wir das Kommando <code>SHOW DATABASES</code> ein. Da wir frisch installiert haben, sollten lediglich <code>name</code> und <code>_internal</code> gelistet werden. Nun erstellen wir eine neue Datenbank mit</p>
<pre><code class="language-bash">
CREATE DATABASE smarthome
</code></pre>
<p>Zur Prüfung geben wir erneut das Kommando <code>SHOW DATABASES</code> ein. Das Ergebnis sollte nun sein:</p>
<pre><code class="language-text">
name: databases
---------------
name
_internal
smarthome

&gt;
</code></pre>
<p>Mit <code>quit</code> kann das Command Line Interface wieder verlassen werden.</p>
<h2>Installieren des InfluxDB Python Clients</h2>
<p>Um die InfluxDB mit Python und damit mit SmarthomeNG nutzen zu können, bmuß noch ein passendes Zugriffsmodul installiert werden:</p>
<pre><code class="language-bash">
sudo pip3 install influxdb
</code></pre>
<h2>Installieren des Plugins</h2>
<p>In den nächsten Versionen von SmarthomeNG (&gt; V1.1) wird das Plugin sicher Bestandteil des Masters werden. Bis es soweit ist, muss es nachinstalliert werden:</p>
<pre><code class="language-bash">
cd /usr/local/smarthome/plugins
mkdir influx
cd influx
wget https://github.com/SgtSeppel/smarthome-influxdb/archive/master.zip
unzip -j master.zip
rm master.zip
</code></pre>
<h2>Konfiguration des Plugins</h2>
<h3>plugin.yaml</h3>
<pre><code class="language-yaml">
influxdb:
    class_name: InfluxDB
    class_path: plugins.influx
#   influx_host: localhost
#   influx_port: 8083
#   influx_user: root
#   influx_pass: root
#   influx_db: smarthome
    influx_keyword: influx

</code></pre>
<p>Der Eintrag <code>influx_keyword</code> legt fest, welche Daten in die Datenbank geschrieben werden. Ihr könnt entweder z.B. <code>influx</code> wählen und dann würde dieses item in die Datenbank geschrieben werden:</p>
<pre><code class="language-yaml">
Vorlauftemperatur:
    name: Vorlaufemperatur
    type: num
    knx_dpt: 9
    influx: true
    visu_acl: rw
    knx_init: 8/1/1
    cache: on
</code></pre>
<p>Eine Superidee des Entwicklers ist es jedoch als <code>influx_keyword</code> nun <code>sqlite</code> auszuwählen, dann werden alle Daten die in die SQLite Datenbank geschrieben werden zugleich auch in die Influx Datenbank geschrieben.</p>
<p>Nun müßt ihr noch smarthome.py neu starten, damit das Plugin auch genutzt wird.</p>
<p>Wenn nun das Frontend Grafana genutzt werden soll um unabhängig von einer Visu auf dir nun frisch geloggten Daten zuzugreifen, dann bitte bei der Anleitung für Grafana fortfahren.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/installation-influxdb/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Min- u. Max-Werte von Temperaturen</title>
		<link>https://www.smarthomeng.de/min-u-max-werte-von-temperaturen</link>
					<comments>https://www.smarthomeng.de/min-u-max-werte-von-temperaturen#comments</comments>
		
		<dc:creator><![CDATA[Bernd Meiners]]></dc:creator>
		<pubDate>Sun, 01 Nov 2015 11:32:57 +0000</pubDate>
				<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Items]]></category>
		<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=988</guid>

					<description><![CDATA[Möchte man die Min und Max-Werte zu einem Item bestimmen, ist dies mit smarthome.py einfach möglich. Vorraussetzung ist, dass die Werte zu dem Item aufgezeichnet werden. Dazu wird ein Eintrag in der Datei /etc/plugin.yaml benötigt: sql: plugin_name: database Anschliessend wird im Item die Aufzeichnung aktiviert mit &#8218;database: yes&#8216; bzw. &#8218;database:<a class="moretag" href="https://www.smarthomeng.de/min-u-max-werte-von-temperaturen"> Weiterlesen&#8230;</a>]]></description>
										<content:encoded><![CDATA[<p>Möchte man die Min und Max-Werte zu einem Item bestimmen, ist dies mit smarthome.py einfach möglich. Vorraussetzung ist, dass die Werte zu dem Item aufgezeichnet werden. Dazu wird ein Eintrag in der Datei /etc/plugin.yaml benötigt:</p>
<pre><code class="language-yaml">sql:
    plugin_name: database
</code></pre>
<p>Anschliessend wird im Item die Aufzeichnung aktiviert mit &#8218;database: yes&#8216; bzw. &#8218;database: init&#8216;. Nun können weitere Items angelegt werden, die mit Hilfe einer Funktion, die das database-Plugin bereitstellt, die benötigten Werte erhalten.</p>
<p>Das ganze sieht dann in etwa wie folgt aus:</p>
<pre><code class="language-yaml">sensor:
    carport:
        temp:
            type: num   
            knx_dpt: 9  
            knx_send: 3/4/11  
            knx_reply: 3/4/11
            ow_addr: '28.52F1AA030000'
            ow_sensor: T 
            database: init  # Aufzeichnung der Daten aktivieren
            min:
                type: num
                knx_dpt: 9
                knx_send: 3/4/14
                knx_reply: 3/4/14
                eval: "sh.sensor.carport.temp.db('min', '28h')"  # Mimium über die letzten 28h berechnen
                eval_trigger: sensor.carport.temp  # Änderungen der Temperatur triggern die Neuberechnung
            max:
                type: num
                knx_dpt: 9
                knx_send: 3/4/15
                knx_reply: 3/4/15
                eval: "sh.sensor.carport.temp.db('max', '28h')"  # Maximum über die letzten 28h berechnen
                eval_trigger: sensor.carport.temp   # Änderungen der Temperatur triggern die Neuberechnung
</code></pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smarthomeng.de/min-u-max-werte-von-temperaturen/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
