Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
msinn committed Mar 14, 2023
2 parents aa143b8 + 30528ea commit c0cfb39
Show file tree
Hide file tree
Showing 278 changed files with 11,459 additions and 4,799 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/builddevdoc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ '3.8' ]
python-version: [ '3.9' ]
name: Python ${{ matrix.python-version }}
steps:
- name: update OS (Ubuntu)
Expand Down
63 changes: 63 additions & 0 deletions .github/workflows/pr_unittests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: "Unittests Core"
#on: [workflow_dispatch, push]
on:
workflow_dispatch:
pull_request:
branches:
- 'develop'

jobs:
build:
runs-on: ubuntu-20.04 #latest
strategy:
fail-fast: false
matrix:
python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11' ]
name: Python ${{ matrix.python-version }}
steps:
- name: Setup OS (Ubuntu)
run: |
sudo apt-get update
sudo apt-get install libudev-dev
sudo apt-get install librrd-dev libpython3-dev
sudo apt-get install gcc --only-upgrade
- name: Get branch name
run: |
echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
echo ${GITHUB_REF#refs/heads/}
id: extract_branch

- name: Checkout core from ${{steps.extract_branch.outputs.branch}} branch
uses: actions/checkout@v3
with:
repository: smarthomeNG/smarthome
ref: ${{steps.extract_branch.outputs.branch}}

- name: Checkout plugins from develop branch
uses: actions/checkout@v3
with:
repository: smarthomeNG/plugins
ref: develop
path: plugins

- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- run: python3 -m pip install --upgrade pip

- name: Install requirements for unit testing
run: pip install -r tests/requirements.txt
- name: Build Requirements for SmartHomeNG
run: python3 tools/build_requirements.py
- name: Install SmartHomeNG base requirements
# base requirements are needed for pytest to run
run: pip install -r requirements/base.txt

# --- up to here, the workflow is identical for CORE and PLUGINS ---

- name: '>>> Run Python Unittests for CORE <<<'
working-directory: ./tests
run: pytest
8 changes: 3 additions & 5 deletions .github/workflows/unittests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: "Unittests Core"
#on: [workflow_dispatch, push]
on:
workflow_dispatch:
pull_request:
branches:
- 'develop'
push:
branches:
- '*'
Expand All @@ -16,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ '3.7', '3.8', '3.9', '3.10' ]
python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11' ]
name: Python ${{ matrix.python-version }}
steps:
- name: Setup OS (Ubuntu)
Expand All @@ -37,7 +34,8 @@ jobs:
with:
repository: smarthomeNG/smarthome
ref: ${{steps.extract_branch.outputs.branch}}
- name: Checkout plugins from ${{steps.extract_branch.outputs.branch}} branch

- name: Checkout plugins from ${{steps.extract_branch.outputs.branch}} branch (${{ github.event.pull_request.base.ref }})
uses: actions/checkout@v3
with:
repository: smarthomeNG/plugins
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[![GitHub license](https://img.shields.io/github/license/smarthomeNG/smarthome.svg)](https://github.com/smarthomeNG/smarthome/blob/master/LICENSE)

![Github Tag](https://img.shields.io/github/v/release/smarthomeng/smarthome?sort=semver)
[![Aktuelles Release](https://img.shields.io/github/workflow/status/smarthomeNG/smarthome/Unittests%20Core/master)](https://github.com/smarthomeNG/smarthome/actions/workflows/unittests.yml)
[![Aktuelles Release](https://img.shields.io/github/actions/workflow/status/smarthomeNG/smarthome/unittests.yml?branch=master)](https://github.com/smarthomeNG/smarthome/actions/workflows/unittests.yml)

SmartHomeNG [1] ist eine Software die eine Basis für eine Heimautomation bereitstellt. Über Plugins können spezielle Schnittstellen angesprochen und damit die Funktionalität des Gesamtsystems erweitert werden.

Expand Down
16 changes: 16 additions & 0 deletions bin/locale.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ global_translations:
'Firmware': {'de': '=', 'en': '=', 'fr': 'Micrologiciel'}
'Name': {'de': '=', 'en': '=', 'fr': 'Nom'}
'Version': {'de': '=', 'en': '=', 'fr': '='}
'unbekannt': {'de': '=', 'en': 'unknown', 'fr': 'inconnue'}

'Tag': {'de': '=', 'en': 'day', 'fr': 'jour'}
'Stunde': {'de': '=', 'en': 'hour', 'fr': 'heure'}
Expand All @@ -24,6 +25,7 @@ global_translations:
'Stunden': {'de': '=', 'en': 'hours', 'fr': 'heures'}
'Minuten': {'de': '=', 'en': 'minutes', 'fr': 'minutes'}
'Sekunden': {'de': '=', 'en': 'seconds', 'fr': 'secondes'}
'Sek.': {'de': '=', 'en': 'sec.', 'fr': 'secondes'}

'Montag': {'de': '=', 'en': 'Monday', 'fr': 'Lundi'}
'Dienstag': {'de': '=', 'en': 'Tuesday', 'fr': 'Mardi'}
Expand All @@ -33,6 +35,19 @@ global_translations:
'Samstag': {'de': '=', 'en': 'Saturday', 'fr': 'Samedi'}
'Sonntag': {'de': '=', 'en': 'Sunday', 'fr': 'Dimanche'}

'Januar': {'de': '=', 'en': 'January', 'fr': 'Janvier'}
'Februar': {'de': '=', 'en': 'February', 'fr': 'Février'}
'März': {'de': '=', 'en': 'March', 'fr': 'Mars'}
'April': {'de': '=', 'en': 'April', 'fr': 'Avril'}
'Mai': {'de': '=', 'en': 'May', 'fr': 'Mai'}
'Juni': {'de': '=', 'en': 'June', 'fr': 'Juin'}
'Juli': {'de': '=', 'en': 'July', 'fr': 'Juillet'}
'August': {'de': '=', 'en': 'August', 'fr': 'Août'}
'September': {'de': '=', 'en': 'September', 'fr': 'Septembre'}
'Oktober': {'de': '=', 'en': 'October', 'fr': 'Octobre'}
'November': {'de': '=', 'en': 'November', 'fr': 'Novembre'}
'Dezember': {'de': '=', 'en': 'December', 'fr': 'Décembre'}

'Host': {'de': '=', 'en': '=', 'fr': 'Hôte'}
'Port': {'de': '=', 'en': '=', 'fr': '='}
'IP': {'de': '=', 'en': '=', 'fr': '='}
Expand Down Expand Up @@ -74,6 +89,7 @@ global_translations:

'Letztes Update': {'de': '=', 'en': 'Last Update', 'fr': ''}
'Letzter Change': {'de': '=', 'en': 'Last Change', 'fr': ''}
'Letzte Änderung': {'de': '=', 'en': 'Last Change', 'fr': ''}

#Translations for lib.scene:
"A second 'scenes' object has been created. There should only be ONE instance of class 'Scenes'!!! Called from: {frame1} ({frame2})":
Expand Down
14 changes: 12 additions & 2 deletions bin/shngversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,17 @@
# Update auf 1.9.2.2 wg. Globals innerhalb von Logiken"

# Update auf 1.9.3 wg. Release
# Update auf 1.9.3.1 wg. Kennzeichnung des Repo Stands als "nach dem v1.9.3 Release"
# Update auf 1.9.3.2 wg. weitere Loglevel für Plugins; Nutzung Überstzungen für module/http"
# Update auf 1.9.3.3 wg. Änderungen an SmartPlugin
# Update auf 1.9.3.4 wg. Änderungen an SmartPlugin: device_command -> mapping
# Update auf 1.9.3.5 wg. Veränderungen am websocket Modul

shNG_version = '1.9.3'
# Update auf 1.9.4 wg. Release

shNG_version = '1.9.4'
shNG_branch = 'master'
shNG_releasedate = '31. Oktober 2022' # Muss beim Release für den master branch auf das Release Datum gesetzt werden
shNG_releasedate = '14. März 2023' # Muss beim Release für den master branch auf das Release Datum gesetzt werden

# ---------------------------------------------------------------------------------
FileBASE = None
Expand Down Expand Up @@ -134,6 +141,9 @@ def get_shng_plugins_version():
plgversion = get_plugins_version().split('-')[0]
return Version.format( plgversion )

def get_shng_version():
return shNG_branch

def get_shng_version():
commit, commit_short, branch, describe = _get_git_data()
VERSION = get_shng_main_version()
Expand Down
4 changes: 2 additions & 2 deletions bin/smarthome.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
# Check mimimum Python Version
#####################################################################
import sys
if sys.hexversion < 0x03060000:
print("Sorry your python interpreter ({0}.{1}) is too old. Please update to 3.6 or newer.".format(sys.version_info[0], sys.version_info[1]))
if sys.hexversion < 0x03070000:
print("Sorry your python interpreter ({0}.{1}) is too old. Please update to 3.7 or newer.".format(sys.version_info[0], sys.version_info[1]))
exit()


Expand Down
12 changes: 0 additions & 12 deletions dev/sample_mqttplugin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,6 @@ def __init__(self, sh):
# Call init code of parent class (MqttPlugin)
super().__init__()

# get the parameters for the plugin (as defined in metadata plugin.yaml):
try:
# webif_pagelength should be included in all plugins using a web interface
# It is used to overwrite the default max number of entries per page in the tables
self.webif_pagelength = self.get_parameter_value('webif_pagelength')
# self.param1 = self.get_parameter_value('param1')
pass
except KeyError as e:
self.logger.critical("Plugin '{}': Inconsistent plugin (invalid metadata definition: {} not defined)".format(self.get_shortname(), e))
self._init_complete = False
return

# Initialization code goes here

# On initialization error use:
Expand Down
30 changes: 4 additions & 26 deletions dev/sample_mqttplugin/plugin.yaml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ plugin:
# Global plugin attributes
type: unknown # plugin type (gateway, interface, protocol, system, web)
description:
de: 'Beispiel Plugin mit MQTT Protokoll Nutzung für SmartHomeNG v1.7 und höher'
en: 'Sample plugin using MQTT protocol for SmartHomeNG v1.7 and up'
de: 'Beispiel Plugin mit MQTT Protokoll Nutzung für SmartHomeNG v1.8 und höher'
en: 'Sample plugin using MQTT protocol for SmartHomeNG v1.8 and up'
maintainer: msinn
# tester: # Who tests this plugin?
state: develop # change to ready when done with development
# keywords: iot xyz
# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page
# documentation: '' # An url to optional plugin doc - NOT the url to user_doc!!!
# support: https://knx-user-forum.de/forum/supportforen/smarthome-py

version: 1.0.0 # Plugin version
Expand All @@ -23,29 +23,7 @@ plugin:

parameters:
# Definition of parameters to be configured in etc/plugin.yaml (enter 'parameters: NONE', if section should be empty)
# This parameter should be included if plugin provides a web interface. It lets users configure the standard number of entries per page
webif_pagelength:
type: int
default: 100
valid_list:
- -1
- 0
- 25
- 50
- 100
description:
de: 'Anzahl an Items, die standardmäßig in einer Web Interface Tabelle pro Seite angezeigt werden.
0 = automatisch, -1 = alle'
en: 'Amount of items being listed in a web interface table per page by default.
0 = automatic, -1 = all'
description_long:
de: 'Anzahl an Items, die standardmäßig in einer Web Interface Tabelle pro Seite angezeigt werden.\n
Bei 0 wird die Tabelle automatisch an die Höhe des Browserfensters angepasst.\n
Bei -1 werden alle Tabelleneinträge auf einer Seite angezeigt.'
en: 'Amount of items being listed in a web interface table per page by default.\n
0 adjusts the table height automatically based on the height of the browser windows.\n
-1 shows all table entries on one page.'


item_attributes:
# Definition of item attributes defined by this plugin (enter 'item_attributes: NONE', if section should be empty)

Expand Down
43 changes: 32 additions & 11 deletions dev/sample_mqttplugin/user_doc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
sample_mqtt
===========

Hier sollte eine allgemeine Beschreibung stehen, wozu das Plugin gut ist (was es tut).

.. image:: webif/static/img/plugin_logo.png
:alt: plugin logo
:width: 300px
Expand All @@ -14,11 +16,13 @@ sample_mqtt


Anforderungen
-------------
=============

Anforderungen des Plugins auflisten. Werden spezielle Soft- oder Hardwarekomponenten benötigt?


Notwendige Software
~~~~~~~~~~~~~~~~~~~
-------------------

* die
* benötigte
Expand All @@ -28,50 +32,67 @@ Notwendige Software
Dies beinhaltet Python- und SmartHomeNG-Module

Unterstützte Geräte
~~~~~~~~~~~~~~~~~~~
-------------------

* die
* unterstütze
* Hardware
* auflisten

|
Konfiguration
-------------
=============

Die Plugin Parameter und die Informationen zur Item-spezifischen Konfiguration des Plugins sind
unter :doc:`/plugins_doc/config/sample_mqtt` beschrieben.

plugin.yaml
~~~~~~~~~~~
-----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


items.yaml
~~~~~~~~~~
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


logic.yaml
~~~~~~~~~~
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


Funktionen
~~~~~~~~~~
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.

|
Beispiele
---------
=========

Hier können ausführlichere Beispiele und Anwendungsfälle beschrieben werden.
Hier können ausführlichere Beispiele und Anwendungsfälle beschrieben werden. (Sonst ist der Abschnitt zu löschen)

|
Web Interface
-------------
=============

Die Datei ``dev/sample_plugin/webif/templates/index.html`` sollte als Grundlage für Webinterfaces genutzt werden. Um Tabelleninhalte nach Spalten filtern und sortieren zu können, muss der entsprechende Code Block mit Referenz auf die relevante Table ID eingefügt werden (siehe Doku).

SmartHomeNG liefert eine Reihe Komponenten von Drittherstellern mit, die für die Gestaltung des Webinterfaces genutzt werden können. Erweiterungen dieser Komponenten usw. finden sich im Ordner ``/modules/http/webif/gstatic``.

Wenn das Plugin darüber hinaus noch Komponenten benötigt, werden diese im Ordner ``webif/static`` des Plugins abgelegt.

|
Version History
===============

In diesem Abschnitt kann die Versionshistorie dokumentiert werden, falls der Plugin Autor dieses möchte. Diese Abschnitt
ist optional.

Loading

0 comments on commit c0cfb39

Please sign in to comment.