<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Most recently created topics]]></title><description><![CDATA[A list of topics that have been created recently]]></description><link>https://forum.iobroker.netundefined</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 07:10:42 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topics.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jul 2026 05:41:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Test Adapter anthbot-genie v0.1.x GitHub&#x2F;Latest]]></title><description><![CDATA[<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Aktuelle Test Version</th>
<th>0.1.13</th>
</tr>
</thead>
<tbody>
<tr>
<td>Veröffentlichungsdatum</td>
<td>01.07.2026</td>
</tr>
<tr>
<td>Github Link</td>
<td><a href="https://github.com/reloxx13/ioBroker.anthbot-genie" rel="nofollow ugc">https://github.com/reloxx13/ioBroker.anthbot-genie</a></td>
</tr>
<tr>
<td>npm</td>
<td><a href="https://www.npmjs.com/package/iobroker.anthbot-genie" rel="nofollow ugc">https://www.npmjs.com/package/iobroker.anthbot-genie</a></td>
</tr>
<tr>
<td>Adapter</td>
<td><code>anthbot-genie</code></td>
</tr>
<tr>
<td>Paket</td>
<td><code>iobroker.anthbot-genie</code></td>
</tr>
<tr>
<td>js-controller</td>
<td><code>&gt;= 6.0.11</code></td>
</tr>
<tr>
<td>Admin</td>
<td><code>&gt;= 7.6.20</code></td>
</tr>
<tr>
<td>Node.js</td>
<td><code>&gt;= 22</code></td>
</tr>
<tr>
<td>Verbindung</td>
<td>Cloud</td>
</tr>
<tr>
<td>Status</td>
<td>latest</td>
</tr>
<tr>
<td>Hinweis</td>
<td>inoffiziell, nicht vom Hersteller</td>
</tr>
</tbody>
</table>
<p dir="auto"><a href="https://github.com/reloxx13/ioBroker.anthbot-genie/actions/workflows/test-and-release.yml" rel="nofollow ugc"><img src="https://github.com/reloxx13/ioBroker.anthbot-genie/actions/workflows/test-and-release.yml/badge.svg?branch=main" alt="Test and Release" class=" img-fluid img-markdown" /></a> <a href="https://github.com/reloxx13/ioBroker.anthbot-genie/releases" rel="nofollow ugc"><img src="https://img.shields.io/github/v/release/reloxx13/ioBroker.anthbot-genie" alt="GitHub version" class=" img-fluid img-markdown" /></a> <a href="https://www.npmjs.com/package/iobroker.anthbot-genie" rel="nofollow ugc"><img src="https://img.shields.io/npm/v/iobroker.anthbot-genie.svg" alt="NPM version" class=" img-fluid img-markdown" /></a> <a href="https://www.npmjs.com/package/iobroker.anthbot-genie" rel="nofollow ugc"><img src="https://img.shields.io/npm/dm/iobroker.anthbot-genie.svg" alt="Downloads" class=" img-fluid img-markdown" /></a> <a href="https://www.iobroker.net/" rel="nofollow ugc"><img src="https://iobroker.live/badges/anthbot-genie-installed.svg" alt="ioBroker installs" class=" img-fluid img-markdown" /></a> <img src="https://img.shields.io/github/license/reloxx13/ioBroker.anthbot-genie" alt="License" class=" img-fluid img-markdown" /> <img src="https://img.shields.io/badge/ioBroker%20phase-latest--repo-green" alt="ioBroker phase" class=" img-fluid img-markdown" /></p>
<p dir="auto">Hallo zusammen,</p>
<p dir="auto">Version 0.1.13 meines ioBroker Adapters für Anthbot Genie Mähroboter ist jetzt im ioBroker <code>latest</code> Repository verfügbar.</p>
<p dir="auto">Der Adapter ist ein inoffizieller Cloud-Adapter für Anthbot Genie. Er meldet sich an der Anthbot Cloud an, sucht die verfügbaren Geräte, ermittelt Region und IoT-Endpunkte und fragt regelmäßig Statusdaten des Mähroboters ab. Zusätzlich stellt er schreibbare States für Einstellungen, Mähbefehle, Docking, Wartung und Zonen bereit. Die State-Struktur bleibt für Genie 600/1000/3000/5000 sowie M5/M9 unter denselben ioBroker-Pfaden stabil.</p>
<h2>Funktionen</h2>
<ul>
<li>Anthbot Cloud Login</li>
<li>Geräteerkennung</li>
<li>Region- und IoT-Endpunkt-Ermittlung</li>
<li>Polling von Mower Property Shadow und Service Shadow</li>
<li>automatische Erneuerung temporärer IoT-Zugangsdaten nach AWS-IoT-<code>403</code></li>
<li>Status-, Metrik-, Diagnose- und Rohdaten-States pro Mähroboter</li>
<li>Standort-States für GPS- und lokale Positionsdaten</li>
<li>M5/M9-Mappings für Status, Batterie, Fehler, Netzwerk, RTK, Karte sowie Gesamt-Mähzeit/-fläche</li>
<li>Steuerbefehle über ioBroker States</li>
<li>Vollflächenmähen, manuelles Zonenmähen und automatisches Zonenmähen</li>
<li>Punktmähen, Kantenmähen und Mähen nahe der Ladestation</li>
<li>Start, Pause, Fortsetzen, Stoppen und Beenden von Mähaufgaben</li>
<li>Rückkehr zur Ladestation inklusive Pause der Rückfahrt</li>
<li>Wartungsbefehle wie Roboter finden, Grasablage und Scheibenwartungsmodus</li>
<li>Verbrauchsmaterial-States für Ladeport, Kameras und Klingen inklusive Reset-Buttons</li>
<li>Regen-, Hindernis-, Sprachlautstärke- und Mähparameter-Steuerung</li>
<li>Rohdaten für Property Shadow, Service Shadow, Anthbot Event-Code-Übersetzungen und Flächendefinitionen</li>
<li>Passwort wird als verschlüsselte native Konfiguration gespeichert</li>
</ul>
<h2>Voraussetzungen</h2>
<ul>
<li>ioBroker mit js-controller &gt;= 6.0.11</li>
<li>ioBroker Admin &gt;= 7.6.20</li>
<li>Node.js &gt;= 22</li>
<li>Anthbot Account mit mindestens einem verbundenen Anthbot Mähroboter</li>
</ul>
<h2>Angelegte States</h2>
<p dir="auto">Pro erkanntem Mähroboter werden unter anderem folgende Bereiche angelegt:</p>
<ul>
<li><code>info.*</code></li>
<li><code>metrics.*</code></li>
<li><code>diagnostics.*</code></li>
<li><code>location.*</code></li>
<li><code>consumable.*</code></li>
<li><code>controls.*</code></li>
<li><code>commands.*</code></li>
<li><code>zones.*</code></li>
<li><code>raw.*</code></li>
</ul>
<h2>Aktuelle Punkte in 0.1.13</h2>
<ul>
<li>verfügbar über das ioBroker <code>latest</code> Repository</li>
<li>gruppierte State-Struktur unter <code>metrics</code>, <code>diagnostics</code>, <code>consumable</code>, <code>controls</code>, <code>commands</code>, <code>zones</code> und <code>raw</code></li>
<li>M5/M9-Payloads für Status, Batterie, Fehler, Netzwerk, RTK, Karte sowie Gesamt-Mähzeit/-fläche werden in die bestehende State-Struktur gemappt</li>
<li>temporäre IoT-Zugangsdaten werden nach AWS-IoT-<code>403</code> einmal automatisch erneuert und der fehlgeschlagene Shadow-Read bzw. Command-Publish wird erneut versucht</li>
<li>Diagnosewerte für RTK, Firmware, OTA, Netzwerk, GPS/Position, Karte und Fehler</li>
<li>Reset-Buttons für Ladeport-, Kamera- und Klingen-Lebensdauer</li>
<li>neue Befehle: Roboter finden, Grasablage, Scheibenwartungsmodus, Kantenmähen, Mähen nahe der Ladestation und Punktmähen</li>
<li>Task-Befehle: Mähen pausieren/fortsetzen, Rückfahrt pausieren und Mähen beenden</li>
<li>Steuerung für Mähen nahe der Ladestation</li>
<li>Vollflächenmähen mit optionalem Kantenschnitt</li>
<li>RTK-Antenne-bewegt-Warnung und Befehl zum Zurücksetzen dieser Warnung</li>
</ul>
<p dir="auto">Einige Befehle können je nach Modell, Firmware, aktuellem Mäherzustand und vorhandenen Karten-/Kantendaten nicht verfügbar sein oder vom Mäher abgelehnt werden.</p>
<h2>Manuelles Zonenmähen</h2>
<p dir="auto">Die bekannten manuellen Zonen werden unter folgendem State als JSON-Array abgelegt:</p>
<pre><code class="language-text">&lt;instance&gt;.&lt;serial&gt;.zones.manual.list
</code></pre>
<p dir="auto">Zum Starten einer oder mehrerer Zonen kann in diesen State geschrieben werden:</p>
<pre><code class="language-text">&lt;instance&gt;.&lt;serial&gt;.commands.mowing.startZone
</code></pre>
<p dir="auto">Akzeptierte Werte:</p>
<ul>
<li>einzelne Zone per ID: <code>3</code></li>
<li>einzelne Zone per Name: <code>Front yard</code></li>
<li>mehrere Zonen kommasepariert: <code>3,5,Back yard</code></li>
<li>mehrere Zonen als JSON-Array: <code>[3,5,"Back yard"]</code></li>
</ul>
<p dir="auto">Automatische Zonen liegen unter <code>&lt;instance&gt;.&lt;serial&gt;.zones.autoList</code> und werden mit <code>&lt;instance&gt;.&lt;serial&gt;.commands.mowing.startAutoZone</code> gestartet.</p>
<h2>Punktmähen</h2>
<p dir="auto">Punktmähen wird über folgenden State gestartet:</p>
<pre><code class="language-text">&lt;instance&gt;.&lt;serial&gt;.commands.mowing.startPoint
</code></pre>
<p dir="auto">Akzeptierte Werte:</p>
<ul>
<li>Koordinaten als Text: <code>123,456</code></li>
<li>Koordinaten als JSON-Objekt: <code>{"x":123,"y":456}</code></li>
</ul>
<p dir="auto">Nach erfolgreicher Ausführung wird der State wieder geleert.</p>
<h2>Wobei Rückmeldungen hilfreich sind</h2>
<ul>
<li>Login mit Anthbot Account</li>
<li>Erkennung eines oder mehrerer Mähroboter</li>
<li>Aktualisierung von Status, Metriken, Diagnosewerten und Verbindungsstatus</li>
<li>M5/M9-Mappings für Status, Netzwerk, RTK, Kartenstatus und Gesamt-Mähwerte</li>
<li>Start, Pause, Fortsetzen, Stoppen und Beenden von Mähaufgaben</li>
<li>Rückkehr zur Ladestation sowie Pause der Rückfahrt</li>
<li>manuelles und automatisches Zonenmähen, falls Zonen in der Anthbot App vorhanden sind</li>
<li>Punktmähen, Kantenmähen und Mähen nahe der Ladestation, falls vom Gerät unterstützt</li>
<li>Reset der Verbrauchsmaterial-Werte nur dann, wenn der jeweilige Lebensdauerwert bei oder unter 5 Prozent liegt ( limitiert von Anthbot )</li>
<li>Verhalten bei falschen Zugangsdaten, Cloud-Verbindungsproblemen oder AWS-IoT-<code>403</code></li>
</ul>
<p dir="auto">Rückmeldungen bitte mit Adapterversion, ioBroker/js-controller Version, Node.js Version und relevanten Logauszügen posten. Bitte keine Zugangsdaten, Tokens, Seriennummern oder andere persönliche Daten veröffentlichen.</p>
<p dir="auto">Hinweis: Der Adapter ist inoffiziell und nicht mit Anthbot verbunden oder von Anthbot unterstützt.</p>
<h2>Transparenzhinweis</h2>
<p dir="auto">Bei der Erstellung dieses Adapters wurde KI unterstützend eingesetzt, insbesondere bei Code-Entwurf, Strukturierung, Dokumentation und Prüfung. Die fachliche Verantwortung, Tests und Veröffentlichung liegen beim Entwickler.</p>
<h2>Installation</h2>
<h3>Über ioBroker Admin</h3>
<ol>
<li>Adapteransicht öffnen.</li>
<li>Falls das <code>latest</code> Repository noch nicht aktiv ist: in ioBroker Admin unter <strong>Einstellungen -&gt; Repositorys</strong> <code>latest</code> auswählen/aktivieren und die Adapterliste aktualisieren.</li>
<li>Im <code>latest</code> Repository nach <code>anthbot-genie</code> suchen und den Adapter installieren.</li>
<li>Nach der Installation eine Instanz des Adapters anlegen.</li>
<li>In der Adapterkonfiguration Anthbot Benutzername, Passwort und Landesvorwahl eintragen.</li>
<li>Instanz starten und Log sowie States prüfen.</li>
</ol>
<h3>Über CLI</h3>
<p dir="auto">Installation der aktuellen Version über npm:</p>
<pre><code class="language-bash">iobroker repo set latest
iobroker update
iobroker add anthbot-genie
</code></pre>
<p dir="auto">oder exakt:</p>
<pre><code class="language-bash">iobroker add anthbot-genie@0.1.13
</code></pre>
<p dir="auto">Falls die Instanz nach der Installation noch nicht automatisch angelegt wurde:</p>
<pre><code class="language-bash">iobroker add anthbot-genie --enabled
</code></pre>
]]></description><link>https://forum.iobroker.net/topic/84983/test-adapter-anthbot-genie-v0.1.x-github-latest</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84983/test-adapter-anthbot-genie-v0.1.x-github-latest</guid><dc:creator><![CDATA[reloxx13]]></dc:creator><pubDate>Thu, 16 Jul 2026 05:41:53 GMT</pubDate></item><item><title><![CDATA[Frage zur Kombination von den Adaptern EVCC + SourceAnalytix]]></title><description><![CDATA[<p dir="auto">Hallo</p>
<p dir="auto">Ich möchte in ioBroker (in der Vis) die kWh sehen, die am aktuellen Tag in mein Auto geladen wurden.<br />
Ich sehe diese Zahl in EVCC - in den Statistiken oder auch in der Config Page:<br />
<img src="/assets/uploads/files/1784146895604-3375a82c-a61f-4d3d-a05b-4627aab31889-image.jpeg" alt="3375a82c-a61f-4d3d-a05b-4627aab31889-image.jpeg" class=" img-fluid img-markdown" /><br />
(Für heute)<br />
Es existiert nur ein ChargeingPoint und ein Auto - also nichts kompliziertes.</p>
<p dir="auto">Da die 11.5 nicht direkt als Datenpunkt verfügbar sind, versuche ich nun mittels<br />
SourceAnalytixs auf dem Datenpunkt evcc.0.status.Statistics.Total.chargedKWh<br />
die 11.5 als Differenz zu errechnen. Das klappt leider nicht.</p>
<p dir="auto">Ich sehe<br />
Dass der EVCC Adapter "chargedKWh" als gleiche Zahl anzeigt wie im Adapter:<br />
EVCC:<br />
<img src="/assets/uploads/files/1784147047498-97984536-aae4-475b-959f-240dcc9544d3-image.jpeg" alt="97984536-aae4-475b-959f-240dcc9544d3-image.jpeg" class=" img-fluid img-markdown" /><br />
iobroker evcc.0.status.Statistics.Total.chargedKWh<br />
<img src="/assets/uploads/files/1784147055994-25076e35-8d13-4116-bd82-c89260af6e7b-image.jpeg" alt="25076e35-8d13-4116-bd82-c89260af6e7b-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Hier die SourceAnalytix Konfig des Datenpunktes<br />
<img src="/assets/uploads/files/1784147104889-b45d61fe-1084-48dc-9cef-be01f4c67f18-image.jpeg" alt="b45d61fe-1084-48dc-9cef-be01f4c67f18-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Die Differenz zwischen  Startwert "Day" und dem zuvorigen Carged Energy zeigt aber schon das Problem:<br />
Mir werden nun unter sourceanalytix.0.evcc__0__status__Statistics__Total__chargedKWh.currentYear.delivered.01_currentDay nur 6.22 angezeigt, keine 11.5.<br />
<img src="/assets/uploads/files/1784147214723-05a0c9b3-3eb8-4ffb-aba7-dd22a6c719a1-image.jpeg" alt="05a0c9b3-3eb8-4ffb-aba7-dd22a6c719a1-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Woran kann das liegen?<br />
Mir fällt nur ein, dass die Startwerte von SourceAnalytix nicht um 0 Uhr gezogen wurden - aber das hab ich auch schonmal kontrolliert, das passte.</p>
<p dir="auto">Hat jemand eine Idee?<br />
Gruss -</p>
]]></description><link>https://forum.iobroker.net/topic/84982/frage-zur-kombination-von-den-adaptern-evcc-sourceanalytix</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84982/frage-zur-kombination-von-den-adaptern-evcc-sourceanalytix</guid><dc:creator><![CDATA[adarof]]></dc:creator><pubDate>Wed, 15 Jul 2026 20:27:47 GMT</pubDate></item><item><title><![CDATA[Matter Adapter in Verbindung Digigera Hub und Xiaomi]]></title><description><![CDATA[<p dir="auto">Xiaomi AQARA Temperature and Humidity Sensor<br />
<img src="/assets/uploads/files/1784143056791-0307b23c-2cfa-40f8-96ed-399dda324da2-image.jpeg" alt="0307b23c-2cfa-40f8-96ed-399dda324da2-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Kann ich diese auch mit dem Hub verbinden?</p>
<p dir="auto">Wenn ja wie?</p>
]]></description><link>https://forum.iobroker.net/topic/84981/matter-adapter-in-verbindung-digigera-hub-und-xiaomi</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84981/matter-adapter-in-verbindung-digigera-hub-und-xiaomi</guid><dc:creator><![CDATA[deta]]></dc:creator><pubDate>Wed, 15 Jul 2026 19:20:12 GMT</pubDate></item><item><title><![CDATA[Matter Adapter in Verbindung Digigera Hub und Bilresa]]></title><description><![CDATA[<p dir="auto">Die Buttens werden unter den Matter Objekten auch angezeigt.<br />
<img src="/assets/uploads/files/1784141241475-76c795e4-114e-42a3-ad11-c0e93a219dd5-image.jpeg" alt="76c795e4-114e-42a3-ad11-c0e93a219dd5-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Er geht auf true wenn entsprechende der eine oder andere Button geklickt wird.<br />
Aber nicht mehr auf false zurück.</p>
<p dir="auto">So kann man den Klick nicht auswerten für irgendwas.</p>
]]></description><link>https://forum.iobroker.net/topic/84980/matter-adapter-in-verbindung-digigera-hub-und-bilresa</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84980/matter-adapter-in-verbindung-digigera-hub-und-bilresa</guid><dc:creator><![CDATA[deta]]></dc:creator><pubDate>Wed, 15 Jul 2026 18:50:31 GMT</pubDate></item><item><title><![CDATA[Klimagerät (Gree) Tosot Clivia]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">wir haben die Tage eine neue Klimaanlage ins Haus geschraubt bekommen (die alte LG ist nach 26! Jahren ausgestiegen)</p>
<p dir="auto">Es handelt sich um eine Hersteller: Gree, Marke: Tosot Clivia<br />
Die älteren Clivia gingen wohl mit dem Gree Adapter, meine neuere nicht.<br />
Einbinden in die "EWPE Smart" App und dann den Weg zur Alexa über den passenden Skill geht.<br />
Einbinden in die bekannte Smart-Life App geht nicht, somit keine Anbindung an Tuya :(</p>
<p dir="auto">Jetzt hab ich mich seit ein paar Tagen daran gesetzt und mal ein bissel was ausprobiert. Leider mit wenig Erfolg.<br />
Vielleicht hat ja noch jemand so eien Anlage und mag sich vielleicht einbringen.</p>
<p dir="auto">Lokale Verbindungen per IP ans W-Lan Modul über UPD sind zwecklos. Das W-Lan Modul reagiert auf garnichts.<br />
Per Cloud an die EWPW Smart App hab ich zumindest alle relevanten Daten auslesen können.<br />
Ich habe also meine Kontodaten, Geräte-ID, Mac, Geräteschlüssel, Home-ID, RoomName, Name, selbst BindDate und Firmwareversion auslesen können.<br />
Aber an die Steuerbefehle oder den Aufbau der Steuerung oder gar die Cloudadressen kann ich nicht ermitteln.<br />
Anscheinend laufen nur die nicht relevanten Daten über <a href="http://eugrih.gree.com" rel="nofollow ugc">eugrih.gree.com</a></p>
<p dir="auto">An der UDM-Pro lässt sich kein Netzwerktraffic ersehen, nichts, rein garnichts. Auch Pi-Hole sagt mir zur IP der Klimaanlage keinerlei Netzwerktraffic an.<br />
Was mir nun noch einfällt ist ein leider recht komplizierter vollständiger Mitschnitt des Netzwerktraffic der Klimaanlage direkt am Accesspoint (Unifi Ultra HD)<br />
Hat sich jemand bereits damit beschäftigt und kann ggf mithelfen oder den ein oder anderen Tipp geben?</p>
<p dir="auto">Gruß<br />
Lucifor</p>
]]></description><link>https://forum.iobroker.net/topic/84979/klimagerät-gree-tosot-clivia</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84979/klimagerät-gree-tosot-clivia</guid><dc:creator><![CDATA[Lucifor1976]]></dc:creator><pubDate>Wed, 15 Jul 2026 18:13:26 GMT</pubDate></item><item><title><![CDATA[Test Adapter ioBroker.blink v0.0.x GitHub&#x2F;Latest]]></title><description><![CDATA[<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Aktuelle Test Version</th>
<th>0.0.38</th>
</tr>
</thead>
<tbody>
<tr>
<td>Veröffentlichungsdatum</td>
<td>13.07.2026</td>
</tr>
<tr>
<td>Github Link</td>
<td>https://github.com/Pischleuder1/ioBroker.blink</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>ioBroker Adapter für Blink Kameras</strong><br />
Es sollten nahezu alle neuen Kameras und Doorbells funktionieren.<br />
Ein Live- Stream für bspw.  XT/XT2/ und LFR-Stream basierte Kameras funktionieren nicht</p>
<p dir="auto"><strong>Funktionen</strong></p>
<ul>
<li>Verbindung zur Blink-Cloud</li>
<li>Abfrage des Status von Kamera und Sync-Modul</li>
<li>Unterstützung für manuelle Schnappschüsse</li>
<li>Speicherung von Live-Schnappschüssen</li>
<li>Download des neuesten verfügbaren Cloud-Videos</li>
<li>Aktivierung/Deaktivierung der Bewegungserkennung</li>
<li>Unterstützung für Batteriewarnungen und Benachrichtigungen</li>
<li>Unterstützung für „Smart Detection“-Status bei klassifizierten Bewegungsereignissen (funktioniert nur mit kostenpflichtigen Cloud-Diensten)</li>
<li>Unterstützung für Cloud-Videos sowie lokal auf SD-Karte gespeicherte Videos (SyncModule 2 und XR) und LiveView über einen lokalen Server auf Port 8085<br />
Das Skript setzt eine installierte ffmpeg-Umgebung voraus und benötigt bei einer großen Anzahl von Kameras viele Ressourcen; für Raspberry Pis nur bedingt geeignet (mind. 4 GB RAM – mehr ist besser)</li>
<li>Erste Version für Live-Ansicht mit JavaScript für jede Kamera – das erforderliche JavaScript wird automatisch installiert (außer bei der älteren XT2, da diese einen anderen Videostream verwendet)</li>
<li>Sicherung auf einen NAS - Mount - Punkt kann im admin ausgewählt werden, NAS muss dafür vorher gemountet sein</li>
</ul>
]]></description><link>https://forum.iobroker.net/topic/84978/test-adapter-iobroker.blink-v0.0.x-github-latest</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84978/test-adapter-iobroker.blink-v0.0.x-github-latest</guid><dc:creator><![CDATA[Pischleuder]]></dc:creator><pubDate>Wed, 15 Jul 2026 17:06:20 GMT</pubDate></item><item><title><![CDATA[Möglicher neuer DREO-Adapter für ioBroker – Testversion]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">ich möchte euch einen möglichen neuen, noch jungen ioBroker-Adapter für smarte Geräte von DREO vorstellen, den ich aus eigenem Bedarf zunächst privat entwickelt habe. Nun hat er aber einen Stand erreicht, so dass er anderen Usern eventuell auch einen Nutzen bringen könnte:</p>
<p dir="auto">(hoffe, ich darf das hier ohne vorherige Absprache einfach posten)</p>
<p dir="auto"><strong>GitHub:</strong><br />
<a href="https://github.com/mehrwiedu/ioBroker.dreo" rel="nofollow ugc">https://github.com/mehrwiedu/ioBroker.dreo</a></p>
<p dir="auto">Der Adapter ist ursprünglich aus einem persönlichen Bedarf entstanden. Ich verwende mehrere DREO-Deckenventilatoren und wollte sie nicht nur über die DREO-App oder per Alexa steuern, sondern auch direkt in ioBroker einbinden.</p>
<p dir="auto">Mein konkretes Ziel war vor allem die Bedienung über klassische Wandtaster. Bei mir kommen dafür Shelly 1 Gen4 zum Einsatz. Ein kurzer, doppelter, dreifacher oder langer Tastendruck kann dadurch beispielsweise Licht, Ventilator, Geschwindigkeit und Helligkeit steuern.</p>
<p dir="auto">Die Sprachsteuerung war für mich weniger der Schwerpunkt, da der offizielle Alexa-Skill von DREO bereits sehr gut funktioniert und die Sprachbedienung damit bereits zuverlässig abgedeckt ist.</p>
<p dir="auto"><strong>Eigene TypeScript-SDK als Grundlage</strong></p>
<p dir="auto">Der ioBroker-Adapter greift nicht direkt und unstrukturiert auf die DREO-Cloud zu. Ich habe zunächst eine eigene TypeScript-SDK entwickelt:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mehrwiedu" aria-label="Profile: mehrwiedu">@<bdi>mehrwiedu</bdi></a>/dreo-api</p>
<p dir="auto">Darauf setzt der ioBroker-Adapter als möglichst dünne Integrationsschicht auf.</p>
<p dir="auto"><strong>Voraussetzung: separater DREO-E-Mail-Account</strong></p>
<p dir="auto">Für die Nutzung des Adapters wird derzeit ein separater DREO-Account benötigt, der klassisch mit E-Mail-Adresse und Passwort angelegt wurde.</p>
<p dir="auto">Der eigentliche Hauptaccount kann weiterhin beliebig eingerichtet sein, beispielsweise über Apple Login, Google Login oder E-Mail und Passwort. Dieser Hauptaccount wird jedoch nicht direkt im Adapter verwendet.</p>
<p dir="auto">Stattdessen wird ein zweiter DREO-Account auf E-Mail-Basis angelegt. Anschließend wird das komplette DREO-Zuhause vom Hauptaccount mit diesem Zweitaccount geteilt. Im Adapter werden dann die Zugangsdaten dieses Zweitaccounts hinterlegt.</p>
<p dir="auto">Ich habe diesen Weg bewusst so gewählt, weil es meiner Philosophie entspricht, den produktiv genutzten Hauptaccount von ioBroker und der SDK zu trennen. So bleibt der eigentliche DREO-Zugang unabhängig vom Adapter bestehen. Auch bei möglichen Störungen, Fehlern oder Wartungsarbeiten an ioBroker oder der SDK soll die Bedienung über die offizielle DREO-App weiterhin zuverlässig möglich sein.</p>
<p dir="auto">Der aktuell zuverlässig getestete Ablauf ist daher:</p>
<ol>
<li>Zweitaccount mit E-Mail-Adresse und Passwort anlegen.</li>
<li>Das gesamte DREO-Zuhause mit diesem Account teilen.</li>
<li>Die Zugangsdaten des Zweitaccounts im ioBroker-Adapter eintragen.</li>
</ol>
<p dir="auto">Ob auch das Teilen einzelner Geräte dauerhaft und zuverlässig funktioniert, ist derzeit noch nicht abschließend geprüft. Für den aktuellen Stand sollte deshalb das vollständige Zuhause geteilt werden.</p>
<p dir="auto"><strong>Parallele Bedienung über verschiedene Steuerwege</strong></p>
<p dir="auto">Die DREO-Geräte können weiterhin unabhängig über verschiedene Wege bedient werden:</p>
<ul>
<li>über die DREO-App mit dem Hauptaccount</li>
<li>über die DREO-App mit dem geteilten Zweitaccount</li>
<li>über die jeweilige Fernbedienung</li>
<li>über Alexa-Sprachbefehle bei aktiviertem DREO-Skill</li>
<li>über ioBroker und den DREO-Adapter</li>
</ul>
<p dir="auto">Diese Steuerwege behindern sich nicht gegenseitig. Änderungen, die über einen der Wege vorgenommen werden, werden über die Cloud beziehungsweise die WebSocket-Verbindung übernommen. Dadurch stehen in ioBroker und in den DREO-Apps jeweils die aktuellen und korrekten Gerätezustände zur Verfügung.</p>
<p dir="auto"><strong>Die SDK übernimmt unter anderem:</strong></p>
<ul>
<li>Anmeldung an der DREO-Cloud</li>
<li>Token-Erneuerung</li>
<li>Geräteerkennung</li>
<li>Auflösung der Gerätefähigkeiten</li>
<li>WebSocket-Verbindung für Statusänderungen</li>
<li>Wiederverbindung nach Verbindungsabbrüchen</li>
<li>Lesen und Schreiben von Gerätezuständen</li>
</ul>
<p dir="auto">Die Trennung zwischen SDK und Adapter war mir wichtig, damit die eigentliche DREO-Logik nicht fest mit ioBroker verbunden ist und gegebenenfalls auch in anderen Projekten genutzt werden kann.</p>
<p dir="auto"><strong>Aktuell getestete Geräte</strong></p>
<p dir="auto">Der Adapter wird derzeit mit folgenden Geräten praktisch getestet:</p>
<ul>
<li>DREO DR-HCF007S Deckenventilator</li>
<li>DREO DR-HPF002S Standventilator</li>
<li>DREO DR-HHM001S Luftbefeuchter</li>
</ul>
<p dir="auto">Bei mir werden aktuell fünf Geräte zuverlässig erkannt:</p>
<ul>
<li>drei DR-HCF007S Deckenventilatoren</li>
<li>ein DR-HPF002S Standventilator</li>
<li>ein DR-HHM001S Luftbefeuchter</li>
</ul>
<p dir="auto">Die Geräte werden über die DREO-Cloud erkannt und Statusänderungen über eine WebSocket-Verbindung an ioBroker übertragen.</p>
<p dir="auto"><strong>Aktueller Schwerpunkt</strong></p>
<p dir="auto">Mein bisheriger Schwerpunkt lag bewusst auf den Basisfunktionen der Deckenventilatoren.</p>
<p dir="auto">Dazu gehören insbesondere:</p>
<ul>
<li>Ventilator ein und aus</li>
<li>Geschwindigkeitsstufe</li>
<li>Betriebsmodus</li>
<li>Hauptlicht ein und aus</li>
<li>Helligkeit des Hauptlichts</li>
<li>Farbtemperatur</li>
<li>Atmosphärelicht</li>
<li>Timer</li>
<li>Stummschaltung</li>
</ul>
<p dir="auto">Einige Hauptfunktionen des getesteten Standventilators sind noch nicht vollständig als benutzerfreundliche States umgesetzt beziehungsweise noch nicht abschließend zugeordnet.</p>
<p dir="auto">Der Standventilator wird bereits erkannt und kann grundsätzlich gesteuert werden. Die genaue Bedeutung einzelner Rohwerte muss jedoch noch vollständig verifiziert und anschließend sauber in die Friendly-State-Struktur übertragen werden.</p>
<p dir="auto"><strong>Geräteabhängige Datenpunkte</strong></p>
<p dir="auto">Der Adapter legt nicht bei jedem Gerät pauschal dieselben Datenpunkte an. Die Struktur richtet sich nach den tatsächlich erkannten Fähigkeiten des jeweiligen Geräts.</p>
<p dir="auto">Beispiele für derzeitige Friendly States sind:</p>
<ul>
<li>power.on</li>
<li>fan.on</li>
<li>fan.speed</li>
<li>fan.mode</li>
<li>fan.oscillationMode</li>
<li>light.main.on</li>
<li>light.main.brightness</li>
<li>light.main.colorTemperature</li>
<li>light.atmosphere.on</li>
<li>light.atmosphere.brightness</li>
<li>light.atmosphere.preset</li>
<li>display.on</li>
<li>timer.on</li>
<li>timer.off</li>
<li>settings.mute</li>
<li>settings.childLock</li>
</ul>
<p dir="auto">Ein Standventilator bekommt beispielsweise nicht automatisch ein vermeintliches Hauptlicht, nur weil das Gerät intern einen Zustand mit einem ähnlich klingenden Namen meldet.</p>
<p dir="auto">Auch der Luftbefeuchter wird nicht fälschlich als Ventilator dargestellt.</p>
<p dir="auto">Zusätzlich stehen die von DREO gelieferten Rohzustände weiterhin zur Verfügung. Neue oder noch nicht eindeutig verstandene Funktionen können dadurch zunächst beobachtet werden, bevor sie einen benutzerfreundlichen Datenpunkt erhalten.</p>
<p dir="auto"><strong>Friendly States werden noch weiter überarbeitet</strong></p>
<p dir="auto">Die aktuelle Friendly-State-Struktur ist noch nicht endgültig.</p>
<p dir="auto">Bei einigen Funktionen hat sich erst durch praktische Tests gezeigt, dass die interne Bezeichnung von DREO nicht direkt als verständlicher ioBroker-State übernommen werden sollte.</p>
<p dir="auto">Ein Beispiel ist die Displayfunktion des Standventilators.</p>
<p dir="auto">Der interne Wert entspricht nicht einfach einem klassischen Display an oder Display aus.</p>
<p dir="auto">Die Logik ist vielmehr:</p>
<ul>
<li>false: Das Display schaltet sich nach einer gewissen Zeit automatisch aus.</li>
<li>true: Das Display bleibt dauerhaft eingeschaltet.</li>
</ul>
<p dir="auto">Der derzeitige Friendly State display.on ist deshalb wahrscheinlich nicht präzise genug benannt. Eine verständlichere Bezeichnung wäre beispielsweise:</p>
<p dir="auto">display.alwaysOn</p>
<p dir="auto">oder eine vergleichbare Bezeichnung, die das tatsächliche Verhalten besser beschreibt.</p>
<p dir="auto">Auch andere numerische Werte sollen künftig verständlicher dargestellt werden.</p>
<p dir="auto"><strong>Verständliche Bezeichnungen für Betriebsarten</strong></p>
<p dir="auto">Der State fan.mode enthält derzeit einen numerischen Wert. Diese Zahlen entsprechen jedoch konkreten Betriebsarten wie beispielsweise:</p>
<ul>
<li>Normal</li>
<li>Turbo</li>
<li>Schlaf</li>
<li>Natur</li>
<li>weitere gerätespezifische Modi</li>
</ul>
<p dir="auto">Die genaue Zuordnung kann je nach Gerätetyp und Firmware unterschiedlich sein und muss deshalb zunächst zuverlässig verifiziert werden.</p>
<p dir="auto">Anschließend sollen die Zahlenwerte in ioBroker mit verständlichen Bezeichnungen versehen werden.</p>
<p dir="auto">Technisch soll weiterhin mit den ursprünglichen Zahlenwerten gearbeitet werden. In ioBroker, VIS oder anderen Oberflächen könnte dann aber direkt angezeigt werden, welche Betriebsart hinter dem aktuellen Wert steht.</p>
<p dir="auto">Beispielhaft:</p>
<p dir="auto">1 = Normal<br />
2 = Turbo<br />
3 = Schlaf<br />
4 = Natur</p>
<p dir="auto">Die tatsächliche Zuordnung wird erst übernommen, wenn sie für den jeweiligen Gerätetyp bestätigt wurde.</p>
<p dir="auto"><strong>Verständliche Anzeige der Oszillation</strong></p>
<p dir="auto">Auch fan.oscillationMode wird derzeit als numerischer Wert dargestellt.</p>
<p dir="auto">Beim getesteten Standventilator beschreiben die Werte voraussichtlich:</p>
<p dir="auto">0 = Aus<br />
1 = Horizontal<br />
2 = Vertikal<br />
3 = Horizontal und vertikal</p>
<p dir="auto">Auch hier soll der ursprüngliche Zahlenwert erhalten bleiben, damit Skripte und Automationen weiterhin eindeutig damit arbeiten können.</p>
<p dir="auto">Im ioBroker-Objektbaum, in VIS oder anderen Oberflächen soll aber zusätzlich beziehungsweise über eine Werteliste direkt erkennbar sein, welcher Oszillationsmodus aktiv ist.</p>
<p dir="auto">Aus meiner Sicht wäre es dafür am sinnvollsten, die Zahlenwerte über die ioBroker-Metadaten mit sprechenden Bezeichnungen zu hinterlegen. Dadurch bleibt der State numerisch und beschreibbar, während Oberflächen gleichzeitig die verständliche Bedeutung anzeigen können.</p>
<p dir="auto">Ein separater zusätzlicher Infostate wäre dann wahrscheinlich nicht erforderlich.</p>
<p dir="auto"><strong>Unterschied zur Home-Assistant-Integration</strong></p>
<p dir="auto">Der Adapter ist keine Portierung der bestehenden Home-Assistant-Integration.</p>
<p dir="auto">Mein Ansatz besteht aus einer eigenständigen TypeScript-SDK und einem darauf aufbauenden ioBroker-Adapter.</p>
<p dir="auto">Der Schwerpunkt liegt auf:</p>
<ul>
<li>einer sauberen Trennung zwischen DREO-Logik und ioBroker</li>
<li>automatischer Erkennung der Gerätefähigkeiten</li>
<li>WebSocket-basierten Echtzeitaktualisierungen</li>
<li>ioBroker-typischen, beschreibbaren States</li>
<li>der Einbindung in eigene Skripte und Wandtastersteuerungen</li>
<li>dem Erhalt der Rohdaten für Analyse und spätere Erweiterungen</li>
<li>einer geräteabhängigen Friendly-State-Struktur</li>
</ul>
<p dir="auto">Die bestehende Home-Assistant-Integration war natürlich ein wichtiger Hinweis darauf, dass sich DREO-Geräte grundsätzlich in ein Smart-Home-System integrieren lassen.</p>
<p dir="auto">Die Architektur, die TypeScript-SDK und die konkrete Umsetzung dieses Projekts sind jedoch eigenständig.</p>
<p dir="auto"><strong>Beispiel: Steuerung über einen Shelly-Wandtaster</strong></p>
<p dir="auto">Bei mir ist ein Shelly 1 Gen4 hinter einem klassischen Wandtaster verbaut.</p>
<p dir="auto">Die Bedienung eines DREO-Deckenventilators ist beispielsweise so aufgebaut:</p>
<ul>
<li>einfacher Tastendruck: Hauptlicht ein oder aus</li>
<li>doppelter Tastendruck: Ventilator ein oder aus</li>
<li>dreifacher Tastendruck: Geschwindigkeitsstufe wechseln</li>
<li>langer Tastendruck: Helligkeit des Hauptlichts wechseln</li>
</ul>
<p dir="auto">Die Steuerung läuft direkt über die States des DREO-Adapters.</p>
<p dir="auto">Eine zusätzliche Infrarot- oder Funkfernbedienung ist dadurch für diese Bedienung nicht mehr erforderlich. In meinem bisherigen Aufbau wurden zwei Deckenventilatoren noch über einen Broadlink angesteuert. Diese Steuerung kann nun vollständig durch den DREO-Adapter ersetzt werden.</p>
<p dir="auto">Der Broadlink, den ich im Anfang dafür benutzt habe, wird in meinem Aufbau damit nicht mehr benötigt. Zumal es damit auch teilweise raumübergreifend hier und da mal ein Sendeproblem gab und der WAF darunter sehr gelitten hat.</p>
<p dir="auto"><strong>Aktueller Stand</strong></p>
<p dir="auto">Der Adapter befindet sich noch in einer frühen Entwicklungs- und Testphase.</p>
<p dir="auto">Bereits umgesetzt und praktisch geprüft sind unter anderem:</p>
<ul>
<li>Installation direkt aus dem öffentlichen GitHub-Repository</li>
<li>automatische Installation der SDK über npm</li>
<li>Anmeldung in der EU-Region</li>
<li>Erkennung mehrerer DREO-Gerätetypen</li>
<li>WebSocket-Verbindung</li>
<li>Statusaktualisierungen</li>
<li>beschreibbare Datenpunkte</li>
<li>geräteabhängige Objektstruktur</li>
<li>Wiederanmeldung nach abgelaufenen Tokens</li>
<li>Wiederverbindung nach WebSocket-Abbrüchen</li>
<li>Steuerung von Deckenventilatoren über Friendly States</li>
<li>Steuerung über Shelly-Wandtaster und JavaScript</li>
</ul>
<p dir="auto">Der aktuelle Versionsstand ist zunächst: 0.1.0</p>
<p dir="auto"><strong>Noch offene Punkte</strong></p>
<p dir="auto">Zu den nächsten Schritten gehören unter anderem:</p>
<ul>
<li>weitere Funktionen des Standventilators zuordnen</li>
<li>Friendly States weiter überarbeiten</li>
<li>numerische Betriebsarten mit verständlichen Bezeichnungen versehen</li>
<li>Oszillationsmodi verständlich darstellen</li>
<li>Funktionen des Luftbefeuchters genauer zuordnen</li>
<li>weitere beschreibbare States systematisch testen</li>
<li>Grenzwerte und Abhängigkeiten prüfen</li>
<li>automatisierte Adaptertests ergänzen</li>
<li>weitere DREO-Geräte testen</li>
<li>dynamische Erkennung neu hinzugefügter Geräte weiter ausbauen</li>
<li>Dokumentation erweitern</li>
</ul>
<p dir="auto"><strong>Installation zum Testen</strong></p>
<p dir="auto">Der Adapter kann derzeit direkt aus GitHub installiert werden:</p>
<p dir="auto"><a href="https://github.com/mehrwiedu/ioBroker.dreo" rel="nofollow ugc">https://github.com/mehrwiedu/ioBroker.dreo</a></p>
<p dir="auto">Die SDK ist als npm-Paket verfügbar und wird bei der Installation des Adapters automatisch mit installiert:<br />
<a class="plugin-mentions-user plugin-mentions-a" href="/user/mehrwiedu" aria-label="Profile: mehrwiedu">@<bdi>mehrwiedu</bdi></a>/dreo-api</p>
<p dir="auto">Da es sich noch um eine frühe Version handelt, sollte der Adapter vorerst nur von Anwendern getestet werden, die mit GitHub-Installationen, ioBroker-Logs und der ioBroker-Objektstruktur vertraut sind.</p>
<p dir="auto"><strong>Rückmeldungen zu weiteren Geräten</strong></p>
<p dir="auto">Ich freue mich besonders über Rückmeldungen zu weiteren DREO-Geräten.</p>
<p dir="auto">Interessant wären dabei insbesondere:</p>
<ul>
<li>genaue Modellbezeichnung</li>
<li>erkannte Datenpunkte</li>
<li>Rohzustände des Geräts</li>
<li>fehlende Funktionen</li>
<li>unpassend zugeordnete Friendly States</li>
<li>Ergebnisse von Schreibtests</li>
<li>Logausgaben bei Problemen</li>
</ul>
<p dir="auto">Bitte keine DREO-Zugangsdaten, Tokens oder andere persönliche Daten im Forum veröffentlichen.</p>
<p dir="auto">Das Projekt ist aus meinem eigenen Smart-Home-Setup und meinen persönlichen Anforderungen entstanden. Ich möchte es aber gerne so weiterentwickeln, dass auch andere ioBroker-Nutzer ihre DREO-Geräte sinnvoll und möglichst verständlich einbinden können.</p>
<p dir="auto">Falls das hier nicht gewünscht ist oder in einem falschen Unterforum steht, bitte ich es zu verschieben oder zu löschen. Ich bin zwar schon sehr lange Mitglied hier im Forum, aber eher im Hintergrund aktiv und nicht wirklich in einer aktiven Entwickler Rolle unterwegs. Dieses Projekt hielt ich aber für teilenswert und wollte es daher der Community nicht vorenthalten.</p>
<p dir="auto">Gruß, mehrwiedu</p>
]]></description><link>https://forum.iobroker.net/topic/84977/möglicher-neuer-dreo-adapter-für-iobroker-testversion</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84977/möglicher-neuer-dreo-adapter-für-iobroker-testversion</guid><dc:creator><![CDATA[mehrwiedu]]></dc:creator><pubDate>Wed, 15 Jul 2026 16:30:42 GMT</pubDate></item><item><title><![CDATA[Tester gesucht für PV-Batterie Sim (ioBroker.pv-storage-sim)]]></title><description><![CDATA[<h1>[Neuer Adapter] pv-storage-sim – Lohnt sich ein Batteriespeicher? Simulation mit euren echten Daten</h1>
<p dir="auto">Hallo zusammen,</p>
<p dir="auto">ich stehe – wie vermutlich viele hier – vor der Frage: <strong>Lohnt sich ein Batteriespeicher zu meiner PV-Anlage eigentlich wirtschaftlich?</strong> Statt mit Online-Rechnern und Durchschnittswerten zu raten, habe ich einen Adapter gebaut, der die Frage mit den <strong>echten Daten des eigenen Hauses</strong> beantwortet.</p>
<h2>Was macht der Adapter?</h2>
<p dir="auto"><strong>iobroker.pv-storage-sim</strong> simuliert parallel zum realen Betrieb, was ein <em>hypothetischer</em> Speicher tun würde: Überschüsse werden virtuell „geladen" statt eingespeist, Defizite virtuell aus dem Speicher gedeckt statt aus dem Netz bezogen. Daraus entstehen fortlaufend:</p>
<ul>
<li>Netzbezug/Einspeisung <strong>mit vs. ohne Speicher</strong> (Tag + gesamt)</li>
<li><strong>Ersparnis in €</strong> (Tag / Monat / Jahr / gesamt)</li>
<li>Speicher-Deckungsgrad, Vollzyklen, simulierter Ladezustand</li>
<li>eine <strong>Amortisations-Schätzung</strong> (erst ab 14 Tagen Datenbasis, optional mit Strompreissteigerung %/Jahr)</li>
</ul>
<p dir="auto">Der Adapter ist <strong>rein lesend</strong> – er liest nur eure vorhandenen Datenpunkte und schreibt ausschließlich unter seine eigene Instanz. Auf dem Produktivsystem also gefahrlos.</p>
<h2>Features</h2>
<ul>
<li><strong>Flexible Datenquellen:</strong> PV-Erzeugung + Hausverbrauch, Zweirichtungszähler (zwei Datenpunkte) <strong>oder ein einzelner vorzeichenbehafteter Netz-Datenpunkt</strong> (z. B. OBIS 16.7.0 vom Smartmeter)</li>
<li>Eingabe als <strong>Leistung (W)</strong> oder <strong>Zählerstand (kWh)</strong>, Einheit je Datenpunkt wählbar (W/kW bzw. kWh/Wh)</li>
<li>Lesemodus <strong>zyklisch oder ereignisbasiert</strong> (Subscribe, zeitgewichtete Integration jeder Wertänderung)</li>
<li><strong>Speicher-Vorlagen</strong> für gängige Modelle (Huawei LUNA2000/S1, BYD HVS, Tesla Powerwall 2, LG RESU, sonnen, E3/DC) inkl. Lade-/Entladeleistung, Wirkungsgrad und <strong>Standby-Verbrauch</strong> – oder komplett eigene Werte</li>
<li>Realistisches Modell: Roundtrip-Wirkungsgrad, Lade-/Entladeleistungs-Grenzen, Mindest-SoC, Standby-Verbrauch des Speichersystems</li>
<li><strong>Eigener Admin-Tab „PV-Auswertung"</strong>: Tageskurven (mit/ohne Speicher, Speicherleistung, Ladezustand), Zoom per Maus-Aufziehen, Monatsansicht der Tagesersparnis, Amortisations-Prognose mit Break-even</li>
<li><strong>Fertige SVG-Charts als Datenpunkte</strong> (<code>charts.*</code>) – direkt in VIS oder jedem anderen Dashboard anzeigbar, ganz ohne Zusatz-Adapter</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/1784102803156-096cba8b-0d06-43d5-84bc-c3d33b8a03ee-image.jpeg" alt="096cba8b-0d06-43d5-84bc-c3d33b8a03ee-image.jpeg" class=" img-fluid img-markdown" /><br />
<img src="/assets/uploads/files/1784102815966-77355444-f7da-4537-858c-5ec96c3a0f21-image-resized.jpeg" alt="77355444-f7da-4537-858c-5ec96c3a0f21-image.jpeg" class=" img-fluid img-markdown" /></p>
<h2>Erste eigene Erfahrung</h2>
<p dir="auto">Bei mir läuft der Adapter seit ~2 Wochen produktiv (Smartmeter mit saldiertem Datenpunkt, simulierter 10-kWh-Speicher): im Schnitt ~1,25 €/Tag Ersparnis im Hochsommer – der Winter wird das relativieren, genau dafür ist die Langzeit-Messung ja da.</p>
<h2>Installation (Beta, noch nicht im offiziellen Repo)</h2>
<p dir="auto">iobroker url Backes89/ioBroker.pv-storage-sim#v0.0.41<br />
iobroker upload pv-storage-sim</p>
<p dir="auto">Danach Instanz anlegen/starten und in den Instanzeinstellungen die Datenquelle + Datenpunkte wählen. Für die Verlaufs-Diagramme im Admin-Tab bitte History-Logging (history/sql/influxdb) auf den <code>live.*</code>-Datenpunkten und <code>battery.soc.percent</code> aktivieren (steht auch als Hinweis in der Config); der „Heute"-Chart und die SVG-Charts funktionieren auch ohne.</p>
<p dir="auto"><strong>Voraussetzungen:</strong> js-controller ≥ 5, Admin ≥ 6, Node ≥ 18</p>
<h2>Wobei ich Feedback brauche</h2>
<ul>
<li><strong>Andere Zähler-Konstellationen:</strong> Ich teste primär den Modus „ein Datenpunkt mit Vorzeichen". Wer PV+Verbrauch getrennt hat, einen Zweirichtungszähler mit zwei Datenpunkten oder <strong>Zählerstände statt Leistungen</strong> liefert – euer Feedback ist Gold wert.</li>
<li><strong>Speicher-Vorlagen:</strong> Die technischen Werte sind Richtwerte aus öffentlichen Quellen. Wer eines der Geräte besitzt: bitte gegen das Datenblatt prüfen und Abweichungen melden.</li>
<li>Der <strong>ereignisbasierte Lesemodus</strong> (Subscribe) ist neu – Erfahrungen mit schnell taktenden Zählern interessieren mich.</li>
<li>Und natürlich alles, was komisch aussieht: Am liebsten als <strong>GitHub-Issue</strong> mit Screenshot.</li>
</ul>
<h2>Links</h2>
<ul>
<li>GitHub: <a href="https://github.com/Backes89/ioBroker.pv-storage-sim" rel="nofollow ugc">https://github.com/Backes89/ioBroker.pv-storage-sim</a></li>
<li>Issues: <a href="https://github.com/Backes89/ioBroker.pv-storage-sim/issues" rel="nofollow ugc">https://github.com/Backes89/ioBroker.pv-storage-sim/issues</a></li>
<li>Changelog &amp; Doku im README (englisch, deutsche Fassung unter docs/de/)</li>
</ul>
<p dir="auto">Technischer Unterbau, falls es jemanden interessiert: getestete Kernlogik (56 Unit-Tests), offizielle <a class="plugin-mentions-user plugin-mentions-a" href="/user/iobroker" aria-label="Profile: iobroker">@<bdi>iobroker</bdi></a>/testing-Paket- und Integrationstests, CI auf Node 18/20/22 inkl. ESLint/Typecheck.</p>
<p dir="auto">Danke fürs Testen!</p>
]]></description><link>https://forum.iobroker.net/topic/84975/tester-gesucht-für-pv-batterie-sim-iobroker.pv-storage-sim</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84975/tester-gesucht-für-pv-batterie-sim-iobroker.pv-storage-sim</guid><dc:creator><![CDATA[Backes]]></dc:creator><pubDate>Wed, 15 Jul 2026 08:08:32 GMT</pubDate></item><item><title><![CDATA[RAM Auslastung durch Javascript]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">ich habe einen Pi 4 mit 4 GB RAM und ein sehr ausgeprägtes JavaSkript mit etlichen Blocklys.</p>
<p dir="auto">In letzter Zeit stürzt mein iobroker öfters ab und mir ist aufgefallen, dass der RAM der Javascript Instanz auf 470 MB steht.</p>
<p dir="auto">Wie finde ich heraus, welches der ca. 200 Skripten ein Problem ist und den RAM so nach oben treibt?</p>
]]></description><link>https://forum.iobroker.net/topic/84973/ram-auslastung-durch-javascript</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84973/ram-auslastung-durch-javascript</guid><dc:creator><![CDATA[Mika 0]]></dc:creator><pubDate>Mon, 13 Jul 2026 20:11:13 GMT</pubDate></item><item><title><![CDATA[Lovelace Enhanced-Entities-Card]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">da mir die Default-Entities-Karte zu starr war und andere Custom-Cards teils zu aufwändig zu bearbeiten waren, habe ich eine erweiterte Entities-Karte erstellt.</p>
<p dir="auto"><img src="/assets/uploads/files/1783970602876-image.png" alt="image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Hier die Funktionen der Enhanced Entities Card im Überblick:<br />
Pro Zeile (Entity):</p>
<ul>
<li>Statische Icon-Farbe (icon_color)</li>
<li>Zustandsabhängiges Icon &amp; Farbe – entweder als true/false-Map (matcht auch on/off, 1/0, yes/no, Groß-/Kleinschreibung egal) oder als Zahlenschwellen (höchster Schwellwert ≤ aktueller Wert gewinnt)</li>
<li>Farbverlauf (color_gradient) – Icon-Farbe wird linear zwischen den Schwellwert-Farben interpoliert (z. B. 20 = gelb, 30 = rot → 25 = orange); braucht Hex-Farben</li>
<li>Wert inline – wenn name leer/weggelassen ist, steht der Wert direkt neben dem Icon statt rechtsbündig</li>
<li>Tap-Aktion (action): more-info (Standard), toggle (schaltet die Entity) oder none (nur lesend)</li>
<li>Wert ausblenden (hide_state) – z. B. für reine Schalter</li>
<li>Icon rechts (icon_position: right) statt links</li>
</ul>
<p dir="auto">Sonderzeilen (im Editor frei einsortierbar):</p>
<ul>
<li>Trennlinie (type: divider) – 1px in der Kartenrandfarbe, fester 5px-Seitenabstand</li>
<li>Markdown-Zeile (type: markdown) – Markdown-Text mit optionaler Ausrichtung (links/zentriert/rechts); löst live iobroker.object.id-Templates auf; unterstützt Links &amp; Bilder; fester 10px-Seitenabstand</li>
</ul>
<p dir="auto">Globale Darstellungsoptionen:</p>
<ul>
<li>Schriftgröße</li>
<li>Zeilenabstand</li>
<li>Abstand je Entität (oben/unten/rechts/links)</li>
<li>Icon-Größe (Standard 24px)</li>
<li>Icon-Abstand (Icon→Text, Standard 8px)</li>
<li>Optionaler Titel</li>
</ul>
<p dir="auto">Editor &amp; Technik:</p>
<ul>
<li>Voller GUI-Editor: Datenpunkt-Suche (ha-entity-picker), Icon-Suche (ha-icon-picker), Farb-Picker + Hex-Feld, Modus-Wahl statisch/boolesch/numerisch, Zeilen hinzufügen (Entity/Divider/Markdown), verschieben (▲▼) und löschen</li>
<li>Rendert im Light DOM, dadurch sind mehrere Instanzen auf einer Seite voneinander unabhängig</li>
</ul>
<p dir="auto">Ich könnt die Karte hier herunterladen: <a href="https://github.com/bmueller77/enhanced-entities-card" rel="nofollow ugc">https://github.com/bmueller77/enhanced-entities-card</a></p>
<p dir="auto">Ich freue mich auf euer Feedback und bin gespannt, was ihr damit baut. Zeigt es hier gerne.</p>
<p dir="auto"><img src="/assets/uploads/files/1783970602883-image2.png" alt="image2.png" class=" img-fluid img-markdown" /> <img src="/assets/uploads/files/1783970602893-image3.png" alt="image3.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/topic/84972/lovelace-enhanced-entities-card</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84972/lovelace-enhanced-entities-card</guid><dc:creator><![CDATA[bmueller]]></dc:creator><pubDate>Mon, 13 Jul 2026 18:24:23 GMT</pubDate></item><item><title><![CDATA[VIS2 Seiten importieren]]></title><description><![CDATA[<p dir="auto">Hallo,<br />
ich habe vor einigen Monaten meine Raspberry auf die TRIXIE 64 Bit  Variante umgestellt.<br />
In diesem Zusammenhang habe ich auch auf VIS2 mit einer Offline Lizenz aufgesetzt.<br />
Das Script der Seiten, die ich erstellt habe, konnte ich über den übliche Weg aus meiner Anwendung in einen Text-File exportieren.<br />
Aber leider kann ich diese oder Andere Seiten nicht mehr importieren. Das exportiere Script lässt sich nicht über den Imort-Button importieren.<br />
Was mache ich falsch?<br />
Ausserdem würde ich gern das VIS Design auf hell (weiss) umstellen. Das lässt sich<br />
leider auch nicht durchführen. Wo liegt das Problem?</p>
]]></description><link>https://forum.iobroker.net/topic/84971/vis2-seiten-importieren</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84971/vis2-seiten-importieren</guid><dc:creator><![CDATA[pfehse]]></dc:creator><pubDate>Mon, 13 Jul 2026 15:49:51 GMT</pubDate></item><item><title><![CDATA[[erledigt] node.js-Update schiefgegangen]]></title><description><![CDATA[<p dir="auto">Ein Bekannter hatte node.js updaten wollen über die ioBroker-Oberfläche. Das ging schief mit folgender Meldung:<br />
<img src="/assets/uploads/files/1783956324446-bildschirmfoto-vom-2026-07-10-12-27-17.png" alt="Bildschirmfoto vom 2026-07-10 12-27-17.png" class=" img-fluid img-markdown" /><br />
Ich hatte ihm dann geraten (vielleicht war das falsch), im Terminal</p>
<pre><code>iob stop
iob fix
iob nodejs-update
iob start
</code></pre>
<p dir="auto">auszuführen. Danach startet sein ioBroker nicht mehr. Jetzt ist guter Rat teuer.<br />
Die Ausgabe des iob fix lautet:</p>
<pre><code>pi@iobroker:~ $ iob stop
pi@iobroker:~ $ iob fix
library: loaded
Library version=2026-04-11

==========================================================================

    Welcome to the ioBroker installation fixer!
    Script version: 2025-09-18

    You might need to enter your password a couple of times.

==========================================================================


==========================================================================
    Installing prerequisites (1/5)
==========================================================================

Holen:1 http://archive.raspberrypi.org/debian bullseye InRelease [39,0 kB]
Holen:2 http://security.debian.org/debian-security bullseye-security InRelease [27,2 kB]
OK:3 http://deb.debian.org/debian bullseye InRelease
OK:4 http://deb.debian.org/debian bullseye-updates InRelease
OK:6 https://deb.nodesource.com/node_20.x nodistro InRelease
Holen:7 https://repos.influxdata.com/debian bullseye InRelease [12,9 kB]
Holen:5 https://repos.influxdata.com/debian stable InRelease [6.922 B]
OK:8 https://apt.debmatic.de/debmatic stable InRelease
Holen:9 http://security.debian.org/debian-security bullseye-security/main arm64 Packages [460 kB]
Holen:10 http://security.debian.org/debian-security bullseye-security/main armhf Packages [455 kB]
Holen:11 http://security.debian.org/debian-security bullseye-security/main Translation-en [312 kB]
Holen:12 http://archive.raspberrypi.org/debian bullseye/main arm64 Packages [323 kB]
Holen:13 http://archive.raspberrypi.org/debian bullseye/main armhf Packages [330 kB]
Holen:14 https://repos.influxdata.com/debian bullseye/stable armhf Packages [10,7 kB]
Holen:15 https://repos.influxdata.com/debian bullseye/stable arm64 Packages [28,1 kB]
Holen:16 https://repos.influxdata.com/debian stable/main arm64 Packages [28,1 kB]
Holen:17 https://repos.influxdata.com/debian stable/main armhf Packages [10,7 kB]
Es wurden 2.043 kB in 4 s geholt (506 kB/s).
Paketlisten werden gelesen… Fertig
E: Paket polkitd kann nicht gefunden werden.
Installed polkitd

==========================================================================
    Checking ioBroker user and directory permissions (2/5)
==========================================================================

Created /etc/sudoers.d/iobroker
Fixing directory permissions...
ACL enabled: true

==========================================================================
    Check and cleanup npm temporary directories (3/5)
==========================================================================

Done.

==========================================================================
    Database maintenance (4/5)
==========================================================================

Checking for uncompressed JSONL databases... This might take a while!

Compressing /opt/iobroker/iobroker-data/states.jsonl
Compressing /opt/iobroker/iobroker-data/objects.jsonl
Compressed 2 JSONL files. Done

==========================================================================
    Checking autostart (5/5)
==========================================================================

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Legitimierung ist zum Stoppen von »iobroker.service« notwendig.
Authenticating as: ,,, (pi)
Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure
Enabling autostart...
Autostart enabled!

==========================================================================

    Your installation was fixed successfully
    Run iobroker start to start ioBroker again!

==========================================================================

pi@iobroker:~ $ iob nodejs-update

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

[sudo] Passwort für pi:
Das hat nicht funktioniert, bitte nochmal probieren.
[sudo] Passwort für pi:
[INFO] No specific version given. Installing recommended version from Node.js v.22 tree.
[INFO] Current Node.js version: v20.20.2
[INFO] Stopping ioBroker with 'iob stop'...
[INFO] ioBroker stopped successfully.
[INFO] Node.js paths are correct.
[INFO] Removing old Node.js versions...
(Lese Datenbank ... 75868 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von nodejs (20.20.2-1nodesource1) ...
Trigger für man-db (2.9.4-2) werden verarbeitet ...
[INFO] Setting up NodeSource repository for Node.js 22...
[INFO] Downloading NodeSource GPG key...
[INFO] Verifying GPG key fingerprint...
[ERROR] NodeSource GPG key fingerprint mismatch! Expected: 6F71F525282841EEDAF851B42F59B5F99B1BE0B4, Got: pubrsa20482016-05-23[SC]
[INFO] Cleaning up temporary files...
pi@iobroker:~ $ iob start
pi@iobroker:~ $ Connection to 192.168.10.23 closed by remote host.
Connection to 192.168.10.23 closed.
norbert@Tower:~$ ls 
</code></pre>
<p dir="auto">Und die iob diag lautet:</p>
<pre><code>
========== Start marking the full check here ===========

```bash
Script v.2026-06-06

*** BASE SYSTEM ***
Operating System: Debian GNU/Linux 11 (bullseye)
   Static hostname: iobroker
         Icon name: computer
            Kernel: Linux 6.1.21-v8+
      Architecture: arm64
OS is similar to:

Model        : Raspberry Pi 4 Model B Rev 1.4

Docker          : false
Virtualization  : none
Unknown

Kernel          : aarch64
Userland        : 64bit

System was installed 1167 days ago (on 2023-05-03).

Systemuptime and Load:
 17:25:37 up  1:17,  1 user,  load average: 0.52, 0.24, 0.13
CPU threads     : 4

*** LIFE CYCLE STATUS ***
Debian Release codenamed 'bullseye' reached its END OF LIFE and needs to be updated to the latest stable release 'trixie' NOW!

*** RASPBERRY THROTTLING ***
Current issues:
No throttling issues detected.

Previously detected issues:
No throttling issues detected.

*** TIME AND TIMEZONES ***
               Local time: Mon 2026-07-13 17:25:38 CEST
           Universal time: Mon 2026-07-13 15:25:38 UTC
                 RTC time: n/a
                Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

*** Users and Groups ***
User that called 'iob diag':
pi
HOME=/home/pi
GROUPS=pi adm dialout cdrom sudo audio video plugdev games users input render netdev gpio i2c spi iobroker

User that is running 'js-controller':
js-controller is not running

*** DISPLAY-SERVER SETUP ***
Display-Server:        Unknown
Display-Manager:     Not found
Desktop:
Session:        tty
Boot Target:         multi-user.target

*** MEMORY ***
               total        used        free      shared buff/cache   available
Mem:            7.8G        559M        6.6G        1.0M 698M        7.1G
Swap:            99M          0B         99M
Total:          7.9G        559M        6.7G

Active iob-Instances:     0

         7812 M total memory
          559 M used memory
          692 M active memory
          429 M inactive memory
         6553 M free memory
          111 M buffer memory
          586 M swap cache
           99 M total swap
            0 M used swap
           99 M free swap

*** top - Table Of Processes  ***
top - 17:25:38 up  1:17,  1 user,  load average: 0.52, 0.24, 0.13
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  2.9 sy,  0.0 ni, 97.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7812.3 total,   6553.7 free,    559.8 used,    698.8 buff/cache
MiB Swap:    100.0 total,    100.0 free,      0.0 used.   7129.6 avail Mem

*** FAILED SERVICES ***
  UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.

*** DMESG CRITICAL ERRORS ***
No critical errors detected

*** FILESYSTEM ***
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/root      ext4       15G  9.4G  4.5G  68% /
devtmpfs       devtmpfs  3.6G     0  3.6G   0% /dev
tmpfs          tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs     1.6G  1.2M  1.6G   1% /run
tmpfs          tmpfs     5.0M  8.0K  5.0M   1% /run/lock
/dev/mmcblk0p1 vfat      255M   31M  225M  13% /boot
tmpfs          tmpfs     782M     0  782M   0% /run/user/1000

Messages concerning filesystems in dmesg:
[Mon Jul 13 16:08:07 2026] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: none.
[Mon Jul 13 16:08:07 2026] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[Mon Jul 13 16:08:09 2026] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: none.

Show mounted filesystems:
TARGET  SOURCE         FSTYPE OPTIONS
/       /dev/mmcblk0p2 ext4   rw,noatime
`-/boot /dev/mmcblk0p1 vfat  rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro

Files in neuralgic directories:
/var:
2.5G    /var/
1.5G    /var/log/journal/297c1fff0b9b4fe1a513ed96313947f0
1.5G    /var/log/journal
1.5G    /var/log
603M    /var/cache
Archived and active journals take up 1.4G in the file system.

/opt/iobroker/backups:
146M    /opt/iobroker/backups/

/opt/iobroker/iobroker-data:
478M    /opt/iobroker/iobroker-data/
374M    /opt/iobroker/iobroker-data/files
91M    /opt/iobroker/iobroker-data/backup-objects
80M    /opt/iobroker/iobroker-data/files/vis
73M    /opt/iobroker/iobroker-data/files/vis/widgets

The five largest files in iobroker-data are:
41M /opt/iobroker/iobroker-data/files/material/static/js/main.c5478f66.js.map
14M    /opt/iobroker/iobroker-data/objects.jsonl
9.9M /opt/iobroker/iobroker-data/files/material/static/js/main.c5478f66.js
9.8M /opt/iobroker/iobroker-data/files/vis-2/material-icons/knx-uf.json
7.5M /opt/iobroker/iobroker-data/files/backitup.admin/assets/index-BeQV_TGa.js

USB-Devices by-id:
USB-Sticks - Avoid direct links to /dev/tty* in your adapter setups,
please always prefer the links 'by-id':

No Devices found 'by-id'
No nvbackup.json found.

*** NodeJS-Installation ***





*** Node.js is NOT correctly installed ***
Issues:  nodejs path x node path x npm path x npx path
Execute 'iob nodejs-update' in your terminal.
nodejs:
  Installed: (none)
  Candidate: 12.22.12~dfsg-1~deb11u8
  Version table:
     12.22.12~dfsg-1~deb11u8 500
        500 http://security.debian.org/debian-security bullseye-security/main arm64 Packages
     12.22.12~dfsg-1~deb11u4 500
        500 http://deb.debian.org/debian bullseye/main arm64 Packages

Temp directories causing deletion problem: 0
No problems detected

Errors in npm tree: 0
No problems detected

*** ioBroker-Installation ***
ioBroker Status
sudo: node: command not found

Hosts:
sudo: node: command not found

Core adapters versionssudo: node: command not found

js-controller:     sudo: node: command not found

admin:         sudo: node: command not found

javascript:

nodejs modules from github:     0


Adapter State


Enabled adapters with bindings


ioBroker-Repositories
sudo: node: command not found


Installed ioBroker-Adapters
sudo: node: command not found


ioBroker-Adapter Versions and update status
sudo: node: command not found


Objects and States
Please stand by - This may take a while

Objects:     0
States:     0

*** OS-Repositories and Updates ***

Hit:2 http://security.debian.org/debian-security bullseye-security InRelease
Hit:3 http://deb.debian.org/debian bullseye InRelease
Hit:4 http://deb.debian.org/debian bullseye-updates InRelease
Hit:5 http://archive.raspberrypi.org/debian bullseye InRelease
Get:6 https://repos.influxdata.com/debian bullseye InRelease [12.9 kB]
Hit:7 https://apt.debmatic.de/debmatic stable InRelease
Get:1 https://repos.influxdata.com/debian stable InRelease [6922 B]
Fetched 19.8 kB in 2s (11.4 kB/s)
Reading package lists...

Pending systemupdates: 32

*** Listening Ports ***
Netid State  Recv-Q Send-Q Local Address:Port          Peer Address:PortProcess
udp   UNCONN 0      0          127.0.0.1:8182  0.0.0.0:*    users:(("hss_led",pid=1059,fd=3))
udp   UNCONN 0      0            0.0.0.0:bootpc  0.0.0.0:*    users:(("dhcpcd",pid=911,fd=13))
udp   UNCONN 0      0            0.0.0.0:mdns  0.0.0.0:*    users:(("avahi-daemon",pid=422,fd=12))
udp   UNCONN 0      0            0.0.0.0:1900  0.0.0.0:*    users:(("ssdpd",pid=1064,fd=3))
udp   UNCONN 0      0          127.0.0.1:1998  0.0.0.0:*    users:(("ReGaHss.normal",pid=1335,fd=4))
udp   UNCONN 0      0            0.0.0.0:43439 0.0.0.0:*    users:(("eq3configd",pid=1057,fd=3))
udp   UNCONN 0      0            0.0.0.0:52347 0.0.0.0:*    users:(("avahi-daemon",pid=422,fd=14))
udp   UNCONN 0      0                  *:dhcpv6-client *:*    users:(("dhcpcd",pid=911,fd=16))
udp   UNCONN 0      0                  *:mdns  *:*    users:(("avahi-daemon",pid=422,fd=13))
udp   UNCONN 0      0                  *:58610 *:*    users:(("java",pid=1174,fd=7))
udp   UNCONN 0      0                  *:34470 *:*    users:(("avahi-daemon",pid=422,fd=15))
tcp   LISTEN 0      1024         0.0.0.0:8181  0.0.0.0:*    users:(("lighttpd",pid=633,fd=6))
tcp   LISTEN 0      24           0.0.0.0:8183  0.0.0.0:*    users:(("ReGaHss.normal",pid=1335,fd=3))
tcp   LISTEN 0      100          0.0.0.0:32001 0.0.0.0:*    users:(("rfd",pid=1135,fd=3))
tcp   LISTEN 0      5            0.0.0.0:31999 0.0.0.0:*    users:(("ReGaHss.normal",pid=1335,fd=6))
tcp   LISTEN 0      1024       127.0.0.1:30080 0.0.0.0:*    users:(("lighttpd",pid=1090,fd=4))
tcp   LISTEN 0      1024         0.0.0.0:2010  0.0.0.0:*    users:(("lighttpd",pid=633,fd=10))
tcp   LISTEN 0      1024         0.0.0.0:cisco-sccp  0.0.0.0:*    users:(("lighttpd",pid=633,fd=16))
tcp   LISTEN 0      1024         0.0.0.0:2001  0.0.0.0:*    users:(("lighttpd",pid=633,fd=14))
tcp   LISTEN 0      1024         0.0.0.0:1999  0.0.0.0:*    users:(("lighttpd",pid=633,fd=8))
tcp   LISTEN 0      1024         0.0.0.0:9292  0.0.0.0:*    users:(("lighttpd",pid=633,fd=12))
tcp   LISTEN 0      128          0.0.0.0:ssh 0.0.0.0:*    users:(("sshd",pid=612,fd=3))
tcp   LISTEN 0      1024         0.0.0.0:http  0.0.0.0:*    users:(("lighttpd",pid=633,fd=4))
tcp   LISTEN 0      4096               *:8086  *:*    users:(("influxd",pid=441,fd=502))
tcp   LISTEN 0      1024            [::]:8181 [::]:*    users:(("lighttpd",pid=633,fd=7))
tcp   LISTEN 0      4096               *:32010 *:*    users:(("java",pid=1174,fd=43))
tcp   LISTEN 0      4096               *:39292 *:*    users:(("java",pid=1174,fd=75))
tcp   LISTEN 0      1024            [::]:2010 [::]:*    users:(("lighttpd",pid=633,fd=11))
tcp   LISTEN 0      1024            [::]:cisco-sccp [::]:*    users:(("lighttpd",pid=633,fd=17))
tcp   LISTEN 0      1024            [::]:2001 [::]:*    users:(("lighttpd",pid=633,fd=15))
tcp   LISTEN 0      1024            [::]:1999 [::]:*    users:(("lighttpd",pid=633,fd=9))
tcp   LISTEN 0      1024            [::]:9292 [::]:*    users:(("lighttpd",pid=633,fd=13))
tcp   LISTEN 0      4096               *:9293  *:*    users:(("java",pid=1174,fd=66))
tcp   LISTEN 0      4096               *:9294  *:*    users:(("java",pid=1174,fd=67))
tcp   LISTEN 0      128             [::]:ssh  [::]:*    users:(("sshd",pid=612,fd=4))
tcp   LISTEN 0      1024            [::]:http [::]:*    users:(("lighttpd",pid=633,fd=5))


*** Log File - Last 25 Lines ***
2026-07-13 15:08:40.070  - warn: host.iobroker instance system.adapter.javascript.0 terminated due to SIGKILL
2026-07-13 15:08:40.070  - info: host.iobroker instance system.adapter.javascript.0 terminated with code null ()
2026-07-13 15:08:40.070  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.298  - warn: host.iobroker instance system.adapter.pushover.0 terminated due to SIGKILL
2026-07-13 15:08:40.299  - info: host.iobroker instance system.adapter.pushover.0 terminated with code null ()
2026-07-13 15:08:40.299  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.299  - warn: host.iobroker instance system.adapter.hm-rega.0 terminated due to SIGKILL
2026-07-13 15:08:40.300  - info: host.iobroker instance system.adapter.hm-rega.0 terminated with code null ()
2026-07-13 15:08:40.300  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.300  - warn: host.iobroker instance system.adapter.hm-rpc.0 terminated due to SIGKILL
2026-07-13 15:08:40.300  - info: host.iobroker instance system.adapter.hm-rpc.0 terminated with code null ()
2026-07-13 15:08:40.300  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.300  - warn: host.iobroker instance system.adapter.shelly.0 terminated due to SIGKILL
2026-07-13 15:08:40.300  - info: host.iobroker instance system.adapter.shelly.0 terminated with code null ()
2026-07-13 15:08:40.300  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.301  - warn: host.iobroker instance system.adapter.echarts.0 terminated due to SIGKILL
2026-07-13 15:08:40.301  - info: host.iobroker instance system.adapter.echarts.0 terminated with code null ()
2026-07-13 15:08:40.301  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.301  - warn: host.iobroker instance system.adapter.signal-cmb.0 terminated due to SIGKILL
2026-07-13 15:08:40.301  - info: host.iobroker instance system.adapter.signal-cmb.0 terminated with code null ()
2026-07-13 15:08:40.301  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.301  - warn: host.iobroker instance system.adapter.web.0 terminated due to SIGKILL
2026-07-13 15:08:40.301  - info: host.iobroker instance system.adapter.web.0 terminated with code null ()
2026-07-13 15:08:40.302  - info: host.iobroker All instances are stopped.
2026-07-13 15:08:40.372  - info: host.iobroker terminated
</code></pre>
<p dir="auto">============= Mark until here for C&amp;P =============</p>
<p dir="auto">iob diag has finished.</p>
<pre><code></code></pre>
]]></description><link>https://forum.iobroker.net/topic/84970/erledigt-node.js-update-schiefgegangen</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84970/erledigt-node.js-update-schiefgegangen</guid><dc:creator><![CDATA[iobroker2001]]></dc:creator><pubDate>Mon, 13 Jul 2026 15:33:00 GMT</pubDate></item><item><title><![CDATA[dynamische SVG-Generierung: Wifi, RF, Temp, Humi, CO2, Noise]]></title><description><![CDATA[<p dir="auto">Hier wieder ein paar Beispiele zum diverse Symbole dynamisch zu generieren.<br />
<img src="/assets/uploads/files/1783954196657-365fecc4-a8e5-4d15-9b94-6ad6461d2b04-image.jpeg" alt="365fecc4-a8e5-4d15-9b94-6ad6461d2b04-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1783954223454-53d726c6-ba86-47d1-97c3-b4dae17f0beb-image.jpeg" alt="53d726c6-ba86-47d1-97c3-b4dae17f0beb-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Wichtig ist, es entsteht ein SVG-Code. Dieser sollte muss in einem Datenpunkt gespeichert werden. Die Darstellung erfolgt via dem Widget <strong>String (unescaped)</strong>.</p>
<pre><code>//Erst-Version 1.0.0 - 13.07.2026
//Ersteller Ro75.
 
//Voraussetzungen (Version 1.0.0 getestet mit)
//NodeJS: 22.22.x
//Javascript-Adapter: 9.0.18
//Admin-Adapter: 7.8.23
//js-controler: 7.2.2
</code></pre>
<h2>Wifi / RF:</h2>
<pre><code>function createConnectivitySvg(type, value, color, inactiveColor = "#bdc0c2") {
    // type: 1 = Wifi, 2 = Signal

    let level = 3;
    if (value &gt; 83) {
        level = 1;
    } else if (value &gt; 68) {
        level = 2;
    }

    let svg = '';

    if (type === 1) {
        const fillBottom = color;
        const fillMiddle = level &gt;= 2 ? color : inactiveColor;
        const fillTop = level &gt;= 3 ? color : inactiveColor;

        svg = `&lt;svg height="100%" width="100%" version="1.1" viewBox="-31.7 -31.7 380.42 380.42" xmlns="http://www.w3.org/2000/svg" fill="#000000" stroke="#000000" stroke-width="0.00317016"&gt;&lt;g&gt;&lt;path style="fill:${fillTop};" d="M22.21,134.341L0,112.131c42.401-42.403,98.694-65.755,158.509-65.755 c59.813,0,116.105,23.351,158.507,65.751l-22.21,22.21c-36.469-36.468-84.874-56.552-136.297-56.552 C107.084,77.785,58.679,97.87,22.21,134.341z"/&gt;&lt;path style="fill:${fillMiddle};" d="M63.944,176.075l-22.211-22.21c31.237-31.237,72.709-48.439,116.775-48.439 c44.067,0,85.537,17.201,116.774,48.437l-22.21,22.21c-25.304-25.303-58.888-39.238-94.564-39.238 C122.832,136.835,89.248,150.77,63.944,176.075z"/&gt;&lt;path style="fill:${fillBottom};" d="M105.679,217.811l-22.211-22.21c20.072-20.071,46.723-31.125,75.041-31.125 s54.967,11.053,75.039,31.123l-22.211,22.21c-14.138-14.137-32.898-21.923-52.828-21.923 C138.58,195.885,119.817,203.672,105.679,217.811z"/&gt;&lt;path style="fill:${color};" d="M158.509,224.154c-12.836,0-24.457,5.204-32.871,13.615l32.871,32.871l32.871-32.871 C182.967,229.357,171.345,224.154,158.509,224.154z"/&gt;&lt;/g&gt;&lt;/svg&gt;`;
    } else if (type === 2) {
        const strokeInner = level &gt;= 1 ? color : inactiveColor;
        const strokeMiddle = level &gt;= 2 ? color : inactiveColor;
        const strokeOuter = level &gt;= 3 ? color : inactiveColor;

        svg = `&lt;svg width="100%" height="100%" viewBox="-2.4 -2.4 28.80 28.80" fill="none" xmlns="http://www.w3.org/2000/svg"&gt;&lt;g&gt;&lt;path d="M16.2426 7.75738C18.5858 10.1005 18.5858 13.8995 16.2426 16.2427" stroke="${strokeMiddle}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;path d="M7.75736 16.2426C5.41421 13.8995 5.41421 10.1005 7.75736 7.75735" stroke="${strokeMiddle}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;path d="M4.92893 19.0711C1.02369 15.1658 1.02369 8.8342 4.92893 4.92896" stroke="${strokeOuter}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;path d="M19.0711 4.929C22.9763 8.83424 22.9763 15.1659 19.0711 19.0711" stroke="${strokeOuter}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;path d="M14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12C10 10.8955 10.8954 10 12 10C13.1046 10 14 10.8955 14 12Z" stroke="${strokeInner}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;/g&gt;&lt;/svg&gt;`;
    }

    return svg;
}
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>Wifi</em>:</strong></p>
<pre><code>const value = getState('Datenpunkt.Device.wifiPercent').val;
const svg = createConnectivitySvg(1, value, '#00aaff');
setState('Dein.Speicherdatenpunkt.wifiSvg', svg, true);
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>Signalstärke</em>:</strong></p>
<pre><code>const value = getState('Datenpunkt.Device.signalPercent').val;
const svg = createConnectivitySvg(2, value, '#ff8800');
setState('Dein.Speicherdatenpunkt.signalSvg', svg, true);
</code></pre>
<h2>Temperatur, Feuchtigkeit, CO2, Umgebungslautstärke:</h2>
<pre><code>function createEnvSvg(type, colorHex, strokeColor = "#000000") {
    // type: 1 = Humidity, 2 = Temperature, 3 = CO2, 4 = Noise

    function hexToRgb(hex) {
        hex = hex.replace('#', '');
        const r = parseInt(hex.substring(0, 2), 16);
        const g = parseInt(hex.substring(2, 4), 16);
        const b = parseInt(hex.substring(4, 6), 16);
        return { r: r, g: g, b: b };
    }

    function rgbToHex(r, g, b) {
        const hr = r.toString(16).padStart(2, '0');
        const hg = g.toString(16).padStart(2, '0');
        const hb = b.toString(16).padStart(2, '0');
        return '#' + hr + hg + hb;
    }

    const rgb = hexToRgb(colorHex);
    const darkR = Math.round(rgb.r * 0.85);
    const darkG = Math.round(rgb.g * 0.85);
    const darkB = Math.round(rgb.b * 0.85);
    const darkerHex = rgbToHex(darkR, darkG, darkB);

    let svg = '';

    if (type === 1) {
        svg = `&lt;svg width="100%" height="100%" viewBox="-102.4 -102.4 1228.80 1228.80" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg" fill="${strokeColor}"&gt;&lt;g id="SVGRepo_bgCarrier" stroke-width="0"/&gt;&lt;g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;g id="SVGRepo_iconCarrier"&gt;&lt;path d="M339.7 882.5C196.6 882.5 80.2 766.1 80.2 623c0-133.2 204.8-395.1 228.2-424.5 5.8-7.3 14.5-11.6 23.8-11.7 9.4-0.1 18.1 3.9 24.1 11 1.5 1.8 37.7 44.8 82.2 105.2 10.1 13.8 7.2 33.2-6.6 43.3-13.8 10.1-33.2 7.2-43.3-6.6-21.3-29-40.9-54-55.3-72.1-69.2 92-191.2 271.5-191.2 355.4 0 108.9 88.6 197.6 197.6 197.6S537.3 731.9 537.3 623c0-17.1 13.9-31 31-31s31 13.9 31 31c-0.1 143.1-116.5 259.5-259.6 259.5z" fill="${strokeColor}"/&gt;&lt;path d="M363.7 468.8c-27.9 59.7-46.8 115.7-46.8 158.4 0 164.6 133.4 298 298 298s298-133.4 298-298c0-12.8-1.9-26.9-5.5-41.9-327.2 33.9-284.9-194.9-543.7-116.5z" fill="${colorHex}"/&gt;&lt;path d="M333.6 567.6c-38.2 239.9 123 357.7 287.3 357.7 92.8 0 144.9-12.1 199.6-78.6-261.5 20.7-428.7-99.2-486.9-279.1z" fill="${darkerHex}"/&gt;&lt;path d="M614.9 956.1C433.5 956.1 286 808.5 286 627.2c0-173.4 283.4-532.4 295.5-547.6 5.8-7.3 14.5-11.6 23.8-11.7 9.3-0.1 18.1 3.9 24.1 11 2 2.3 49 58.2 106.8 136.6 10.1 13.8 7.2 33.2-6.6 43.3-13.8 10.1-33.2 7.2-43.3-6.6-31.8-43.2-60.6-79.8-79.9-103.7C517 266.1 347.9 512.3 347.9 627.2c0 147.2 119.8 267 267 267s267-119.8 267-267c0-29.7-13.2-87.9-76.4-196.2-8.6-14.8-3.6-33.7 11.2-42.3 14.8-8.6 33.7-3.6 42.3 11.2 57.1 97.9 84.8 172.2 84.8 227.4 0 181.3-147.6 328.8-328.9 328.8z" fill="${strokeColor}"/&gt;&lt;/g&gt;&lt;/svg&gt;`;
    } else if (type === 2) {
        svg = `&lt;svg height="100%" width="100%" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-51.2 -51.2 614.40 614.40" xml:space="preserve" fill="${strokeColor}"&gt;&lt;g id="SVGRepo_bgCarrier" stroke-width="0"/&gt;&lt;g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;g id="SVGRepo_iconCarrier"&gt;&lt;circle style="fill:${colorHex};" cx="221.32" cy="381.469" r="59.943"/&gt;&lt;g&gt;&lt;path style="fill:${darkerHex};" d="M221.326,455.991c-41.09,0-74.52-33.43-74.52-74.52s33.43-74.52,74.52-74.52 s74.52,33.43,74.52,74.52S262.416,455.991,221.326,455.991z M221.326,336.107c-25.014,0-45.364,20.35-45.364,45.364 s20.35,45.364,45.364,45.364s45.364-20.35,45.364-45.364S246.339,336.107,221.326,336.107z"/&gt;&lt;path style="fill:${darkerHex};" d="M221.361,512c-1.061,0-2.121-0.012-3.187-0.038c-70.33-1.662-127.472-60.279-127.377-130.668 c0.063-46.595,24.418-88.796,64.149-112.209V58.856C154.948,26.403,181.349,0,213.804,0h15.046 c32.453,0,58.856,26.403,58.856,58.856c0,8.051-6.526,14.578-14.578,14.578s-14.578-6.526-14.578-14.578 c0-16.377-13.324-29.701-29.701-29.701h-15.046c-16.377,0-29.701,13.324-29.701,29.701V277.74c0,5.521-3.118,10.567-8.054,13.037 c-34.548,17.286-56.042,51.985-56.093,90.556c-0.073,54.666,44.297,100.191,98.911,101.482c27.549,0.63,53.593-9.582,73.285-28.814 c19.7-19.24,30.549-44.998,30.549-72.528c0-16.546-4.073-32.954-11.779-47.455c-3.779-7.11-1.077-15.936,6.032-19.713 c7.111-3.777,15.936-1.077,19.713,6.032c9.936,18.697,15.189,39.838,15.189,61.136c0,35.449-13.97,68.614-39.333,93.388 C287.924,498.88,255.657,511.999,221.361,512z"/&gt;&lt;path style="fill:${darkerHex};" d="M221.326,283.228c-8.051,0-14.578-6.526-14.578-14.578V151.01c0-8.051,6.526-14.578,14.578-14.578 c8.051,0,14.578,6.526,14.578,14.578v117.64C235.903,276.702,229.377,283.228,221.326,283.228z"/&gt;&lt;path style="fill:${darkerHex};" d="M406.627,194.304H287.704v-30.613h64.823c8.051,0,14.578-6.526,14.578-14.578 s-6.526-14.578-14.578-14.578h-77.941c-0.249,0-0.491,0.025-0.736,0.038c-0.241-0.012-0.478-0.036-0.723-0.036 c-8.051,0-14.578,6.526-14.578,14.578v119.537c0,8.051,6.526,14.578,14.578,14.578c0.246,0,0.487-0.025,0.729-0.036 c0.243,0.012,0.484,0.036,0.729,0.036h77.941c8.051,0,14.578-6.526,14.578-14.578s-6.526-14.578-14.578-14.578h-64.823v-30.613 h118.923c8.051,0,14.578-6.526,14.578-14.578S414.678,194.304,406.627,194.304z"/&gt;&lt;path style="fill:${darkerHex};" d="M340.682,23.012c-8.787,0-13.875,4.933-13.875,15.416v40.854c0,10.483,5.088,15.416,14.03,15.416 c12.334,0,13.104-9.404,13.566-15.416c0.464-5.704,5.704-7.247,11.871-7.247c8.325,0,12.18,2.159,12.18,11.408 c0,20.504-16.649,32.22-38.695,32.22c-20.194,0-36.998-9.866-36.998-36.383V38.428c0-26.515,16.804-36.383,36.998-36.383 c22.046,0,38.695,11.099,38.695,30.679c0,9.25-3.854,11.408-12.025,11.408c-6.474,0-11.716-1.697-12.025-7.247 C354.249,32.878,353.787,23.012,340.682,23.012z"/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;`;
    } else if (type === 3) {
        svg = `&lt;svg height="100%" width="100%" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-51.2 -51.2 614.40 614.40" xml:space="preserve" fill="${strokeColor}"&gt;&lt;g id="SVGRepo_bgCarrier" stroke-width="0"/&gt;&lt;g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/&gt;&lt;g id="SVGRepo_iconCarrier"&gt;&lt;path style="fill:${colorHex};" d="M409.921,217.52c-7.451,0-14.664,0.958-21.615,2.595c-16.099-65.282-74.879-113.76-145.132-113.76 c-56.4,0-105.469,31.23-130.975,77.313C54.073,187.289,8.017,235.443,8.017,294.48c0,61.395,49.771,111.165,111.165,111.165 c20.911,0,261.756,0,290.739,0c51.949,0,94.063-42.113,94.063-94.063S461.87,217.52,409.921,217.52z"/&gt;&lt;path style="fill:${darkerHex};" d="M384.267,354.338H207.803c-59.444,0-110.725-45.37-114.092-104.72 c-1.378-24.288,5.089-46.952,17.045-65.79C51.672,188.282,5.426,238.717,8.129,299.547c2.665,59.964,54.445,106.098,114.469,106.098 h261.669c14.168,0,25.653-11.485,25.653-25.653l0,0C409.921,365.823,398.435,354.338,384.267,354.338z"/&gt;&lt;path d="M409.921,209.503c-5.193,0-10.497,0.435-15.843,1.298c-19.842-66.597-80.835-112.463-150.904-112.463 c-55.86,0-107.51,29.656-135.836,77.681C46.799,182.009,0,233.221,0,294.48c0,65.717,53.465,119.182,119.182,119.182h290.739 c56.287,0,102.079-45.792,102.079-102.079S466.208,209.503,409.921,209.503z M409.921,397.628H119.182 c-56.876,0-103.148-46.272-103.148-103.148c0-54.273,42.46-99.434,96.663-102.812c2.733-0.17,5.189-1.723,6.516-4.12 c24.982-45.137,72.482-73.178,123.961-73.178c65.237,0,121.717,44.273,137.35,107.663c1.052,4.267,5.343,6.893,9.621,5.883 c6.708-1.58,13.362-2.381,19.777-2.381c47.446,0,86.046,38.6,86.046,86.046S457.367,397.628,409.921,397.628z"/&gt;&lt;path d="M339.172,244.767c-3.832,2.219-5.139,7.123-2.921,10.955c3.791,6.548,5.796,14.037,5.796,21.656v17.102 c0,23.871-19.42,43.29-43.29,43.29c-23.871,0-43.29-19.42-43.29-43.29v-17.102c0-23.871,19.42-43.29,43.29-43.29 c4.964,0,9.825,0.831,14.453,2.469c4.174,1.478,8.755-0.708,10.233-4.881c1.478-4.174-0.708-8.755-4.881-10.233 c-6.349-2.249-13.013-3.388-19.803-3.388c-32.711,0-59.324,26.612-59.324,59.324v17.102c0,32.711,26.612,59.324,59.324,59.324 s59.324-26.612,59.324-59.324v-17.102c0-10.437-2.75-20.703-7.954-29.69C347.907,243.856,343.002,242.55,339.172,244.767z"/&gt;&lt;path d="M216.449,326.748c-7.941,7.108-18.189,11.022-28.86,11.022c-23.871,0-43.29-19.42-43.29-43.29v-17.102 c0-23.871,19.42-43.29,43.29-43.29c10.666,0,20.913,3.912,28.853,11.016c3.299,2.951,8.366,2.67,11.32-0.628 c2.952-3.3,2.671-8.368-0.628-11.32c-10.883-9.738-24.927-15.1-39.544-15.1c-32.711,0-59.324,26.612-59.324,59.324v17.102 c0,32.711,26.612,59.324,59.324,59.324c14.621,0,28.669-5.367,39.553-15.11c3.299-2.953,3.579-8.021,0.625-11.32 C224.815,324.075,219.746,323.795,216.449,326.748z"/&gt;&lt;path d="M247.159,148.649c5.344,0.195,10.7,0.789,15.92,1.766c0.499,0.093,0.995,0.139,1.485,0.139c3.783,0,7.149-2.689,7.87-6.543 c0.816-4.351-2.051-8.54-6.404-9.355c-6-1.123-12.152-1.806-18.288-2.03c-4.432-0.156-8.142,3.295-8.303,7.72 C239.278,144.77,242.734,148.487,247.159,148.649z"/&gt;&lt;path d="M294.898,161.824c17.914,9.862,32.595,24.543,42.455,42.458c1.46,2.653,4.202,4.153,7.03,4.153 c1.307,0,2.633-0.321,3.859-0.995c3.878-2.135,5.292-7.01,3.158-10.889c-11.327-20.578-28.191-37.444-48.769-48.771 c-3.879-2.137-8.753-0.722-10.889,3.158C289.605,154.813,291.019,159.688,294.898,161.824z"/&gt;&lt;path d="M474.981,292.185c-6.562-22.04-23.639-39.112-45.679-45.668c-4.245-1.263-8.707,1.154-9.97,5.398s1.154,8.707,5.398,9.97 c16.833,5.008,29.873,18.045,34.885,34.876c1.036,3.48,4.225,5.731,7.68,5.731c0.757,0,1.529-0.108,2.291-0.336 C473.83,300.892,476.244,296.429,474.981,292.185z"/&gt;&lt;/g&gt;&lt;/svg&gt;`;
    } else if (type === 4) {
        svg = `&lt;svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="-10.4 -10.4 124.80 124.80" fill="none"&gt;&lt;g&gt;&lt;g stroke="${colorHex}" stroke-width="3.5" fill="none"&gt;&lt;path d="M0.980392157,52 L0.980392157,48"&gt;&lt;/path&gt;&lt;path d="M10.7843137,54 L10.7843137,46"&gt;&lt;/path&gt;&lt;path d="M20.5882353,70.0688837 L20.5882353,30"&gt;&lt;/path&gt;&lt;path d="M30.3921569,80.0089279 L30.3921569,20"&gt;&lt;/path&gt;&lt;path d="M40.1960784,100 L40.1960784,0"&gt;&lt;/path&gt;&lt;path d="M50,70 L50,30"&gt;&lt;/path&gt;&lt;path d="M59.8039216,64 L59.8039216,36"&gt;&lt;/path&gt;&lt;path d="M69.6078431,74.5325933 L69.6078431,26.4973984"&gt;&lt;/path&gt;&lt;path d="M79.4117647,61 L79.4117647,39"&gt;&lt;/path&gt;&lt;path d="M89.2156863,59 L89.2156863,41"&gt;&lt;/path&gt;&lt;path d="M99.0196078,63 L99.0196078,37"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;`;
    }

    return svg;
}
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>Feuchtigkeit</em>:</strong></p>
<pre><code>const hum = getState('Dein.0.Sensor.humidity').val;

let humColor = '';
if (hum &gt;= 70) {
    humColor = '#00cc44';
} else if (hum &gt;= 40) {
    humColor = '#66ccff';
} else {
    humColor = '#ff8800';
}

const svgHum = createEnvSvg(1, humColor, '#000000');
setState('Dein.Speicherdatenpunkt.humiditySvg', svgHum);
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>Temperatur</em>:</strong></p>
<pre><code>const temp = getState('Dein.0.Sensor.temperature').val;

let tempColor = '';
if (temp &gt;= 30) {
    tempColor = '#ff3300';
} else if (temp &gt;= 20) {
    tempColor = '#ff8800';
} else {
    tempColor = '#0099ff';
}

const svgTemp = createEnvSvg(2, tempColor, '#000000');
setState('Dein.Speicherdatenpunkt.temperatureSvg', svgTemp);
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>CO2</em>:</strong></p>
<pre><code>const co2 = getState('Dein.0.Sensor.co2').val;

let co2Color = '';
if (co2 &gt;= 1500) {
    co2Color = '#ff0000';
} else if (co2 &gt;= 1000) {
    co2Color = '#ff8800';
} else {
    co2Color = '#66cc33';
}

const svgCo2 = createEnvSvg(3, co2Color, '#000000');
setState('Dein.Speicherdatenpunkt.co2', svgCo2);
</code></pre>
<p dir="auto"><strong>Ein Aufruf könnte wie folgt aussehen für <em>Umgebungslautstärke (Noise)</em>:</strong></p>
<pre><code>const noise = getState('Dein.0.Sensor.noise').val;

let noiseColor = '';
if (noise &gt;= 80) {
    noiseColor = '#ff0000';
} else if (noise &gt;= 50) {
    noiseColor = '#ffcc00';
} else {
    noiseColor = '#66cc33';
}

const svgNoise = createEnvSvg(4, noiseColor, '#000000');
setState('Dein.Speicherdatenpunkt.noiseSvg', svgNoise);

</code></pre>
<p dir="auto"><strong>Idee:</strong> Die hier gezeigten Beispiele um aus den Rohdaten, Farbwerte zu generieren dienen als Beispiel und sollten für den entsprechenden Einsatz angepasst werden.</p>
<p dir="auto">Ich hoffe es ist etwas für Euch dabei. Wie immer viel Spaß und gutes Gelingen bei der Umsetzung.</p>
<p dir="auto">Ro75.</p>
]]></description><link>https://forum.iobroker.net/topic/84969/dynamische-svg-generierung-wifi-rf-temp-humi-co2-noise</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84969/dynamische-svg-generierung-wifi-rf-temp-humi-co2-noise</guid><dc:creator><![CDATA[Ro75]]></dc:creator><pubDate>Mon, 13 Jul 2026 15:18:08 GMT</pubDate></item><item><title><![CDATA[Test Adapter octopus-energy-monitor v0.7.x GitHub&#x2F;Latest]]></title><description><![CDATA[<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Aktuelle Test Version</th>
<th>0.7.0</th>
</tr>
</thead>
<tbody>
<tr>
<td>Veröffentlichungsdatum</td>
<td>13.07.206</td>
</tr>
<tr>
<td>Github Link</td>
<td><a href="https://github.com/tipp88/ioBroker.octopus-energy-monitor" rel="nofollow ugc">https://github.com/tipp88/ioBroker.octopus-energy-monitor</a></td>
</tr>
</tbody>
</table>
<p dir="auto">Hallo zusammen,</p>
<p dir="auto">der Adapter ioBroker.octopus-energy-monitor wurde frisch im Latest (Beta) Repository veröffentlicht und sollte dort innerhalb der nächsten 24 Stunden auftauchen.</p>
<p dir="auto">Dieser Adapter wurde entwickelt, um die täglichen Stromverbrauchsdaten und Tarife von Octopus Energy (über die Kraken-GraphQL-API) abzurufen, Kosten zu kalkulieren und im ioBroker bereitzustellen. Optional kann der Adapter auch mit Inexogy (über die Discovergy/Statistics-API) verbunden werden, um Messunterschiede zwischen deinem physischen Smart Meter und der Abrechnung des Anbieters abzugleichen.</p>
<p dir="auto">ℹ️ Der Adapter läuft vollständig Standalone mit Octopus Energy! Ein Inexogy-Smartmeter ist nicht erforderlich.</p>
<p dir="auto">🌟 Hauptfeatures:</p>
<ul>
<li>Kraken GraphQL API-Support: Abruf präziser Verbrauchsdaten direkt über deinen Octopus-Account.<br />
Tarif- &amp; Slot-Erkennung: Automatische Ermittlung deines aktiven Tarifs (z. B. Intelligent Octopus Go) und der dazugehörigen Zeitfenster ohne manuelle Konfiguration.</li>
<li>Kostenberechnung: Automatische Berechnung der täglichen, monatlichen und jährlichen Stromkosten in Euro (€) basierend auf deinen tatsächlichen Slot-Tarifen.</li>
<li>Steuerung für Smart Charging: Direktes Ein- und Ausschalten des Smart Charging (Suspend/Resume) für kompatible Geräte (E-Autos/Ladestationen).</li>
<li>§14a EnWG Preisberechnung (Optional): Berücksichtigung reduzierter Netzentgelte für steuerbare Verbrauchseinrichtungen (NT/HT/ST-Zeiten).</li>
<li>Benutzerdefinierte Abrechnungszeiträume: Zusammenfassung des Verbrauchs nach dem individuellen Abrechnungszeitraum (z. B. ab dem 18. eines Monats).</li>
<li>Messdaten-Abgleich (Optional mit Inexogy): Automatischer nächtlicher Vergleich zwischen Octopus- und Inexogy-Daten mit konfigurierbarem Schwellenwert zur Erkennung von Abrechnungsfehlern.</li>
</ul>
<p dir="auto">🛠️ Voraussetzungen &amp; Installation:<br />
Node.js: &gt;= 22<br />
Admin-Adapter: &gt;= 7.8.23<br />
Installation: Sobald der Adapter im Repository sichtbar ist, einfach über die normale Adaptersuche installieren (aktives Latest-Repository vorausgesetzt). Alternativ kann er direkt über GitHub/NPM installiert werden</p>
<p dir="auto">📝 Feedback erwünscht:<br />
Ich freue mich über jedes Feedback und Tests von euch! Besonders interessieren mich:</p>
<p dir="auto">Funktioniert die automatische Tarif- und Slot-Erkennung bei euch fehlerfrei?<br />
Werden die Stromkosten korrekt berechnet?<br />
Läuft die Smart Charging-Steuerung reibungslos?<br />
Falls ihr Inexogy nutzt: Werden die Abweichungen korrekt abgeglichen?<br />
Gibt es Darstellungsfehler in den angelegten Objekten?</p>
<p dir="auto">Vielen Dank im Voraus für eure Unterstützung beim Testen!</p>
<p dir="auto">Viele Grüße,<br />
tippy88</p>
]]></description><link>https://forum.iobroker.net/topic/84968/test-adapter-octopus-energy-monitor-v0.7.x-github-latest</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84968/test-adapter-octopus-energy-monitor-v0.7.x-github-latest</guid><dc:creator><![CDATA[tippy88]]></dc:creator><pubDate>Mon, 13 Jul 2026 14:42:05 GMT</pubDate></item><item><title><![CDATA[Sonnenschutz mittels Rollläden]]></title><description><![CDATA[<p dir="auto">Hallo liebes Forum,</p>
<p dir="auto">ich habe mittels Blockly versucht einen automatischen Sonnenschutz zu programmieren.<br />
Dazu lese ich mir die Sonneneinstrahlung und die Außentemperatur über eine Wetterstation ein.<br />
Diese Werte werden in einem 5 Minuten Rythmus aktualisiert. (Weatherunderground)<br />
Des Weiteren sind die Vorbedingungen überschreiten der vom User eingegebenen Außentemp, die Sonneneinstrahlung in W/m2 und das ganze soll zwischen 8:30h und 17:00h "scharf" sein und im Winter natürlich nicht.<br />
Damit die Rollläden nicht beim kleinsten unter- überschreiten wie wild runter und rauffahren, habe ich noch eine ebenfalls vom User einstellbare Verzögerungszeit eingebaut.<br />
Zum herunterfahren habe ich sowohl das Überschreiten der Sonne als auch die Aussentemp bedingt.<br />
Zum herauffahren genügt ein Unterschreiten einer dieser Bedingungen.</p>
<p dir="auto">Ein Bit des Namens "Grenzwert erreicht" dient lediglich für die Visualisierung.</p>
<p dir="auto">Und nun zum Problem: das Ganze hat zur Zufriedenheit aller gut funktioniert - bis ich auf die Idee kam, kleine "Optimierungen" durchzuführen. Ich weiß einfach nicht was ich falsch mache.</p>
]]></description><link>https://forum.iobroker.net/topic/84967/sonnenschutz-mittels-rollläden</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84967/sonnenschutz-mittels-rollläden</guid><dc:creator><![CDATA[Gerhardptl]]></dc:creator><pubDate>Mon, 13 Jul 2026 13:26:39 GMT</pubDate></item><item><title><![CDATA[Nextcloud Talk Bot mit iobroker nutzen]]></title><description><![CDATA[<p dir="auto">Seit kurzem unterstützt Nextcloud auch sogenannte Bot´s. Ich möchte hier zeigen, wie man den Nextcloud Bot erstellt und aus iobroker füttern kann.</p>
<ol>
<li>Der Bot benötigt zum Verschlüsseln der Kommunikation einen 40 Zeichen langen Key. Diesen Key kann man z.B. mit openssl generieren. Es geht aber auch ein eigen generierter Key.<br />
Beispiel:</li>
</ol>
<pre><code>openssl rand -hex 40
2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2
</code></pre>
<ol start="2">
<li>In Nextcoud einen Bot erstellen: per ssh oder Konsole auf Nextcloud verbinden und im nextcloud Verzeichnis ausführen (die Stelen mit &lt; &gt; markiert müssen mit Euren Werten ausgefüllt werden:</li>
</ol>
<pre><code>occ talk:bot:install --feature response &lt;BOT-Name&gt; &lt;40-Zeichen-langer-Key&gt; &lt;Nextcloud-URL&gt;
Antwort:
Bot installed
ID: 1
Abfragen des Bots:
occ talk:bot:list
+----+-------------+-------------+-------------+-------+----------+
| id | name        | description | error_count | state | features |
+----+-------------+-------------+-------------+-------+----------+
| 1  | iobrokerBot |             | 0           | 1     | response |
+----+-------------+-------------+-------------+-------+----------+
</code></pre>
<ol start="3">
<li>Installieren von npm-Modul crypto-js (wird von Javascript benötigt)</li>
</ol>
<pre><code>npm install crypto-js
</code></pre>
<ol start="4">
<li>
<p dir="auto">Nextcloud Bot mit Chat verbinden<br />
<img src="/assets/uploads/files/1783935847875-8918a2f9-9cbf-4fc6-9d63-25282a496494-image.jpeg" alt="8918a2f9-9cbf-4fc6-9d63-25282a496494-image.jpeg" class=" img-fluid img-markdown" /><br />
<img src="/assets/uploads/files/1783935884461-27440011-566f-4a56-b336-6cbec72c3af4-image.jpeg" alt="27440011-566f-4a56-b336-6cbec72c3af4-image.jpeg" class=" img-fluid img-markdown" /><br />
Den Bot aktivieren.</p>
</li>
<li>
<p dir="auto">Nutzen des Bot im Javascript Adapter oder Blockly, etc.<br />
In der Javascript Instanz:<br />
<img src="/assets/uploads/files/1783936523640-c789b040-ac6f-4ae0-b982-3538e60d0422-image.jpeg" alt="c789b040-ac6f-4ae0-b982-3538e60d0422-image.jpeg" class=" img-fluid img-markdown" /></p>
</li>
</ol>
<p dir="auto">Chat-ID herausfinden:<br />
<img src="/assets/uploads/files/1783936824082-30ada4fe-afaf-4b0c-bc0d-332a90fd8720-image.jpeg" alt="30ada4fe-afaf-4b0c-bc0d-332a90fd8720-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Beispielscript:</p>
<pre><code>const CryptoJS = require('crypto-js');
const fetch = require('node-fetch');

const sharedSecret = "2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2";   // &lt;-- anpassen
const url = "https://&lt;Nextcloud-url&gt;/ocs/v2.php/apps/spreed/api/v1/bot/&lt;chat-id&gt;/message";     // &lt;--  Anpassen der: &lt;Nextcloud-url&gt; und &lt;chat-id&gt;
var TalkMessage = "ioBroker Bot - gestartet";  

// --&gt;
// Hier z.B. auf Objekte reagieren und die Variable "TalkMessage" setzen
// z.B. 
on("user.0.Testmeldung", function (obj) {
   console.log('Testnachricht gesendet');
   TalkMessage = 'Testnachricht von ioBroker!';		// &lt;-- Nachricht
   sendBotMessage();					// &lt;-- Absenden der Nachricht
});
// &lt;--


// Zufallswert erzeugen (32 Zeichen)
function generateRandomHeader() {
    return CryptoJS.lib.WordArray.random(32).toString(CryptoJS.enc.Hex);
}

// Signatur erzeugen
function signMessage(sharedSecret, message, randomHeader) {
    const hmac = CryptoJS.HmacSHA256(
        CryptoJS.enc.Utf8.parse(randomHeader + message),
        CryptoJS.enc.Utf8.parse(sharedSecret)
    );
    return hmac.toString(CryptoJS.enc.Hex);
}

async function sendBotMessage() {

    const messageData = {
        message: TalkMessage,
        silent: false
    };

    const randomHeader = generateRandomHeader();
    const digest = signMessage(sharedSecret, messageData.message, randomHeader);

    const headers = {
        "Content-Type": "application/json",
        "X-Nextcloud-Talk-Bot-Random": randomHeader,
        "X-Nextcloud-Talk-Bot-Signature": digest,
        "OCS-APIRequest": "true"
    };

    const response = await fetch(url, {
        method: "POST",
        headers: headers,
        body: JSON.stringify(messageData)
    });

    const result = await response.text();
    console.log("Server Response:", result);
}

sendBotMessage();
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1783936867739-8a5111ac-0d3c-45fb-a7d6-b6c5fb7ad511-image.jpeg" alt="8a5111ac-0d3c-45fb-a7d6-b6c5fb7ad511-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>Conclusion:</strong><br />
Ich bin gespannt, welche Funktionen in dem Nextcloud Bot noch realisiert werden. Aktuell kann er bereits auf Nachrichten antworten. Das hier soll nur aufzeigen, wie man den neuen Bot nutzen kann. Um Nachrichten zu Nextcloud zu senden gibt es aktuell den Adapter um als User Nachrichten zu senden.</p>
]]></description><link>https://forum.iobroker.net/topic/84966/nextcloud-talk-bot-mit-iobroker-nutzen</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84966/nextcloud-talk-bot-mit-iobroker-nutzen</guid><dc:creator><![CDATA[Eisbaeeer]]></dc:creator><pubDate>Mon, 13 Jul 2026 10:06:31 GMT</pubDate></item><item><title><![CDATA[Problem nach rasberry Stromausfall mit Zigbee2mqtt]]></title><description><![CDATA[<p dir="auto">Hallo alle zusammen,</p>
<p dir="auto">nach dem ich einen Stromausfall beim Raspberry hatte startet mein Zigbee2mqtt nicht mehr komplett.<br />
Vorher lief alles Ich benutze JS-Controller 7.22 alle Adapter auf aktuellen Stand<br />
Verbunden ist der alles über CZC 1.0 der  ist direkt per Lan am Router<br />
<img src="/assets/uploads/files/1783930185960-screenshot-2026-07-13-100854.png" alt="Screenshot 2026-07-13 100854.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Der Befehl in Putty  systemctl status zigbee2mqtt.service<br />
gibt das zurück</p>
<p dir="auto">● zigbee2mqtt.service - zigbee2mqtt<br />
Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; preset: &gt;<br />
Active: activating (auto-restart) (Result: exit-code) since Mon 2026-07-13&gt;<br />
Process: 4893 ExecStart=/usr/bin/node index.js (code=exited, status=1/FAILU&gt;<br />
Main PID: 4893 (code=exited, status=1/FAILURE)<br />
CPU: 999ms<br />
Wie schaffe ich es das es wieder korrekt läuft.</p>
<p dir="auto">Gruß<br />
Mico</p>
]]></description><link>https://forum.iobroker.net/topic/84965/problem-nach-rasberry-stromausfall-mit-zigbee2mqtt</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84965/problem-nach-rasberry-stromausfall-mit-zigbee2mqtt</guid><dc:creator><![CDATA[Mico]]></dc:creator><pubDate>Mon, 13 Jul 2026 08:14:21 GMT</pubDate></item><item><title><![CDATA[[ERLEDIGT] Irrtümlich sudo chmod -R 777 &#x2F; ausgeführt]]></title><description><![CDATA[<p dir="auto">[ERLEDIGT] - Neuinstallation</p>
<p dir="auto">Guten Morgen, Linux-Profis!</p>
<p dir="auto">Ich habe irrtümlich "sudo chmod -R 777 /" als Benutzer "pi" im Verzeichnis "/home/pi" ausgeführt. Nun kann ich mich über die Konsole zwar anmelden, aber nichts mehr sehen. Der IOBroker und MariaDB laufen jedoch.</p>
<p dir="auto"><img src="/assets/uploads/files/1783922753877-2ad06cfa-7f4e-477f-807f-9ff41597ace2-image.jpeg" alt="2ad06cfa-7f4e-477f-807f-9ff41597ace2-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Was mache ich da? Vorweg danke für eure Unterstützung!</p>
<p dir="auto">Gruß, Fuzzy</p>
]]></description><link>https://forum.iobroker.net/topic/84964/erledigt-irrtümlich-sudo-chmod-r-777-ausgeführt</link><guid isPermaLink="true">https://forum.iobroker.net/topic/84964/erledigt-irrtümlich-sudo-chmod-r-777-ausgeführt</guid><dc:creator><![CDATA[fuzzy1955]]></dc:creator><pubDate>Mon, 13 Jul 2026 06:08:45 GMT</pubDate></item></channel></rss>