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

<channel>
	<title>HCU Archive - Smart home Ratgeber</title>
	<atom:link href="https://homeitems.de/category/hcu/feed/" rel="self" type="application/rss+xml" />
	<link>https://homeitems.de/category/hcu/</link>
	<description>Einfache Lösungen für zuhause mit Smart home items</description>
	<lastBuildDate>Mon, 27 Jul 2026 17:44:31 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://homeitems.de/wp-content/uploads/2020/10/cropped-wpicon_homeitems-32x32.jpg</url>
	<title>HCU Archive - Smart home Ratgeber</title>
	<link>https://homeitems.de/category/hcu/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 2</title>
		<link>https://homeitems.de/home-control-unit-hcu-in-node-red-integrieren-teil-2/</link>
					<comments>https://homeitems.de/home-control-unit-hcu-in-node-red-integrieren-teil-2/#respond</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Mon, 27 Jul 2026 17:42:40 +0000</pubDate>
				<category><![CDATA[HCU]]></category>
		<category><![CDATA[Homematic IP]]></category>
		<category><![CDATA[Node-Red]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=4729</guid>

					<description><![CDATA[<p>In der ersten Folge dieser Serie habe ich gezeigt, wie man aus Node-Red direkt auf die HCU zugreift und ein Objekt mit allen HMIP-Daten abfragt. In diesem Teil der Serie erkläre ich die Datenstruktur, mit der sich der Status von Geräten abfragen lässt. Das wesentliche Dokument für alle folgenden Schritte ist dabei  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/home-control-unit-hcu-in-node-red-integrieren-teil-2/">Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 2</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">HCU</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-1"><p>In der ersten Folge dieser Serie habe ich gezeigt, wie man aus Node-Red direkt auf die HCU zugreift und ein Objekt mit allen HMIP-Daten abfragt. In diesem Teil der Serie erkläre ich die Datenstruktur, mit der sich der Status von Geräten abfragen lässt. Das wesentliche Dokument für alle folgenden Schritte ist dabei die <a href="https://github.com/homematicip/connect-api/releases/download/1.0.1/connect-api-documentation-1.0.1.html">Homematic IP Connect API Dokumentation</a>.</p>
<h2><strong>Datenstruktur verstehen</strong></h2>
<p>Mithilfe des debug93-Nodes aus dem letzten Beitrag wurde die gesamte Datenstruktur der HCU ausgegeben. Bevor weitere Funktionen ergänzt werden, ist es wichtig, die Grundstruktur zu verstehen. Ich fokussiere mich hier nur auf die Geräte und deren besondere Attribute (Gruppen oder Clients werden nicht betrachtet). HMIP-Geräte werden als Devices bezeichnet.</p>
<p>Die Datenwerte eines Geräts werden in der HCU als Features bezeichnet (z. B. Temperatur), die einen Wert beinhalten können. Jedes Device besitzt einen „Type”, der genau angibt, welche Features obligatorisch oder optional zu einem Device-Objekt gehören.</p>
<p>Die Struktur des HCU-Datenobjektes mit den relevanten Daten zum Auslesen und Verarbeiten von Geräten ist in der folgenden Grafik dargestellt (blaue Kästchen sind Objekte, weiße Kästchen sind Attribute):</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur.webp"><img fetchpriority="high" decoding="async" class="alignnone wp-image-4792 size-fusion-600" src="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-600x532.webp" alt="" width="600" height="532" srcset="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-200x177.webp 200w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-300x266.webp 300w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-400x355.webp 400w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-600x532.webp 600w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-768x681.webp 768w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-800x709.webp 800w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-1024x908.webp 1024w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-1200x1064.webp 1200w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur.webp 1400w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Bei Änderungen schickt die HCU nur die geänderten Objekte. Der Gedanke dahinter ist, dass die Kommunikation deutlich schneller funktioniert, wenn nur die Änderungen übermittelt werden. Die Datenstruktur mit den Änderungen ist leicht anders und wird in folgender Grafik dargestellt (blaue Kästchen sind Objekte, weiße Kästchen Attribute):</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes.webp"><img decoding="async" class="alignnone wp-image-4793 size-fusion-600" src="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-600x493.webp" alt="" width="600" height="493" srcset="https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-200x164.webp 200w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-300x247.webp 300w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-400x329.webp 400w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-600x493.webp 600w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-768x631.webp 768w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-800x658.webp 800w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-1024x842.webp 1024w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes-1200x987.webp 1200w, https://homeitems.de/wp-content/uploads/2026/07/HCU-Datenstruktur-Changes.webp 1400w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
</div><div class="fusion-text fusion-text-2"><h2>Device Eigenschaften</h2>
<p>Jedes Gerät besitzt das Attribut „type“, das angibt, welche „Features“ es unterstützt. Mit den Features sind in der Regel die Daten der Sensorwerte, der Zustand eines Schalters etc. gemeint.</p>
<p>Die möglichen Features ergeben sich aus den Beschreibungen in Kapitel 6.6.5 der Connect-API-Dokumentation.</p>
<p>Für den HMIP-Bewegungsmelder (HMIP-SMI) vom Typ „OCCUPANCY_SENSOR” sind dies beispielsweise die Features:</p>
<ul>
<li>presenceDetected (true oder false)</li>
<li>unreach (true oder false, gehört zum Feature Maintenance)</li>
<li>lowbat (true oder false, gehört zum Feature Maintenance)</li>
<li>sabotage (true oder false, gehört zum Feature Maintenance)</li>
</ul>
<p>Diese stehen in einem zweidimensionalen Array im Objektbereich "Functional Channels".</p>
</div><div class="fusion-alert alert notice alert-warning fusion-alert-left awb-alert-native-link-color" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="awb-icon-cog" aria-hidden="true"></i></span><span class="fusion-alert-content"><p><strong>Besonderheiten bei PLUGIN_EXTERNAL</strong></p>
<p>Wenn der "type" eines devices "PLUGIN_EXTERNAL" ist dann ergeben sich ein paar Besonderheiten. Bei diesem Typ ist das Gerät nicht direkt in der HCU angelernt sondern wird durch ein anderes Plugin bereitgestellt (z.B. das CCU3 Plugin). Folgende Änderungen ergeben sich dann:</p>
<ul>
<li>Die Seriennummer des Gerätes steht unter <span style="color: #993300;">"pluginDeviceId"</span>, unter "id" steht eine eindeutige von der HCU vergebene Nummer mit mehreren von Bindestrichen getrennten HEX-Werten.</li>
<li>Für CCU3 Geräte hat die pluginDeviceId das folgendes Format: <span style="color: #993300;">"00196BE98B20B2:1</span>" (letzten 14 Stellen der SGTIN gefolgt von einem Doppelpunkt mit der Kanalnummer). Geräte, die direkt an der HCU angelernt wurden besitzen das Format "3014F711A00046F219898621" (entspricht der SGTIN mit insgesamt 24 Stellen).</li>
<li>Der Typ des Device steht nicht mehr unter "type" sondern unter <span style="color: #993300;">"pluginDeviceType"</span></li>
</ul></span></div></div><div class="fusion-alert alert notice alert-warning fusion-alert-left awb-alert-native-link-color alert-dismissable awb-alert-close-boxed" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="awb-icon-cog" aria-hidden="true"></i></span><span class="fusion-alert-content"><p><strong>Die Suche nach der Seriennummer</strong></p>
<p>Durch die Nutzung der CCU3 habe ich mich an die Notation der Seriennummern mit der Kanalnummer gewöhnt.  Weil viele Geräte vorerst weiter auf der CCU laufen, möchte ich gerne diese Seriennummer-Notation für externe CCU3-Geräte bei der Suche nach Geräten beibehalten.</p>
<p>Da die Seriennummern von „PLUGIN_EXTERNAL“-Typen an anderer Stelle stehen als die Seriennummern von Geräten, die direkt an der HCU angelernt wurden, muss ich dies bei allen zukünftigen Funktionen berücksichtigen.</p>
<p>Will man diese Vorgehenswiese nicht verwenden kann auch einfach die id eines Gerätes verwendet werden, so dass man sich die Vergleiche mit dem Typ spart.</p>
<p>Ich gebe neben der Seriennummer auch ein Label-Feld zurück, damit die Geräte beim Debuggen schneller identifiziert werden können.</p></span></div><button type="button" class="close toggle-alert" data-dismiss="alert" aria-label="Schließen">&times;</button></div><div class="fusion-text fusion-text-3"><h2>Plugin Messages auswerten</h2>
<p>Wenn eine Nachricht von der HCU an Node-Red übermittelt wird, dann wird auch immer der Typ der Nachricht (<strong>PluginMessageType</strong>) übertragen. Dieser steht unter payload.type. Im Folgenden sind zunächst nur die folgenden Werte interessant (weitere Typen sind in Kapitel 6.4 der API erläutert):</p>
</div>
<div class="table-1" style="--awb-margin-bottom:20px;">
<table width="100%">
<thead>
<tr>
<th align="left">
<h4 id="_pluginmessagetype">PluginMessageType</h4>
</th>
<th align="left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">PLUGIN_STATE_RQUEST</td>
<td align="left">Wenn eine solche Nachricht ankommt, möchte die HCU eine Statusinformation des Plug-ins bzw. ein Lebenszeichen erhalten. Die Antwort darauf ist immer eine Nachricht an die HCU mit dem Payload-Typ PLUGIN_STATE_RESPONSE.</td>
</tr>
<tr>
<td align="left">HMIP_SYSTEM_RESPONSE</td>
<td align="left">Diese Nachricht beinhaltet den Status eines oder mehrerer Datenobjekte bzw. aller Daten in der HCU. Der Status wird erst dann gesendet, wenn zuvor ein HMIP_SYSTEM_REQUEST gesendet wurde.</td>
</tr>
<tr>
<td align="left">HMIP_SYSTEM_EVENT</td>
<td align="left">In dieser Nachricht befindet sich ein Update des HMIP-Systems. Wichtig ist, dass nicht immer der gesamte Status übertragen wird, sondern nur die geänderten Teile.</td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-4"><h2><strong>Zwischenspeicherung der HCU-Daten</strong></h2>
<p>eQ3 empfiehlt, den gesamten Status aller Objekte (Devices, Gruppen etc.) auf der HCU nur einmal nach Aufbau der Verbindung abzuholen und in einem Cache zwischenzuspeichern. Gibt es Änderungen an den Daten, schickt die HCU nur die geänderten Objekte. Dahinter steckt der Gedanke, dass die Kommunikation deutlich schneller funktioniert, wenn nur Änderungen übermittelt werden. Daher empfiehlt eQ3 auch, die initialen HCU-Daten zwischenzuspeichern und bei jedem Update den geänderten Teil zu ersetzen. Damit sind im Speicher immer alle Daten der HCU auf dem aktuellen Stand verfügbar.</p>
<p>Um die Daten nach dem Aufbau der Websocket-Verbindung abfragen zu können, nutze ich einen Input-Node, der zwei Sekunden nach dem Start eine HMIP_SYSTE_REQUEST-Nachricht in der folgenden Form verschickt:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_1" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_1" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_1" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="application/json">{
    "pluginId": "de.spike.grass.plugin.example1",
    "id": "cffabca5-3642-4f0d-9b74-5d21748db5e43",
    "type": "HMIP_SYSTEM_REQUEST",
    "body": {
        "path": "/hmip/home/getSystemState",
        "body": {}
    }
}</textarea></div><div class="fusion-text fusion-text-5"><p>Ich realisiere dies einfach durch Abfrage des PluginMessageType.  Hat dieser den Wert "HMIP_SYSTEM_RESPONSE", dann speichere ich den payload Wert in meiner Node-Red Flow-Variablen "f_systemresponse". Ich ergänze dies in meinem Flow am Ende des Beitrag1 <a href="https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/">Mit Node-RED auf die HMIP Home Control Unit (HCU) zugreifen Teil 1</a></p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2.webp"><img decoding="async" class="alignnone wp-image-4848 size-fusion-800" src="https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-800x164.webp" alt="" width="800" height="164" srcset="https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-200x41.webp 200w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-300x62.webp 300w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-400x82.webp 400w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-600x123.webp 600w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-768x158.webp 768w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-800x164.webp 800w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-1024x210.webp 1024w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-1200x246.webp 1200w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2-1536x315.webp 1536w, https://homeitems.de/wp-content/uploads/2026/07/Node-Red-HCU-flow2.webp 1842w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
</div><div class="fusion-text fusion-text-6"><h2>Status eines Device abfragen</h2>
<p>Auf Basis der in den vorigen Abschnitten beschriebenen Grundlagen kann nun die Statusabfrage eines Geräts erfolgen. Ich möchte beispielsweise für einen Bewegungsmelder abfragen, ob er eine Bewegung erkannt hat oder nicht. Dazu verwende ich einen Input-Node, in dem ich die Seriennummer angebe sowie das Feature „presenceDetected”, welches zu diesem Gerätetyp bereitgestellt wird.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_2" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_2" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_2" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/x-sh">{
    "serialNr": "0009149920ACD0:1",
    "fieldname": "presenceDetected"
}</textarea></div><div class="fusion-text fusion-text-7"><p>Anschließend verwende ich die Daten in einem Function-Node. Nach diversen Prüfungen führt dieser die Suche nach der normierten Seriennummer durch, holt sich das passende Device-Objekt aus dem HCU-Objekt und extrahiert das Feature bzw. den Wert des Attributs.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_3" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_3" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_3" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">const input = msg.payload || {};
const searchSerialNr = String(input.serialNr ?? "").trim();
const fieldname = String(input.fieldname ?? "").trim();

// Prüfen, ob die benötigten Eingabewerte vorhanden sind
if (!searchSerialNr) {
    msg.payload = {
        error: "serialNr ist leer oder fehlt",
        input: input
    };
    return msg;
}

if (!fieldname) {
    msg.payload = {
        error: "fieldname ist leer oder fehlt",
        input: input
    };
    return msg;
}

// flow-Variable mit den HCU-Daten laden
const systemResponse = flow.get("f_systemresponse");

// Nur den Bereich mit den Devices verwenden
const devices = systemResponse?.body?.body?.devices || {};

let foundDevice = null;
let foundValue = null;

// Alle Devices durchsuchen
for (const device of Object.values(devices)) {
    const type = String(device?.type ?? "").trim();
    const deviceId = String(device?.id ?? "").trim();
    const pluginDeviceId = String(device?.pluginDeviceId ?? "").trim();

    let isMatch = false;

    // Für PLUGIN_EXTERNAL wird links gegen pluginDeviceId verglichen
    if (type === "PLUGIN_EXTERNAL") {
        isMatch = pluginDeviceId === searchSerialNr;
    }
    // Für alle anderen Geräte wird rechts gegen device.id verglichen
    else {
        isMatch = deviceId === searchSerialNr;
    }

    // Wenn das passende Device gefunden wurde, Schleife beenden
    if (isMatch) {
        foundDevice = device;
        break;
    }
}

// Im gefundenen Device unter functionalChannels nach dem gewünschten Feld suchen
if (foundDevice?.functionalChannels) {
    for (const channel of Object.values(foundDevice.functionalChannels)) {
        if (channel && Object.prototype.hasOwnProperty.call(channel, fieldname)) {
            foundValue = channel[fieldname];
            break;
        }
    }
}

// Ergebnis in msg.payload zurückgeben
msg.payload = {
    serialNr: searchSerialNr,
    fieldname: fieldname,
    foundDeviceName: foundDevice?.label || null,
    deviceId: foundDevice?.id || null,
    pluginDeviceId: foundDevice?.pluginDeviceId || null,
    value: foundValue
};

return msg;</textarea></div><div class="fusion-text fusion-text-8 fusion-text-no-margin" style="--awb-margin-bottom:20px;"><p>Anschließend sieht das Ergebnis wie folgt aus:</p>
<div class="red-ui-debug-msg-object-entry collapsed"><span class="red-ui-debug-msg-element"><span class="red-ui-debug-msg-row"><span style="color: #800080;"><span class="red-ui-debug-msg-object-key">serialNr</span>:</span> <span class="red-ui-debug-msg-object-value" style="color: #993300;"><span class="red-ui-debug-msg-type-string red-ui-debug-msg-object-header">"0009149920ACD"</span></span></span></span></div>
<div class="red-ui-debug-msg-object-entry collapsed"><span class="red-ui-debug-msg-element"><span class="red-ui-debug-msg-row"><span style="color: #800080;"><span class="red-ui-debug-msg-object-key">fieldname</span>: </span><span class="red-ui-debug-msg-object-value" style="color: #993300;"><span class="red-ui-debug-msg-type-string red-ui-debug-msg-object-header">"presenceDetected"</span></span></span></span></div>
<div class="red-ui-debug-msg-object-entry collapsed"><span class="red-ui-debug-msg-element"><span class="red-ui-debug-msg-row"><span style="color: #800080;"><span class="red-ui-debug-msg-object-key">foundDeviceName</span>:</span> <span class="red-ui-debug-msg-object-value" style="color: #993300;"><span class="red-ui-debug-msg-type-string red-ui-debug-msg-object-header">"BWM-Test-Flur:1"</span></span></span></span></div>
<div class="red-ui-debug-msg-object-entry collapsed"><span class="red-ui-debug-msg-element"><span class="red-ui-debug-msg-row"><span style="color: #800080;"><span class="red-ui-debug-msg-object-key">value</span>:</span> <span class="red-ui-debug-msg-object-value" style="color: #993300;"><span class="red-ui-debug-msg-type-other">false</span></span></span></span></div>
</div><div class="fusion-text fusion-text-9"><h2 class="red-ui-debug-msg-object-entry collapsed">Ausblick</h2>
<div>Im nächsten Beitrag werde ich zeigen, wie die zwischengespeicherten HCU-Daten aktualisiert werden. Auf dieser Grundlage wird es dann auch möglich sein, sich Statusänderungen von Geräten automatisch ausgeben zu lassen.</div>
<div></div>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/home-control-unit-hcu-in-node-red-integrieren-teil-2/">Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 2</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/home-control-unit-hcu-in-node-red-integrieren-teil-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 1</title>
		<link>https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/</link>
					<comments>https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/#comments</comments>
		
		<dc:creator><![CDATA[Dieter]]></dc:creator>
		<pubDate>Sun, 17 May 2026 18:33:21 +0000</pubDate>
				<category><![CDATA[HCU]]></category>
		<category><![CDATA[Homematic IP]]></category>
		<category><![CDATA[Node-Red]]></category>
		<guid isPermaLink="false">https://homeitems.de/?p=4639</guid>

					<description><![CDATA[<p>Nach der Einführung der neuen HMIP-Zentrale HCU (Home Control Unit) hat eQ-3 eine API veröffentlicht, mit der man eigene Plugins erstellen und auf die HMIP-Daten zugreifen kann. Im Herbst 2025 wurde angekündigt, dass die auch von mir genutzte CCU3 vom eQ-3 nicht weiterentwickelt, sondern in dem freien Modell OpenCCU (ehemals Raspberrymatic) durch  [...]</p>
<p>Der Beitrag <a href="https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/">Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 1</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1216.8px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_5_6 5_6 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:83.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.304%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.304%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-one" style="--awb-margin-top:20px;--awb-margin-bottom:20px;--awb-margin-top-small:0px;--awb-margin-right-small:0px;--awb-margin-bottom-small:20px;--awb-margin-left-small:0px;"><h1 class="fusion-title-heading title-heading-left fusion-responsive-typography-calculated" style="margin:0;--fontSize:32;line-height:1.1;">HCU</h1></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:40px;width:100%;"></div><div class="fusion-text fusion-text-10"><p>Nach der Einführung der neuen HMIP-Zentrale HCU (Home Control Unit) hat eQ-3 eine API veröffentlicht, mit der man eigene Plugins erstellen und auf die HMIP-Daten zugreifen kann. Im Herbst 2025 wurde angekündigt, dass die auch von mir genutzte CCU3 vom eQ-3 nicht weiterentwickelt, sondern in dem freien Modell OpenCCU (ehemals Raspberrymatic) durch die Community weitergepflegt werden soll.</p>
<p>Ich habe auf der CCU3 viel programmiert und mit Node-RED auf die CCU3-Geräte zugegriffen. Jetzt will ich prüfen, wie gut man die HCU in Node-RED einbinden kann, um langfristig von der CCU auf die HCU zu wechseln.</p>
<p>Im ersten Schritt möchte ich eine Verbindung zwischen Node-RED und der HCU aufbauen und erste Daten von HMIP-Geräten empfangen. Ich nehme vorweg, das Ganze funktioniert einfacher als erwartet. In den folgenden Kapiteln beschreibe ich dazu detailliert die Vorgehensweise. Das wesenliche Dokument für alle folgenden Schritte ist dabei die <a href="https://github.com/homematicip/connect-api/releases/download/1.0.1/connect-api-documentation-1.0.1.html">Homematic IP Connect API Dokumentation</a>.</p>
<h2><strong>HCU Entwicklermodus freischalten</strong></h2>
<p>Damit die HCU API-Zugriffe akzeptiert, muss der Entwickler-Modus aktiviert werden. In diesem Modus kann man eigene Plugins direkt auf der HCU laden. Oder man kann mit Plugins auf anderen Systemen (z. B. Node-RED) über eine Websocket-Verbindung kommunizieren.</p>
<p>Die Vorgehensweise zur Freischaltung ist gut in der API-Dokumentation beschrieben, so dass ich nur auf folgendes hinweise:</p>
<ol>
<li>Aktiviere den Entwicklermodus und gebe sofort die Websockets frei (Häkchen setzen)</li>
<li>Warte mit der Erstellung des Aktivierungsschlüssels bis zum nächsten Schritt!</li>
</ol>
</div><div class="fusion-text fusion-text-11"><h2><strong>Authentication Token vereinbaren</strong></h2>
<p>Jedes Plugin braucht für die Kommunikation eine eindeutige ID.  eQ-3 empfiehlt zur Namensfindung die "Reverse Domain Name Notation". Ich habe diesen Namen für die folgenden Tests benutzt:</p>
<p><em>de.spike.grass.plugin.example1</em></p>
<p>Damit die Kommunikation zwischen der HCU und einem anderen Gerät sicher, aber einfach ist, brauche ich außerdem ein Token. Dieser Authentication Token ist wie ein Passwort. Zur Erstellung des Tokens muss man mit der HCU über API-Requests kommunizieren.</p>
<p>Ich empfehle das Tool <a href="https://www.postman.com/">Postman</a> zu verwenden, da es einfach zu bedienen ist.</p>
<p>Ich verweise hier auch auf die Anleitung in Kapitel 2.4 (Step 2) und ergänze noch ein paar Hinweise::</p>
<ul>
<li>Wähle in Postman die Methode "POST" aus. Trage dahinter als Adresse <em>https://hcu1-XXXX.local:6969/hmip/auth/requestConnectApiAuthToken ein </em>(Setze anstelle von hcu1-XXXX den lokalen Netzwerknamen ein)</li>
<li>Ergänze unter dem Tab "Headers" das Feld "VERSION" mit dem Wert "12"</li>
<li>Gehe nun zuerst zurück in den Entwicklermodus der HCU und generiere einen Aktivierungsschlüssel (dieser ist nur kurzzeitig gültig)</li>
<li>Kopiere in den Tab "body" den body-example Code aus Kapitel 2.4 Step 2</li>
<li>Tausche den Aktivierungsschlüssel gegen den soeben generierten Schlüssel aus</li>
<li>Tausche die plugin_id gegen die von dir gewählte ID aus (siehe oben)</li>
</ul>
<pre class="rouge highlight"><a href="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1.webp"><img decoding="async" class="alignnone wp-image-4645 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-1024x271.webp" alt="" width="1024" height="271" srcset="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-200x53.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-300x79.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-400x106.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-600x159.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-768x203.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-800x211.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-1024x271.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-1200x317.webp 1200w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU1-1536x406.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></pre>
<p>Drücke auf Send und man sollte ein solches Feedback erhalten (Wert für spätere Verwendung speichern):<code data-lang="json"></code></p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_4" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_4" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_4" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="application/json">{
    "authToken": "B23FB0DC7FDAA140CDF679D5F78F047C16CEF349691A3E9B425DE16E291E51DF"
}</textarea></div><div class="fusion-alert alert custom alert-custom fusion-alert-left awb-alert-native-link-color" style="--awb-background-color:#fcf8e3;--awb-accent-color:#808080;--awb-border-size:1px;--awb-border-top-left-radius:8px;--awb-border-top-right-radius:8px;--awb-border-bottom-left-radius:8px;--awb-border-bottom-right-radius:8px;" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="fa-exclamation-triangle fas" aria-hidden="true"></i></span><span class="fusion-alert-content">Erscheint hier der Fehler "Could not generate response.  SSL Error: Self signed certificate", dann braucht man nur die angebotene Option "Disable SSL Verification" zu bestätigen und schon funktioniert es.</span></div></div><div class="fusion-text fusion-text-12"><p>Nun muss der Erhalt dieses Schlüssels noch bestätigt werden. Gehe dazu wie folgt in Postman vor:</p>
<ul>
<li>Drücke oben in der Tabzeile auf "New Request"</li>
<li>Ergänze unter dem Tab "Headers" das Feld "VERSION" mit dem Wert "12"</li>
<li>Wähle in Postman die Methode "POST" aus. Trage dahinter als Adresse <em>https://hcu1-XXXX.local:6969/hmip/auth/confirmConnectApiAuthToken</em> (Setze anstelle von hcu1-XXXX den lokalen Netzwerknamen ein)</li>
<li>Kopiere in den Tab "body" den body-example Code aus Kapitel 2.4 Step 3</li>
<li>Tausche den Aktivierungsschlüssel gegen den eben generierten aus</li>
<li>Tausche den authToken gegen den im vorigen Schritt erhaltenen authToken aus.</li>
</ul>
<p>Drücke auf Send und du solltest eine client_id in der folgenden Form erhalten (Wert für spätere Verwendung speichern):</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_5" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_5" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_5" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="application/json">{
    "clientId": "9fa276c2-b410-456d-bfde-4202918e8ce4"
}</textarea></div><div class="fusion-alert alert custom alert-custom fusion-alert-left awb-alert-native-link-color" style="--awb-background-color:#fcf8e3;--awb-accent-color:#808080;--awb-border-size:1px;--awb-border-top-left-radius:8px;--awb-border-top-right-radius:8px;--awb-border-bottom-left-radius:8px;--awb-border-bottom-right-radius:8px;" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="fa-exclamation-triangle fas" aria-hidden="true"></i></span><span class="fusion-alert-content">Wenn es bei einem der beiden Request-Aufrufe zu dem Fehler "Invalid Request" kommt, dann kann das daran liegen, dass der Aktivierungsschlüssel abgelaufen ist. Dann generiert einfach einen Neuen, tauscht diesen in den body-Bereich aus und für die Requests erneut durch.</span></div></div><div class="fusion-text fusion-text-13"><h2>Websocket Verbindung testen</h2>
<p>Nun kann getestet werden, ob eine Websocket-Verbindung zur HCU mit den gerade erzeugten Daten aufgebaut werden kann. Ich empfehle hierzu auch wieder das Tool Postman zu verwenden.</p>
<p>Hier gibt es allerdings mit der freien und unregistrierten Version eine Einschränkung: In dieser Version kann man keine Self-Signed-Socket Verbindungen aufbauen, die wir aber für die Kommunikation mit der HCU benötigen.</p>
<p>Man löst das Ganze, indem man sich einen (kostenlosen) Postman-Account erstellt und sich dann mit dem Account in der App anmeldet. Anschließend ist die Kommunikation mit den Self- Signed- Zertifikaten möglich.</p>
<p>Folgende Schritte sind anschließend in Postman durchzuführen:</p>
<ul>
<li>In der Adressleiste wird folgende Adresse eingetragen: wss://<em>hcu1-XXXX.local</em>:9001 (Setze anstelle von hcu1-XXXX den lokalen Netzwerknamen ein)</li>
<li>Auf das Plus-Zeichen links oben im Workspace drücken und "Websocket" auswählen.</li>
<li>Unter Headers wird ein neuer Key "authtoken" mit dem eben generierten Wert eingetragen.</li>
<li>Unter Headers wird ein weiterer neuer Key "plugin-id" mit der generierten Plugin-ID eingetragen.</li>
</ul>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2.webp"><img decoding="async" class="alignnone wp-image-4651 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-1024x295.webp" alt="" width="1024" height="295" srcset="https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-200x58.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-300x86.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-400x115.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-600x173.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-768x221.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-800x230.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-1024x295.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2-1200x345.webp 1200w, https://homeitems.de/wp-content/uploads/2026/05/Postman-HCU2.webp 1400w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Nach Betätigen von Connect sollte die Meldung "<em>connected to .local:9001</em>" erscheinen.</p>
<p>Und in der HCU im Plugins Menü sollte die Verbindung ebenfalls auftauchen!</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1.webp"><img decoding="async" class="alignnone wp-image-4652 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-1024x384.webp" alt="" width="1024" height="384" srcset="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-200x75.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-300x113.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-400x150.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-600x225.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-768x288.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-800x300.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-1024x384.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-1200x451.webp 1200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1-1536x577.webp 1536w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed1.webp 1614w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
</div><div class="fusion-text fusion-text-14"><h1>Mit Node-RED HCU-Daten abfragen</h1>
<p>Jetzt kann eine Websocket Verbindung zur HCU aus Node-RED aufgebaut werden. Die Sockets-Nodes in Node-RED unterstützen allerdings keine Self-Signed Zertifikate. Stattdessen verwende ich die Palette <a href="https://flows.nodered.org/node/node-red-contrib-dynamic-websocket">node-red-contrib-dynamic-websocket</a>, die ich in Node-RED installiert habe. Darin befindet sich ein Websocket-Node, der viel mehr Möglichkeiten als die Standard-Nodes bietet.</p>
</div><div class="fusion-alert alert notice alert-warning fusion-alert-left awb-alert-native-link-color" role="alert"><div class="fusion-alert-content-wrapper"><span class="alert-icon"><i class="awb-icon-cog" aria-hidden="true"></i></span><span class="fusion-alert-content"><p>Für die Angabe von Serveradressen gibt es zwei Möglichkeiten.</p>
<ol>
<li>eQ3 verwendet https://hcu1-XXX.local:9001 oder wss://hcu1-XXXX.local:9001, wobei das XXXX durch die letzten 4 Zeichen der Seriennummer ersetzt werden.</li>
<li>Alternativ kann man https://192.177.156.43:9001 oder wss://192.177.156.43:9001 verwenden (d.h. man adressiert die HCU über die IP-Adresse und den Port)</li>
</ol>
<p>Ich habe in Node-Red immer die zweite Variante verwendet, da ich mit der Namensauflösung erheblich Schwierigkeiten hatte. Diese Variante funktioniert auch für alle vorherigen Schritte.</p></span></div></div><div class="fusion-text fusion-text-15"><p>In Node-RED wird nun der Dynamic-Websocket-Node eingefügt und in den Eigenschaften folgende Daten eingetragen:</p>
<ul>
<li>Default-Url "wss://"</li>
<li>"Allow Self Signed Certificates"-Häkchen setzen</li>
</ul>
<p>Unter Custom Headers wird anschließend folgender JSON-Eintrag ergänzt:</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-light" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:20px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:#e0dede;"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_6" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_6" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_6" data-readOnly="nocursor" data-lineNumbers="1" data-lineWrapping="" data-theme="default" data-mode="text/javascript">{
  "authtoken": "<das Authentication Token>",
  "plugin-id": "<die selbstgewählte Plugin ID (bei mir: de.spike.grass.plugin.example1)>",
  "hmip-system-events": "true"
}</textarea></div><div class="fusion-text fusion-text-16"><p>Im Code wird die eigene Plugin-ID sowie das eigene Authentication Token eingetragen. Mit der Zeile "hmip-system-events":"true" wird die HCU so eingestellt, dass alle Änderungen an HMIP-Zuständen (Basisstation, Geräte, Gruppen, etc.=) sofort an Node-Red übermittelt werden (siehe auch API-Dokumentation).</p>
<p><img decoding="async" class="alignnone wp-image-4668 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-1024x733.webp" alt="" width="1024" height="733" srcset="https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-200x143.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-300x214.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-400x286.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-600x429.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-768x549.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-800x572.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755-1024x733.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-Websocket1-e1779039776755.webp 1188w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>Alle Websocket-Nachrichten können durch einen Debug-Node am ersten Ausgang des Websocket-Nodes im Debug-Fenster ausgegeben werden. Nach dem deployen des Flows sollte das Ergebnis wie folgt aussehen. In den Objekten sind bereits alle Informationen zu den HMIP-Geräte enthalten.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2.webp"><img decoding="async" class="alignnone wp-image-4666 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-1024x206.webp" alt="" width="1024" height="206" srcset="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-200x40.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-300x60.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-400x80.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-600x121.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-768x155.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-800x161.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-1024x206.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-1200x241.webp 1200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2-1536x309.webp 1536w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed2.webp 1630w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
</div><div class="fusion-text fusion-text-17"><h2>Weitere Funktionen ergänzen</h2>
<p>Ich erweitere den Flow jetzt noch um Funktionen, die bei den weiteren Tests hilfreich sind. Hierzu gehört auch, dass die HCU zwischenzeitlich abfragt, ob mein Plugin einsatzbnereit ist. Hierzu sendet die HCU an Node-Red unter payload.type einen "PLUGIN_STATE_REQUEST". Sobald ich diesen erhalte schicke ich eine PLUGIN_STATE_RESPOND Message zurück. Die Nodes, die ich ergänze sind in folgender Tabelle aufgeführt.</p>
</div>
<div class="table-1">
<table width="100%">
<thead>
<tr>
<th align="left"><strong>Node</strong></th>
<th align="left"><strong>Beschreibung</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Inject Node ("Close Connection")</td>
<td align="left">Mit diesem Node kann ich die Websocket-Verbindung schließen. Dazu braucht als Parameter nur in "msg.close" gleich "true" angegeben zu werden.</td>
</tr>
<tr>
<td align="left">Inject Node ("Open Connection")</td>
<td align="left">Mit diesem Node kann ich die Websocket-Verbindung wieder aufbauen. Dazu braucht als Parameter nur in "msg.url" als String die Serveradresse "wss://" angegeben zu werden.</td>
</tr>
<tr>
<td align="left">Switch Node ("Event Types unterscheiden")</td>
<td align="left">Hier löse ich die Event-Types auf, die von der HCU übermittelt werden (wird später noch weiter ausgebaut).</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1.webp"><img decoding="async" class="alignnone wp-image-4678 size-medium" src="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1-300x221.webp" alt="" width="300" height="221" srcset="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1-200x147.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1-300x221.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1-400x295.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1-600x442.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change1.webp 676w" sizes="(max-width: 300px) 100vw, 300px" /></a></td>
</tr>
<tr>
<td align="left">Switch Node ("PLUGIN_STATE_RESPONS Message")</td>
<td align="left">Über diesen Node erstelle ich die JSON-Nachricht, die ich per Websocket an die HCU schicke. In dem folgenden Screenshot müssen die PluginID sowie die ClientID durch die eigenen Werte ersetzt werden.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2.webp"><img decoding="async" class="alignnone wp-image-4679 size-medium" src="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-300x144.webp" alt="" width="300" height="144" srcset="https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-200x96.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-300x144.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-400x192.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-600x288.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-768x369.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2-800x385.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/HCU-NodeRed_Change2.webp 878w" sizes="(max-width: 300px) 100vw, 300px" /></a></td>
</tr>
</tbody>
</table>
</div>
<div class="fusion-text fusion-text-18"><p>Der Flow sieht anschließend wie folgt aus und bietet jetzt eine solide Basis für die Kommunikation mit der HCU.</p>
<p><a href="https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1.webp"><img decoding="async" class="alignnone wp-image-4680 size-large" src="https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-1024x159.webp" alt="" width="1024" height="159" srcset="https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-200x31.webp 200w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-300x47.webp 300w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-400x62.webp 400w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-600x93.webp 600w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-768x119.webp 768w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-800x124.webp 800w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-1024x159.webp 1024w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-1200x187.webp 1200w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1-1536x239.webp 1536w, https://homeitems.de/wp-content/uploads/2026/05/Node-Red-HCU-Flow1.webp 1904w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Im nächsten Beitrag werde ich mir die Nachrichtenformate der HCU näher anschauen und entscheiden, wie ich diese am besten auswerte. Anregungen und Ergänzungen sind herzlich willkommen.</p>
</div></div></div></div></div>
<p>Der Beitrag <a href="https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/">Die Home Control Unit (HCU) in Node-RED integrieren &#8211; Teil 1</a> erschien zuerst auf <a href="https://homeitems.de">Smart home Ratgeber</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homeitems.de/mit-node-red-auf-die-hmip-home-control-unit-hcu-zugreifen/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
