From 3e08e65720d14d30229f32c79536e135036fd779 Mon Sep 17 00:00:00 2001 From: habuild <36288425+habuild@users.noreply.github.com> Date: Wed, 16 Mar 2022 13:19:15 +1100 Subject: [PATCH] Add files via upload initial commit --- LICENSE | 201 ++++++++++++ README.md | 131 ++++++++ example/CHANGELOG.md | 9 + example/DOCS.md | 7 + example/Dockerfile | 12 + example/README.md | 15 + example/build.yaml | 11 + example/config.yaml | 17 + example/icon.png | Bin 0 -> 48234 bytes example/logo.png | Bin 0 -> 133153 bytes example/rootfs/etc/services.d/example/finish | 9 + example/rootfs/etc/services.d/example/run | 19 ++ example/translations/en.yaml | 4 + icon.png | Bin 0 -> 3060 bytes logo.png | Bin 0 -> 4153 bytes repository.yaml | 4 + sbfspot/CHANGELOG.md | 7 + sbfspot/DOCS.md | 3 + sbfspot/Dockerfile | 113 +++++++ sbfspot/README.md | 58 ++++ sbfspot/build.yaml | 13 + sbfspot/config.json | 112 +++++++ sbfspot/icon.png | Bin 0 -> 3060 bytes sbfspot/logo.png | Bin 0 -> 4153 bytes sbfspot/rootfs/SBFspot.default.cfg | 268 +++++++++++++++ sbfspot/rootfs/SBFspotUpload.default.cfg | 54 +++ .../etc/init.d/SBFspotUploadDaemon.service | 36 ++ .../etc/services.d/sbfspot/no_stop_finish | 9 + sbfspot/rootfs/etc/services.d/sbfspot/run | 34 ++ sbfspot/rootfs/generateConfig.sh | 309 ++++++++++++++++++ sbfspot/rootfs/openrc-restart-crashed.sh | 141 ++++++++ sbfspot/translations/en.yaml | 4 + 32 files changed, 1600 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 example/CHANGELOG.md create mode 100644 example/DOCS.md create mode 100644 example/Dockerfile create mode 100644 example/README.md create mode 100644 example/build.yaml create mode 100644 example/config.yaml create mode 100644 example/icon.png create mode 100644 example/logo.png create mode 100644 example/rootfs/etc/services.d/example/finish create mode 100644 example/rootfs/etc/services.d/example/run create mode 100644 example/translations/en.yaml create mode 100644 icon.png create mode 100644 logo.png create mode 100644 repository.yaml create mode 100644 sbfspot/CHANGELOG.md create mode 100644 sbfspot/DOCS.md create mode 100644 sbfspot/Dockerfile create mode 100644 sbfspot/README.md create mode 100644 sbfspot/build.yaml create mode 100644 sbfspot/config.json create mode 100644 sbfspot/icon.png create mode 100644 sbfspot/logo.png create mode 100644 sbfspot/rootfs/SBFspot.default.cfg create mode 100644 sbfspot/rootfs/SBFspotUpload.default.cfg create mode 100644 sbfspot/rootfs/etc/init.d/SBFspotUploadDaemon.service create mode 100644 sbfspot/rootfs/etc/services.d/sbfspot/no_stop_finish create mode 100644 sbfspot/rootfs/etc/services.d/sbfspot/run create mode 100644 sbfspot/rootfs/generateConfig.sh create mode 100644 sbfspot/rootfs/openrc-restart-crashed.sh create mode 100644 sbfspot/translations/en.yaml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6de5385 --- /dev/null +++ b/README.md @@ -0,0 +1,131 @@ +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +# Reposistory add-on by Habuild + +Add-on documentation: + +[![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fhabuild%2Fhassio_addons) + +## Add-ons + +This repository contains the following add-ons + +### [SBFspot_HA](./sbfspot) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fhassio_addons%2Fmaster%2Fsbfspot%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fhassio_addons%2Fmaster%2Fsbfspot%2Fconfig.json) + +_Example add-on to use as a blueprint for new add-ons._ + + + + + +## ![SBFspot Logo](https://user-images.githubusercontent.com/1931158/30831762-006ec650-a249-11e7-86e3-13d01b36dd5d.jpg) + +## ToDo List +### Fix +map directories to /addon/?? + +configure gui to SBFspot.cfg and SBFspotUpload.cfg?? + + + +### Configure +built in MQTT conections?? + +built in MariaDB ( point to and add database and user in existing addon?? + + +## ToDo end + +SBFspot addon for supervised Home Assistant, based an open source project located at github ([SBFspot on github](https://github.com/SBFspot/SBFspot)). +This project creates an addon install for Home assistant users using the latest release of SBFspot as a docker install. + +# Installation and configuration +Add ([this respository](https://github.com/HABuild/hassio_addons)) to Home Assistant via the superviser > new respository menu > add respository + +Fill in the config details to setup Inverter connection, Database, MQTT , and Upload API. + +Start the addon + + +# Special Thanks To: +SBFspot +https://github.com/SBFspot/SBFspot + +and +nakla for the dockerfile +https://github.com/nakla/sbfspot + +and +LauR3y for sbfspot addon +https://github.com/LauR3y/hassio-addons + +## SBFspot Readme ([SBFspot on github](https://github.com/SBFspot/SBFspot)). +![SBFspot Logo](https://user-images.githubusercontent.com/1931158/30831762-006ec650-a249-11e7-86e3-13d01b36dd5d.jpg) + +Translation by Google: [[NL](https://translate.google.com/translate?act=url&depth=1&hl=nl&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=nl&u=https://github.com/SBFspot/SBFspot)] - [[FR](https://translate.google.com/translate?act=url&depth=1&hl=nl&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=fr&u=https://github.com/SBFspot/SBFspot)] - [[DE](https://translate.google.com/translate?act=url&depth=1&hl=nl&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=de&u=https://github.com/SBFspot/SBFspot)] - [[ES](https://translate.google.com/translate?act=url&depth=1&hl=nl&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=es&u=https://github.com/SBFspot/SBFspot)] - [[IT](https://translate.google.com/translate?act=url&depth=1&hl=nl&ie=UTF8&prev=_t&rurl=translate.google.com&sl=en&sp=nmt4&tl=it&u=https://github.com/SBFspot/SBFspot)] +### **Introduction** +SBFspot, formerly known as SMAspot, is an open source project to get actual and archive data out of an SMA® inverter over Bluetooth or Ethernet (Speedwire®) It works on either Linux ([Raspberry Pi](http://www.raspberrypi.org)) and Windows. + +### **What it does** +SBFspot connects via Bluetooth or Ethernet to your SMA® solar/battery inverter and reads Archive Day/Month Power generation, user/installer events and the actual (spot) data. The collected data is stored in a SQL database (SQLite/MySQL/MariaDB) or SMA® compatible .csv files. +A separate service/daemon uploads the collected data to [PVoutput.org](https://pvoutput.org) + +### **Known bugs and limitations** +For a list of known bugs, consult the [issues](https://github.com/SBFspot/SBFspot/issues). If you find a bug, please create an [issue](https://github.com/SBFspot/SBFspot/issues). + +### **Documentation** +Refer to the [Wiki](https://github.com/SBFspot/SBFspot/wiki) for documentation and FAQ. + +### **Special thanks to:** +* S. Pittaway: Author of ["NANODE SMA PV MONITOR"](https://github.com/stuartpittaway/nanodesmapvmonitor) on which this project is based. +* W. Simons : Early adopter, main tester and SMAdata2® Protocol analyzer +* G. Schnuff : SMAdata2® Protocol analyzer +* T. Frank: Speedwire® support +* Snowmiss: User manual +* All other users for their contribution - in any form - to the success of this project + +### **Donations** +SBFspot is a free tool, developed during personal free time. If you like it, consider a donation. +If you click on the button below, you will be taken to the secure PayPal Web site. You don't need to have a paypal account in order to make a donation. + +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3R5JSRCXBGSLQ) + +### **License** +[Attribution - NonCommercial - ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)](https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode) + +In short, you are free: +* to Share => to copy, distribute and transmit the work +* to Remix => to adapt the work +Under the following conditions: +* **Attribution:** You must attribute the work in the manner specified by the author or Licensor (but not in any way that suggests that they endorse you or your use of the work). +* **Noncommercial:** You may not use this work for commercial purposes. +* **Share Alike:** If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. + +### **Disclaimer** +A user of SBFspot software acknowledges that he or she is receiving this software on an "as is" basis and the user is not relying on the accuracy or functionality of the software for any purpose. The user further acknowledges that any use of this software will be at his own risk and the copyright owner accepts no responsibility whatsoever arising from the use or application of the software. + +SMA, Speedwire are registered trademarks of [SMA Solar Technology AG](http://www.sma.de/en/company/about-sma.html) + +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20testing-red.svg +[release-shield]: https://img.shields.io/badge/version-2022.repo-blue.svg +[release]: https://github.com/hassio-addons/addon-ssh/tree/2022.repo diff --git a/example/CHANGELOG.md b/example/CHANGELOG.md new file mode 100644 index 0000000..6e3f281 --- /dev/null +++ b/example/CHANGELOG.md @@ -0,0 +1,9 @@ + + +## 1.1.0 + +- Updates + +## 1.0.0 + +- Initial release diff --git a/example/DOCS.md b/example/DOCS.md new file mode 100644 index 0000000..e73650e --- /dev/null +++ b/example/DOCS.md @@ -0,0 +1,7 @@ +# Home Assistant Add-on: Example add-on + +## How to use + +This add-on really does nothing. It is just an example. + +When started it will print the configured message or "Hello world" in the log. diff --git a/example/Dockerfile b/example/Dockerfile new file mode 100644 index 0000000..9d1a983 --- /dev/null +++ b/example/Dockerfile @@ -0,0 +1,12 @@ +# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile +ARG BUILD_FROM +FROM $BUILD_FROM + +# Execute during the build of the image +ARG TEMPIO_VERSION BUILD_ARCH +RUN \ + curl -sSLf -o /usr/bin/tempio \ + "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" + +# Copy root filesystem +COPY rootfs / diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..a0de77f --- /dev/null +++ b/example/README.md @@ -0,0 +1,15 @@ +# Home Assistant Add-on: Example add-on + +_Example add-on to use as a blueprint for new add-ons._ + +![Supports aarch64 Architecture][aarch64-shield] +![Supports amd64 Architecture][amd64-shield] +![Supports armhf Architecture][armhf-shield] +![Supports armv7 Architecture][armv7-shield] +![Supports i386 Architecture][i386-shield] + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg diff --git a/example/build.yaml b/example/build.yaml new file mode 100644 index 0000000..f9cffee --- /dev/null +++ b/example/build.yaml @@ -0,0 +1,11 @@ +# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile +build_from: + aarch64: "ghcr.io/home-assistant/aarch64-base:3.14" + +labels: + org.opencontainers.image.title: "${BUILD_NAME}" + org.opencontainers.image.description: "Example add-on to use as a blueprint for new add-ons." + org.opencontainers.image.source: "https://github.com/habuild/" + org.opencontainers.image.licenses: "Apache License 2.0" +args: + TEMPIO_VERSION: "2021.09.0" diff --git a/example/config.yaml b/example/config.yaml new file mode 100644 index 0000000..af0fd50 --- /dev/null +++ b/example/config.yaml @@ -0,0 +1,17 @@ +# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config +name: Example add-on +version: "1.1.0" +slug: example +description: Example add-on +url: "https://github.com/habuild/sbfspot_addon/tree/main/example" +arch: + - armhf + - armv7 + - aarch64 + - amd64 +init: false +options: + message: "Hello world..." +schema: + message: "str?" +image: "ghcr.io/habuild/{arch}-addon-example" diff --git a/example/icon.png b/example/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d4415c1699901889101ad81ae00a91678b635fa4 GIT binary patch literal 48234 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 qH>!m1G}w{f77d0Jt31!GO5aJZDTRo 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 Eg1@S5WdHyG literal 0 HcmV?d00001 diff --git a/example/rootfs/etc/services.d/example/finish b/example/rootfs/etc/services.d/example/finish new file mode 100644 index 0000000..3400ad7 --- /dev/null +++ b/example/rootfs/etc/services.d/example/finish @@ -0,0 +1,9 @@ +#!/usr/bin/execlineb -S1 +# ============================================================================== +# Take down the S6 supervision tree when example fails +# s6-overlay docs: https://github.com/just-containers/s6-overlay +# ============================================================================== +if { s6-test ${1} -ne 0 } +if { s6-test ${1} -ne 256 } + +s6-svscanctl -t /var/run/s6/services diff --git a/example/rootfs/etc/services.d/example/run b/example/rootfs/etc/services.d/example/run new file mode 100644 index 0000000..5e6460a --- /dev/null +++ b/example/rootfs/etc/services.d/example/run @@ -0,0 +1,19 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== +# Start the example service +# s6-overlay docs: https://github.com/just-containers/s6-overlay +# ============================================================================== + +# Add your code here + +# Declare variables +declare message + +## Get the 'message' key from the user config options. +message=$(bashio::config 'message') + +## Print the message the user supplied, defaults to "Hello World..." +bashio::log.info "${message:="Hello World..."}" + +## Run your program +# exec my_program --with-params diff --git a/example/translations/en.yaml b/example/translations/en.yaml new file mode 100644 index 0000000..70de024 --- /dev/null +++ b/example/translations/en.yaml @@ -0,0 +1,4 @@ +configuration: + message: + name: Message + description: The message that will be printed to the log when starting this example add-on. diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15f32eba32a1e55dc055b3a222914e1835c96878 GIT binary patch literal 3060 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 R%#8jt!g2xsLO|ye{{~T*pIiU{ literal 0 HcmV?d00001 diff --git a/repository.yaml b/repository.yaml new file mode 100644 index 0000000..e094d21 --- /dev/null +++ b/repository.yaml @@ -0,0 +1,4 @@ +# https://developers.home-assistant.io/docs/add-ons/repository#repository-configuration +name: SBFspot for HA +url: 'https://github.com/habuild/hassio_addons' +maintainer: HasQT diff --git a/sbfspot/CHANGELOG.md b/sbfspot/CHANGELOG.md new file mode 100644 index 0000000..587aadf --- /dev/null +++ b/sbfspot/CHANGELOG.md @@ -0,0 +1,7 @@ + +## 2022.3.1 +![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fhassio_addons%2Fmaster%2Fsbfspot%2Fconfig.yaml) + +- Initial release + + diff --git a/sbfspot/DOCS.md b/sbfspot/DOCS.md new file mode 100644 index 0000000..c076b99 --- /dev/null +++ b/sbfspot/DOCS.md @@ -0,0 +1,3 @@ +[![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fhabuild%2Fhassio_addons) + +[Readme](https://github.com/habuild/hassio-addons/blob/master/README.md) \ No newline at end of file diff --git a/sbfspot/Dockerfile b/sbfspot/Dockerfile new file mode 100644 index 0000000..86c29b9 --- /dev/null +++ b/sbfspot/Dockerfile @@ -0,0 +1,113 @@ +# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile +ARG BUILD_FROM +FROM $BUILD_FROM AS builder + +# Execute during the build of the image +ARG TEMPIO_VERSION BUILD_ARCH +RUN \ + curl -sSLf -o /usr/bin/tempio \ + "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" + +ENV LANG C.UTF-8 +ENV MQTT_ENABLE 1 + +# Copy root filesystem +COPY rootfs / +# Set shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# install requirements +RUN apk update && apk upgrade && apk add --no-cache git g++ make mysql-dev bluez-dev boost-dev curl-dev mosquitto-clients openrc mariadb-dev + + +# download and build SBFspot +RUN \ + cd /tmp \ + && git clone https://github.com/habuild/SBFspot.git . \ + && cd SBFspot \ + && make mysql \ + && cd .. \ + && cd SBFspotUploadDaemon \ + && make mysql + +# runtinme container +FROM $BUILD_FROM + +ARG TEMPIO_VERSION BUILD_ARCH +RUN \ + curl -sSLf -o /usr/bin/tempio \ + "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" + +RUN apk --no-cache add boost-date_time bluez-libs libstdc++ tzdata mariadb-common mariadb-connector-c ncurses-libs libcurl mosquitto-clients openrc + +# openrc changes +RUN \ + # Tell openrc its running inside a container, till now that has meant LXC + sed -i 's/#rc_sys=""/rc_sys="lxc"/g' /etc/rc.conf &&\ + # Tell openrc loopback and net are already there, since docker handles the networking + echo 'rc_provide="loopback net"' >> /etc/rc.conf &&\ + # no need for loggers + sed -i 's/^#\(rc_logger="YES"\)$/\1/' /etc/rc.conf &&\ + # can't get ttys unless you run the container in privileged mode + sed -i '/tty/d' /etc/inittab &&\ + # can't set hostname since docker sets it + sed -i 's/hostname $opts/# hostname $opts/g' /etc/init.d/hostname &&\ + # can't mount tmpfs since not privileged + sed -i 's/mount -t tmpfs/# mount -t tmpfs/g' /lib/rc/sh/init.sh &&\ + # can't do cgroups + sed -i 's/cgroup_add_service /# cgroup_add_service /g' /lib/rc/sh/openrc-run.sh + +RUN rc-status +RUN mkdir -p /run/openrc && touch /run/openrc/softlevel + +# Copy data for add-on +COPY rootfs / +COPY --from=builder /tmp/SBFspot/mysql/bin/SBFspot /tmp/SBFspot/mysql/bin/SBFspot +COPY --from=builder /tmp/SBFspotUploadDaemon/mysql/bin/SBFspotUploadDaemon /tmp/SBFspotUploadDaemon/mysql/bin/SBFspotUploadDaemon +COPY --from=builder /tmp/SBFspot/date_time_zonespec.csv /tmp/SBFspot/date_time_zonespec.csv +COPY --from=builder /tmp/SBFspot/TagList* /tmp/SBFspot/ + + +RUN cp /tmp/SBFspot/mysql/bin/SBFspot / +RUN cp /tmp/SBFspotUploadDaemon/mysql/bin/SBFspotUploadDaemon / +RUN cp /tmp/SBFspot/date_time_zonespec.csv / +RUN cp /tmp/SBFspot/TagList* / + +RUN chmod a+x /generateConfig.sh /openrc-restart-crashed.sh /SBFspot /SBFspotUploadDaemon /etc/init.d/SBFspotUploadDaemon.service /SBFspot.default.cfg /SBFspotUpload.default.cfg + + +# --- install cron --- +# set shell +RUN echo 'SHELL=/bin/bash' > /etc/crontabs/root +# daily data SBFspot +RUN echo '*/5 6-22 * * * /SBFspot -v -ad1 -am0 -ae0 -mqtt > /dev/stdout' >> /etc/crontabs/root +# monthly data SBFspot +RUN echo '55 05 * * * /SBFspot -v -sp0 -ad0 -am1 -ae1 -finq > /dev/stdout' >> /etc/crontabs/root +# openrc restart crashed services +RUN echo '*/15 * * * * /openrc-restart-crashed.sh -- SBFspotUploadDaemon.service > /dev/stdout' >> /etc/crontabs/root +# openrc status logging +RUN echo '*/5 * * * * rc-status -s > /dev/stdout' >> /etc/crontabs/root + +# install service +RUN rc-update add SBFspotUploadDaemon.service default + +# Labels +LABEL \ + io.hass.name="SBFspot" \ + io.hass.description="Home Assitant addon for Bluetooth SBFspot, is an open source project to get actual and archive data out of an SMA® inverter over Bluetooth or Ethernet (Speedwire®)" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="Hasqt " \ + org.label-schema.description="Home Assitant addon for Bluetooth SBFspot, is an open source project to get actual and archive data out of an SMA® inverter over Bluetooth or Ethernet (Speedwire®)" \ + org.label-schema.build-date=${BUILD_DATE} \ + org.label-schema.name="SBFspot" \ + org.label-schema.schema-version="1.0" \ + org.label-schema.url="https://github.com/habuild/hassio-addons/tree/master/sbfspot" \ + org.label-schema.usage="https://github.com/habuild/hassio-addons/tree/master/sbfspot/README.md" \ + org.label-schema.vcs-ref=${BUILD_REF} \ + org.label-schema.vcs-url="https://github.com/habuild/hassio-addons" \ + org.label-schema.vendor="Hasqt" + + +#CMD [ "/run.sh" ] not needed with rootfs/etc/init.d/{slug}run diff --git a/sbfspot/README.md b/sbfspot/README.md new file mode 100644 index 0000000..1f2c8ef --- /dev/null +++ b/sbfspot/README.md @@ -0,0 +1,58 @@ +# Community Hass.io Add-ons: SBFspot + +![project-stage-shield] ![Project Maintenance][maintenance-shield] + +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fsbfspot_addon%2Fmaster%2Fsbfspot%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fsbfspot_addon%2Fmaster%2Fsbfspot%2Fconfig.json) + +This [home assistant](https://www.home-assistant.io/getting-started/) add-on provides the installation, configuration, and integration for the **Bluetooth** version of [SBFspot 3.9.3](https://github.com/habuild/sbfspot_addon/tree/master/sbfspot). + +This add-on installs a cron service for SPFspot uploader at 5 minutely daytime interval, [PVoutput](https://pvoutput.org/) account and API are required, it also requires an SQL database like Mariadb. +It also sends a MQTT message to home assistant, therefore a MQTT broker is required. + +# Installation + +### Initial database creation. +Download and import either [No Drop DB create](https://github.com/habuild/sbfspot_addon/blob/master/sbfspot/.images/CreateMySQLDB_no_drop.sql) **or** [Create My SQL.sql](https://github.com/SBFspot/SBFspot/blob/master/SBFspot/CreateMySQLDB.sql) in [phpMyAdmin](https://github.com/hassio-addons/addon-phpmyadmin) to create your database. **IF** you haven't already created the database previously, use the NO Drop version. You will also need to add the Database and User/Password to MariaDB and allocate the port. + +![screenshot](https://raw.githubusercontent.com/habuild/sbfspot_addon/master/.images/MariaDB%20setup.PNG) + +### MQTT +[sbfspot_sensors.yaml](https://github.com/habuild/sbfspot_addon/blob/master/sbfspot/.images/sbfspot_sensors.yaml) I use packages to include these yaml sensors. You will need to change to match your plant name and serial as you have set in the add-on configuration options. + +**Although** the [configuration options](https://github.com/habuild/sbfspot_addon/blob/master/sbfspot/.images/Example_Config.yaml) list a MQTT host. The MQTT Host, Username, and Password need to be hardcoded into the **MQTT_PublisherArgs:** The **{topic}** and **{{message}}** will be picked up from options. + +**MQTT_PublisherArgs:** **'-h Your_MQTT_Hostname -u Your_MQTT_Username -P Your_MQTT_password -t {topic} -m "{{message}}" -d -r'** + +**-d** is for MQTT debug in log. + +**-r** is to retain messages. + + +### Example Configuration Options. +can be copy/pasted as [Example Config](https://github.com/habuild/sbfspot_addon/blob/master/sbfspot/.images/Example_Config.yaml) or entered via UI +![Example Options](https://raw.githubusercontent.com/habuild/sbfspot_addon/master/.images/Example_config_png.PNG) + +### Data paths +In docker the /data/ path arrives at /usr/share/hassio/addons/data/slug#_sbfspot on the host. +### Upload logs +TODO Need to grep? or bashio the upload log file back into HA log. The log file here may need to be cleaned up manually. + +### **Link to SBFspot Documentation** +Refer to the [Wiki](https://github.com/SBFspot/SBFspot/wiki) for documentation and FAQ. + +### **Special thanks to:** +* LauR3y/hassio-addons which this version is cleaned up from. +* The SBFspot team for SPFspot. + + +![Supports aarch64 Architecture][aarch64-shield] +![Supports armhf Architecture][armhf-shield] +![Supports armv7 Architecture][armv7-shield] + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/sbfspot/build.yaml b/sbfspot/build.yaml new file mode 100644 index 0000000..65cce55 --- /dev/null +++ b/sbfspot/build.yaml @@ -0,0 +1,13 @@ +# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile +build_from: + aarch64: "ghcr.io/home-assistant/aarch64-base:3.14" + armhf: "ghcr.io/home-assistant/armhf-base:3.14" + armv7: "ghcr.io/home-assistant/armv7-base:3.14" + +labels: + org.opencontainers.image.title: "SBFspot for Home Assistant" + org.opencontainers.image.description: "SBFspot from a blueprint for new add-ons." + org.opencontainers.image.source: "https://github.com/habuild" + org.opencontainers.image.licenses: "Apache License 2.0" +args: + TEMPIO_VERSION: "2021.09.0" diff --git a/sbfspot/config.json b/sbfspot/config.json new file mode 100644 index 0000000..d636a2c --- /dev/null +++ b/sbfspot/config.json @@ -0,0 +1,112 @@ +{ + "name": "SBFspot", + "version": "2022.3.1", + "slug": "sbfspot", + "description": "Manage SBFspot with a simple interface", + "url": "https://github.com/habuild/hassio_addons/tree/main/sbfspot", + "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], + "init": false, + "host_network": true, + "privileged": ["SYS_MODULE"], + "devices": ["/dev/ttyAMA0"], + "options": { + "BTAddress": null, + "Password": "0000", + "MIS_Enabled": 0, + "Plantname": "MyPlant", + "OutputPath": "/data/sbfspot/%Y", + "OutputPathEvents": "/data/sbfspot/%Y/events", + "Latitude": null, + "Longitude": null, + "CalculateMissingSpotValues": 1, + "DateTimeFormat": "%d/%m/%Y %H:%M:%S", + "DateFormat": "%d/%m/%Y", + "DecimalPoint": "comma", + "TimeFormat": "%H:%M:%S", + "SynchTime": 0, + "SynchTimeLow": 1, + "SynchTimeHigh": 3600, + "SunRSOffset": 900, + "Locale": "en-US", + "Timezone": "Europe/Brussels", + "BTConnectRetries": 10, + "CSV_Export": 0, + "CSV_ExtendedHeader": 1, + "CSV_Header": 1, + "CSV_SaveZeroPower": 1, + "CSV_Delimiter": "semicolon", + "CSV_Spot_TimeSource": "Inverter", + "CSV_Spot_WebboxHeader": 0, + "SQL_Database": null, + "SQL_Hostname": null, + "SQL_Port": "3306", + "SQL_Username": null, + "SQL_Password": null, + "MQTT_Publisher": "/usr/bin/mosquitto_pub", + "MQTT_Host": null, + "MQTT_Port": null, + "MQTT_Username": "!secret mqtt_user", + "MQTT_Password": "!secret has_pass", + "MQTT_Topic": "homeassistant/sbfspot_{plantname}/sbfspot_{serial}", + "MQTT_ItemFormat": "\"{key}\": {value}", + "MQTT_ItemDelimiter": "comma", + "MQTT_PublisherArgs": "-h {host} -u {MQTT_Username} -P {MQTT_Password} -t {topic} -m \"{{message}}\" -d", + "MQTT_Data": "Timestamp,SunRise,SunSet,InvSerial,InvName,InvTime,InvStatus,InvTemperature,InvGridRelay,EToday,ETotal,PACTot,UDC1,UDC2,IDC1,IDC2,PDC1,PDC2", + "LogDir": "/data/sbfspot/log", + "LogLevel": "info", + "PVoutput_SID": null, + "PVoutput_Key": null, + "MQTT_ENABLE": "1" + }, + "schema": { + "BTAddress": "str", + "Password": "str", + "MIS_Enabled": "int", + "Plantname": "str", + "OutputPath": "str", + "OutputPathEvents": "str", + "Latitude": "float", + "Longitude": "float", + "CalculateMissingSpotValues": "int", + "DateTimeFormat": "str", + "DateFormat": "str", + "DecimalPoint": "str", + "TimeFormat": "str", + "SynchTime": "int", + "SynchTimeLow": "int", + "SynchTimeHigh": "int", + "SunRSOffset": "int", + "Locale": "str", + "Timezone": "str", + "BTConnectRetries": "int", + "CSV_Export": "int", + "CSV_ExtendedHeader": "int", + "CSV_Header": "int", + "CSV_SaveZeroPower": "int", + "CSV_Delimiter": "str", + "CSV_Spot_TimeSource": "str", + "CSV_Spot_WebboxHeader": "int", + "SQL_Database": "str", + "SQL_Hostname": "str", + "SQL_Port": "str", + "SQL_Username": "str", + "SQL_Password": "str", + "MQTT_Publisher": "str", + "MQTT_Host": "str", + "MQTT_Port": "str?", + "MQTT_Username": "str?", + "MQTT_Password": "str?", + "MQTT_Topic": "str", + "MQTT_ItemFormat": "str", + "MQTT_ItemDelimiter": "str", + "MQTT_PublisherArgs": "str", + "MQTT_Data": "str", + "LogDir": "str", + "LogLevel": "str", + "PVoutput_SID": "str", + "PVoutput_Key": "str", + "MQTT_ENABLE": "int" + }, + "image": "ghcr.io/habuild/{arch}-addon-sbfspot" +} + diff --git a/sbfspot/icon.png b/sbfspot/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15f32eba32a1e55dc055b3a222914e1835c96878 GIT binary patch literal 3060 zcmVqDMHaOD+J2c~FCT+|lBtshN zw4J839XnInfp%P`?a;>*@IY-Cpm?yS;MT@2n1^jJmW8lvy)5gwtJOa4f|M|}Mf9L=IbJt{MTtoBH>^T&SE`9{3hbUB=`wGzfoyFB7VmNVj z63%~qo$YZwM~Q{81R#fxIPd+?e*HG*|egyew?_wbns*i~GSq73L#9Ab?G}VUkt)aw za4*mFBYWy|;vmU>3Yk>5ma5jPxs`EaIwYwL3iYX2n_!mS$+a#`%l#7uY#Zf#ov+=`Y;>Gx^D%!376e;e@@6<1G8b@bYbfB}f#*Qd>9G zf5ba+dnn=|5G2^5?LlgJT>WZP&q9{lK?H4R=I+S}U|N`+$~ltzwxjaw+^J zvFaHLHEV<78pG-TL8ED@nkAE%?0e1X_?AKA2w4=0pk}k`SG^74uS~5b--`J2M&Von z+n@-7*F%Khdmy*}wSP5*Jn(gl9wM`qsgYCNRJnuN{z&yHN@6s#g3!?tsk5?UD`n0i z9Hshg>Umi+f}cZpQ*KmVB?LLf$pbWbkSC8J(~qq7K%f<6Yf$$cs=Q+wIHyb94Q`|G zMmB0G{VB@tLHWA8C`Adjijm0#_dbO9KT%LWtp8(_Z-d#Q2m74y_+MajH|#+jrA-)Z zuqTkY3=iyp*`V6r5TDr%tI4-HwHS_b@@0zL0};)qBP#90B5(ScYw`dO{aAeoe}U@u zX%kBS@CJG4AtatBoioT<#i@@FS_6BWhCWIEMOb|nX{r^qHm*2AcQ5mge(_VCaF?tPj)fyyuP(A(zf z{ZxOq)}mgOZ+s?6i-DDE#X&)b1Gks^)+5^qHXveD_c$ulPSGX4OS=Hsv5u)y|>}9>YzlOJh}-(yw#!Uv*TIM5gV@!A#8h;uEH6 z3P?8(f_(wyl;LZI3L%(nwl64yfzRaCy|^XbNr;iBb@ojajw|q2-M$#P%}8e zZZ}P-hb&N(DU0!g)Nl#G>lRsrapIhGR9~a|SM!fOzlaqvb!*fb)(xSeVWxZGIb-;J zD+nqBRlp1eJs3#$akc|A0s8|~KCDMJsUD&RB8%(qim2_dQ!9 z|44*PqIc}%?}qByDAZuaemPRLLMOqgru~(8m52WZ(ttgRvNn!?C~n$^(6WMGrlg~1 zaxeUg^VV-d5@#Lj?juJ1I-lUoJ3RaoWImy?J2|?Q%D)6rkvBs5qS^QK>=-8f=u&tv z$)}o8_YjXBWP3sZO$|}gPHOx%m9ZRR}_sG6iWOC3O>It^*3aokz($*dfAbnV| zmFdFdMNToyW?A!Hw|0jWY1Bu6;v(4UZ}duF`8R@J*;g=522VbRzHcH8a1<_NG9lBjxzefJ z5^Vde@X}vfu!6{+AB)N(PQ1xyejN=vl?LLcdF(h(4y(Q9Xr-AJ>@4f8$61&+eKWZ3 zpNr+}Z-wj`^#8sbdRs#& zQOz%kq^&J`gWSIzk-OAct#7yT`KnQ!fN7o*a>n}%wN{zv^hVB7MT4kb7g%?K>bGi4 zvk#eiR(A*)8(xsd_7YVf|N747fIS!uKr4UzBbDZz7@Qbi`uRdH9OpRfGrY7M|Jdt! z!Mynqva08L_kx0t>`p$r90-6My5R`I>*hGaWzX}w?NS|}b!wRyFuvSP*3uaV{L*Zx z=?P|7RIdzt{!cX~=_mQwEw>(fQ00(}$Jro6rB70^eU`9pdLTp`eDsw zNw!MtL=p5u^L*z_WmS$HlWtIEB+Dp*ZL?tIZlzoOVA82X+C$poV6E5lve)~fcBOYU zunHCzXq-6DPKZ-rua+q|N8zRB=0K#uX#Ih-4QU&kvCSKQ#$%`Enc^z{T$whX0cK7N zGMeOMT-5&xku~?L4iW?|U-^67_6=PFj)=>eQZT|Tj zD}WXTMQ>I&(IN{a+BHXceWY;`GBpCTo>LxGtSlfXHN=0>;4S#y-8HkNW3gE-mfjt> z`G=F|{!x~HR+M&%KZF(*tKan+|K|K(ZvPzs0RR8KFYgzn*Eu5q0000 z`!?D4r3qilkX_uq_ulin=iGDdIrsklxUctl{`G#H*Lgk8>wNrt9=NEhrK1IaKp?>W z_XEzS01beijt)XcOAmoS7#QdonYmb)nV6V)IXKz4`1u3{`1znvArV<|Az^746e@v~ zl)fgXpr9Zqu8dYfpk(D05PuH=F)%PNGcoh9u<#(RK(8SF&vpI}fSn$=4>W^8!oUS~ z5SSfw-UaFDZqjiYIY5NHxDZcY=F`K}E1J2DhqguJ9lf71FkZUM!^!9rGeKE+sYXReHvsuQT7i zdtXpkR9y0*vZ}hKwywT`^tGk6t-YhOt9y8a{B3k>d}4B8acOzwJLSjf8g*y)=idIo z;nDHmE)W3z57s|r|INkz+jW74222C_+XcE1@H=338rmyzbR0L0AP!!f!icBzTZ95q%|d|lE@n5oB_fmi#Ofdct;7CD-!Dv5)f*~uI`V;nZt&#HDx zj|uAG72ru1qOfNyDLd=Vo7X}?<#NKB?s6*~YjYT?Kc&t9H;9s1j5p+3jozFPKx$1$ z8{$j;3V-ffM$vj~7IK-dBDE6fLR6w=ByNRb7I~%f9$!hMNsjaoOdkkqIWkqvry@S>0=HF0SiaW_iiZ3BmR(EN&%9bgMYsGSg6m|tM7y`sm`*47l=k zIR`F&&CL+Lrb5A+JrtkMQW%Zh^f@~=;X%I2^p zHScq*vAk9ID$3b~OuywVUlY5DMwfQEiwyhyQS9zsy-pRG7C(Lj#F8si?ZCVu$7WvQ zEe$nHdU8(pMMs2_dTYJHODGo6l zi1T*JEbJYn=(Or6D#Y-~CkxNT1kqN19jEIhjH8_sCK}oAA1f)L{M+<{F!$3;v%BAB zR5woV&Oxy(W38)sFBuYGiLP(L6+h%*DC@VkY4{*7YGfX++eMFYAb6r$Pkefup-I@1 z&T-fcyGD-ONoVsA6)fs$HsYHYv3|g0aUiE=TNn!{y|jlL{dY&7w6W@NDs6TsJ@5 zmQ?*sp(nTcQwaVGZn6^ZXO~Q!A_N;ohB_>4gio@FQ4Ff98tzX(X}RB}v37fnjVBf2 z3I`Ju$g=iX1&Uc^9*=BA8mbQcQCLr?ymeTL1NSpJtu#ZGH+I4YqqCyLcjTBK2a?+|g5-RyGgR0ffPOQG%CVmCbg%)p48> zYSfF;kwtF)@vLq;Q4XJYR94)MDtGr&_^{IZ_D>BevbFn1UpO8lN2+#FLnnbx7wbN$ zEVYqqTpY+7^VOtuLm7`No%k>IYr)Qi+7bPYg6x4eMvS8zqrdiAZ5$0bnRmkSnd!7C zw%C%ZQS(oWs!#M=(&?$Mdmo_BRtIz!2`EKGglUPot+Afwu?iu9>(QX?&^_CXUu+Rg zP4NabyAP)g)k?d>PY=qx0v7*R=9s$4%$}p>)g_p8Xo9m!E$w?(J-4=8o2X?xRjIqV zK9>wHBO*|Tq#EJEB_3591$V-p%1D9)cBgQbl(mC1I}VM@Y^yAD8|TyvJpBw;X+Qov zn^WtgYo)xoJcpRN{l2<8?|vbhG^k%?f7M2o;E`cz((3u^>pza!JIiS6K7JZ3Oy8ND znH>g;aCFl-7|XW^n9&G?*qaPzR1p7ypHLsIovaQWh<(^kYgpK9szqJx)4A*|roj>D z<}>#rtZ}U1P`u+tZBe=FF)9|fZzq$ShL8Swr9*jsTfWU{b|MgGM22c0rXO*%Gj+Hl zkB1@B*REN8f#&M&$w08xRkhLn!yE2f>I?608JVBKrsDRNGL75dQr@=SrgpG_L=N9v zB;rWkBTk|$F*2T77q^KL55oC+xHol)$d(^ZzVpMo(nfV77Yl%n%xt7}P*=GkCDu%0ia!u647xZCQWMLL z(s2RX`_XP^L%`^sQgha8R{J{CbEuz3(IB%~NI|Gg&G1h>J;A@4uTBWvLJiauvzn-N z9)(rehz@+ku*}*`+ga-scX_E?3P7R=lS&v{sccJc+wC-Q z!RI>|&UM6Lk!{FHdQBaIc7{*apw*5fpJ*sT;nxpFHis!L*njg2V*FFqLil+}r~T`G zbhO$j{B6yl$pYM2b{{bev`&@P~@W4ODxaii})w+1{qCoZ7nHR z3{s81zuY|sT2G?BP}6GTy%28iHbwo%eK@C>y|8rjmC@r_v#Sz0+DOl?I8 zK*@eq1l<*4=HlwavT8V;)kq@TvqgYo_!NdiH>Ha)sKi3MPhy3f2$Cl81)VW`-gm!0 z+;BK7wM}gyS(|k+8<*54id#U7n7x{T-7J4XcmL>5EB%PuIHtZuF~87!;Msfjq*hb* zns57xuQu{2InvaQnCsb6VK=^aYkeM{)uJXzb}mFR=k^eFcf!gmth%_#j^-;z^jEW| z*^@HLaTCNQwpFu?@2h_B@h%?ti}CPM%VS83CtF~6;HFcwUg@7xq2ANUQ-6>FfR3~} z8l^M=ttwFNF($UQz(SSM^rBu)@~>3wWd9>4a`IDv28qx4#m`?@k45XsQo-DuxtYCY zqTOMQkO1eiOOI&|VtFCZgtCYnmLTnxbt~LC!0TFDcc%@dt^@86rlaARDu#`5-@`nc z+U2%eEag9l4VS32vUR;Qnxpl;d*~>!w>vNCQ@yPL+n}K3E*f*YepEbevX}RLF8ehT zpXf8H%42lIjeWa|p;AM8JwHF|y?LYjQhgC!_MCa?%2V{OV8)?A6ff>=e)KgCTDK>W zEaE4(adG8{d&21g(BW`@y|FV8spUj#M#n;UY1R4m$BL7yefvtroKMLT^P@F{pGc!< zQ&2@WXJ^To`N)tqx8~|7GUyfLZkNW>%pEBsqV~l#hsn_6`a1WJBI1AsK^GAtP4eTs zN5ZR(HaDjj;aTgq%rmpgsE05!#U7Gb)qT8M|2)_JR*K<*6`QL=5!>}|u^XwG4JgSV zT$K;4Lvr^cm-gxk)*1ubK!R}YOaSGFveJnvHbk|kN8&Tvs&t}6`|ct zc;0qV%P;s>GlY$$p&x3CH$HSF+(d+f4%nm(sc6^W*2^^VO8Ie&u`TUgyeF>Zudm>j zW`uQg<1)em|5LnGRfjffN|_|weV-N|`5fWDxSz<~mINpebg&s_0RypK&5?R`X2;CL zb!U0tSJ}f!-Q4*ObOhtiH8|E-7gZdikL>+D{GmmBxsCowqu!l9ShAI;eK1?cv1vis zg~?H+oBeIgszsl5xh~uSiQ7;JJ|NTtP6xMp*5MZ$70!MNj2wjK1PEfe R%#8jt!g2xsLO|ye{{~T*pIiU{ literal 0 HcmV?d00001 diff --git a/sbfspot/rootfs/SBFspot.default.cfg b/sbfspot/rootfs/SBFspot.default.cfg new file mode 100644 index 0000000..0e051a5 --- /dev/null +++ b/sbfspot/rootfs/SBFspot.default.cfg @@ -0,0 +1,268 @@ +################################################################################ +# ____ ____ _____ _ +# / ___|| __ )| ___|__ _ __ ___ | |_ +# \___ \| _ \| |_ / __| '_ \ / _ \| __| +# ___) | |_) | _|\__ \ |_) | (_) | |_ +# |____/|____/|_| |___/ .__/ \___/ \__| +# |_| +# +# SBFspot.cfg - Configuration file for SBFspot.exe +# SBFspot - Yet another tool to read power production of SMA solar inverters +# (c)2012-2021, SBF +# +# DISCLAIMER: +# A user of SBFspot software acknowledges that he or she is receiving this +# software on an "as is" basis and the user is not relying on the accuracy +# or functionality of the software for any purpose. The user further +# acknowledges that any use of this software will be at his own risk +# and the copyright owner accepts no responsibility whatsoever arising from +# the use or application of the software. +# +# SMA and Speedwire are registered trademarks of SMA Solar Technology AG +################################################################################ + +# SMA Inverter's Bluetooth address +# Windows: sbfspot -scan +# Linux : hcitool scan +# IMPORTANT FOR SPEEDWIRE USERS: COMMENT OUT BTADDRESS (PUT # IN FRONT) +BTAddress=00:00:00:00:00:00 + +# If multiple local BT adapters are available, select the one to use +#LocalBTAddress=00:00:00:00:00:00 + +# SMA Inverter's Speedwire IP address +# If IP_Address is not set or is 0.0.0.0 SBFspot will try to detect the speedwire inverter by broadcast +# If IP_Address is set to a valid IP, SBFspot will try to connect directly to that IP without broadcast detection +# Multiple IP addresses can be provided (comma separated) +#IP_Address=0.0.0.0 + +# User password (default 0000) +Password=0000 + +# MIS_Enabled (Multi Inverter Support: Default=0 Disabled) +# +------------+-------+-------------+ +# | #Inverters | NetID | MIS_Enabled | +# +------------+-------+-------------+ +# | 1 | 1 | Don't Care | +# +------------+-------+-------------+ +# | 1 | >1 | 0 | +# +------------+-------+-------------+ +# | >1 | >1 | 1 | +# +------------+-------+-------------+ +MIS_Enabled=0 + +# Plantname +Plantname=MyPlant + +# OutputPath (Place to store CSV files) +# +# Windows: C:\Users\Public\SMAdata\%Y +# Linux : /home/pi/smadata/%Y +# %Y %m and %d will be expanded to Year Month and Day +OutputPath=/home/pi/smadata/%Y + +# OutputPathEvents (Place to store CSV files for events) +# If omitted, OutputPath is used +OutputPathEvents=/home/pi/smadata/%Y/Events + +# Position of pv-plant http://itouchmap.com/latlong.html +# Example for Ukkel, Belgium +Latitude=50.80 +Longitude=4.33 + +# Calculate Missing SpotValues +# If set to 1, values not provided by inverter will be calculated +# eg: Pdc1 = Idc1 * Udc1 +CalculateMissingSpotValues=1 + +# DateTimeFormat (default %d/%m/%Y %H:%M:%S) +# For details see strftime() function +# http://www.cplusplus.com/reference/clibrary/ctime/strftime/ +DateTimeFormat=%d/%m/%Y %H:%M:%S + +# DateFormat (default %d/%m/%Y) +DateFormat=%d/%m/%Y + +# DecimalPoint (comma/point default comma) +DecimalPoint=comma + +# TimeFormat (default %H:%M:%S) +TimeFormat=%H:%M:%S + +# SynchTime (0-30 - 0=disabled, 1=once a day (default), 7=once a week, 30=once a month) +# If set to non-zero value, the plant time is synchronised with local host time +# Some inverters don't have a real-time clock +SynchTime=1 + +# SynchTimeLow (1-120 - default 1) +# SynchTimeHigh (1200-3600 - default 3600) +# Plant time is adjusted to local host time when SynchTime=1 and +# time difference is between SynchTimeLow and SynchTimeHigh limits +SynchTimeLow=1 +SynchTimeHigh=3600 + +# SunRSOffset +# Offset to start before sunrise and end after sunset (0-3600 - default 900 seconds) +SunRSOffset=900 + +# Locale +# Translate Entries in CSV files +# Supported locales: de-DE;en-US;fr-FR;nl-NL;es-ES;it-IT +# Default en-US +Locale=en-US + +# Timezone +# Select the right timezone in date_time_zonespec.csv +# e.g. Timezone=Europe/Brussels +Timezone=Europe/Brussels + +# BTConnectRetries +# Number of Bluetooth Connection attempts (1-15; Default=10) +BTConnectRetries=10 + +########################### +### CSV Export Settings ### +########################### +# With CSV_* settings you can define the CSV file format + +# CSV_Export (default 1 = Enabled) +# Enables or disables the CSV Export functionality +CSV_Export=1 + +# CSV_ExtendedHeader (default 1 = On) +# Enables or disables the SMA extended header info (8 lines) +# isep=; +# Version CSV1|Tool SBFspot|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3 +# etc... +# This is usefull for manual data upload to pvoutput.org +CSV_ExtendedHeader=1 + +# CSV_Header (default 1 = On) +# Enables or disables the CSV data header info (1 line) +# dd/MM/yyyy HH:mm:ss;kWh;kW +# This is usefull for manual data upload to pvoutput.org +# If CSV_ExtendedHeader is enabled, CSV_Header is also enabled +CSV_Header=1 + +# CSV_SaveZeroPower (default 1 = On) +# When enabled, daily csv files contain all data from 00:00 to 23:55 +# This is usefull for manual data upload to pvoutput.org +CSV_SaveZeroPower=1 + +# CSV_Delimiter (comma/semicolon default semicolon) +CSV_Delimiter=semicolon + +# CSV_Spot_TimeSource (Inverter|Computer default Inverter) +CSV_Spot_TimeSource=Inverter + +# CSV_Spot_WebboxHeader (Default 0 = Off) +# When enabled, use Webbox style header (DcMs.Watt[A];DcMs.Watt[B]...) +CSV_Spot_WebboxHeader=0 + +########################### +### SQL DB Settings ### +########################### + +# SQLite +# SQL_Database (Fullpath to SQLite DB) +# Windows: C:\Users\Public\SMAdata\SBFspot.db +# Linux : /home/pi/smadata/SBFspot.db +SQL_Database=/home/pi/smadata/SBFspot.db + +# MySQL +#SQL_Database=SBFspot +#SQL_Hostname= or +#SQL_Port=3306 +#SQL_Username=SBFspotUser +#SQL_Password=SBFspotPassword + +######################### +### MQTT Settings ### +######################### + +# Full path to mosquitto_pub executable +# Linux: sudo apt-get install mosquitto-clients +MQTT_Publisher=/usr/bin/mosquitto_pub + +# Windows: Download and install mosquitto clients from https://mosquitto.org/download/ +# Mosquitto 64-bit on Windows 64-bit +# MQTT_Publisher=%ProgramW6432%\\mosquitto\\mosquitto_pub.exe + +# Mosquitto 32-bit on Windows 32-bit +# MQTT_Publisher=%ProgramFiles%\\mosquitto\\mosquitto_pub.exe + +# IP address or DNS name of MQTT Broker +# Don't use test broker for production environments +MQTT_Host=test.mosquitto.org +# MQTT_Host=broker.hivemq.com + +# Port (Optional) +#MQTT_Port= + +# Topic Name +# When using public broker like test.mosquitto.org make sure to define a unique topic name +# by appending the serial number of the inverter to avoid you receive data of another SBFspot user. +MQTT_Topic=sbfspot_{serial} +#MQTT_Topic=sbfspot_{plantname}/sma_{serial} + +# Format of message items to be sent +# JSON: MQTT_ItemFormat="{key}": {value} +# TEXT: MQTT_ItemFormat={key}:{value} +# XML: MQTT_ItemFormat= +MQTT_ItemFormat="{key}": {value} + +# MQTT_ItemDelimiter (none|blank|comma|semicolon default comma) +# JSON: MQTT_ItemDelimiter=comma +# TEXT: MQTT_ItemDelimiter=semicolon +# XML : MQTT_ItemDelimiter=none +MQTT_ItemDelimiter=comma + +# Mandatory arguments for mosquitto_pub executable +# JSON: MQTT_PublisherArgs=-h {host} -t {topic} -m "{{message}}" +# TEXT: MQTT_PublisherArgs=-h {host} -t {topic} -m "{message}" +# XML : MQTT_PublisherArgs=-h {host} -t {topic} -m "{message}" +MQTT_PublisherArgs=-h {host} -t {topic} -r -m "{{message}}" + +# Data to be published (comma delimited) +MQTT_Data=Timestamp,SunRise,SunSet,InvSerial,InvName,InvTime,InvStatus,InvTemperature,InvGridRelay,EToday,ETotal,PACTot,UDC1,UDC2,IDC1,IDC2,PDC1,PDC2 + +# Possible keywords are (if supported by your inverter): +# SBFspot Alias Code Description +# ==================================================================================== +# Timestamp Current date/time +# InvTime Inverter date/time +# SunRise Sunrise time +# SunSet Sunset time +# InvSerial Serial Number +# InvName NameplateLocation Device name +# InvClass NameplateMainModel Device class +# InvType NameplateModel Device type +# InvSwVer NameplatePkgRev Software package +# InvStatus OperationHealth Condition +# InvTemperature CoolsysTmpNom Operating condition temperatures +# InvGridRelay OperationGriSwStt Grid relay/contactor +# ETotal MeteringTotWhOut Total yield +# EToday MeteringDyWhOut Day yield +# PACTot GridMsTotW Power +# PDC1/PDC2 DcMsWatt DC power input string 1/2 +# UDC1/UDC2 DcMsVol DC voltage input string 1/2 +# IDC1/IDC2 DcMsAmp DC current input string 1/2 +# PDCTot DcMsWatt DC power all strings +# OperTm MeteringTotOpTms Operating time +# FeedTm MeteringTotFeedTms Feed-in time +# PAC1 GridMsWphsA Power L1 +# PAC2 GridMsWphsB Power L2 +# PAC3 GridMsWphsC Power L3 +# UAC1 GridMsPhVphsA Grid voltage phase L1 +# UAC2 GridMsPhVphsB Grid voltage phase L2 +# UAC3 GridMsPhVphsC Grid voltage phase L3 +# IAC1 GridMsAphsA_1 Grid current phase L1 +# IAC2 GridMsAphsB_1 Grid current phase L2 +# IAC3 GridMsAphsC_1 Grid current phase L3 +# GridFreq GridMsHz Grid frequency +# BTSignal BTSignal Bluetooth signal strength +# BatTmpVal BatTmpVal Battery temperature +# BatVol BatVol Battery voltage +# BatAmp BatAmp Battery current +# BatChaStt BatChaStt Current battery charge status + diff --git a/sbfspot/rootfs/SBFspotUpload.default.cfg b/sbfspot/rootfs/SBFspotUpload.default.cfg new file mode 100644 index 0000000..6e5739a --- /dev/null +++ b/sbfspot/rootfs/SBFspotUpload.default.cfg @@ -0,0 +1,54 @@ +################################################################################ +# SBFspotUpload.cfg - Configuration file for SBFspotUploadService/Daemon +# (c)2012-2021, SBF (https://github.com/SBFspot/SBFspot) +# +# DISCLAIMER: +# A user of SBFspotUploadService/Daemon software acknowledges that he or she is +# receiving this software on an "as is" basis and the user is not relying on +# the accuracy or functionality of the software for any purpose. The user +# further acknowledges that any use of this software will be at his own risk +# and the copyright owner accepts no responsibility whatsoever arising from +# the use or application of the software. +# +################################################################################ + + +################################ +### Log Settings ### +################################ +# Windows: C:\Users\Public\SMAdata\Logs +# Linux : /var/log/sbfspot.3 +#LogDir=C:\Users\Public\SMAdata\Logs +LogDir=/var/log/sbfspot.3 + +#LogLevel=debug|info|warning|error (default info) +LogLevel=info + +################################ +### PVoutput Upload Settings ### +################################ +#PVoutput_SID (PVoutput_System_ID) +#Map inverters to PVoutput System ID's +#PVoutput_SID=SerialNmbrInverter_1:PVoutput_System_ID_1,SerialNmbrInverter_2:PVoutput_System_ID_2 +#e.g. PVoutput_SID=200212345:4321 +PVoutput_SID= + +#PVoutput_Key +#Sets PVoutput API Key +PVoutput_Key= + +################################ +### SQL DB Settings ### +################################ +# SQL_Database (Fullpath to SQLite DB) +# Windows: C:\Users\Public\SMAdata\SBFspot.db +# Linux : /home/pi/smadata/SBFspot.db +#SQL_Database=C:\Users\Public\SMAdata\SBFspot.db +SQL_Database=/home/pi/smadata/SBFspot.db + +# Reserved for MySQL +#SQL_Database=SBFspot +#SQL_Hostname= or +#SQL_Port=3306 +#SQL_Username=SBFspotUser +#SQL_Password=SBFspotPassword diff --git a/sbfspot/rootfs/etc/init.d/SBFspotUploadDaemon.service b/sbfspot/rootfs/etc/init.d/SBFspotUploadDaemon.service new file mode 100644 index 0000000..98ce555 --- /dev/null +++ b/sbfspot/rootfs/etc/init.d/SBFspotUploadDaemon.service @@ -0,0 +1,36 @@ +#!/sbin/openrc-run + +description="SBFspot upload daemon" +#pidfile="/run/SBFspotUploadDaemon.pid" +command="/SBFspotUploadDaemon" +command_opts=" -c /SBFspotUpload.cfg" + +depend() { + need net +} + +start() +{ + ebegin "Starting SBFspotUploadDaemon" + start-stop-daemon --start --background \ + --exec $command \ + -- $command_opts \ + #--make-pidfile --pidfile $pidfile + eend $? +} + +stop() { + ebegin "Stopping SBFspotUploadDaemon" + start-stop-daemon --stop \ + --exec $command \ + #--pidfile $pidfile + eend $? +} + +reload() { + ebegin "Reloading SBFspotUploadDaemon" + start-stop-daemon --exec $command \ + #--pidfile $pidfile \ + -s 1 + eend $? +} diff --git a/sbfspot/rootfs/etc/services.d/sbfspot/no_stop_finish b/sbfspot/rootfs/etc/services.d/sbfspot/no_stop_finish new file mode 100644 index 0000000..c66d95c --- /dev/null +++ b/sbfspot/rootfs/etc/services.d/sbfspot/no_stop_finish @@ -0,0 +1,9 @@ +#!/usr/bin/execlineb -S1 +# ============================================================================== +# Take down the S6 supervision tree when SBFspot fails +# s6-overlay docs: https://github.com/just-containers/s6-overlay +# ============================================================================== +if { s6-test ${1} -ne 0 } +if { s6-test ${1} -ne 256 } + +s6-svscanctl -t /var/run/s6/services diff --git a/sbfspot/rootfs/etc/services.d/sbfspot/run b/sbfspot/rootfs/etc/services.d/sbfspot/run new file mode 100644 index 0000000..cae6548 --- /dev/null +++ b/sbfspot/rootfs/etc/services.d/sbfspot/run @@ -0,0 +1,34 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== +# Start the SBFspot service +# s6-overlay docs: https://github.com/just-containers/s6-overlay +# ============================================================================== + +#!/bin/sh +set -e + +echo 'Show all runlevels and their services.' +rc-status -a + +echo 'Show all services.' +rc-status -s + +# --- GENERATE CONFIG -- +echo "PWD is current directory $(pwd)" +cd / +echo "PWD is current directory $(pwd)" +./generateConfig.sh SBFspot.cfg SBFspotUpload.cfg + +#chmod a+x SBFspot.cfg SBFspotUpload.cfg + +# ---- RUN ---- +# start service +echo 'Starting daemon' +rc-service SBFspotUploadDaemon.service start + +# cron +echo 'Starting cron in foreground' +/usr/sbin/crond -f + +# echo 'Starting daemon' +# ./SBFspotUploadDaemon diff --git a/sbfspot/rootfs/generateConfig.sh b/sbfspot/rootfs/generateConfig.sh new file mode 100644 index 0000000..46e86e5 --- /dev/null +++ b/sbfspot/rootfs/generateConfig.sh @@ -0,0 +1,309 @@ +CFG_PATH=$1 +CFG_PATH_UPLOAD=$2 +CONFIG_PATH=/data/options.json + +echo "Generating $CFG_PATH & $CFG_PATH_UPLOAD" + +CONFIG_BTADDRESS="$(jq --raw-output '.BTAddress' $CONFIG_PATH)" +CONFIG_PASSWORD="$(jq --raw-output '.Password' $CONFIG_PATH)" +CONFIG_MSI_ENABLED="$(jq --raw-output '.MIS_Enabled' $CONFIG_PATH)" +CONFIG_PLANTNAME="$(jq --raw-output '.Plantname' $CONFIG_PATH)" +CONFIG_OUTPUTPATH="$(jq --raw-output '.OutputPath' $CONFIG_PATH)" +CONFIG_OUTPUTPATHEVENTS="$(jq --raw-output '.OutputPathEvents' $CONFIG_PATH)" +CONFIG_LATITUDE="$(jq --raw-output '.Latitude' $CONFIG_PATH)" +CONFIG_LONGITUDE="$(jq --raw-output '.Longitude' $CONFIG_PATH)" +CONFIG_CALCULATEMISSINGSPOTVALUES="$(jq --raw-output '.CalculateMissingSpotValues' $CONFIG_PATH)" +CONFIG_DATETIMEFORMAT="$(jq --raw-output '.DateTimeFormat' $CONFIG_PATH)" +CONFIG_DATEFORMAT="$(jq --raw-output '.DateFormat' $CONFIG_PATH)" +CONFIG_DECIMALPOINT="$(jq --raw-output '.DecimalPoint' $CONFIG_PATH)" +CONFIG_TIMEFORMAT="$(jq --raw-output '.TimeFormat' $CONFIG_PATH)" +CONFIG_SYNCHTIME="$(jq --raw-output '.SynchTime' $CONFIG_PATH)" +CONFIG_SYNCHTIMELOW="$(jq --raw-output '.SynchTimeLow' $CONFIG_PATH)" +CONFIG_SYNCHTIMEHIGH="$(jq --raw-output '.SynchTimeHigh' $CONFIG_PATH)" +CONFIG_SUNRSOFFSET="$(jq --raw-output '.SunRSOffset' $CONFIG_PATH)" +CONFIG_LOCALE="$(jq --raw-output '.Locale' $CONFIG_PATH)" +CONFIG_TIMEZONE="$(jq --raw-output '.Timezone' $CONFIG_PATH)" +CONFIG_BTCONNECTRETRIES="$(jq --raw-output '.BTConnectRetries' $CONFIG_PATH)" +CONFIG_CSV_EXPORT="$(jq --raw-output '.CSV_Export' $CONFIG_PATH)" +CONFIG_CSV_EXTENDEDHEADER="$(jq --raw-output '.CSV_ExtendedHeader' $CONFIG_PATH)" +CONFIG_CSV_HEADER="$(jq --raw-output '.CSV_Header' $CONFIG_PATH)" +CONFIG_CSV_SAVEZEROPOWER="$(jq --raw-output '.CSV_SaveZeroPower' $CONFIG_PATH)" +CONFIG_CSV_DELIMITER="$(jq --raw-output '.CSV_Delimiter' $CONFIG_PATH)" +CONFIG_CSV_SPOT_TIMESOURCE="$(jq --raw-output '.CSV_Spot_TimeSource' $CONFIG_PATH)" +CONFIG_CSV_SPOT_WEBBOXHEADER="$(jq --raw-output '.CSV_Spot_WebboxHeader' $CONFIG_PATH)" +CONFIG_SQL_DATABASE="$(jq --raw-output '.SQL_Database' $CONFIG_PATH)" +CONFIG_SQL_HOSTNAME="$(jq --raw-output '.SQL_Hostname' $CONFIG_PATH)" +CONFIG_SQL_PORT="$(jq --raw-output '.SQL_Port' $CONFIG_PATH)" +CONFIG_SQL_USERNAME="$(jq --raw-output '.SQL_Username' $CONFIG_PATH)" +CONFIG_SQL_PASSWORD="$(jq --raw-output '.SQL_Password' $CONFIG_PATH)" +CONFIG_MQTT_PUBLISHER="$(jq --raw-output '.MQTT_Publisher' $CONFIG_PATH)" +CONFIG_MQTT_HOST="$(jq --raw-output '.MQTT_Host' $CONFIG_PATH)" +CONFIG_MQTT_PORT="$(jq --raw-output '.MQTT_Port' $CONFIG_PATH)" +CONFIG_MQTT_USERNAME="$(jq --raw-output '.MQTT_Username' $CONFIG_PATH)" +CONFIG_MQTT_PASSWORD="$(jq --raw-output '.MQTT_Password' $CONFIG_PATH)" +CONFIG_MQTT_TOPIC="$(jq --raw-output '.MQTT_Topic' $CONFIG_PATH)" +CONFIG_MQTT_ITEMFORMAT="$(jq --raw-output '.MQTT_ItemFormat' $CONFIG_PATH)" +CONFIG_MQTT_ITEMDELIMITER="$(jq --raw-output '.MQTT_ItemDelimiter' $CONFIG_PATH)" +CONFIG_MQTT_PUBLISHERARGS="$(jq --raw-output '.MQTT_PublisherArgs' $CONFIG_PATH)" +CONFIG_MQTT_DATA="$(jq --raw-output '.MQTT_Data' $CONFIG_PATH)" +CONFIG_LOGDIR="$(jq --raw-output '.LogDir' $CONFIG_PATH)" +CONFIG_LOGLEVEL="$(jq --raw-output '.LogLevel' $CONFIG_PATH)" +CONFIG_PVOUTPUT_SID="$(jq --raw-output '.PVoutput_SID' $CONFIG_PATH)" +CONFIG_PVOUTPUT_KEY="$(jq --raw-output '.PVoutput_Key' $CONFIG_PATH)" + +cat > $CFG_PATH <1 | 0 | +# +------------+-------+-------------+ +# | >1 | >1 | 1 | +# +------------+-------+-------------+ +MIS_Enabled=$CONFIG_MSI_ENABLED + +# Plantname +Plantname=$CONFIG_PLANTNAME + +# OutputPath (Place to store CSV files) +# +# Windows: C:\Users\Public\SMAdata\%Y +# Linux : /home/pi/smadata/%Y +# %Y %m and %d will be expanded to Year Month and Day +OutputPath=$CONFIG_OUTPUTPATH + +# OutputPathEvents (Place to store CSV files for events) +# If omitted, OutputPath is used +OutputPathEvents=$CONFIG_OUTPUTPATHEVENTS + +# Position of pv-plant http://itouchmap.com/latlong.html +# Example for Ukkel, Belgium +Latitude=$CONFIG_LATITUDE +Longitude=$CONFIG_LONGITUDE + +# Calculate Missing SpotValues +# If set to 1, values not provided by inverter will be calculated +# eg: Pdc1 = Idc1 * Udc1 +CalculateMissingSpotValues=$CONFIG_CALCULATEMISSINGSPOTVALUES + +# DateTimeFormat (default %d/%m/%Y %H:%M:%S) +# For details see strftime() function +# http://www.cplusplus.com/reference/clibrary/ctime/strftime/ +DateTimeFormat=$CONFIG_DATETMEFORMAT + +# DateFormat (default %d/%m/%Y) +DateFormat=$CONFIG_DATEFORMAT + +# DecimalPoint (comma/point default comma) +DecimalPoint=$CONFIG_DECIMALPOINT + +# TimeFormat (default %H:%M:%S) +TimeFormat=$CONFIG_TIMEFORMAT + +# SynchTime (0-30 - 0=disabled, 1=once a day (default), 7=once a week, 30=once a month) +# If set to non-zero value, the plant time is synchronised with local host time +# Some inverters don't have a real-time clock +SynchTime=$CONFIG_SYNCHTIME + +# SynchTimeLow (1-120 - default 1) +# SynchTimeHigh (1200-3600 - default 3600) +# Plant time is adjusted to local host time when SynchTime=1 and +# time difference is between SynchTimeLow and SynchTimeHigh limits +SynchTimeLow=$CONFIG_SYNCHTIMELOW +SynchTimeHigh=$CONFIG_SYNCHTIMEHIGH + +# SunRSOffset +# Offset to start before sunrise and end after sunset (0-3600 - default 900 seconds) +SunRSOffset=$CONFIG_SUNRSOFFSET + +# Locale +# Translate Entries in CSV files +# Supported locales: de-DE;en-US;fr-FR;nl-NL;es-ES;it-IT +# Default en-US +Locale=$CONFIG_LOCALE + +# Timezone +# Select the right timezone in date_time_zonespec.csv +# e.g. Timezone=Europe/Brussels +Timezone=$CONFIG_TIMEZONE + +# BTConnectRetries +# Number of Bluetooth Connection attempts (1-15; Default=10) +BTConnectRetries=$CONFIG_BTCONNECTRETRIES + +########################### +### CSV Export Settings ### +########################### +# With CSV_* settings you can define the CSV file format + +# CSV_Export (default 1 = Enabled) +# Enables or disables the CSV Export functionality +CSV_Export=$CONFIG_CSV_EXPORT + +# CSV_ExtendedHeader (default 1 = On) +# Enables or disables the SMA extended header info (8 lines) +# isep=; +# Version CSV1|Tool SBFspot|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3 +# etc... +# This is usefull for manual data upload to pvoutput.org +CSV_ExtendedHeader=$CONFIG_CSV_EXTENDEDHEADER + +# CSV_Header (default 1 = On) +# Enables or disables the CSV data header info (1 line) +# dd/MM/yyyy HH:mm:ss;kWh;kW +# This is usefull for manual data upload to pvoutput.org +# If CSV_ExtendedHeader is enabled, CSV_Header is also enabled +CSV_Header=$CONFIG_CSV_HEADER + +# CSV_SaveZeroPower (default 1 = On) +# When enabled, daily csv files contain all data from 00:00 to 23:55 +# This is usefull for manual data upload to pvoutput.org +CSV_SaveZeroPower=$CONFIG_CSV_SAVEZEROPOWER + +# CSV_Delimiter (comma/semicolon default semicolon) +CSV_Delimiter=$CONFIG_CSV_DELIMITER + +# CSV_Spot_TimeSource (Inverter|Computer default Inverter) +CSV_Spot_TimeSource=$CONFIG_CSV_SPOT_TIMESOURCE + +# CSV_Spot_WebboxHeader (Default 0 = Off) +# When enabled, use Webbox style header (DcMs.Watt[A];DcMs.Watt[B]...) +CSV_Spot_WebboxHeader=$CONFIG_CSV_SPOT_WEBBOXHEADER + +########################### +### SQL DB Settings ### +########################### + +# SQLite +# SQL_Database (Fullpath to SQLite DB) +# Windows: C:\Users\Public\SMAdata\SBFspot.db +# Linux : /home/pi/smadata/SBFspot.db +#SQL_Database=/home/pi/smadata/SBFspot.db + +# MySQL +SQL_Database=$CONFIG_SQL_DATABASE +SQL_Hostname=$CONFIG_SQL_HOSTNAME +SQL_Port=$CONFIG_SQL_PORT +SQL_Username=$CONFIG_SQL_USERNAME +SQL_Password=$CONFIG_SQL_PASSWORD + +######################### +### MQTT Settings ### +######################### + + +MQTT_Publisher=$CONFIG_MQTT_PUBLISHER +MQTT_Host=$CONFIG_MQTT_HOST +MQTT_Port=$CONFIG_MQTT_PORT +MQTT_Username=$CONFIG_MQTT_USERNAME +MQTT_Password=$CONFIG_MQTT_PASSWORD +MQTT_Topic=$CONFIG_MQTT_TOPIC +MQTT_ItemFormat=$CONFIG_MQTT_ITEMFORMAT +MQTT_ItemDelimiter=$CONFIG_MQTT_ITEMDELIMITER +MQTT_PublisherArgs=$CONFIG_MQTT_PUBLISHERARGS +MQTT_Data=$CONFIG_MQTT_DATA +EOL + +#cat $1 + +cat > $CFG_PATH_UPLOAD <&2 "FATAL: Please execute $( basename "${0:-}" ) as UID 0" + fi + exit 1 +fi + +if grep -Eq -- ' -(h|-help) ' <<<" ${*:-} "; then + echo "Usage: $( basename "${0:-}" ) [--quiet] [-- service_to_restart[,...]]" + exit 0 +fi + +(( trace )) && set -o xtrace + +if grep -Eq -- ' -- ' <<<" ${*:-} "; then + while [[ -n "${1:-}" ]]; do + case "${1}" in + --) + shift + break + ;; + *) + shift + ;; + esac + done + if [[ -n "${*:-}" && -n "${*// }" ]]; then + if grep -q -- ' default ' <<<" ${*} "; then + for item in "${@}"; do + [[ -n "${item:-}" && "${item:-}" != "default" ]] && + ! grep -q -- " ${item} " <<<" ${rc_monitor_restart[*]:-} " && + rc_monitor_restart+=( "${item}" ) + done + else + rc_monitor_restart=( "${@}" ) + fi + if (( verbose )); then + ${einfo} "Services which will be restarted if crashed:" + ${einfo} "$( sed 's/ /, /g' <<<"${rc_monitor_restart[*]:-}" )" + fi + fi +fi + +(( verbose )) && ${ebegin} "Checking for crashed services" + +declare -i rc=0 +declare -i monitored=0 + +for svc in $( rc-status --crashed --all ); do + monitored=0 + + for chk in "${rc_monitor_restart[@]:-}"; do + if [[ -n "${chk:-}" && "${chk}" == "${svc:-}" ]]; then + monitored=1 + + # We use --nodeps as a restart could stop critical services that + # depend on us... + declare -i result=0 + if rc-service "${svc}" -- ${quiet:-} --nodeps restart; then + (( 0 == rc )) && rc=1 + else + ${eerror} "Service ${svc} failed to restart: ${?}" + + ${ewarn} "Attempting to stop then start service ${svc} ..." + rc-service "${svc}" -- ${quiet:-} --nodeps stop + rc-service "${svc}" -- ${quiet:-} --nodeps start + result=${?} + if ! (( result )); then + (( 0 == rc )) && rc=1 + else + rc=2 + ${eerror} "Service ${svc} failed to stop/start: ${result}" + fi + fi + continue 2 + fi + done + if (( monitored )); then + ${ewarn} "Service '${svc:-}' crashed but requires a manual restart" + rc=2 + else + ${ewarn} "Service '${svc:-}' crashed but is not monitored and so will not be restarted" + fi +done +(( verbose )) && ${eend} $(( 2 == rc )) "Crashed services are present which could not be restarted" + +(( trace )) && set +o xtrace + +exit $(( 0 != rc )) diff --git a/sbfspot/translations/en.yaml b/sbfspot/translations/en.yaml new file mode 100644 index 0000000..265996b --- /dev/null +++ b/sbfspot/translations/en.yaml @@ -0,0 +1,4 @@ +configuration: + message: + name: Message + description: Monitoring SMA Bluetooth inverters with SBFspot.