thermIQ/docs/diagrams/01_Verbindungsplan.drawio
Adrian Bretsch df53a2c6a2 feat: Add Schrankbelegungsplan diagram and gRPC client for BOS-Miner
- Created a new Draw.io diagram for the cabinet layout (03_Schrankbelegung.drawio) detailing the components and their arrangement.
- Implemented a gRPC client in client.js to interact with the BOS-Miner, including a function to retrieve the tuner state with authorization.
2026-05-08 12:54:14 +02:00

395 lines
27 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<mxfile host="app.diagrams.net" agent="ThermIQ/PAI" version="21.0.0">
<diagram name="Verbindungsplan" id="vbp001">
<mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2200" pageHeight="1600" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- ===== TITLE ===== -->
<mxCell id="t1" value="ThermIQ — Verbindungsplan ASP1 (Walda)" style="text;html=1;strokeColor=none;fillColor=none;fontSize=22;fontStyle=1;align=left;" vertex="1" parent="1">
<mxGeometry x="30" y="18" width="1000" height="35" as="geometry"/>
</mxCell>
<mxCell id="t2" value="Stand: 2026-03 | Bearbeiter: Adrian | Zeichnungs-Nr.: TIQ-ASP1-VBP-001" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;align=left;fontColor=#666666;" vertex="1" parent="1">
<mxGeometry x="30" y="50" width="800" height="18" as="geometry"/>
</mxCell>
<!-- ===== ZONE: ENERGIEQUELLEN ===== -->
<mxCell id="z1" value="ENERGIEQUELLEN" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#996600;" vertex="1" parent="1">
<mxGeometry x="30" y="72" width="230" height="18" as="geometry"/>
</mxCell>
<mxCell id="e_solar" value="Solar PV&#xa;Aufdachanlage" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="30" y="93" width="155" height="62" as="geometry"/>
</mxCell>
<mxCell id="e_batt" value="Batterie&#xa;Speicher" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="205" y="93" width="155" height="62" as="geometry"/>
</mxCell>
<mxCell id="e_deye" value="Deye Hybrid-WR&#xa;RS485 Modbus&#xa;(kein LAN-Modbus!)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="30" y="193" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="e_grid" value="Netz 230V/400V&#xa;Hausanschluss" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="260" y="193" width="160" height="62" as="geometry"/>
</mxCell>
<mxCell id="e_meter" value="Smartmeter&#xa;(Hauptzähler)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="260" y="283" width="160" height="55" as="geometry"/>
</mxCell>
<!-- ===== ZONE: HAUPTVERTEILUNG ===== -->
<mxCell id="z2" value="HAUPTVERTEILUNG" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#990000;" vertex="1" parent="1">
<mxGeometry x="455" y="72" width="230" height="18" as="geometry"/>
</mxCell>
<mxCell id="d_q0" value="Q0&#xa;FI/LS 40A&#xa;Hauptschutz" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="455" y="220" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="d_bus230" value="230V AC Sammelschiene (L1 / N / PE)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FF0000;strokeColor=#990000;fontColor=#FFFFFF;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="430" y="380" width="1580" height="22" as="geometry"/>
</mxCell>
<mxCell id="d_psu" value="Netzteil&#xa;24V DC / 10A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1790" y="430" width="165" height="70" as="geometry"/>
</mxCell>
<mxCell id="d_bus24" value="24V DC Steuerschiene (L+ / L-)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FF8000;strokeColor=#CC5500;fontColor=#FFFFFF;fontStyle=1;fontSize=10;" vertex="1" parent="1">
<mxGeometry x="430" y="595" width="1580" height="18" as="geometry"/>
</mxCell>
<!-- ===== ZONE: SCHALTGERAETE ===== -->
<mxCell id="z3" value="SCHALTGERAETE / SICHERUNGEN" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#003399;" vertex="1" parent="1">
<mxGeometry x="430" y="420" width="350" height="18" as="geometry"/>
</mxCell>
<mxCell id="s_k10" value="F10 LS-B16A&#xa;K10 Schütz&#xa;Miner 1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="440" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<mxCell id="s_k11" value="F11 LS-B16A&#xa;K11 Schütz&#xa;Miner 2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="625" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<mxCell id="s_f12" value="F12 LS-B6A&#xa;Pumpen P3/P4/P5" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="810" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<mxCell id="s_k36" value="F13 LS-B6A&#xa;K3 K4 K5 K6&#xa;Ventile RV1/RV2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="990" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<mxCell id="s_k2" value="F14 LS-B6A&#xa;K2 Relais&#xa;Rückkühler" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1170" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<mxCell id="s_k7" value="K7 Relais&#xa;potenzialfrei&#xa;WP EVU I1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1350" y="443" width="165" height="85" as="geometry"/>
</mxCell>
<!-- Safety relay in switching zone -->
<mxCell id="s_sfty" value="Sicherheitsrelais&#xa;2-kanalig&#xa;mit Rückführkreis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="640" y="790" width="215" height="90" as="geometry"/>
</mxCell>
<!-- ===== ZONE: VERBRAUCHER ===== -->
<mxCell id="z4" value="VERBRAUCHER / AKTOREN" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#006600;" vertex="1" parent="1">
<mxGeometry x="430" y="625" width="300" height="18" as="geometry"/>
</mxCell>
<mxCell id="l_m1" value="Antminer S19J #1&#xa;~3200W / 14A&#xa;Braiins OS gRPC" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="440" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="l_m2" value="Antminer S19J #2&#xa;~3200W / 14A&#xa;Braiins OS gRPC" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="625" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="l_pumps" value="P3 + P4 + P5&#xa;Wilo Stratos PICO+&#xa;010V Regelung" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="810" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="l_valves" value="RV1 + RV2&#xa;Belimo C320Q-J&#xa;CQ230A 230V" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="990" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="l_rk" value="Rückkühler&#xa;Ventilator 230V" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1170" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<mxCell id="l_wp" value="Buderus WLW186i&#xa;EVU Eingang I1&#xa;KEIN Spannungseingang!" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1350" y="643" width="165" height="80" as="geometry"/>
</mxCell>
<!-- Thermal -->
<mxCell id="l_puffer" value="Pufferspeicher&#xa;Heizung" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#36869e;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="810" y="780" width="155" height="65" as="geometry"/>
</mxCell>
<mxCell id="l_ww" value="Warmwasser-&#xa;speicher" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#36869e;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="990" y="780" width="155" height="65" as="geometry"/>
</mxCell>
<!-- ===== ZONE: SICHERHEITSKREIS ===== -->
<mxCell id="z5" value="SICHERHEITSKREIS (Hardware — unabhaengig von Software!)" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#996600;" vertex="1" parent="1">
<mxGeometry x="430" y="760" width="600" height="18" as="geometry"/>
</mxCell>
<mxCell id="sf_es1" value="Not-Aus 1&#xa;[NC]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FF0000;strokeColor=#AE4132;fontColor=#FFFFFF;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="440" y="800" width="115" height="58" as="geometry"/>
</mxCell>
<mxCell id="sf_es2" value="Not-Aus 2&#xa;[NC]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FF0000;strokeColor=#AE4132;fontColor=#FFFFFF;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="570" y="800" width="115" height="58" as="geometry"/>
</mxCell>
<mxCell id="sf_flow" value="FLOW OK&#xa;[NC]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="870" y="800" width="115" height="58" as="geometry"/>
</mxCell>
<mxCell id="sf_temp" value="TEMP MAX&#xa;[NC]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1000" y="800" width="115" height="58" as="geometry"/>
</mxCell>
<mxCell id="sf_rst" value="Reset&#xa;[NO]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1130" y="800" width="115" height="58" as="geometry"/>
</mxCell>
<!-- ===== ZONE: AUTOMATION ===== -->
<mxCell id="z6" value="AUTOMATION &amp; KOMMUNIKATION" style="text;html=1;strokeColor=none;fillColor=none;fontSize=10;fontStyle=1;fontColor=#660066;" vertex="1" parent="1">
<mxGeometry x="430" y="960" width="400" height="18" as="geometry"/>
</mxCell>
<mxCell id="c_revpi" value="RevolutionPi&#xa;Core + DIO + AIO&#xa;MQTT Client / PLC" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="430" y="985" width="200" height="88" as="geometry"/>
</mxCell>
<mxCell id="c_sw" value="Industrial Switch&#xa;Feste IPs&#xa;NTP Sync" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="660" y="998" width="175" height="65" as="geometry"/>
</mxCell>
<mxCell id="c_rpi" value="Raspberry Pi&#xa;Node-RED | Home Asst.&#xa;Mosquitto MQTT" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="870" y="985" width="205" height="88" as="geometry"/>
</mxCell>
<mxCell id="c_rs485" value="USB RS485&#xa;Gateway&#xa;(Modbus RTU)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1110" y="998" width="170" height="65" as="geometry"/>
</mxCell>
<!-- ===== LEGEND ===== -->
<mxCell id="leg_box" value="Legende" style="swimlane;fillColor=#f5f5f5;strokeColor=#666666;fontStyle=1;startSize=25;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="1600" y="700" width="290" height="295" as="geometry"/>
</mxCell>
<mxCell id="leg_l1b" value="" style="rounded=0;fillColor=#FF0000;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="35" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l1t" value="230V AC Leistung" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="33" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l2b" value="" style="rounded=0;fillColor=#FF8000;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="60" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l2t" value="24V DC Steuer" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="58" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l3b" value="" style="rounded=0;fillColor=#FFCC00;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="85" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l3t" value="Sicherheitskreis" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="83" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l4b" value="" style="rounded=0;fillColor=#008000;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="110" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l4t" value="RS485 Modbus RTU" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="108" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l5b" value="" style="rounded=0;fillColor=#0000CC;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="135" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l5t" value="LAN / Ethernet (MQTT)" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="133" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l6b" value="" style="rounded=0;fillColor=#9900CC;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="160" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l6t" value="gRPC (Braiins OS API)" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="158" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l7b" value="" style="rounded=0;fillColor=#CC00CC;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="185" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l7t" value="010V Analogsignal" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="183" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l8b" value="" style="rounded=0;fillColor=#00AAAA;strokeColor=none;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="210" width="55" height="14" as="geometry"/>
</mxCell>
<mxCell id="leg_l8t" value="Hydraulik / Wärme" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;" vertex="1" parent="leg_box">
<mxGeometry x="75" y="208" width="200" height="18" as="geometry"/>
</mxCell>
<mxCell id="leg_l9t" value="-- -- Steuersignal (DO/DI)" style="text;strokeColor=none;fillColor=none;align=left;fontSize=11;fontColor=#666666;" vertex="1" parent="leg_box">
<mxGeometry x="10" y="238" width="265" height="18" as="geometry"/>
</mxCell>
<!-- ===== EDGES ===== -->
<!-- Energy to Deye -->
<mxCell id="e1" value="DC" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#d6b656;" edge="1" source="e_solar" target="e_deye" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e2" value="DC" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#d6b656;" edge="1" source="e_batt" target="e_deye" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Grid to meter to Q0 -->
<mxCell id="e3" value="L1/N" style="endArrow=block;html=1;strokeWidth=3;strokeColor=#FF0000;" edge="1" source="e_grid" target="e_meter" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e4" value="230V AC" style="endArrow=block;html=1;strokeWidth=3;strokeColor=#FF0000;" edge="1" source="e_deye" target="d_q0" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e5" value="230V AC" style="endArrow=block;html=1;strokeWidth=3;strokeColor=#FF0000;" edge="1" source="e_meter" target="d_q0" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Q0 to AC busbar -->
<mxCell id="e6" value="L1/N/PE" style="endArrow=block;html=1;strokeWidth=4;strokeColor=#FF0000;" edge="1" source="d_q0" target="d_bus230" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- AC busbar to switching devices -->
<mxCell id="e7" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_k10" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e8" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_k11" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e9" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_f12" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e10" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_k36" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e11" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_k2" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e12" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="s_k7" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e13" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="d_bus230" target="d_psu" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- PSU to 24V busbar -->
<mxCell id="e14" value="24V DC" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF8000;" edge="1" source="d_psu" target="d_bus24" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Switching to loads -->
<mxCell id="e15" value="" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="s_k10" target="l_m1" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e16" value="" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="s_k11" target="l_m2" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e17" value="" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="s_f12" target="l_pumps" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e18" value="" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="s_k36" target="l_valves" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e19" value="" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#FF0000;" edge="1" source="s_k2" target="l_rk" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e20" value="Trockenkontakt&#xa;(kein Spannungseingang!)" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#9900CC;dashed=1;" edge="1" source="s_k7" target="l_wp" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Safety inputs to relay -->
<mxCell id="e21" value="NC" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#CC8800;" edge="1" source="sf_es1" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e22" value="NC" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#CC8800;" edge="1" source="sf_es2" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e23" value="NC" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#CC8800;" edge="1" source="sf_flow" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e24" value="NC" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#CC8800;" edge="1" source="sf_temp" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e25" value="NO" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#CC8800;" edge="1" source="sf_rst" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Safety relay to contactor coils -->
<mxCell id="e26" value="Spulenfreigabe K10" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#CC8800;dashed=1;" edge="1" source="s_sfty" target="s_k10" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e27" value="Spulenfreigabe K11" style="endArrow=block;html=1;strokeWidth=2;strokeColor=#CC8800;dashed=1;" edge="1" source="s_sfty" target="s_k11" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e28" value="Safety OK → DI" style="endArrow=open;html=1;strokeWidth=1;strokeColor=#CC8800;dashed=1;" edge="1" source="s_sfty" target="c_revpi" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- 24V to controls -->
<mxCell id="e29" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF8000;" edge="1" source="d_bus24" target="s_sfty" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e30" value="" style="endArrow=open;html=1;strokeWidth=2;strokeColor=#FF8000;" edge="1" source="d_bus24" target="c_revpi" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Control connections -->
<mxCell id="e31" value="LAN" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#0000CC;" edge="1" source="c_revpi" target="c_sw" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e32" value="LAN" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#0000CC;" edge="1" source="c_sw" target="c_rpi" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e33" value="USB" style="endArrow=open;endFill=0;html=1;strokeWidth=1;strokeColor=#008000;" edge="1" source="c_rpi" target="c_rs485" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e34" value="RS485&#xa;Modbus RTU" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#008000;" edge="1" source="c_rs485" target="e_deye" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- RevPi DO to relay coils -->
<mxCell id="e35" value="DO → K2-K7 Spulen&#xa;(24V)" style="endArrow=open;html=1;strokeWidth=1;strokeColor=#CC00CC;dashed=1;" edge="1" source="c_revpi" target="s_k2" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- RevPi AO to pumps -->
<mxCell id="e36" value="AO1-AO3&#xa;010V" style="endArrow=open;html=1;strokeWidth=1;strokeColor=#CC00CC;dashed=1;" edge="1" source="c_revpi" target="l_pumps" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- gRPC from RPi to miners -->
<mxCell id="e37" value="gRPC LAN&#xa;(Braiins API)" style="endArrow=open;endFill=0;html=1;strokeWidth=1;strokeColor=#9900CC;dashed=1;" edge="1" source="c_sw" target="l_m1" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Thermal flow -->
<mxCell id="e38" value="Abwärme" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#FF6600;dashed=1;" edge="1" source="l_m1" target="l_puffer" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e39" value="Abwärme" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#FF6600;dashed=1;" edge="1" source="l_m2" target="l_puffer" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e40" value="Heizkreis" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#00AAAA;" edge="1" source="l_pumps" target="l_puffer" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e41" value="Hydraulik" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#00AAAA;" edge="1" source="l_puffer" target="l_wp" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="e42" value="WW" style="endArrow=open;endFill=0;html=1;strokeWidth=2;strokeColor=#00AAAA;" edge="1" source="l_puffer" target="l_ww" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>