Squashed 'core/' content from commit 92ec910

git-subtree-dir: core
git-subtree-split: 92ec910a132e379a3a6e442a75bcb07cac0f0010
This commit is contained in:
Du Wenbo
2026-04-04 18:16:49 +08:00
commit d8e4449f10
227 changed files with 39179 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1e293b;stop-opacity:1" />
<stop offset="100%" style="stop-color:#0f172a;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Device icon -->
<rect x="150" y="60" width="100" height="120" rx="8" fill="none" stroke="#64748b" stroke-width="3"/>
<circle cx="200" cy="110" r="25" fill="none" stroke="#64748b" stroke-width="2"/>
<path d="M 185 110 L 200 95 L 215 110 L 200 125 Z" fill="#64748b" opacity="0.5"/>
<!-- Signal -->
<line x1="200" y1="60" x2="200" y2="40" stroke="#64748b" stroke-width="2"/>
<circle cx="200" cy="36" r="4" fill="#64748b"/>
<!-- Label -->
<text x="200" y="228" text-anchor="middle" fill="#94a3b8" font-family="Arial, sans-serif" font-size="20" font-weight="bold">IoT Device</text>
<text x="200" y="248" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">通用设备</text>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,30 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2d1b1b;stop-opacity:1" />
<stop offset="100%" style="stop-color:#1a0f0f;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Meter body -->
<rect x="120" y="50" width="160" height="140" rx="10" fill="#f3f4f6" stroke="#d1d5db" stroke-width="2"/>
<!-- Screen -->
<rect x="138" y="65" width="124" height="50" rx="4" fill="#1f2937"/>
<text x="200" y="92" text-anchor="middle" fill="#ef4444" font-family="monospace" font-size="20" font-weight="bold">256.8</text>
<text x="255" y="92" fill="#ef4444" font-family="monospace" font-size="10">GJ</text>
<text x="145" y="78" fill="#9ca3af" font-family="monospace" font-size="9">累计热量</text>
<!-- Flow rate -->
<text x="200" y="135" text-anchor="middle" fill="#6b7280" font-family="Arial" font-size="11">流量: 2.4 m³/h</text>
<text x="200" y="150" text-anchor="middle" fill="#6b7280" font-family="Arial" font-size="11">温差: 8.2°C</text>
<!-- Pipes -->
<rect x="70" y="155" width="55" height="16" rx="8" fill="#ef4444" opacity="0.7"/>
<rect x="275" y="155" width="55" height="16" rx="8" fill="#3b82f6" opacity="0.7"/>
<text x="97" y="166" text-anchor="middle" fill="white" font-size="9" font-family="Arial">供水</text>
<text x="302" y="166" text-anchor="middle" fill="white" font-size="9" font-family="Arial">回水</text>
<!-- Flow arrows in pipes -->
<text x="80" y="166" fill="white" font-size="10"></text>
<text x="315" y="166" fill="white" font-size="10"></text>
<!-- Label -->
<text x="200" y="238" text-anchor="middle" fill="#f87171" font-family="Arial, sans-serif" font-size="20" font-weight="bold">热量表</text>
<text x="200" y="258" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Ultrasonic Heat Meter</text>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a2332;stop-opacity:1" />
<stop offset="100%" style="stop-color:#0f172a;stop-opacity:1" />
</linearGradient>
<linearGradient id="body" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#e5e7eb;stop-opacity:1" />
<stop offset="100%" style="stop-color:#9ca3af;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Heat pump body -->
<rect x="80" y="50" width="240" height="170" rx="12" fill="url(#body)" stroke="#6b7280" stroke-width="2"/>
<!-- Fan grille -->
<circle cx="200" cy="120" r="55" fill="#374151" stroke="#4b5563" stroke-width="3"/>
<circle cx="200" cy="120" r="45" fill="none" stroke="#6b7280" stroke-width="1"/>
<circle cx="200" cy="120" r="35" fill="none" stroke="#6b7280" stroke-width="1"/>
<circle cx="200" cy="120" r="25" fill="none" stroke="#6b7280" stroke-width="1"/>
<circle cx="200" cy="120" r="8" fill="#1f2937"/>
<!-- Fan blades -->
<g transform="translate(200, 120)" fill="#4b5563" opacity="0.8">
<ellipse cx="0" cy="-22" rx="8" ry="22" transform="rotate(0)"/>
<ellipse cx="0" cy="-22" rx="8" ry="22" transform="rotate(90)"/>
<ellipse cx="0" cy="-22" rx="8" ry="22" transform="rotate(180)"/>
<ellipse cx="0" cy="-22" rx="8" ry="22" transform="rotate(270)"/>
</g>
<!-- Side vents -->
<g fill="#9ca3af">
<rect x="90" y="170" width="40" height="3" rx="1.5"/>
<rect x="90" y="178" width="40" height="3" rx="1.5"/>
<rect x="90" y="186" width="40" height="3" rx="1.5"/>
<rect x="90" y="194" width="40" height="3" rx="1.5"/>
<rect x="90" y="202" width="40" height="3" rx="1.5"/>
</g>
<!-- Pipes -->
<rect x="280" y="140" width="30" height="12" rx="6" fill="#ef4444" opacity="0.8"/>
<rect x="280" y="165" width="30" height="12" rx="6" fill="#3b82f6" opacity="0.8"/>
<text x="295" y="149" text-anchor="middle" fill="white" font-size="8" font-family="Arial"></text>
<text x="295" y="174" text-anchor="middle" fill="white" font-size="8" font-family="Arial"></text>
<!-- Status LED -->
<circle cx="100" cy="68" r="4" fill="#22c55e"/>
<!-- Label -->
<text x="200" y="258" text-anchor="middle" fill="#ff8c00" font-family="Arial, sans-serif" font-size="20" font-weight="bold">空气源热泵</text>
<text x="200" y="278" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Air Source Heat Pump</text>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a1a2e;stop-opacity:1" />
<stop offset="100%" style="stop-color:#16213e;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Meter body -->
<rect x="110" y="30" width="180" height="220" rx="10" fill="#f3f4f6" stroke="#d1d5db" stroke-width="2"/>
<!-- Screen -->
<rect x="130" y="50" width="140" height="60" rx="6" fill="#1f2937" stroke="#374151" stroke-width="1"/>
<!-- LCD display -->
<text x="200" y="82" text-anchor="middle" fill="#22c55e" font-family="monospace" font-size="24" font-weight="bold">1847.5</text>
<text x="260" y="82" text-anchor="end" fill="#22c55e" font-family="monospace" font-size="12">kWh</text>
<text x="140" y="65" fill="#6b7280" font-family="monospace" font-size="10">正向有功总</text>
<!-- Status LEDs -->
<circle cx="145" cy="125" r="4" fill="#22c55e"/>
<circle cx="160" cy="125" r="4" fill="#ef4444" opacity="0.3"/>
<circle cx="175" cy="125" r="4" fill="#eab308" opacity="0.3"/>
<text x="190" y="128" fill="#6b7280" font-family="Arial" font-size="9">运行</text>
<!-- Buttons -->
<circle cx="150" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<circle cx="200" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<circle cx="250" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<text x="150" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial"></text>
<text x="200" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial">OK</text>
<text x="250" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial"></text>
<!-- Terminal block -->
<rect x="130" y="190" width="140" height="40" rx="4" fill="#e5e7eb" stroke="#d1d5db"/>
<g fill="#374151">
<circle cx="150" cy="210" r="6" />
<circle cx="175" cy="210" r="6" />
<circle cx="200" cy="210" r="6" />
<circle cx="225" cy="210" r="6" />
<circle cx="250" cy="210" r="6" />
</g>
<!-- Label -->
<text x="200" y="272" text-anchor="middle" fill="#00d4ff" font-family="Arial, sans-serif" font-size="20" font-weight="bold">智能电表</text>
<text x="200" y="292" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Smart Power Meter</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a3a2a;stop-opacity:1" />
<stop offset="100%" style="stop-color:#0d2818;stop-opacity:1" />
</linearGradient>
<linearGradient id="panel" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2563eb;stop-opacity:1" />
<stop offset="100%" style="stop-color:#1e40af;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Solar panels -->
<g transform="translate(80, 40)">
<!-- Panel frame -->
<rect x="0" y="0" width="240" height="160" rx="6" fill="url(#panel)" stroke="#3b82f6" stroke-width="2"/>
<!-- Grid lines -->
<line x1="80" y1="0" x2="80" y2="160" stroke="#1e3a5f" stroke-width="1.5"/>
<line x1="160" y1="0" x2="160" y2="160" stroke="#1e3a5f" stroke-width="1.5"/>
<line x1="0" y1="40" x2="240" y2="40" stroke="#1e3a5f" stroke-width="1.5"/>
<line x1="0" y1="80" x2="240" y2="80" stroke="#1e3a5f" stroke-width="1.5"/>
<line x1="0" y1="120" x2="240" y2="120" stroke="#1e3a5f" stroke-width="1.5"/>
<!-- Cells shine -->
<rect x="4" y="4" width="72" height="34" rx="2" fill="#3b82f6" opacity="0.6"/>
<rect x="84" y="4" width="72" height="34" rx="2" fill="#60a5fa" opacity="0.4"/>
<rect x="164" y="4" width="72" height="34" rx="2" fill="#3b82f6" opacity="0.5"/>
<!-- Sun icon -->
<circle cx="220" cy="20" r="12" fill="#fbbf24" opacity="0.8"/>
<g stroke="#fbbf24" stroke-width="2" opacity="0.6">
<line x1="220" y1="2" x2="220" y2="8"/>
<line x1="220" y1="32" x2="220" y2="38"/>
<line x1="202" y1="20" x2="208" y2="20"/>
<line x1="232" y1="20" x2="238" y2="20"/>
</g>
<!-- Stand -->
<rect x="110" y="160" width="20" height="40" fill="#374151"/>
<rect x="80" y="195" width="80" height="8" rx="4" fill="#4b5563"/>
</g>
<!-- Label -->
<text x="200" y="270" text-anchor="middle" fill="#00ff88" font-family="Arial, sans-serif" font-size="20" font-weight="bold">光伏逆变器</text>
<text x="200" y="290" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Huawei SUN2000-110KTL</text>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,39 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a2332;stop-opacity:1" />
<stop offset="100%" style="stop-color:#0c1524;stop-opacity:1" />
</linearGradient>
<radialGradient id="glow" cx="50%" cy="50%" r="50%">
<stop offset="0%" style="stop-color:#3b82f6;stop-opacity:0.3" />
<stop offset="100%" style="stop-color:#3b82f6;stop-opacity:0" />
</radialGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Glow effect -->
<circle cx="200" cy="130" r="80" fill="url(#glow)"/>
<!-- Sensor body -->
<rect x="160" y="60" width="80" height="120" rx="12" fill="#f9fafb" stroke="#e5e7eb" stroke-width="2"/>
<!-- Display -->
<rect x="172" y="75" width="56" height="35" rx="4" fill="#1f2937"/>
<text x="200" y="96" text-anchor="middle" fill="#22c55e" font-family="monospace" font-size="18" font-weight="bold">23.5</text>
<text x="200" y="106" text-anchor="middle" fill="#6b7280" font-family="monospace" font-size="8">°C</text>
<!-- Humidity bar -->
<rect x="175" y="120" width="50" height="6" rx="3" fill="#1f2937"/>
<rect x="175" y="120" width="32" height="6" rx="3" fill="#3b82f6"/>
<text x="200" y="138" text-anchor="middle" fill="#6b7280" font-family="Arial" font-size="9">湿度 64%</text>
<!-- Antenna -->
<line x1="200" y1="60" x2="200" y2="30" stroke="#9ca3af" stroke-width="2"/>
<circle cx="200" cy="26" r="4" fill="#22c55e"/>
<!-- Signal waves -->
<path d="M 210 35 Q 218 26, 210 17" fill="none" stroke="#22c55e" stroke-width="1.5" opacity="0.6"/>
<path d="M 214 39 Q 226 26, 214 13" fill="none" stroke="#22c55e" stroke-width="1.5" opacity="0.4"/>
<path d="M 218 43 Q 234 26, 218 9" fill="none" stroke="#22c55e" stroke-width="1.5" opacity="0.2"/>
<!-- Wall mount -->
<rect x="185" y="180" width="30" height="20" rx="4" fill="#d1d5db"/>
<circle cx="195" cy="190" r="3" fill="#9ca3af"/>
<circle cx="205" cy="190" r="3" fill="#9ca3af"/>
<!-- Label -->
<text x="200" y="238" text-anchor="middle" fill="#a78bfa" font-family="Arial, sans-serif" font-size="20" font-weight="bold">温湿度传感器</text>
<text x="200" y="258" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Temperature &amp; Humidity Sensor</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1a1a2e;stop-opacity:1" />
<stop offset="100%" style="stop-color:#16213e;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="400" height="300" fill="url(#bg)" rx="12"/>
<!-- Meter body -->
<rect x="110" y="30" width="180" height="220" rx="10" fill="#f3f4f6" stroke="#d1d5db" stroke-width="2"/>
<!-- Screen -->
<rect x="130" y="50" width="140" height="60" rx="6" fill="#1f2937" stroke="#374151" stroke-width="1"/>
<!-- LCD display -->
<text x="200" y="82" text-anchor="middle" fill="#22c55e" font-family="monospace" font-size="24" font-weight="bold">1847.5</text>
<text x="260" y="82" text-anchor="end" fill="#22c55e" font-family="monospace" font-size="12">kWh</text>
<text x="140" y="65" fill="#6b7280" font-family="monospace" font-size="10">正向有功总</text>
<!-- Status LEDs -->
<circle cx="145" cy="125" r="4" fill="#22c55e"/>
<circle cx="160" cy="125" r="4" fill="#ef4444" opacity="0.3"/>
<circle cx="175" cy="125" r="4" fill="#eab308" opacity="0.3"/>
<text x="190" y="128" fill="#6b7280" font-family="Arial" font-size="9">运行</text>
<!-- Buttons -->
<circle cx="150" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<circle cx="200" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<circle cx="250" cy="155" r="10" fill="#e5e7eb" stroke="#9ca3af" stroke-width="1"/>
<text x="150" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial"></text>
<text x="200" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial">OK</text>
<text x="250" y="158" text-anchor="middle" fill="#6b7280" font-size="8" font-family="Arial"></text>
<!-- Terminal block -->
<rect x="130" y="190" width="140" height="40" rx="4" fill="#e5e7eb" stroke="#d1d5db"/>
<g fill="#374151">
<circle cx="150" cy="210" r="6" />
<circle cx="175" cy="210" r="6" />
<circle cx="200" cy="210" r="6" />
<circle cx="225" cy="210" r="6" />
<circle cx="250" cy="210" r="6" />
</g>
<!-- Label -->
<text x="200" y="272" text-anchor="middle" fill="#00d4ff" font-family="Arial, sans-serif" font-size="20" font-weight="bold">智能电表</text>
<text x="200" y="292" text-anchor="middle" fill="#6b7280" font-family="Arial, sans-serif" font-size="12">Smart Power Meter</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB