DashboarHeatingTile + more series

This commit is contained in:
Patrick Haßel 2024-10-18 13:14:33 +02:00
parent 1d809f13a7
commit 35f8c187ed
14 changed files with 151 additions and 118 deletions

View File

@ -1,15 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" xmlns="http://www.w3.org/2000/svg">
<path d="M844.936791 428.018878c0-183.933831-149.679748-333.678084-333.68218-333.678084-183.99936 0-333.743613 149.745277-333.743612 333.678084 0 89.15891 34.702545 172.945494 97.78412 236.023997 47.997696 47.997696 108.040379 79.411522 173.295663 91.744221-9.748412 70.1771-67.329675 119.643048-108.553346 124.022205-12.974675 1.34129-22.562337 12.654199-21.920361 25.690307 0.703409 13.040203 11.502328 23.265746 24.541507 23.265746h337.196154c13.037132 0 23.838098-10.225543 24.541508-23.265746 0.637881-13.037132-8.949782-24.349017-21.924457-25.690307-41.220599-4.378134-98.805958-53.845105-108.550274-124.022205 65.219447-12.332699 125.327659-43.776217 173.295663-91.744221 63.013998-63.078503 97.719615-146.864063 97.719615-236.023997z" fill="#27323A"/>
<path d="M587.435775 879.68234H435.073448c31.187547-30.294719 55.85704-71.293135 62.601372-118.586399 4.538884 0.189419 9.012239 0.670645 13.579791 0.670645 4.571648 0 9.045003-0.481226 13.582863-0.670645 6.741261 47.293263 31.410754 88.291679 62.598301 118.586399zM511.254611 712.682548c-76.053178 0-147.507063-29.59131-201.256947-83.341194-53.746812-53.812341-83.402627-125.265202-83.402627-201.322476 0-156.901211 127.692834-284.594045 284.659574-284.594046 156.901211 0 284.598141 127.692834 284.598141 284.594046 0 76.057274-29.59131 147.510135-83.341193 201.322476-53.749884 53.749884-125.265202 83.341194-201.256948 83.341194z" fill="#F4CE73"/>
<path
d="M651.029293 354.841794c-24.989969-3.259027-62.025949 11.217688-87.398852 26.204297-1.020814-1.119107-1.917737-2.366199-3.004079-3.419777 7.44467-9.777081 20.611835-19.714912 33.58651-29.43056 26.714192-19.941191 57.008911-42.500456 57.008911-77.395492 0-33.108356-15.916297-62.37919-44.865631-82.32038-41.800118-28.822372-104.431184-35.085478-155.880397-15.592749-65.955621 25.114883-95.867407 96.056826-69.66311 165.016526 9.29995 24.574272 39.912074 49.979938 64.647096 64.839586-0.798631 2.044699-1.374054 4.185643-1.983266 6.325563-12.238501-1.403747-27.673573-7.860368-42.850625-14.345657-30.615195-13.101637-65.31774-27.994049-95.484474-10.546019-28.697458 16.554178-46.079959 44.993617-48.829091 80.016638-4.024893 50.618843 21.920361 107.945158 64.551874 142.650775 54.705169 44.545155 131.145376 34.957493 177.736254-22.241861 16.427216-20.196138 23.039468-58.638936 23.550386-86.983153 3.259027-0.510919 6.391092-1.308525 9.492441-2.267906 4.793831 11.152159 7.222487 27.064361 9.522133 42.660182 4.98325 32.977299 10.608476 70.366519 41.351657 86.855168 29.26981 15.657254 62.568608 15.402307 93.818612-0.703409 45.187131-23.265746 80.209129-75.480826 87.241173-129.996577 9.07572-69.97949-39.30491-129.864495-112.547522-139.325195z"
fill="#27323A"/>
<path d="M511.254611 390.119763c14.636441 0 26.970163 8.566849 33.298799 20.710128 0.448462 0.861088 0.670645 1.819444 1.279857 2.618075 0.156654 0.193514 0.382933 0.287712 0.543683 0.481226 1.756987 4.378134 2.84333 9.106436 2.843329 14.09071 0 20.965076-17.00264 37.964644-37.964644 37.964644s-37.961572-16.999568-37.961572-37.964644c-0.001024-20.897499 16.998544-37.900139 37.960548-37.900139z" fill="#FFFFFF"/>
<path
d="M411.424768 326.275393c-19.938119-52.343066 1.345385-104.048251 50.684372-122.83757 41.158142-15.595821 92.863327-10.674005 125.713664 11.949766 13.995489 9.715648 30.677652 27.162654 30.677652 55.412673 0 18.468843-22.30739 35.085478-43.844817 51.191195-15.880461 11.855568-32.051706 24.12581-42.306942 38.985458-6.711568-2.107156-13.710848-3.579503-21.093062-3.579504-18.212872 0-34.702545 7.127266-47.228758 18.471916-21.666437-12.685939-46.976883-34.640088-52.602109-49.593934zM473.227511 563.959109c-35.405955 43.396356-90.818628 50.811333-131.721824 17.513558-34.126098-27.801558-55.730078-74.96786-52.598013-114.722255 1.34129-16.934039 8.115315-40.134257 32.59539-54.322236 15.978754-9.204729 41.541075 1.724223 66.276097 12.332699 17.990689 7.735454 36.42984 15.595821 54.195274 17.163389 5.019086 25.147647 23.553458 45.2158 47.581999 53.013711-0.062457 24.76369-6.197578 56.527685-16.328923 69.021134zM731.11146 489.949606c-5.562769 43.652327-34.257155 86.855168-69.728639 105.134593-15.147359 7.797911-38.475563 14.315965-63.400003 0.958356-16.296159-8.756267-20.451085-36.237349-24.414546-62.889084-2.876094-18.978738-5.814645-38.442798-13.484569-54.228039 13.423137-12.876382 21.858928-30.867071 21.858927-50.906554 0-6.358328-1.119107-12.398227-2.716367-18.275329 21.377702-12.879454 51.960132-24.480074 67.584622-22.434352 55.667621 7.16003 91.073576 50.362871 84.300575 102.640409z"
fill="#79CCBF"/>
<path
d="M466.516966 255.843346c14.126546-13.612555 30.549666-14.187979 36.940759-13.740542 9.012239 0.575424 16.809125-6.263107 17.385573-15.336778 0.575424-9.012239-6.263107-16.747692-15.33985-17.320044-10.736462-0.703409-38.21652 0.189419-61.737214 22.879742-23.262675 22.43128-25.435359 49.273457-25.307373 59.8205 0.127986 9.012239 7.542963 16.233702 16.616635 16.105716 9.012239-0.127986 16.233702-7.542963 16.105716-16.554178-0.067576-6.263107 1.274737-22.241861 15.335754-35.854416zM431.431488 538.71624c-4.665845 4.218408-17.513558 13.867503-36.940759 12.398227-19.558257-1.472347-30.935671-13.423137-34.960564-18.471915-5.559697-7.094501-15.850769-8.307806-22.945271-2.749132-7.094501 5.625226-8.307806 15.916297-2.749132 23.010799 14.061017 17.830963 35.281041 29.142848 58.160782 30.867071 32.146928 2.427632 53.684355-13.80607 61.482266-20.834019 6.64604-6.135121 7.155935-16.488649 1.086343-23.134689-6.134097-6.711568-16.487625-7.159006-23.133665-1.086342zM668.92476 405.587598c-8.373334-3.513974-17.957925 0.448462-21.475994 8.756267-3.513974 8.307806 0.448462 17.957925 8.756267 21.410467 5.752188 2.427632 19.941191 10.098581 26.779721 28.376981 6.83853 18.406386 0.765866 33.681732-2.172685 39.368391-4.155951 8.052858-0.958357 17.895468 7.094501 22.048347 7.987329 4.155951 17.892396 0.958357 21.982818-7.094502 4.921817-9.522134 15.147359-35.085478 3.773018-65.762106-11.310861-30.231238-35.087526-43.013422-44.737646-47.103845z"
fill="#27323A"/>
</svg>
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" id="wind" data-name="Flat Color" xmlns="http://www.w3.org/2000/svg" class="icon flat-color"><path id="secondary" d="M10,8H3A1,1,0,0,1,3,6h7a1,1,0,0,0,0-2,1,1,0,0,1,0-2,3,3,0,0,1,0,6ZM20,18a4,4,0,0,0-4-4H3a1,1,0,0,0,0,2H16a2,2,0,0,1,0,4,1,1,0,0,0,0,2A4,4,0,0,0,20,18Z" style="fill: rgb(44, 169, 188);"></path><path id="primary" d="M10,20H3a1,1,0,0,1,0-2h7a1,1,0,0,1,0,2ZM22,7.5A4.51,4.51,0,0,0,17.5,3a1,1,0,0,0,0,2,2.5,2.5,0,0,1,0,5H3a1,1,0,0,0,0,2H17.5A4.51,4.51,0,0,0,22,7.5Z" style="fill: rgb(0, 0, 0);"></path></svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 707 B

View File

@ -1,40 +1,4 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg height="800px" width="800px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 503.607 503.607">
<path style="fill:#FFDD09;" d="M452.246,494.213H49.361c-23.502,0-41.967-18.466-41.967-41.967V49.361
c0-23.502,18.466-41.967,41.967-41.967h402.885c23.502,0,41.967,18.466,41.967,41.967v402.885
C494.213,475.747,475.747,494.213,452.246,494.213"/>
<path style="fill:#FD9808;" d="M452.246,7.393h-25.18c23.502,0,41.967,18.466,41.967,41.967v402.885
c0,23.502-18.466,41.967-41.967,41.967h25.18c23.502,0,41.967-18.466,41.967-41.967V49.361
C494.213,25.859,475.747,7.393,452.246,7.393"/>
<path style="fill:#FFFFFF;" d="M49.361,7.393h25.18c-22.662,0-41.967,18.466-41.967,41.967v402.885
c0,23.502,18.466,41.967,41.967,41.967h-25.18c-23.502,0-41.967-18.466-41.967-41.967V49.361
C7.393,25.859,26.698,7.393,49.361,7.393"/>
<path style="fill:#FCC309;" d="M443.852,250.803c0-106.597-86.452-193.049-193.049-193.049S57.754,144.207,57.754,250.803
s86.452,193.049,193.049,193.049S443.852,357.4,443.852,250.803"/>
<path style="fill:#FD9808;" d="M250.803,57.754c-4.197,0-8.393,0-12.59,0.839c100.721,5.875,180.459,89.81,180.459,192.21
s-79.738,186.334-180.459,192.21c4.197,0,8.393,0.839,12.59,0.839c106.597,0,193.049-86.452,193.049-193.049
S357.4,57.754,250.803,57.754"/>
<path style="fill:#FFDD09;" d="M326.344,208.836h-67.148l58.754-92.328h-67.148l-75.541,134.295h55.397l-55.397,134.295
L326.344,208.836z"/>
<path d="M175.262,393.492c-1.679,0-3.357,0-4.197-0.839c-3.357-2.518-5.036-6.715-3.357-10.072l51.2-123.384h-43.646
c-3.357,0-5.875-1.679-7.554-4.197s-1.679-5.875,0-8.393l75.541-134.295c1.679-2.518,4.197-4.197,7.554-4.197h67.148
c3.357,0,5.875,1.679,7.554,4.197s1.679,5.875,0,8.393l-50.361,79.738h51.2c3.357,0,5.875,1.679,7.554,5.036
c1.679,3.357,0.839,6.715-0.839,9.233L181.977,390.974C180.298,392.652,177.78,393.492,175.262,393.492z M189.531,242.41h41.128
c2.518,0,5.036,1.679,6.715,3.357c1.679,2.518,1.679,5.036,0.839,7.554l-35.252,85.613l104.918-121.705h-48.682
c-3.357,0-5.875-1.679-7.554-4.197c-1.679-2.518-1.679-5.875,0-8.393l50.361-79.738H255L189.531,242.41z"/>
<path d="M452.246,502.607H49.361C21.662,502.607-1,479.944-1,452.246V49.361C-1,21.662,21.662-1,49.361-1h402.885
c27.698,0,50.361,22.662,50.361,50.361v402.885C502.607,479.944,479.944,502.607,452.246,502.607z M49.361,15.787
c-18.466,0-33.574,15.108-33.574,33.574v402.885c0,18.466,15.108,33.574,33.574,33.574h402.885
c18.466,0,33.574-15.108,33.574-33.574V49.361c0-18.466-15.108-33.574-33.574-33.574H49.361z"/>
<path d="M250.803,452.246c-110.793,0-201.443-90.649-201.443-201.443S140.01,49.361,250.803,49.361s201.443,90.649,201.443,201.443
S361.597,452.246,250.803,452.246z M250.803,66.148c-101.561,0-184.656,83.095-184.656,184.656s83.095,184.656,184.656,184.656
s184.656-83.095,184.656-184.656S352.364,66.148,250.803,66.148z"/>
<path d="M66.148,49.361c0-9.233-7.554-16.787-16.787-16.787s-16.787,7.554-16.787,16.787s7.554,16.787,16.787,16.787
S66.148,58.593,66.148,49.361"/>
<path d="M66.148,452.246c0-9.233-7.554-16.787-16.787-16.787s-16.787,7.554-16.787,16.787c0,9.233,7.554,16.787,16.787,16.787
S66.148,461.479,66.148,452.246"/>
<path d="M469.033,49.361c0-9.233-7.554-16.787-16.787-16.787c-9.233,0-16.787,7.554-16.787,16.787s7.554,16.787,16.787,16.787
C461.479,66.148,469.033,58.593,469.033,49.361"/>
<path d="M469.033,452.246c0-9.233-7.554-16.787-16.787-16.787c-9.233,0-16.787,7.554-16.787,16.787
c0,9.233,7.554,16.787,16.787,16.787C461.479,469.033,469.033,461.479,469.033,452.246"/>
<?xml version="1.0" ?>
<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<path d="M26.87,12.49l-10,18C16.69,30.81,16.36,31,16,31c-0.08,0-0.17-0.01-0.25-0.03C15.31,30.85,15,30.46,15,30 V19H6c-0.34,0-0.65-0.17-0.84-0.45c-0.18-0.28-0.21-0.64-0.08-0.95l7-16C12.24,1.24,12.6,1,13,1h6c0.33,0,0.64,0.16,0.83,0.44 c0.18,0.27,0.22,0.62,0.1,0.93L16.48,11H26c0.35,0,0.68,0.19,0.86,0.49C27.04,11.8,27.05,12.18,26.87,12.49z" fill="#FFB841"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 484 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<path d="M25.96,8.73C25.84,8.29,25.42,7.95,24.97,8c-0.46,0.02-0.85,0.34-0.95,0.8c-0.42,2.01-1.8,4.26-3.01,4.26 c-0.4,0-0.82-0.25-1.27-0.74C18.15,10.59,17.22,4.21,17,1.9c-0.04-0.36-0.28-0.68-0.62-0.82c-0.34-0.14-0.73-0.09-1.01,0.15 c-4.99,4.1-5.49,10.56-5.45,13.44c-2.04-1.03-2.95-3.93-2.96-3.96C6.82,10.26,6.41,9.96,5.93,10c-0.47,0.04-0.85,0.38-0.92,0.85 c-1.19,7.61-0.29,13.22,2.65,16.66c2.72,3.17,6.36,3.5099,7.79,3.5099c0.38,0,0.62-0.02,0.62-0.02c3.75-0.25,6.6-1.7,8.47-4.33 C29.09,20.27,26.09,9.2,25.96,8.73z" fill="#BF4D48"/>
</svg>

After

Width:  |  Height:  |  Size: 661 B

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg height="800px" width="800px" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 511.987 511.987">
<path style="fill:#646C77;" d="M32,218.661H10.664C4.774,218.661,0,223.443,0,229.333s4.773,10.672,10.664,10.672h21.335
c5.891,0,10.664-4.781,10.664-10.672S37.89,218.661,32,218.661z"/>
<path style="fill:#424953;" d="M74.663,186.671H32c-5.89,0-10.664,4.773-10.664,10.664v63.998c0,5.891,4.773,10.664,10.664,10.664
h42.663c5.89,0,10.671-4.773,10.671-10.664v-63.998C85.334,191.443,80.553,186.671,74.663,186.671z"/>
<path style="fill:#E5E8EC;" d="M501.331,122.673c-5.906,0-10.688,4.773-10.688,10.664v85.326h-31.999
c-5.875,0-10.656,4.781-10.656,10.671s4.781,10.672,10.656,10.672h42.687c5.875,0,10.656-4.781,10.656-10.672v-95.997
C511.987,127.447,507.206,122.673,501.331,122.673z"/>
<path style="fill:#F5BA45;" d="M106.662,165.335c-17.671,0-31.999,14.328-31.999,31.999v277.312c0,17.688,14.328,32,31.999,32
s31.999-14.312,31.999-32V197.335C138.661,179.663,124.333,165.335,106.662,165.335z"/>
<path style="fill:#FECD57;" d="M170.661,165.335c-17.671,0-32,14.328-32,31.999v277.312c0,17.688,14.328,32,32,32
s31.999-14.312,31.999-32V197.335C202.659,179.663,188.332,165.335,170.661,165.335z"/>
<path style="fill:#F5BA45;" d="M234.659,165.335c-17.671,0-32,14.328-32,31.999v277.312c0,17.688,14.328,32,32,32s32-14.312,32-32
V197.335C266.658,179.663,252.33,165.335,234.659,165.335z"/>
<path style="fill:#FECD57;" d="M298.649,165.335c-17.656,0-31.991,14.328-31.991,31.999v277.312c0,17.688,14.335,32,31.991,32
c17.687,0,31.999-14.312,31.999-32V197.335C330.648,179.663,316.336,165.335,298.649,165.335z"/>
<path style="fill:#F5BA45;" d="M362.647,165.335c-17.655,0-31.999,14.328-31.999,31.999v277.312c0,17.688,14.344,32,31.999,32
c17.687,0,31.998-14.312,31.998-32V197.335C394.645,179.663,380.334,165.335,362.647,165.335z"/>
<path style="fill:#FECD57;" d="M426.645,165.335c-17.656,0-32,14.328-32,31.999v277.312c0,17.688,14.344,32,32,32
c17.688,0,31.999-14.312,31.999-32V197.335C458.644,179.663,444.333,165.335,426.645,165.335z"/>
<path style="fill:#E5E8EC;" d="M360.305,115.978c-0.344-0.422-8.281-10.461-0.75-18.023c16.748-16.82,7.78-37.46,0.688-46.053
l-0.031-0.016v-0.016l0,0c-1.969-2.359-4.906-3.859-8.219-3.859c-5.891,0-10.656,4.773-10.656,10.664
c0,2.586,0.906,4.961,2.438,6.805l0,0c0.031,0.031,2.281,2.938,3.375,6.656c1.266,4.359,0.469,7.578-2.719,10.766
c-16.688,16.765-7.781,37.726-0.75,46.468v-0.008c1.969,2.429,4.969,3.976,8.312,3.976c5.891,0,10.655-4.773,10.655-10.664
C362.647,120.133,361.773,117.813,360.305,115.978L360.305,115.978z"/>
<path style="fill:#E5E8EC;" d="M285.149,30.682c-3.188-11.945-9.312-20.226-9.999-21.132v0.008
c-1.969-2.562-5.023-4.218-8.492-4.218c-5.891,0-10.664,4.781-10.664,10.671c0,2.406,0.805,4.617,2.156,6.406h-0.008
c0.039,0.062,4.484,6.102,6.539,14.32c2.453,9.836,0.484,18.187-6.008,25.538c-11.398,12.882-15.031,28.694-10.5,45.717
c3.18,11.945,9.312,20.234,10,21.141l0.008-0.008c1.945,2.554,5.016,4.21,8.477,4.21c5.898,0,10.68-4.773,10.68-10.664
c0-2.43-0.828-4.656-2.188-6.453v-0.008c-0.031-0.055-4.273-5.844-6.359-13.695c-2.68-10.078-0.766-18.616,5.859-26.108
C286.056,63.517,289.681,47.706,285.149,30.682z"/>
<path style="fill:#E5E8EC;" d="M189.566,51.902c0,0-0.008-0.016-0.016-0.016l-0.008-0.016l0,0
c-1.961-2.359-4.914-3.859-8.211-3.859c-5.89,0-10.671,4.773-10.671,10.664c0,2.586,0.922,4.961,2.461,6.805h-0.008
c0.023,0.031,2.273,2.938,3.367,6.656c1.273,4.359,0.461,7.578-2.71,10.766c-16.703,16.765-7.789,37.726-0.742,46.468v-0.008
c1.953,2.429,4.945,3.976,8.304,3.976c5.891,0,10.664-4.773,10.664-10.664c0-2.539-0.891-4.859-2.367-6.695h0.008
c-0.344-0.422-8.281-10.461-0.75-18.023C205.643,81.134,196.675,60.494,189.566,51.902z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -27,11 +27,35 @@ export class SeriesService {
public schlafzimmerHumidityAbsolute: Series | null = null;
public gartenTemperature: Series | null = null;
public outdoorTemperature: Series | null = null;
public gartenHumidityRelative: Series | null = null;
public outdoorHumidityRelative: Series | null = null;
public gartenHumidityAbsolute: Series | null = null;
public outdoorHumidityAbsolute: Series | null = null;
public heatingRoomTemperature: Series | null = null;
public heatingRoomHumidityRelative: Series | null = null;
public heatingRoomHumidityAbsolute: Series | null = null;
public heatingExhaustTemperature: Series | null = null;
public heatingBufferSupplyTemperature: Series | null = null;
public heatingBufferReturnTemperature: Series | null = null;
public heatingBufferColdTemperature: Series | null = null;
public heatingBufferInnerTemperature: Series | null = null;
public heatingBufferHotTemperature: Series | null = null;
public heatingBufferCirculationTemperature: Series | null = null;
public heatingLoopSupplyTemperature: Series | null = null;
public heatingLoopReturnTemperature: Series | null = null;
constructor(
private readonly api: ApiService,
@ -57,9 +81,23 @@ export class SeriesService {
this.schlafzimmerHumidityRelative = this.seriesUpdate2(series, this.schlafzimmerHumidityRelative, 'schlafzimmer.humidity_relative');
this.schlafzimmerHumidityAbsolute = this.seriesUpdate2(series, this.schlafzimmerHumidityAbsolute, 'schlafzimmer.humidity_absolute');
this.gartenTemperature = this.seriesUpdate2(series, this.gartenTemperature, 'garten.temperature');
this.gartenHumidityRelative = this.seriesUpdate2(series, this.gartenHumidityRelative, 'garten.humidity_relative');
this.gartenHumidityAbsolute = this.seriesUpdate2(series, this.gartenHumidityAbsolute, 'garten.humidity_absolute');
this.outdoorTemperature = this.seriesUpdate2(series, this.outdoorTemperature, 'garten.temperature');
this.outdoorHumidityRelative = this.seriesUpdate2(series, this.outdoorHumidityRelative, 'garten.humidity_relative');
this.outdoorHumidityAbsolute = this.seriesUpdate2(series, this.outdoorHumidityAbsolute, 'garten.humidity_absolute');
this.heatingRoomTemperature = this.seriesUpdate2(series, this.heatingRoomTemperature, 'heating.room.temperature');
this.heatingRoomHumidityRelative = this.seriesUpdate2(series, this.heatingRoomHumidityRelative, 'heating.room.humidity_relative');
this.heatingRoomHumidityAbsolute = this.seriesUpdate2(series, this.heatingRoomHumidityAbsolute, 'heating.room.humidity_absolute');
this.heatingExhaustTemperature = this.seriesUpdate2(series, this.heatingExhaustTemperature, 'heating.exhaust.temperature');
this.heatingBufferSupplyTemperature = this.seriesUpdate2(series, this.heatingBufferSupplyTemperature, 'heating.buffer.supply.temperature');
this.heatingBufferReturnTemperature = this.seriesUpdate2(series, this.heatingBufferReturnTemperature, 'heating.buffer.return.temperature');
this.heatingBufferColdTemperature = this.seriesUpdate2(series, this.heatingBufferColdTemperature, 'heating.buffer.cold.temperature');
this.heatingBufferInnerTemperature = this.seriesUpdate2(series, this.heatingBufferInnerTemperature, 'heating.buffer.inner.temperature');
this.heatingBufferHotTemperature = this.seriesUpdate2(series, this.heatingBufferHotTemperature, 'heating.buffer.hot.temperature');
this.heatingBufferCirculationTemperature = this.seriesUpdate2(series, this.heatingBufferCirculationTemperature, 'heating.buffer.circulation.temperature');
this.heatingLoopSupplyTemperature = this.seriesUpdate2(series, this.heatingLoopSupplyTemperature, 'heating.loop.supply.temperature');
this.heatingLoopReturnTemperature = this.seriesUpdate2(series, this.heatingLoopReturnTemperature, 'heating.loop.return.temperature');
}
private seriesUpdate2(fresh: Series, old: Series | null, name: string): Series | null {

View File

@ -29,9 +29,13 @@ export class DashboardAirTileComponent {
new Display('Schlaf. Feucht. Relativ', '', this.seriesService.schlafzimmerHumidityRelative),
new Display('Schlaf. Feucht. Absolut', '', this.seriesService.schlafzimmerHumidityAbsolute),
null,
new Display('Garten Temperatur', '', this.seriesService.gartenTemperature),
new Display('Garten Feucht. Relativ', '', this.seriesService.gartenHumidityRelative),
new Display('Garten Feucht. Absolut', '', this.seriesService.gartenHumidityAbsolute),
new Display('Garten Temperatur', '', this.seriesService.outdoorTemperature),
new Display('Garten Feucht. Relativ', '', this.seriesService.outdoorHumidityRelative),
new Display('Garten Feucht. Absolut', '', this.seriesService.outdoorHumidityAbsolute),
null,
new Display('Heiz. Temperatur', '', this.seriesService.heatingRoomTemperature),
new Display('Heiz. Feucht. Relativ', '', this.seriesService.heatingRoomHumidityRelative),
new Display('Heiz. Feucht. Absolut', '', this.seriesService.heatingRoomHumidityAbsolute),
];
}

View File

@ -5,3 +5,7 @@
<div class="width100">
<app-dashboard-air-tile [now]="now"></app-dashboard-air-tile>
</div>
<div class="width100">
<app-dashboard-heating-tile [now]="now"></app-dashboard-heating-tile>
</div>

View File

@ -4,6 +4,7 @@ import {ValuesTileComponent} from "../../shared/values-tile/values-tile.componen
import {DashboardElectricityTileComponent} from "./electricity/dashboard-electricity-tile.component";
import {DashboardAirTileComponent} from "./air/dashboard-air-tile.component";
import {Subscription, timer} from "rxjs";
import {DashboardHeatingTileComponent} from "./heating/dashboard-heating-tile.component";
const UPDATE_INTERVAL_MILLIS = 1000;
@ -16,6 +17,7 @@ const UPDATE_INTERVAL_MILLIS = 1000;
JsonPipe,
DashboardElectricityTileComponent,
DashboardAirTileComponent,
DashboardHeatingTileComponent,
],
templateUrl: './dashboard.component.html',
styleUrl: './dashboard.component.less'

View File

@ -44,11 +44,10 @@ export class DashboardElectricityTileComponent {
const gridColor = this.getGridPowerColor();
const productionColor = this.getProductionPowerColor();
return [
new Display('Bezug', '', this.seriesService.gridPurchased),
new Display('Einspeisung', '', this.seriesService.gridDelivered),
null,
new Display('Produktion', '#006600', this.seriesService.photovoltaicProduced),
new Display('Eigenverbrauch', '#006600', selfConsumed),
new Display('Bezogen', '', this.seriesService.gridPurchased),
new Display('Eingespeist', '', this.seriesService.gridDelivered),
new Display('Produziert', '', this.seriesService.photovoltaicProduced),
new Display('Selbst verbraucht', '', selfConsumed),
null,
new Display('Produktion', productionColor, this.seriesService.photovoltaicPower),
new Display('Netz', gridColor, this.seriesService.gridPower),

View File

@ -0,0 +1 @@
<app-values-tile title="Heizung" icon="fire.svg" [maxAgeSeconds]="125" [displayList]="getDisplayList()" [now]="now"></app-values-tile>

View File

@ -0,0 +1,40 @@
import {Component, Input} from '@angular/core';
import {ValuesTileComponent} from "../../../shared/values-tile/values-tile.component";
import {Display, DisplayOrSeparator} from "../../../api/series/IValue";
import {SeriesService} from "../../../api/series/series.service";
@Component({
selector: 'app-dashboard-heating-tile',
standalone: true,
imports: [
ValuesTileComponent
],
templateUrl: './dashboard-heating-tile.component.html',
styleUrl: './dashboard-heating-tile.component.less'
})
export class DashboardHeatingTileComponent {
@Input()
now!: Date;
constructor(
protected readonly seriesService: SeriesService,
) {
// -
}
getDisplayList(): DisplayOrSeparator[] {
return [
new Display('Abgas', '', this.seriesService.heatingExhaustTemperature),
new Display('Puffer Vorlauf', '', this.seriesService.heatingBufferSupplyTemperature),
new Display('Puffer Rücklauf', '', this.seriesService.heatingBufferReturnTemperature),
new Display('Puffer Kalt', '', this.seriesService.heatingBufferColdTemperature),
new Display('Puffer Speicher', '', this.seriesService.heatingBufferInnerTemperature),
new Display('Puffer Warm', '', this.seriesService.heatingBufferHotTemperature),
new Display('Puffer Zirkulation', '', this.seriesService.heatingBufferCirculationTemperature),
new Display('Heizkreis Vorlauf', '', this.seriesService.heatingLoopSupplyTemperature),
new Display('Heizkreis Rücklauf', '', this.seriesService.heatingLoopReturnTemperature),
];
}
}

View File

@ -3,7 +3,6 @@
<img [src]="icon" alt="" *ngIf="icon">
{{ title }}
</div>
<div class="number">{{ number() }}</div>
<table class="values">
<ng-container *ngFor="let display of displayList">
<tr class="rate" *ngIf="display" [style.color]="display.color">

View File

@ -1,10 +1,7 @@
import {Component, Input} from '@angular/core';
import {Series} from "../../api/series/Series";
import {DecimalPipe, NgForOf, NgIf} from "@angular/common";
import {DisplayOrSeparator} from "../../api/series/IValue";
const TOO_OLD_MILLIS = 10000;
@Component({
selector: 'app-values-tile',
standalone: true,
@ -51,54 +48,10 @@ export class ValuesTileComponent {
}
@Input()
set purchase(purchase: Series | null) {
this.purchase_ = purchase;
this.displayUpdate();
}
get purchase(): Series | null {
return this.purchase_;
}
private purchase_: Series | null = null;
@Input()
set delivery(delivery: Series | null) {
this.delivery_ = delivery;
this.displayUpdate();
}
get delivery(): Series | null {
return this.delivery_;
}
private delivery_: Series | null = null;
@Input()
set rate(rate: Series | null) {
this.rate_ = rate;
this.displayUpdate();
}
get rate(): Series | null {
return this.rate_;
}
private rate_: Series | null = null;
number(): string {
if (this.purchase?.period) {
return this.purchase?.period.name;
} else if (this.delivery?.period) {
return this.delivery?.period.name;
} else if (this.rate?.period) {
return this.rate?.period.name;
}
return '';
}
maxAgeSeconds: number = 10;
private displayUpdate() {
this.valid = this.displayList.some(d => !!d && !!d.iValue && !!d.iValue.date && (this.now.getTime() - d.iValue.date.getTime()) <= TOO_OLD_MILLIS)
this.valid = this.displayList.some(d => !!d && !!d.iValue && !!d.iValue.date && (this.now.getTime() - d.iValue.date.getTime()) <= this.maxAgeSeconds * 1000)
}
}