Add files via upload

moving haos version from test to main
This commit is contained in:
habuild 2022-03-21 15:16:01 +11:00 committed by GitHub
parent af4c802a44
commit 7e2ab202c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 975 additions and 0 deletions

View file

@ -0,0 +1,9 @@
<!-- https://developers.home-assistant.io/docs/add-ons/presentation#keeping-a-changelog -->
## 2022.3.0 ![Version](https://img.shields.io/badge/dynamic/yaml?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Fhabuild%2Fsbfspot_addon%2Fmaster%2Fsbfspot%2Fconfig.yaml)
- Updates
## 2022.0.0
- Initial release

1
haos-sbfspot/DOCS.md Normal file
View file

@ -0,0 +1 @@
Where does this show up during install

96
haos-sbfspot/Dockerfile Normal file
View file

@ -0,0 +1,96 @@
# 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 tzdata mosquitto-clients mariadb-dev
# download and build SBFspot
RUN \
cd /tmp \
&& git clone https://github.com/sbfspot/SBFspot.git . \
&& cd SBFspot \
&& sed -i s/mariadbclient/mariadb/ makefile \
&& make mariadb \
&& cd .. \
&& cd SBFspotUploadDaemon \
&&sed -i s/mariadbclient/mariadb/ makefile \
&& make mariadb
# 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}"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apk update && apk upgrade && apk add --no-cache boost-date_time bluez-libs libstdc++ tzdata mariadb-common mariadb-connector-c ncurses-libs libcurl mosquitto-clients
COPY rootfs /
# Copy data for add-on
RUN mkdir -p /etc/sbfspot
COPY --from=builder /tmp/SBFspot/mariadb/bin/SBFspot /tmp/SBFspot/mariadb/bin/SBFspot
COPY --from=builder /tmp/SBFspotUploadDaemon/mariadb/bin/SBFspotUploadDaemon /tmp/SBFspotUploadDaemon/mariadb/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/mariadb/bin/SBFspot /etc/sbfspot
RUN cp /tmp/SBFspotUploadDaemon/mariadb/bin/SBFspotUploadDaemon /etc/sbfspot
RUN cp /tmp/SBFspot/date_time_zonespec.csv /etc/sbfspot
RUN cp /tmp/SBFspot/TagList* /etc/sbfspot
RUN chmod a+x /etc/sbfspot/taillog.sh /etc/sbfspot/generateConfig.sh /etc/sbfspot/SBFspot /etc/sbfspot/SBFspotUploadDaemon /etc/sbfspot/SBFspot.default.cfg /etc/sbfspot/SBFspotUpload.default.cfg
# --- install cron ---
# set shell
RUN echo 'SHELL=/bin/bash' > /etc/crontabs/root
# daily data SBFspot
RUN echo '*/5 6-22 * * * /etc/sbfspot/SBFspot -v -ad1 -am0 -ae0 -mqtt > /dev/stdout' >> /etc/crontabs/root
# monthly data SBFspot
RUN echo '55 05 * * * /etc/sbfspot/SBFspot -v -sp0 -ad0 -am1 -ae1 -finq > /dev/stdout' >> /etc/crontabs/root
# start SBFspotUpload 1 min after boot
RUN echo '@reboot sleep 60 && /etc/sbfspot/SBFspotUploadDaemon -c /etc/sbfspot/SBFspotUpload.cfg' >> /etc/crontabs/root
# Log SBFspotUpload to HA logging window
RUN echo '*/5 6-22 * * * /etc/sbfspot/taillog.sh > /dev/stdout' >> /etc/crontabs/root
# 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 <https://community.home-assistant.io/u/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/main/haos-sbfspot" \
org.label-schema.usage="https://github.com/habuild/hassio-addons/tree/main/haos-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

58
haos-sbfspot/README.md Normal file
View file

@ -0,0 +1,58 @@
# Community Hass.io Add-ons: haos-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%2Fhassio-addons%2Fmaster%2Fhaos-sbfspot%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%2Fhaos-sbfspot%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 [haos-sbfspot 3.9.3](https://github.com/habuild/hassio-addons/tree/master/haos-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/hassio-addons/blob/master/haos-sbfspot/.images/CreateMySQLDB_no_drop.sql) **or** [Create My SQL.sql](https://github.com/haos-sbfspot/haos-sbfspot/blob/master/haos-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/hassio-addons/master/.images/MariaDB%20setup.PNG)
### MQTT
[haos-sbfspot_sensors.yaml](https://github.com/habuild/hassio-addons/blob/master/haos-sbfspot/.images/haos-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/hassio-addons/blob/master/haos-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. it is advised against using retain flag
### Example Configuration Options.
can be copy/pasted as [Example Config](https://github.com/habuild/hassio-addons/blob/master/haos-sbfspot/.images/Example_Config.yaml) or entered via UI
![Example Options](https://raw.githubusercontent.com/habuild/hassio-addons/master/.images/Example_config_png.PNG)
### Data paths
In docker the /data/ path arrives at /usr/share/hassio/addons/data/slug#_haos-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 haos-sbfspot Documentation**
Refer to the [Wiki](https://github.com/haos-sbfspot/haos-sbfspot/wiki) for documentation and FAQ.
### **Special thanks to:**
* LauR3y/hassio-addons which this version is cleaned up from.
* The haos-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

13
haos-sbfspot/build.yaml Normal file
View file

@ -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"

106
haos-sbfspot/config.json Normal file
View file

@ -0,0 +1,106 @@
{
"name": "HAOS-SBFspot",
"version": "2022.3.1",
"slug": "haos-sbfspot",
"description": "Manage SBFspot with a simple interface",
"url": "https://github.com/habuild/hassio_addons/tree/main/haos-sbfspot",
"arch": ["armhf", "armv7", "aarch64", "amd64", "i386"],
"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": "core-mariadb",
"SQL_Port": "3306",
"SQL_Username": "null",
"SQL_Password": null,
"MQTT_Publisher": "/usr/bin/mosquitto_pub",
"MQTT_Host": "core-mosquitto",
"MQTT_Port": "null",
"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": "/dev/stdout >> /proc/1/fd/1",
"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_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"
},
"host_network": true,
"privileged": ["SYS_MODULE"],
"devices": ["/dev/ttyAMA0"],
"image": "ghcr.io/habuild/{arch}-addon-haos-sbfspot"
}

BIN
haos-sbfspot/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

BIN
haos-sbfspot/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -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=<Network Name> or <IP-address>
#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=<item name="{key}" value="{value}" />
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 "<mqtt_message>{message}</mqtt_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

View file

@ -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=<Network Name> or <IP-address>
#SQL_Port=3306
#SQL_Username=SBFspotUser
#SQL_Password=SBFspotPassword

View file

@ -0,0 +1,308 @@
CFG_PATH=$1
CFG_PATH_UPLOAD=$2
CONFIG_OUTPUTPATH=$3
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_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 <<EOL
################################################################################
# ____ ____ _____ _
# / ___|| __ )| ___|__ _ __ ___ | |_
# \___ \| _ \| |_ / __| '_ \ / _ \| __|
# ___) | |_) | _|\__ \ |_) | (_) | |_
# |____/|____/|_| |___/ .__/ \___/ \__|
# |_|
#
# SBFspot.cfg - Configuration file for SBFspot.exe
# SBFspot - Yet another tool to read power production of SMA<4D> solar inverters
# (c)2012-2018, 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: smaspot -scan
# Linux : hcitool scan
# IMPORTANT FOR SPEEDWIRE USERS: COMMENT OUT BTADDRESS (PUT # IN FRONT)
BTAddress=$CONFIG_BTADDRESS
# 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=$CONFIG_PASSWORD
# 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=$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_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 <<EOL
################################################################################
# SBFspotUpload.cfg - Configuration file for SBFspotUploadService/Daemon
# (c)2012-2014, SBF (https://sbfspot.codeplex.com)
#
# 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 : /home/pi/smadata/logs
#LogDir=C:\Users\Public\SMAdata\Logs
LogDir=$CONFIG_LOGDIR
#LogLevel=debug|info|warning|error (default info)
LogLevel=$CONFIG_LOGLEVEL
################################
### PVoutput Upload Settings ###
################################
#PVoutput_SID
#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=$CONFIG_PVOUTPUT_SID
#PVoutput_Key
#Sets PVoutput API Key
PVoutput_Key=$CONFIG_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=$CONFIG_SQL_DATABASE
SQL_Hostname=$CONFIG_SQL_HOSTNAME
SQL_Username=$CONFIG_SQL_USERNAME
SQL_Password=$CONFIG_SQL_PASSWORD
EOL
#cat $CFG_PATH_UPLOAD
# create folders
mkdir -p $CONFIG_OUTPUTPATH
mkdir -p $CONFIG_LOGDIR
# log here instead > /dev/stdout >> /proc/1/fd/1 # tail -fn1 /data/sbfspot/log/* > /dev/stdout

View file

@ -0,0 +1,12 @@
#!/usr/bin/with-contenv bashio
cd /
# create placeholder to avoid delay on real log
#echo [$(date)] INFO: SBFspotUpload Logging started > /data/sbfspot/log/fake.log
sleep 45
# set tail to log out to HA log
echo '[SBFspot Upload Log Latest]'
tail -n1 /data/sbfspot/log/* >> /proc/1/fd/1

View file

@ -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

View file

@ -0,0 +1,37 @@
#!/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)"
/etc/sbfspot/generateConfig.sh /etc/sbfspot/SBFspot.cfg /etc/sbfspot/SBFspotUpload.cfg
# ---- RUN ----
# start service
#echo 'Starting daemon'
#rc-service SBFspotUploadDaemon.service start
echo 'Starting daemon'
# add logging to HA logs #In cronjob
#echo 'Showing Logs in HA'
#/etc/sbfspot/taillog.sh
# cron
echo 'Starting cron in foreground'
/usr/sbin/crond -f

View file

@ -0,0 +1,4 @@
configuration:
message:
name: Message
description: Monitoring SMA Bluetooth inverters with SBFspot.