diff --git a/assets/index.html b/assets/index.html index ddab204f8..d466c9add 100644 --- a/assets/index.html +++ b/assets/index.html @@ -109,12 +109,12 @@ Sofort Sofortladen - + Min Minimum + PV - + PV Nur PV @@ -127,7 +127,9 @@ - + Batterie @@ -141,8 +143,9 @@ - + Wallbox @@ -156,9 +159,10 @@ - - + + Netz @@ -175,8 +179,9 @@ - + PV diff --git a/assets/js/app.js b/assets/js/app.js index dc79086bc..bccee2818 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -114,6 +114,17 @@ Vue.component("datapanel", { state: store.state // global state }; }, + computed: { + items: function() { + if (this.state.soc && this.state.pvMeter) { + return 4; + } else if (this.state.soc || this.state.pvMeter) { + return 3; + } else { + return 2; + } + } + }, watch: { "state.chargeDuration": function() { window.clearInterval(this.tickerHandle); diff --git a/core/loadpoint.go b/core/loadpoint.go index 7feb24b94..8a305fc3d 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -424,7 +424,6 @@ func (lp *LoadPoint) updateModePV(mode api.ChargeMode) error { func (lp *LoadPoint) updateMeter(name string, meter api.Meter, power *float64) error { value, err := meter.CurrentPower() if err != nil { - log.ERROR.Printf("%s %v", lp.Name, err) return err } @@ -438,26 +437,27 @@ func (lp *LoadPoint) updateMeter(name string, meter api.Meter, power *float64) e // updateMeter updates and publishes single meter func (lp *LoadPoint) updateMeters() (err error) { - var wg sync.WaitGroup - - var mux sync.Mutex + // var wg sync.WaitGroup + // var mux sync.Mutex retry := func(s string, m api.Meter, f *float64) { e := retry.Do(func() error { return lp.updateMeter(s, m, f) }) if e != nil { - mux.Lock() + log.ERROR.Printf("%s %v", lp.Name, err) + // mux.Lock() err = e - mux.Unlock() + // mux.Unlock() } - wg.Done() + // wg.Done() } - wg.Add(3) - go retry("grid", lp.GridMeter, &lp.gridPower) - go retry("pv", lp.PVMeter, &lp.pvPower) - go retry("charge", lp.ChargeMeter, &lp.chargePower) - wg.Wait() + // read PV meter before charge meter + retry("grid", lp.GridMeter, &lp.gridPower) + if lp.PVMeter != nil { + retry("pv", lp.PVMeter, &lp.pvPower) + } + retry("charge", lp.ChargeMeter, &lp.chargePower) return err } diff --git a/server/assets.go b/server/assets.go index 04cb1a0f2..ebe77c6b2 100644 --- a/server/assets.go +++ b/server/assets.go @@ -3768,95 +3768,95 @@ BwBgGCOZLZiHR9hNqCPBTjirhEBqFhcmTaJ5/x/SW+FktvBUn2VO1+2iUlsc3soK2al4t7STSqRlvxkO "/index.html": { name: "index.html", local: "../assets/index.html", - size: 12453, + size: 12664, modtime: 1566640112, compressed: ` -H4sIAAAAAAAC/+xb23LkthF911dgacdrV4ShNJLWjpbDKltWbra2tqLNuiqpPIBkDwkLFwYAZ0ZSzVfk -NY/+E/9JviQFgNfh6LoruZyKXoYEuxvog9ONBkhFLzKZmssSUGE4i3ci+4MYEfksABHYBiBZvINQxMEQ -lBZEaTCzoDJz/FXQPRCEwyxYUFiWUpkApVIYEGYWLGlmilkGC5oCdje7iApqKGFYp4TBbH8X6UJRcYGN -xHNqZkKODGegU0VLQ6Xo2T59j04KonJAJ1IYJRkDNVIllSmk6mkRkdF8LFaWDDCXCWWAl5BgUpY4JSVJ -GPSUL0HfT1UbYiqNE6KwNpcDGwkj6UUQ71gzjIoLpIA1Voys0gLT1Pqp6RXoWbD/1d5q/6u9ABUK5rOA -pjLclJ2Uovaos+dt2LmdBZSTHEIr1Bg9mK4Opn2Tc7KwGtg9eLi9/Ver/Vfb7LkH2+xxIugctOkraWpg -soSkfTbS0Rc1OD0lMieK4pIKARk2JJnoRW7hZlLNgk+OkoRkR5uWdCGVSSuDNq3V457QdMxCri3wNCWW -h/gdZXBiO+lN7SfT5OjL3315h2YqxZzmPTXbcaLkUoPyzyYrzkZGTAEccLrZ5dz91Xwy1DCIYZGmUeiv -XfMLjNHJ+TnCuMPB+5xqHSZSGm0UKSecikmqdVCDZImrC4D+RHRqcykMWYKWHG5TbPr/pumlGYUPaaRV -Ogt+1OGP/6xAXeKDyeFkf6IZ5c7ojzqIo9CLbtMqZVmCupdo52ZSiYzBFqVmrF+vqNQ3jJPYZ7fovq/g -z+c36C4quNdQFxVgJSuz1bMo9Ek5SmR2Ge/sRBldIJq5FOInSpAFShnRehYIskiIQv4Hw6okIsMsbxoY -zQuDktxfOG2EIjLUxokiImuipDCm1MdhmFNTVMkklTx0KTW0rAviiDbKBlYGl4pyoi7RnCg0J5gBmSOu -8NQ6RGuikrrbpDJGio2+jcxzm9fr1ONlApQRQ+pnsyCVjJFSQ9Ns1wQbGt7EG7L4mpkzoi6qMnA9IUQU -JTYO7arR9jUQ9CIeMMhmwZww24FrZSSxNH/nurdQ0txFdo2fnc+S3OCIz192OksiasdD71V9Z6ezVm0c -a6arc9TO95ZRtwPoGal1BVm0jxGKPL2wi+lOEFMD3PbmH5QJ3g+QkbMgDOLvSQYiCnuKPXOW+VGEFBE5 -oE9pttpFnzoTxzM0+Z6KC43iuI6KR47A3uswipx5FMdBbK9t6+SdTXUoju8YHYjsg0dRJ+/4O/dbKTfx -N/VL7jJ5j5AKqdaVLTvOq9IWV228WOJkdNFwqL6MQkH8RT0kW5R1wLi7nVq6Sx2glKxrpx5zjCR2gXZB -lQEjl7Ngure3FyCX4GdBKTW17h8jkmjJKgOvkZHlMTpUwF8jZXPKMdqbHNnbYExvZx/bbFYXbj52jJIi -b2S4wqQycpRYMss01eQVWKWMcL+8GkWJyBn4FINOrWtR6K12nXDCGFpgOq+dn/iKLYj/+O7dW3R93W9c -r6PQKbTqdaoa5qRmxAxPEU/wPkqZbJNSRjWnPVD7ieTEyfV449KHkyholoGYBUZVEMSfGcpBv+4nj1H6 -6HFiBLVdMYK4cY6D1iQH611LHnfR0qNelrybFvZwhQ3wkhFT5yDgia26mrZNBtkUS6gAhfjKzSNyk5eC -MO2UR8V+I55RXTJyiQ9RafBBUM+PK2TssN2FHW6xX6uWjSYDkm3to7ahq6Q101xbS2W75C1wQkV27CPS -hmij6q5bsCnPG1G3WlOeN4L2spObK8JhKOqaWml/18xaswi6qV9gYBoGfdZ+Up7jOatoFjzJKBpetURo -q5t7cIETKu5BhS2JoFQ0pSKvUwEqV/jAMeAW1mznTbtKNQzZ5IgX4DKrNCKVXv78U8FAoEpk6PQ9WoCy -QNkGjqzgQqqciBxdVUgbogyISceZXqRxmYFeUpMWcRT2bmpPiSElEcDiKOyuHw2zzOBmmLdCmdwKZV89 -MQLnSlYlaq/qygWVNi55gqcb1ZfPPrqbF5fVegadKVkZRgW0BaEuSCaXWEgBLZVrlWuSGrqAY+vobPZS -zucv1/3sSEVZNQgpklEZoAVhFcwCOZ9bY1Icp4ymFx4rbyGIz40s25TpxvhUIxZyed8RC7ncNmJrYbQg -NGTHVNiBoQxr7ocTn8u5Kw3668JIzYp6JW+gUWM+ZIZrypMCxKkoFy/XbXI2xMCkXJxBP75vxc1Z2Iac -N/0Q7M6oeDBwZ1RQXnH0W/T2/bMi94GwbcfsgYBtunwPvN5U6nakxiXIQ1Kiz0ddSox8/bKxABGV4QzS -C5vEDu7Ig6lkeH+K7A/P8Ct3wfKuJvHYa5lu3XLZrmwvh83Mat4HeHNQGxWwX9wO23ryEu+huRQGL8FW -1FhIxQkL4m+IMaAoRGFx2LPeLUtbO/M14KCr6UDA1UaoWUe6poESQtfXLQb+FHa9bsrqfp3OKwNZEP9m -o4L2Iy2mg/vSLc5XlTZEZO06O3JqvO25Yfqa3f5GRL1sZvXlcevCLmpaD18ev9hstjM/Fmb5UHj9C3Lh -B8JYIle/FBXm3HzucUgdF97KJagvbmWEU/qroNsVf7g/XxhQbSqRo7uPnobR2+vR7xX/lyk38DxXNBut -Gh+JiW/AXD0bDfvMs05t8G7AUnQfFvaNtBwcE2+EptNBMdrbCI1v4Kq6i5lEKbnEmVwKT8MB5ctRx/2t -of87pUKXQPXdQeC7qsrbO/p/tr2D47aU+aUTbbl4RJLtlO6ZYE/VFVT5ncTSlly6Ek2a8aflD06qfYr1 -QVRy+ZAabRsxlFzaHez0JjZIhl+hDjp/qXpvRfzf70nhEDm+19x3Rhu4iqMhD+rjnt6iJIWA1E3eAlRS -iW5vNjgb+oxnRBevR5X4o0L3eTH8A7gd50eCcFx8ZKcCVH7ZRcYNtUYn90MxioZfA5C2+slIBepjQvlt -/U5jAFXT+MV6/atC6C+g3fHGFVDz5CCdakM5MfAAkDq0HrXv9S+jHnDmetNR+/bTwY13XA84dY+/BUMo -0ygD1eZMvIvqbQp2B65/c4ev6qLfiz9erQd71B5qJnhqx3m4vbOmgygsjsbLxIhK4/muOXmwnUZnMgPG -jne2zegdprZyaJz0tUzftW8nBi3u1dOWs5bbVoEHjXDT2e9ISa6o+fkn88QOn5CSpNRcDnxuGtdrdOGS -8uNdH6She1Op20c/BZPeFkR3C99TAFvaHnSHqb9fr8tnppH3tOI6LQizu/PncFrQtDCI8pIBB2EobB6J -f5BLZ1RM3JKrjZL8Kf3hVJxUSoEw6MVsZnMlzKnw9fymxHqNvn7muT0jq+cCgqzuAqKV+GAgHpcw6kXs -qRLG+2aVfNL4aV4h/Off/3pmLr0Bc3X19B72Drye30d3qP30Pvoi9CN5edv7mLmUBlQbHzY0miDhGT6y -Nzyz8VLfJ1JloLCR5YM+Cug2/bfsIwaI3HQK8lkqy8vXaLo33dv8kOc2j72fXSVuH84rkdo6FfnvqdyX -bZ9/ga6dCQWmUgL9vTYehnd/EleLXrdeuGOfYxSMvm0LdluZ5gOWvth53TaUpDzvC/2J5xvP3ecfAxH/ -xchAyj7oy9jBW4laYL07cNh/Zeea/vF6B6H1tk1N+zVtWW5+RxuF/sPWKPT/lPDfAAAA//9pd9hApTAA -AA== +H4sIAAAAAAAC/+xb3XLktrG+11PAtI/XriMMpZG09tGSrLLXe85JbG1tRZt1VVK5AMkeEhZ+GACcGWlr +niK3ufSb+E3yJCkA/Jsh9bsruVyOboYEuxvo7q9/AFLRJ7nMzGUFqDScJXuR/UGMiCIOQAR2AEie7CEU +cTAEZSVRGkwc1GaBvw76B4JwiIMlhVUllQlQJoUBYeJgRXNTxjksaQbY3ewjKqihhGGdEQbx4T7SpaLi +AhuJF9TEQo4E56AzRStDpRjIfvUOvSyJKgC9lMIoyRioESupTSnVgIuInBZjsqpigLlMKQO8ghSTqsIZ +qUjKYMB8CfpurNoQU2ucEoW1udySkTKSXQTJnhXDqLhAClgrxcg6KzHNrJ6aXoGOg8OvD9aHXx8EqFSw +iAOayXCXdlaJRqNenpdhfRsHlJMCQkvUCj2ar4/mQ5ELsrQc2D24v7zD5+vD51Py3IMpeZwIugBthkya +GpitIO2ejXj0RWOcARNZEEVxRYWAHBuSzvSysOZmUsXBpydpSvKTXUm6lMpktUG70pp1z2g2RiHX1vA0 +IxaH+C1l8NJOMnDtp/P05Kv/+eoWzkyKBS0GbHbiVMmVBuWfzdacjYSYEjjgbHfKhftr8GSoYZDAMsui +0F+74U8wRi/PzxHGvR28zpnWYSql0UaRasapmGVaB42RLHB1CTB0RM+2kMKQFWjJ4SbGdv5v21naVfiQ +RlplcfCTDn/6ew3qEh/NjmeHM80od0J/0kEShZ50iquSVQXqTqS9mmktcgYTTO1av1lTqa9ZJ7HPbuB9 +V8Mfz6/hXdZwp6Uua8BK1mZSsyj0STlKZX6Z7O1FOV0imrsU4h0lyBJljGgdB4IsU6KQ/8GwrojIMSva +AUaL0qC08BeOG6GIbHPjVBGRt1FSGlPp0zAsqCnrdJZJHrqUGlrUBUlEW2YDa4MrRTlRl2hBFFoQzIAs +EFd4bhWiDVBJM21aGyPFztxGFoXN603q8TQByokhzbM4yCRjpNLQDtuaYEPDi3hNlt8wc0bURV0FbiaE +iKLExqGtGt1cW4SexBsM8jhYEGYncKOMpBbmb9301pS0cJHd2M/6syLXKOLzl3VnRUSjeOi1au6sOxvW +VrHWXb2i1t8Tq+4WMBDS8Aqy7B4jFHl4YRfTPSGmBridzT+oUnwYICPjIAySH0gOIgoHjANxFvlRhBQR +BaDPaL7eR585Eacxmv1AxYVGSdJExQNXYO91GEVOPEqSILHXdnT21qY6lCS3rA5E/sGraJJ38r37rZVz +/HXzkttE3iGkQqp1bduO87qyzVUXLxY4OV22GGouo1AQf9EsyTZlvWHc3V5D3acOUEo2vdMAOUYSW6Bd +UOXAyGUczA8ODgLkEnwcVFJTq/4pIqmWrDbwAhlZnaJjBfwFUjannKKD2Ym9DcbwdvKxzWZN4+Zjxygp +ipaGK0xqI0eJJbdIU21egXXGCPfl1ShKRMHApxj0yqoWhV5qPwknjKElpotG+Znv2ILk/9++fYPevx8O +bjZR6Bg69iZVbeekdsUMzxFP8SHKmOySUk41pwOjDhPJS0c3wI1LH46ipHkOIg6MqiFIPjeUg34xTB6j +9DHAxMjUtmIESascB61JAVa7DjzuooNHU5a8mtbs4Rob4BUjpslBwFPbdbVjuwiyKZZQAQrxtfMjcs7L +QJjO5VF52JLnVFeMXOJjVBl8FDT+cY2MXba7sMstDxvWquVkQPLJORoZuk47Me21lVR1JW+JUyryUx+R +NkRbVnfdGZvyoiV11ZryoiW0lz3dQhEO26RuqKP2d63X2iLoXL/EwDRszdnoSXmBF6ymefAoq2hx1QGh +627ugAVOqLgDFCYSQaVoRkXRpAJUrfGRQ8ANqJnGTVelWoTsYsQTcJnXGpFar375uWQgUC1y9OodWoKy +hrIDHFnCpVQFEQW6qpE2RBkQsx4zg0jjMge9oiYrkygc3DSaEkMqIoAlUdhfP9jMMofrzTxpyvRGUw7Z +UyNwoWRdoe6q6VxQZeOSp3i+03357KN7v7isNhDoRMnaMCqgawh1SXK5wkIK6KDcsLwnmaFLOLWKxvEz +uVg82wyzIxVV3VpIkZzKAC0JqyEO5GJhhUlxmjGaXXhbeQlBcm5k1aVMt8bHWrGQq7uuWMjV1IqthFFB +aMGOqbALQznW3C8nOZcL1xoM68KIzZJ6Ji+gZWM+ZLZryqMaiFNRLZ9tuuRsiIFZoWh+BsMIv9FyTsaU +7bzw+1jvjIp7m+6MCsprjv4bvXn3pLb7YMNNW+2eJttV+g4We12rm201bkPukxZ9TurTYuR7mJ0iRFSO +c8gubCI7uiUXZpLhw/m2rbXMRv5pdHlm6XmOnz87ta2+juP5fjd43A0e7U9QHu8PhbBiQggr8FFPjzaT +ez2rn1XtuAWU5kOv7lpip/X2VfW4a2Qv8QFaSGHwCmwrj4VUnLAg+ZYYA4pCFJbHA+l9PZyczDefW1PN +twhcU4baAtYPbTEh9P595wp//LvZtP38cIPAawN5kPzXTuvuV1rOt+4r1xVc1doQkXcFfqTUeL91A2Z+ +3xD5kTCWyvWvhZAFN194lGQOIm/kCtSXNwLFMf1Z0GnGH+8OIwZUm1oU6PajsO3cMpjR710/EhKnKsXv +HqCvwVw9GTqHgLQ+2IHjFnjRXcA5FNJBc4zHkfMdD0rQwU7EfAtX9W2AJUrJFc7lSnh0bkVCNZp4uIP1 +f6+o0BVQfXts+Knq6uaJPkZEVMv/xIOLB9uZ/dq5ulo+IE/3THfM0a/UFdTFrSDUFoi6Fi1e/AuAe+fl +IRyHRlRydW3LiVosoRYkk8BQcmU35fPr0CAZfo560/lLNXjR4//+l5TOIqd38n0vtDVXebKNg+YEa1DX +pBCQOectQaW16LebW8ddn/Oc6PLFaGPxoDB/Whv+H7hN9Ecy4bh/yV8JUMVlHxnXtCs93Y/lKBp+C4a0 +DVROalAf05TfNa9ptkzVDn652fymLPQn0O7E5gqoeXQjvdKGcmLgHkbqrfWgbbx/v3aPY+Tr3h5MH3ju +vLa7x4uE5DswhDKNclBdzsT7qNnpYHeG/Bd3nqwuhrP4E+NmsSfdOW2K53adx9OTtRNEYXkyLhMjKI39 +3WDyaBpGZzIHxk73pjx6i6hJDI2TvpbZ2+6Fy9aIe5s2cXR0UxW41wp3lf2eVOSKml9+No+s8EtSkYya +yy2d28HNBl24pPxw1bfS0J2h1G/FHwNJb0qi+8L3GIat7Ay6t6m/32yqJ4aR17TmOisJsxv8p1Ba0Kw0 +iPKKAQdhKOye8n+QSmdUzFzJ1UZJ/pj6cCpe1kqBMOiTOLa5EhZU+H5+l2KzQd88sW/PyPqpDEHWtxmi +o/hgQzwsYTRF7LESxru2Sj5q/DT7+uRf//zHE2PpNZirq8fXcPDW5+l1dMflj6+jb0I/kpY3vV5aSGlA +dfFhQ6MNEp7jE3vDcxsvzX0qVQ4KG1nd6zuHftN/wz5iyyLXnYJ8nsnq8gWaH8wPdr9Nukljr2ffiduH +i1pktk9F/hMx97HeF18ifwSmwNRKoL82wsPw9q/8GtL3nRbu2OcUBaPP9YL9jqb9JmdIdt6MbVNSXgyJ +/sCLnefui5YtEv8RzBaVfTCksYu3FA3BZn9LYf/hoBv624s9hDZTm5ruA+Gq2v00OAr9t7pR6P/P4t8B +AAD//805aVt4MQAA `, }, "/js/app.js": { name: "app.js", local: "../assets/js/app.js", - size: 4814, + size: 5047, modtime: 1566640112, compressed: ` -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 -Nn7OEgAA +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 `, },