DinoToolshttps://www.dinotools.de/2021-04-27T05:23:00+02:00Alte Branches in git löschen2021-04-27T05:23:00+02:002021-04-27T05:23:00+02:00PhiBotag:www.dinotools.de,2021-04-27:/2021/04/27/git-delete-merged-branches/<p>Während der Entwicklung ist es wichtig sein lokales Quellcode Repository immer mal aufzuräumen. Im Artikel wird gezeigt, wie alte und nicht mehr benötigte Branches in git entfernt werden können.</p><p>Kommt bei der Entwicklung git für die Verwaltung des Quellcodes zum Einsatz, liegt es nahe, dafür neue Funktionen, Bugfixes etc. auch eigene Branches zu nutzen.
Nach einer gewissen Zeit wird so die Liste der lokalen Branches immer länger, obwohl die Änderungen bereits in den Hauptzweig in einem zentralen Repository eingeflossen sind.
Daher müssen hin und wieder alte und nicht mehr benötigte Branches gelöscht werden.</p>
<p>Eine Liste mit allen zusammengeführten Branches wird mit dem folgenden Kommando ausgegeben.</p>
<div class="highlight"><pre><span></span>$ git branch --merged
</pre></div>
<p>Anschließend kann jeder Branch einzel gelöscht werden.</p>
<div class="highlight"><pre><span></span>$ git branch -d <name der zu löschenden branch>
</pre></div>
<p>Je nach Anzahl der Branches ist dies sehr zeitaufwändig und in fast allen Fällen sehr langweilig.
Aber selbst verständlich lässt sich der Vorgang auch weiter automatisieren.
Ein Beispiel hierfür ist in der folgenden Zeile zu finden.</p>
<div class="highlight"><pre><span></span>$ git branch --merged <span class="p">|</span> egrep -v <span class="s1">'^(\s+master|\*\s+.*)$'</span> <span class="p">|</span> xargs git branch -d
</pre></div>
<p>Der Befehl setzt sich drei Teilen zusammen, die im Einzelnen das folgende machen.</p>
<ol>
<li>Auflisten aller Branches, die mit dem aktuellen Branch zusammengeführt wurden</li>
<li>Der <code>master</code> Branch und der aktuell aktive werden per <code>egrep</code> aus der Liste entfernt.</li>
<li>Löschen der Branches. Wer bereits sehr sehr viele angesammelt hat, kann mit der Option <code>-n <anzahl></code> die Anzahl an git mit einem Mal übergebenen Branches reduzieren.</li>
</ol>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://git-scm.com/">git</a> (englisch)</li>
</ul>SQL in Jupyter Notebooks mit ipython-sql2021-03-18T22:14:00+01:002021-03-18T22:14:00+01:00PhiBotag:www.dinotools.de,2021-03-18:/2021/03/18/sql-in-jupyter-notebooks-mit-ipython-sql/<p>Mit ipython-sql gibt es eine Möglichkeit SQL direkt in den Code-Blöcken Jupyter Notebooks zu verwenden und auch mit Python weiterzuverarbeiten.</p><p>Strukturierte Daten lassen sich in der Regel in Datenbanken erfassen und anschließend weiter verarbeiten. Dabei stellt das <a href="https://pypi.org/project/ipython-sql/">ipython-sql</a> Paket eine Erweiterung zur Verfügung mit der direkt SQL Anfragen auf der Datenbank ausgeführt und das Ergebnis direkt weiterverwendet werden kann. Im Hintergrund verwendet das Paket dafür SQLAlchemy, was eine weit verbreitete Bibliothek zur Abstraktion von Datenbankanfragen ist. Über Plugins werden verschiedene Datenbanken wie SQLite, MariaDB, PostgreSQL und viele mehr unterstützt. Selbstverständlich lässt sich SQLAlchemy auch direkt verwenden, jedoch kann ipython-sql die Arbeit an einigen Stellen schon erleichtern.</p>
<h2>Installation</h2>
<p>Die Installation kann direkt wieder über das Tool <code>pip</code> erfolgen.
Wurde JupyterLab noch nicht installiert, kann im Artikel "<a href="https://www.dinotools.de/2021/03/16/jupyterlab-zur-analyse-und-forschung/">JupyterLab zur Analyse und Forschung</a>" nachgelesen werden, wie dies gemacht wird.
Das Paket ipython-sql wird wie folgt installiert.</p>
<div class="highlight"><pre><span></span><span class="gp">$</span> pip install ipython-sql
</pre></div>
<h2>Verwendung</h2>
<p>Zu erst muss die Erweiterung entsprechend im Notebook geladen werden. Dies wird mit dem folgenden Befehl realisiert.
War alles erfolgreich stehen Anschließend die Befehle <code>%sql</code> und <code>%%sql</code> zur Verfügung.
Der erste erlaubt es ein SQL Abfrage durchzuführen und beim zweiten sind mehrere möglich.</p>
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">load_ext</span> <span class="n">sql</span>
</pre></div>
<p>Für unseren Test verwenden wir eine SQLite Datenbank, die im selben Ordner wie das Notebook liegt.</p>
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">sql</span> <span class="n">sqlite</span><span class="p">:</span><span class="o">///</span><span class="n">test</span><span class="o">.</span><span class="n">sqlite</span>
</pre></div>
<p>Ist dies geschafft kann per SQL Befehl eine neue Tablle und zwei Testdatensätze eingefügt werden.
Das SELECT als letzter Befehl vermeidet lediglich eine Fehlermeldung, die sonst erscheint, weil die INSERT Befehle keine Daten zurückliefern.</p>
<div class="highlight"><pre><span></span><span class="o">%%</span><span class="k">sql</span>
<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">test</span> <span class="p">(</span><span class="n">name</span> <span class="nb">TEXT</span><span class="p">,</span> <span class="k">count</span> <span class="nb">INTEGER</span><span class="p">);</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">test</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="k">count</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="ss">"Foo"</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">test</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="k">count</span><span class="p">)</span> <span class="k">VALUES</span> <span class="p">(</span><span class="ss">"Bar"</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="k">SELECT</span> <span class="s1">'1'</span><span class="p">;</span>
</pre></div>
<p>Anschließend können die Daten wieder abgefragt und direkt in eine Variable gespeichert werden.</p>
<div class="highlight"><pre><span></span><span class="n">rows</span> <span class="o">=</span> <span class="o">%</span><span class="n">sql</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">test</span><span class="p">;</span>
</pre></div>
<p>Wird die Variable einfach ausgegeben, wird automatisch eine Tabelle mit den Daten ausgegeben.</p>
<div class="highlight"><pre><span></span><span class="n">rows</span>
</pre></div>
<p>Wie bereits erwähnt können die Daten auch direkt weiterverarbeitet werden.
Im Beispiel werden dann jeweils "Foo" und "Bar" ausgegeben.
Bei größeren Datensätzen sollte aus Performancegründen darauf verzichtet werden alles auszugeben.</p>
<div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span>
</pre></div>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2021-03-18_ipython-sql/ipython-sql-01.png">
<img src="/images/gallery/2021-03-18_ipython-sql/thumbs/ipython-sql-01.png">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Selbst verständlich können die Abfragen auch direkt über Python und mit den entsprechenden Bibliotheken realisiert werden, so ist es jedoch wesentlich einfacher.
Schön war auch, dass die Ergebnisse gleich in Form von Tabellen ausgegeben werden.
Hier muss zwar auf die größe des Datensatzes geschaut werden, jedoch hilft dies sich einen ersten Überblick zu verschaffen.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://jupyter.org/">Jupyter</a> (englisch)</li>
<li>Webseite: <a href="https://ipython.org/">IPython</a> (englisch)</li>
<li>Webseite: <a href="https://pypi.org/project/ipython-sql/">ipython-sql</a> (englisch)</li>
</ul>Interaktive Widgets für Jupyter Notebooks2021-03-17T21:18:00+01:002021-03-17T21:18:00+01:00PhiBotag:www.dinotools.de,2021-03-17:/2021/03/17/interaktive-widgets-fuer-jupyter-notebooks/<p>Neben reinen statischen Elementen gibt es auch sogenannte Widgets mit denen Jupyter Notebooks interaktiver gestaltet werden können. Wir zeigen dir wie es geht.</p><p>Im Artikel "<a href="https://www.dinotools.de/2021/03/16/jupyterlab-zur-analyse-und-forschung/">JupyterLab zur Analyse und Forschung</a>" hatten wir unter anderem JupyterLab vorgestellt und kurz gezeigt, wie damit gearbeitet wird. Die Fülle an Zusatz Paketen und Bibliotheken ist fest unermesslich. Eine Bibliothek ist <a href="https://ipywidgets.readthedocs.io/">ipywidgets</a>. Diese stellt verschiedene Funktionen und Class zur Erstellung von interaktiven Steuerelementen zur Verfügung. Das hat den Vorteil, dass Berechnungen leichter Parametrisiert werden können und nicht jedes mal der Quellcode angepasst werden muss. Dies erleichtert die Arbeit für Menschen die sich mit <a href="https://jupyter.org/">Jupyter</a> Notebooks und Python nicht so gut auskennen, die Forschungsergebnisse, Algorithmen etc. jedoch leicht nachvollziehen wollen.</p>
<h2>Installation</h2>
<p>Bevor die Widgets verwendet werden können muss natürlich JupyterLab oder JupyterHub installiert sein. Anschließend kann auch das benötigte Python Paket wie folgt installiert werden.</p>
<div class="highlight"><pre><span></span><span class="gp">$</span> pip install ipywidgets
</pre></div>
<h2>Verwendung</h2>
<p>War die Installation erfolgreich kann das Paket verwendet werden. Die für unser Beispiel benötigten Komponenten stehen nach folgendem import zur Verfügung.</p>
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">ipywidgets</span> <span class="kn">as</span> <span class="nn">widgets</span>
<span class="kn">from</span> <span class="nn">ipywidgets</span> <span class="kn">import</span> <span class="n">interact</span>
</pre></div>
<p>Ist das geschafft, legen wir zwei neue Schieberegler an. Der Bereich liegt zwischen 0 und 10 und es ist durch Verschieben nur möglich Ganzezahlen in dem Bereich zu wählen. Nach diesem Schritt ist noch nichts zu sehen.</p>
<div class="highlight"><pre><span></span><span class="n">slider_x</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">slider_y</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
<p>Als nächstes wird die Funktion <code>f</code> mit zwei Parametern definiert. Diese gibt den Wert der Variablen und der Summe aus beiden aus.</p>
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"x={}, y={}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">))</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"sum={}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">))</span>
</pre></div>
<p>Im nächsten Schritt kommt die <code>interact()</code> Funktion zum Einsatz. Diese bewirkt, dass wenn ein Schieberegler geändert wird, dann wird die Funktion <code>f()</code> mit den beiden Parametern aufgerufen. Damit ist die Berechnung individuell anpassbar.</p>
<div class="highlight"><pre><span></span><span class="n">a</span> <span class="o">=</span> <span class="n">interact</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="n">slider_x</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">slider_y</span><span class="p">)</span>
</pre></div>
<p>Es gibt noch weitere Widgets und auch die Möglichkeit diese Widgets anzuordnen. Ein Beispiel hiefür ist im folgenden Quellcode ersichtlich. Es werden horizontal ein Beschriftungselement, ein Texteingabe-Feld und eine Schaltfläche angezeigt.</p>
<div class="highlight"><pre><span></span><span class="n">widgets</span><span class="o">.</span><span class="n">HBox</span><span class="p">([</span><span class="n">widgets</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="s2">"Text:"</span><span class="p">),</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Text</span><span class="p">(),</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">"Click"</span><span class="p">)])</span>
</pre></div>
<p>Selbst verständlich können hier nicht alle Möglichkeiten aufgezeigt werden. Hier lohnt sich ein Blick in die Dokumentation von ipywidgets.</p>
<h2>Bilder</h2>
<p>Die Bilder zeigen, wie das Beispiel mit den aktuellen Versionen im Browser aussieht.</p>
<p>
<div class="gallery">
<a href="/images/gallery/2021-03-17_ipywidgets/ipywidgets-01.png">
<img src="/images/gallery/2021-03-17_ipywidgets/thumbs/ipywidgets-01.png">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Die Notebooks sollten meiner Meinung nach nicht mit Widgets überladen werden. Jedoch können sie an vielen Stellen die Arbeit erleichtern und erlauben es schnell und unkompliziert verschiedene Werte und Einstellungen auszuprobieren.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://jupyter.org/">Jupyter</a> (englisch)</li>
<li>Webseite: <a href="https://ipython.org/">IPython</a> (englisch)</li>
<li>Webseite: <a href="https://ipywidgets.readthedocs.io/">ipywidgets</a> (englisch)</li>
</ul>JupyterLab zur Analyse und Forschung2021-03-16T20:21:00+01:002021-03-16T20:21:00+01:00PhiBotag:www.dinotools.de,2021-03-16:/2021/03/16/jupyterlab-zur-analyse-und-forschung/<p>In den vergangenen Jahren ist seit 2001 aus dem interaktiven Kommandozeileninterpreter IPython ist mit JupyterLab und JupyterHub eine umfangreiche Platform für wissenschaftliches Arbeiten geworden.</p><p>Es muss so 2007 oder 2008 gewesen sein, als ich erste Schritte mit Python machte und auf der Suche nach einem interaktiven Pythoninterpreter über <a href="https://ipython.org/">IPython</a> gestolpert bin. Damals half es mir sehr dabei die API interaktiv zu entdecken und kleine Beispiel interaktiv durchzuführen. Im Laufe der Zeit entstand eine Weboberfläche und kleine Programme konnten in Form von sogenannten Notebooks abgespeichert werden. Damals hatte ich nicht viel Verwendung dafür, da ich meist kleinere Skripte oder Serveranwendungen geschrieben habe.</p>
<p>Aktuell bin ich gerade dabei zu schauen, wie Daten von Fitness-Trackern ausgewertet werden können. Dazu möchte ich die Daten nicht einfach generieren, sondern interaktiv schauen, was aus den Daten gemacht werden kann. Inzwischen ist aus IPython <a href="https://jupyter.org/">JupyterLab</a> und JupyterHub geworden. Dabei wird das Frontend vom Backend entkoppelt und es wird über sogenannte Kernel nicht nur Python sondern auch viele andere Sprachen unterstützt. JupyterLab richtet sich dabei an einzelne Nutzer die ihre Notebooks im Browser verwalten und ausführen wollen. JupyterHub ermöglicht grob gesagt das gleiche, jedoch wird der einsatz mit mehren Benutzern unterstützt, wodurch es sich für größere zentrale Installationen eignet.</p>
<h2>Installation</h2>
<p>Die Installation von JupyterLab ist erstaunlich einfach.</p>
<div class="highlight"><pre><span></span><span class="gp">$</span> pip install jupyterlab
</pre></div>
<h2>Verwendung</h2>
<p>War die Installation erfolgreich kann der Server gestartet werden.</p>
<div class="highlight"><pre><span></span><span class="gp">$</span> jupyter lab
<span class="go">[I 2021-03-16 19:27:01.148 ServerApp] jupyterlab | extension was successfully linked.</span>
<span class="go">[I 2021-03-16 19:27:01.341 ServerApp] nbclassic | extension was successfully linked.</span>
<span class="go">[I 2021-03-16 19:27:01.377 LabApp] JupyterLab extension loaded from /home/user/jupyter/venv/lib/python3.9/site-packages/jupyterlab</span>
<span class="go">[I 2021-03-16 19:27:01.377 LabApp] JupyterLab application directory is /home/user/jupyter/venv/share/jupyter/lab</span>
<span class="go">[I 2021-03-16 19:27:01.383 ServerApp] jupyterlab | extension was successfully loaded.</span>
<span class="go">[I 2021-03-16 19:27:01.387 ServerApp] nbclassic | extension was successfully loaded.</span>
<span class="go">[I 2021-03-16 19:27:01.390 ServerApp] Serving notebooks from local directory: /home/user/jupyter</span>
<span class="go">[I 2021-03-16 19:27:01.390 ServerApp] Jupyter Server 1.4.1 is running at:</span>
<span class="go">[I 2021-03-16 19:27:01.390 ServerApp] http://localhost:8888/lab?token=6bf44691519def02a801249a1bae2994356624622a1faa76</span>
<span class="go">[I 2021-03-16 19:27:01.390 ServerApp] or http://127.0.0.1:8888/lab?token=6bf44691519def02a801249a1bae2994356624622a1faa76</span>
<span class="go">[I 2021-03-16 19:27:01.390 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).</span>
<span class="go">[...]</span>
</pre></div>
<p>Es sollte sich automatisch ein Browserfenster öffnen.
Alternativ kann die URL inklusive des Token kopiert werden.
Wichtig dabei ist, dass der Token bei jedem Start neu generiert und für den Zugriff notwendig ist.</p>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2021-03-16_jupyterlab/jupyterlab-01.png">
<img src="/images/gallery/2021-03-16_jupyterlab/thumbs/jupyterlab-01.png">
</a>
<a href="/images/gallery/2021-03-16_jupyterlab/jupyterlab-02.png">
<img src="/images/gallery/2021-03-16_jupyterlab/thumbs/jupyterlab-02.png">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Kein Wunder, dass Jupyter Notebooks im wissenschaftlichen Bereich oft zum Einsatz kommen. Der Quellcode, die Daten und die Analyse lassen sich nach ersten Tests damit gut dokumentieren. Aktuell scheint es auch alles was ich für meine Analysen brauche in irgend einer Form zu geben. Ich bin gespannt wie weit ich komme oder ob ich wieder auf ein einfache Python Script wechseln muss.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://jupyter.org/">Jupyter</a> (englisch)</li>
<li>Webseite: <a href="https://ipython.org/">IPython</a> (englisch)</li>
</ul>Test: IKEA OMLOPP2020-11-17T00:00:00+01:002020-11-17T00:00:00+01:00PhiBotag:www.dinotools.de,2020-11-17:/2020/11/17/ikea-omlopp/<p>Bei den IKEA OMLOPP handelt es sich um ein reines Leuchtmittel, welches in Kombination mit einem LED-Treiber/Trafo betrieben werden kann. In kombination mit dem LED-Treiber aus der TRÅDFRI Serie kann die Beleuchtung auch ferngesteuert werden.</p><p>Erhältlich ist das Leichtmittel in einer relativ großen Plastikverpackung. Enthalten ist das Leuchtmittel selbst, einer Monatageanleitung, einem Hinweiszettel zur Entsorgung, zweiteilige Kabelführung und Schrauben. Das Leuchtmittel kann entweder versenkte montiert werden, hierfür muss ein Loch in das entsprechende Möbelstückgebort werden oder einfach mit dem mitgelieferten Rahmen und baut damit ca. 0,5cm auf.</p>
<p>In unserem Test wurde ein existierender Hallogenspot ersetzt. Das existierende Loch für den Spot war jedoch um ein paar Millimeter kleiner als es für das OMLOPP Leuchtmittel benötigt wird. Daher haben wir uns zur Montage mit dem Rahmen entschieden, welcher das Loch gut abdeckte. Da hier jedoch die Schrauben nicht passten, wurde es kurzerhand angeklebt, was mit separat erhältlichem doppelseitigem Klebeband gut funktionierte.</p>
<p>Angeschlossen werden kann das Leuchtmittel an verschiedene bei IKEA erhältliche LED-Treiber. In unserem Fall soll es aber gedimmt und in eine zentrale Lichtsteuerung eingebunden werden. Daher wurde der 10W LED-Treiber aus der TRÅDFRI Sortiment verwendet, welcher im Artikel "<a href="https://www.dinotools.de/2020/07/15/ikea-tradfri-led-treiber-10w/">TRÅDFRI 10W LED-Treiber von IKEA</a>" bereits vorgestellt wurde.</p>
<h2>Technischedaten</h2>
<p>Bei den Daten handelt es sich um die aktuellen Herstellerangaben. Vor dem Kauf bitte noch einmal prüfen.</p>
<ul>
<li>Model: OMLOPP</li>
<li>Maße:<ul>
<li>Durchmesser: 68mm</li>
<li>Höhe: 5mm</li>
</ul>
</li>
<li>Farbe: weiß, grau oder schwarz</li>
<li>Zuleitung: 3,5m</li>
<li>Stromaufnahme: 1,4W</li>
<li>Spannung: 24V</li>
<li>Lichtstrom: 65lm</li>
<li>Lichttemperatur: 3000k</li>
<li>dummbar: ja</li>
</ul>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-01.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-01.jpg">
</a>
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-02.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-02.jpg">
</a>
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-03.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-03.jpg">
</a>
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-04.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-04.jpg">
</a>
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-05-altes-leuchtmittel.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-05-altes-leuchtmittel.jpg">
</a>
<a href="/images/gallery/2020-11-17_ikea-omlopp/ikea-omlopp-05-neues-leuchtmittel.jpg">
<img src="/images/gallery/2020-11-17_ikea-omlopp/thumbs/ikea-omlopp-05-neues-leuchtmittel.jpg">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Das Leuchtmittel macht in unseren ersten Tests einen sehr guten Eindruck und Leuchtet den Schrank auch über mehrere Glasböden gut aus. Die Lichttemperatur empfanden wir für den Wohnbereich als angenehmen und es lässt sich auch gut als Ambientebeleuchtung einsetzen. Selbst bei niedriger Dimmstufe waren keine unangenehmen Effekte wie zum Beispiel flimmern erkennbar.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://www.ikea.de/">Ikea</a> (deutsch)</li>
</ul>Test: Aqara Temperatur- und Luftfeuchtigkeitssensor2020-09-30T00:00:00+02:002020-09-30T00:00:00+02:00PhiBotag:www.dinotools.de,2020-09-30:/2020/09/30/aqara-temperatur-und-luftfeuchtigkeits-sensor/<p>Der Temperatur- und Luftfeuchtigkeitssensor von Aqara ist wohl aktuell einer der kleinsten und günstigesten Sensoren, die per Zigbee angebunden werden kann. Wir haben uns den Sensor etwas näher angeschaut.</p><p>Geliefert wird der Sensor in einer kleinen weißen Schachtel, die mit Bildern des Sensors und den wichtigesten Eigenschaften bedruckt ist. Auffällig ist, dass selbst bei dem Produkt für den Europäischen Markt auf der Verpackung fast ausschließlich asiatische Schriftzeichen zu finden sind. Die Bedienungsanleitung umfasst jedoch wesentlich mehr Sprachen und beschreibt pro Sprache auf 4 Seiten die Montage und die Eigenschaften.</p>
<p>Im Lieferumfang enthalten ist der Sensor selbst mit einer bereits eingebauten CR2032 Batterie, welche eine Laufzeit mit ca. 2 Jahren(laut Webseite) ermöglichen soll. Weiterhin ist ein kleiner Ring zum ankleben des Sensors und die bereits erwähnte Anleitung enthalten.</p>
<p>Der Sensor konnte in der Anfangszeit nur direkt in China bestellt werden, ist aber inzwischen auch für aktuell unter 14€ auch bei deutschen Versandhändlern erhältlich(Stand: 30.9.2020). Wird er direkt bezogen liegt der Preis bei unter 12€(Stand: 30.9.2020).</p>
<p>Der Hersteller gibt an, dass der Sensor am besten mit dem eigenen Aqara Hub funktioniert, jedoch wohl auch mit dem Apple HomeKit funktionieren soll. Eine Kompatibilität zu Herstellern anderer Zigbee Gateways gibt der Hersteller aktuell nicht an. Auch wird immer wieder davon berichtet, dass sich der Sensor nicht an die PHILIPS hue Bridge oder den Ikea TRÅDFRI Gateway anlernen lässt, weil sich Aqara wohl nicht an alle Standards hält. In unserem Test konnte der Sensor mittels deCONZ und dem ConBee 2 ohne Probleme eingebunden werden und liefert die ersten Messwerte.</p>
<p>Ob die Herstellerangaben zur Genauigkeit stimmen, konnten wir mit unseren Mitteln nicht überprüfen. Bei einem Vergleich mit anderen Sensoren lag der Sensor jedoch innerhalb der Tolleranzgrenzen. Lediglich der Luftdruck scheint noch auf Meeresniveau eingestellt zu sein und wir haben aktuell keine Möglichkeit gefunden diesen entsprechend einzustellen.</p>
<p>Zu beachten ist, dass der Sensor einen Wert scheinbar nur sendet, wenn er sich um einen bestimmten Faktor verändert hat. Vermutlich wird dies gemacht um die Batterielaufzeit von etwa 2 Jahren zu erreichen.</p>
<h2>Technischedaten</h2>
<p>Bei den Daten handelt es sich um die aktuellen Herstellerangaben. Vor dem Kauf bitte noch einmal prüfen.</p>
<ul>
<li>Model: WSDCGQ11LM</li>
<li>Funkstandard: Zigbee</li>
<li>Batterie<ul>
<li>Typ: 1x CR2032 (enthalten)</li>
<li>Minimale Laufzeit: 2 Jahre</li>
</ul>
</li>
<li>Maße:<ul>
<li>Tiefe: 9mm</li>
<li>Höhe: 36 mm</li>
<li>Breite: 36 mm</li>
</ul>
</li>
<li>Farbe: weiß</li>
<li>Temperatur: -20℃ bis +50°C, ±0.3℃</li>
<li>Luftfeuchtigkeit: 0 bis 100% RH (nicht kondensierend), ±3%</li>
<li>Luftdruck: 30 kPa bis 110 kPa, ±0.12 kPa</li>
</ul>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-01.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-01.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-02.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-02.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-03.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-03.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-04.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-04.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-05.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-05.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-06.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-06.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-07.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-07.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-08.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-08.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-09.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-09.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-10.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-10.jpg">
</a>
<a href="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/aqara-temperatur-und-luftfeuchtigkeits-sensor-11.jpg">
<img src="/images/gallery/2020-09-30_aqara-temperatur-und-luftfeuchtigkeits-sensor/thumbs/aqara-temperatur-und-luftfeuchtigkeits-sensor-11.jpg">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>In unseren Tests ließ sich der Sensor ohne Probleme an deCONZ anlernen. Jedoch scheint es mit den Zigbee Gateways anderer Hersteller Probleme zu geben. Läuft der Sensor einmal lieferte er zuverlässig Werte und erlaubt so die Überwachung von Räumen.</p>
<p>Die Messbereiche würden zwar auch einen Einsatz im Freien erlauben, jedoch macht der Hersteller hierzu keine angaben. Daher vermuten wir, dass der Sensor ausschließlich für den Innenbereich konzipiert ist.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://www.aqara.com/">Aqara</a> (englisch)</li>
</ul>Mit pre-commit Hooks in git verwalten2020-09-26T23:50:00+02:002020-09-26T23:50:00+02:00PhiBotag:www.dinotools.de,2020-09-26:/2020/09/26/mit-pre-commit-hooks-in-git-verwalten/<p>pre-commit ist ein Framework mit dem Hooks in git verwaltet werden können. Durch Hooks können zum Beispiel Tools für die Prüfung der zu commitenden Dateien durchgeführt werden.</p><p>In der Versionsverwaltung git können sogenannte Hook Scripte erstellt werden.
Diese erlauben es zum Beispiel vor einem Commit bestimmte Aktionen auszuführen.
So bietet es sich zum Beispiel an, noch einmal einen Syntax Check auf eine geänderte Datei zu machen, bevor sie endgültig commited wird.</p>
<p>Hier kommt <a href="https://pre-commit.com/">pre-commit</a> ins Spiel.
Dabei handelt es sich um ein Framework zur Verwaltung von Commit Hooks.
Das Tool selbst ist in Python geschrieben, jedoch bietet es auch Tools für viele andere Programmiersprachen und Dateiformate an.
So kann zum Beispiel ein Syntaxcheck für YAML und TOML Dateien durchgeführt werden.
Auch ist es möglich einen Style- und Syntaxcheck für Go, C, Python, Java, JavaScript, CSS und viele mehr durchzuführen.
Die Liste der Checks ist sehr umfangreich und lässt sich auch durch eigene Checks erweitern.</p>
<h1>Installation</h1>
<p>Zunächst muss das Tool zum Beispiel mit dem folgenden Befehl installiert werden.</p>
<div class="highlight"><pre><span></span>$ pip install pre-commit
</pre></div>
<p>Im aktuell neusten Ubuntu 20.10 ist pre-commit auch bereits als installierbares Paket enthalten.
Hier kann es über den Paketmanager wie folgt installiert werden.</p>
<div class="highlight"><pre><span></span>$ apt-get install pre-commit
</pre></div>
<p>Wie es scheint, wird es zukünftig auch in anderen Distributionen enthalten sein.</p>
<h1>Die Config</h1>
<p>Ist das Tool installiert muss eine Config-Datei mit dem Namen <code>.pre-commit-config.yaml</code>(Punkt am Anfang nicht vergessen) im Wurzelverzeichnis des Repository angelegt werden.
Eine relativ einfache Beispiel Konfiguration erhält man mit folgendem Befehl.</p>
<div class="highlight"><pre><span></span>$ pre-commit sample-config
</pre></div>
<p>Ich verwende aktuell für die meisten meiner Repositories folgende Grundkonfiguration.</p>
<div class="highlight"><pre><span></span><span class="nt">repos</span><span class="p">:</span>
<span class="p p-Indicator">-</span> <span class="nt">repo</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">https://github.com/pre-commit/pre-commit-hooks</span>
<span class="nt">rev</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">v3.2.0</span>
<span class="nt">hooks</span><span class="p">:</span>
<span class="c1"># Forbid files which have a UTF-8 byte-order marker</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-byte-order-marker</span>
<span class="c1"># Check for files that would conflict in case-insensitive filesystems</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-case-conflict</span>
<span class="c1"># Ensures that (non-binary) executables have a shebang</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-executables-have-shebangs</span>
<span class="c1"># Check for files that contain merge conflict strings</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-merge-conflict</span>
<span class="c1"># Checks for symlinks which do not point to anything</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-symlinks</span>
<span class="c1"># This hook checks yaml files for parseable syntax</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">check-yaml</span>
<span class="c1"># Detects the presence of private keys</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">detect-private-key</span>
<span class="c1"># Ensures that a file is either empty, or ends with one newline</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">end-of-file-fixer</span>
<span class="c1"># Replaces or checks mixed line ending</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">mixed-line-ending</span>
<span class="c1"># This hook trims trailing whitespace</span>
<span class="p p-Indicator">-</span> <span class="nt">id</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">trailing-whitespace</span>
</pre></div>
<p><strong>Achtung:</strong> Nicht vergessen die Datei mit zu commiten und in der README darauf hinzuweisen.</p>
<h1>Hook erstellen</h1>
<p>Ist die Config-Datei angelegt, kann das Hook-Script für das Repository wie folgt angelegt werden.</p>
<div class="highlight"><pre><span></span>$ pre-commit install
</pre></div>
<p>Dieser Schritt muss jeder Entwickler einmal nach dem klonen des Repository einmalig machen.</p>
<h1>Einer für alle</h1>
<p>Bei einem Commit werden nur die Dateien geprüft, die auch wirklich in dem Commit enthalten sind.
Nicht enthaltene jedoch geänderte Dateien werden nicht geprüft.
So ist es bei der initialen Einrichtung oder auch bei Continuous Integration(CI) wichtig, dass alle Dateien geprüft werden.</p>
<div class="highlight"><pre><span></span>$ pre-commit run --all-files
</pre></div>
<h1>Fazit</h1>
<p>Ich selbst verwende <a href="https://pre-commit.com/">pre-commit</a> jetzt schon ein paar Monate bei vielen internen Repositories und beginne jetzt langsam es auch bei öffentlichen Repositories einzuführen.
Sehr auffällig war, dass die Anzahl der Commits in denen extrem viele Whitespaces durch einen Editor korrigiert wurden wesentlich abgenommen hat, da jetzt ein Check dieses prüft und teilweise sogar mit einem Hinweis direkt korrigiert.
Auch die Prüfungen auf Style und Type Hinting bei Python wärend der CI Builds fürten nicht mehr zu Fehlern und mussten daher auch nicht mehr nachträglich durch einen weiteren Commit berichtigt werden.</p>
<p>Wird ein Check zum ersten Mal ausgeführt, dauert es etwas länger, weil teilweise das entsprechende Paket, Modul, Skript oder Tool erst heruntergeladen werden muss.
Anschließend laufen die Checks selbst bei großen Repositories sehr schnell durch und würden vermutlich nicht auffallen, wenn bei einem Commit auf der Kommandozeile nicht noch ein paar Log-Ausgaben kommen würden, bevor der Editor für die Commit Nachricht aufgeht.</p>
<h1>Links</h1>
<ul>
<li>Webseite: <a href="https://pre-commit.com/">pre-commit</a> (englisch)</li>
<li>GitHub: <a href="https://github.com/pre-commit/pre-commit">pre-commit/pre-commit</a> (englisch)</li>
<li>Webseite: <a href="https://git-scm.com/">Versionsverwaltung git</a> (englisch)</li>
</ul>Test: TRÅDFRI 10W LED-Treiber von IKEA2020-07-15T00:00:00+02:002020-07-15T00:00:00+02:00PhiBotag:www.dinotools.de,2020-07-15:/2020/07/15/ikea-tradfri-led-treiber-10w/<p>Neben Schaltern und klassischen E27 Leuchtmitteln hat IKEA auch LED-Treiber im TRÅDFRI Sortiment. Diese ermöglichen es LED-Leuchtmittel, die einen Treiber/Transformator benötigen steuerbar zu machen. In unserem Test haben wir uns den 10W LED-Treiber etwas genauer angeschaut.</p><p>Für unseren Test haben wir aus dem aktuellen TRÅDFRI Sortiment den 10W LED-Treiber für aktuell 15€(Stand: 15.7.2020) und die OMLOPP Arbeitsbeleuchtung in der 80cm Variante beschafft. Hinzukommt noch das unverzichtbare Anschlusskabel FÖRNIMA für ca. 5€(Stand: 15.7.2020). Ein Schalter ist bei dieser Zusammenstellung nicht enthalten, da dieser aus einem anderen Sortiment bereits vorhanden ist.</p>
<p>An dem LED-Treiber befindet sich ein Steckplatz über den er mit 220V Netzstrom versorgt wird. Zusätzlich gibt es einen weiteren Steckplatz an dem ein weiterer LED-Treiber mit Strom versorgt werden kann. Dies bietet sich zum Beispiel bei längeren Schrankkombinationen an und erspart die Installation einzelner Zuleitungen zu jedem LED-Treiber. Auf der anderen Seite befinden sich 3 Ausgänge mit 24V für Leuchtmittel, welche bei den 10W die der Treiber liefert völlig ausreichend sein sollten. Über den LED-Treiber lassen sich die Lampen an- bzw. ausschalten. Zusätzlich lässt sich auch die Helligkeit steuern. Es ist jedoch nicht möglich die 3 Ausgänge unterschiedlich anzusteuern. Somit ist der Anschluss und die Ansteuerung von Leuchtmitteln mit steuerbarer Farbtemperatur nicht möglich.</p>
<p>Im Lieferumfang des LED-Treiber ist lediglich der Treiber selbst und eine kurze Anleitung. Was jedoch vollkommen ausreichend ist, da die restlichen Komponenten beliebig zusammengestellt werden können.</p>
<p>Nach dem die Arbeitsbeleuchtung an 1 der insgesamt 3 verfügbaren Steckplätze angeschlossen und der LED-Treiber mit Strom versorgt wurde, ließ er sich ohne Probleme in die vorhandene Zigbee Infrastruktur integrieren. So war auch die Einbindung in deCONZ ohne weitere Umwege möglich.</p>
<h2>Technischedaten</h2>
<p>Bei den Daten handelt es sich um die aktuellen Herstellerangaben. Vor dem Kauf bitte noch einmal prüfen.</p>
<ul>
<li>Funkstandard: Zigbee</li>
<li>Maße:<ul>
<li>Tiefe: 55 mm</li>
<li>Höhe: 18 mm</li>
<li>Breite: 186 mm</li>
</ul>
</li>
<li>Leistung: 10W</li>
<li>Ausgangsspannung: 24V</li>
</ul>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/ikea-tradfri-led-treiber-10w-01.jpg">
<img src="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/thumbs/ikea-tradfri-led-treiber-10w-01.jpg">
</a>
<a href="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/ikea-tradfri-led-treiber-10w-02.jpg">
<img src="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/thumbs/ikea-tradfri-led-treiber-10w-02.jpg">
</a>
<a href="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/ikea-tradfri-led-treiber-10w-03.jpg">
<img src="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/thumbs/ikea-tradfri-led-treiber-10w-03.jpg">
</a>
<a href="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/ikea-tradfri-led-treiber-10w-04.jpg">
<img src="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/thumbs/ikea-tradfri-led-treiber-10w-04.jpg">
</a>
<a href="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/ikea-tradfri-led-treiber-10w-05.jpg">
<img src="/images/gallery/2020-07-15_ikea-tradfri-led-treiber-10w/thumbs/ikea-tradfri-led-treiber-10w-05.jpg">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Der LED-Treiber schnitt in unserem Test sehr gut ab. Durch die problemlose Einbindung konnte das Produkt erste Pluspunkte sammeln. Wer eine höhere Ausgangsleistung benötigt kann zur 30W Variante für aktuell ca. 25€(Stand: 15.7.2020) greifen. Der modulare Aufbau erlaubt es einzelne Komponenten später auszustauschen und gegen andere zu ersetzen.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://www.ikea.de/">Ikea</a> (deutsch)</li>
</ul>Test: PHILIPS hue Outdoor Bewegungsmelder2020-07-03T00:00:00+02:002020-07-03T00:00:00+02:00PhiBotag:www.dinotools.de,2020-07-03:/2020/07/03/philips-hue-outdoor-bewegungsmelder/<p>Für den Innenbereich gibt es mittlerweile von vielen Herstellern die unterschiedlichsten mit Zigbee kompatiblen Produkte. Jedoch ist der Outdoor Bewegungsmelder von PHILIPS aktuell einer der wenigen am Markt, der sich auch für den Außenbereich eignet.</p><p>Der Lieferumfang des Outdoor Bewegungsmelders von PHILIPS ist recht überschaubar. So ist der schlichte in schwarz gehaltene Bewegungsmelder, eine Wandhalterung, eine Eckhalterung, Montagematerial und die Anleitung enthalten. Soll der Sensor nicht an einer flachen Wand, sondern in oder auf einer Ecke montiert werden, ist hier die mitgelieferte Eckhalterung von großem Vorteil.</p>
<p>Der Sensor selbst besitzt eine IP-Schutzklasse von IP54 und sollte somit selbst einem direkten Wasserstrahl aus dem Gartenschlauch und selbstverständlich auch normalen Wetterbedingungen wie Regen, Sturm, Schnee und Sonne standhalten.</p>
<p>Das anlernen an die PHILIPS hue Bridge ist über die App für das Mobiltelefon ohne Probleme möglich, jedoch lässt sich der Sensor auch an Geräte von anderen Herstellern anlernen. Hier stehen jedoch möglicherweise nicht alle Funktionen zur Verfügung.</p>
<p>Mit dem Integrierten Helligkeitssensor ist es möglich die Beleuchtung nur bei Dunkelheit einzuschalten und so tagsüber Stromkosten zu sparen. </p>
<h2>Technischedaten</h2>
<p>Bei den Daten handelt es sich um die aktuellen Herstellerangaben. Vor dem Kauf bitte noch einmal prüfen.</p>
<ul>
<li>IP-Schutzklasse: IP54</li>
<li>Batterie<ul>
<li>Typ: 2x AA/Mignon (enthalten)</li>
<li>Minimale Laufzeit: 2 Jahre</li>
</ul>
</li>
<li>Erfassungswinkel:<ul>
<li>horizontal: 160 Grad</li>
<li>vertikal: 80 Grad</li>
</ul>
</li>
<li>Reichweite: 12 Meter</li>
<li>Funkstandard: Zigbee</li>
<li>Montage: Wand</li>
<li>Maße:<ul>
<li>Tiefe: 56mm</li>
<li>Höhe: 76mm</li>
<li>Breite: 76mm</li>
</ul>
</li>
<li>Farbe: schwarz</li>
<li>Garantie: 2 Jahre</li>
<li>Assistanten:<ul>
<li>Amazon Alexa</li>
<li>Google Assistant</li>
<li>Apple HomeKit</li>
<li>Microsoft Cortana</li>
</ul>
</li>
<li>Update: nur über Hue Bridge möglich</li>
<li>weitere Sensoren: Helligkeit und Temperatur</li>
</ul>
<h2>Bilder</h2>
<p>
<div class="gallery">
<a href="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/philips-hue-outdoor-01.jpg">
<img src="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/thumbs/philips-hue-outdoor-01.jpg">
</a>
<a href="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/philips-hue-outdoor-02.jpg">
<img src="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/thumbs/philips-hue-outdoor-02.jpg">
</a>
<a href="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/philips-hue-outdoor-03.jpg">
<img src="/images/gallery/2020-07-03_philips-hue-outdoor-bewegungsmelder/thumbs/philips-hue-outdoor-03.jpg">
</a>
</div>
</p>
<h2>Fazit</h2>
<p>Durch das mitgelieferte Zubehör ließ sich der Sensor leicht und schnell montieren. In unseren ersten Tests reagierte der Sensor gut auf Bewegungen und schaltete das Licht zuverlässig ein und aus.</p>
<p>Auch die Einbindung in die deCONZ Software war ohne Probleme möglich.</p>
<h2>Links</h2>
<ul>
<li>Webseite: <a href="https://www.philips-hue.com/">PHILIPS hue</a> (mehrsprachig, deutsch)</li>
</ul>Monitoring plugin check_rittal_cmc3 0.4 released2020-06-26T07:20:00+02:002020-06-26T07:20:00+02:00PhiBotag:www.dinotools.de,2020-06-26:/2020/06/26/monitoring_plugin_check_rittal_cmc3-0.4-released/<p>Version 0.4 of the check_rittal_cmc3 monitoring plugin has been released.</p><p>The Computer Multi Control (CMC) from <a href="https://www.rittal.com/">Rittal</a> is a monitoring system to collect sensor readings from different sensors in a data center. This release includes support for the CMCIII-ACC sensor, more options to improve reporting and some Perl fixes.</p>
<h2>Changelog</h2>
<ul>
<li>Add option to select inputs to check for CMCIII-IO3 devices</li>
<li><strong>Breaking</strong>: All inputs have been checked before</li>
<li>Add support to check multiple devices with one check</li>
<li>Add flag to use device alias as status label (CMCIII-LEAK)</li>
<li>Change scan output to be more verbose</li>
<li>Add additional checks for CMCIII-PU</li>
<li>Check state of input sensors</li>
<li>Check temperature sensor</li>
<li>Check access sensor</li>
<li>Add support for CMCIII-ACC sensor</li>
<li>Add flag to use sensor name as status label for access sensors(CMCIII-ACC, CMCIII-PU)</li>
<li>Fix compilation error with newer Perl versions</li>
</ul>
<h2>Links</h2>
<ul>
<li>Website: <a href="https://github.com/DinoTools/check_rittal_cmc3">check_rittal_cmc3 on GitHub</a> (English)</li>
</ul>