plugin.yaml

Plugins erweitern die Kern-Funktionalität von SmartHomeNG. Das ../plugins Verzeichnis enthält ein Unterverzeichnis für jedes verfügbare Plugin. In der Konfigurationsdatei ../etc/plugin.yaml wird die Konfiguration für jedes Plugin hinterlegt, dass genutzt werden soll.

Das Beispiel unten konfiguriert das KNX-Plugin, so dass es Telegramme an einen eibd oder einen knxd Daemon sendet bzw. von dort empfängt. eibd und knxd sind Software Gateways zum KNX Bus.

In diesem Fall ist der Name der Plugin Instanz knx und das Plugin wird im Verzeichnis knx im Verzeichnis ../plugins gesucht.

plugin.yaml
%YAML 1.1
---
cli:
    plugin_name: cli
    ip: 0.0.0.0
    #port: 2323
    update: True
    #hashed_password: 1245a9633edf47b7091f37c4d294b5be5a9936c81c5359b16d1c48337$

# Bereitstellung eines Websockets zur Kommunikation zwischen SmartVISU und SmartHomeNG
websocket:
    plugin_name: visu_websocket
    #ip: 0.0.0.0
    #port: 2424
    #tls: False
    #wsproto: 4
    #acl: rw

database:
    plugin_name: database
    driver: sqlite3
    connect:
    -   database:./var/db/smarthomeng.db
    -   check_same_thread:0

# memlog:
#     plugin_name: memlog
#     name: alert

# knx:
#     plugin_name: knx
#     host: 127.0.0.1
#     port: 6720
#     send_time: 600    # update date/time every 600 seconds, default none
#     time_ga: 6/0/0    # default none
#     date_ga: 6/0/1    # default none
#     busmonitor: True  # log all knx messages, default false
#     readonly: True    ## don't write to knx bus, default false"

# ow:
#     plugin_name: onewire
#     host: 127.0.0.1
#     port: 4304

# Autogenerierung von Webseiten für SmartVISU
#smartvisu:
#    plugin_name: visu_smartvisu
#    # '"neue" Linux Versionen (z.B. Debian > 8.x, Ubuntu > 14.x)'
#    smartvisu_dir: /var/www/html/smartVISU
#
#    # nur \"alte\" Linux-Variationen
#    # smartvisu_dir: /var/www/smartVISU
#    # generate_pages: True
#    # handle_widgets: True
#    # overwrite_templates: Yes
#    # visu_style: blk

#stateengine:
#    plugin_name: stateengine
#    log_level: 2
#    log_directory: var/log/stateengine/
#    startup_delay_default: 120
#    suspend_time_default: 10800
#    laststate_name_manually_locked: gesperrt
#    laststate_name_suspended: ausgesetzt
#    log_maxage: 1

#database_mysql:
#   plugin_name: database
#   instance: nas
#   precision: 4
#   driver: pymysql
#   connect:
#     - host:localhost
#     - user:smarthome
#     - passwd:smarthome
#     - db:smarthome
#     - port:3306

# sqlite:
#     plugin_name: sqlite_visu2_8

# apcups:
#     plugin_name: apcups
#     host: localhost
#     port: 3551

# dmx1:
#     plugin_name: artnet
#     artnet_subnet: 0
#     artnet_net: 0
#     artnet_universe: 0
#     ip: 192.168.1.123
#     port: 6454

# ast:
#     plugin_name: asterisk
#     username: admin
#     password: secret
#     host: 127.0.0.1    # default
#     port: 5038    # default

# avm1:
#     plugin_name: avm
#     username: ...    # optional
#     password: '...'
#     host: fritz.box
#     port: 49443
#     cycle: 300
#     ssl: True    # use https or not
#     verify: False    # verify ssl certificate
#     call_monitor: 'True'
#     call_monitor_incoming_filter: "...    ## optional, don't set if you don't want to watch only one specific number with your call monitor"
#     avm_identifier: fritzbox_1

# boxcar:
#     plugin_name: boxcar
#     apikey: abcdefghij123456    # Get it from your Boxcar Account
#     email: your@mail.org    # Registered with Boxcar

# comfoair:
#     plugin_name: comfoair
#     kwltype: comfoair350    # Currently supported: comfoair350 and comfoair500
#     host: 192.168.123.6    # Provide host and port if you want to use TCP connection (for a TCP to serial converter)
#     port: 5555    # Port
#     serialport: /dev/ttyUSB0    # Enable this if you want to use a serial connection

# datalog:
#     plugin_name: datalog
#     path: var/log/data
#     filepatterns:
#       - default:{log}-{year}-{month}-{day}.csv
#       - yearly:{log}-{year}.csv
#     logpatterns: csv:{time};{item};{value}\n
#     cycle: 300

# dlms:
#     plugin_name: dlms
#     serialport: /dev/ttyO1
#     baudrate: 300    # default 300
#     update_cycle: 20    # default 20
#     use_checksum: no    # default no
#     reset_baudrate: no    # default no
#     no_waiting: yes    # default yes

# dmx:
#     plugin_name: dmx
#     tty: /dev/usbtty...
#     interface: nanodmx

# DuW:
#     plugin_name: drexelundweiss
#     tty: /dev/ttyUSB0
#     Busmonitor: 1
#     LU_ID: 130
#     WP_ID: 140
#     device: 14
#     cycle: 60
#     retrylimit: 10

# squeezebox:
#     plugin_name: squeezebox
#     host: squeezeserver
#     # port: <port>

# uzsu:
#     plugin_name: uzsu

# simulation:
#     plugin_name: simulation
#     data_file: ./var/db/simulation.txt

# nw:
#     plugin_name: network
#     ip: 0.0.0.0
#     port: 2727
#     http: 8765
#     tcp_acl:
#       - 127.0.0.1
#       - 192.168.0.34
#     udp: 'no'
#     udp_acl: '*'

# wol:
#     plugin_name: wol

# homematic:
#     plugin_name: homematic
#     host: 192.168.50.250
#     port: 2001

Es existiert eine README.md Datei zu jedem Plugin. Diese Datei gibt ausführliche Informationen, wie das Plugin zu konfigurieren ist. Die README`s sind unter :doc:`Plugins <../plugins> in der Übersicht der Plugins zu finden. Wie die Konfiguration von Plugins grundsätzlich funktioniert ist im Abschnitt Konfiguration/Plugins zu finden.

Bemerkung

Die Konfigurationsparameter der Plugins, die in dieser Datei konfiguriert werden, können auch über das graphische Administrations-Interface geändert werden.

Referenzierung eines Plugins in der Konfiguration

Bis zu SmartHomeNG v1.3 wurde ein Plugin in der Konfiguration über zwei Parameter class_name und class_path referenziert.

Ab v1.4 ist es möglich, das Plugin über den einzigen Parameter plugin_name zu spezifizieren. Dabei ist der Wert der Wert des früheren Parameters class_path ohne den Präfix plugins., also der Name des Plugin Verzeichnisses. Da alle Plugins im Verzeichnis ../plugins liegen, ist plugins. redundante Information.

Wenn das Plugin eine Metadaten Definition enthält (was fast alle Plugins tun), so gibt es keine Notwendigkeit den Parameter class_name anzugeben. Diese Information wird dann den Metadaten entnommen.

Bemerkung

Sollte es notwendig werden ein Plugin außerhalb des Verzeichnisses ../plugins zu speichern, kann dieses Plugin (wie bisher) über class_path: referenziert werden.

Nutzung einer älteren Version eines Plugins

Falls Du nicht die neueste Version von SmartHomeNG nutzt, kann es vorkommen, dass Du eine ältere Version eines Plugins nutzen möchtest. Einige Plugins enthalten in Unterverzeichnissen ältere Versionen. Um diese zu nutzen, muss in ../etc/plugin.yaml in der Konfiguration der Parameter plugin_version: angegeben werden.

Um herauszufinden, ob ein Plugin mit einer (oder mehreren) älteren Version(en) installiert ist, hilft ein Blick in das Plugin Verzeichnis. Falls es dort Unterverzeichnisses gibt, deren Name mit _pv_ beginnt, sind ältere Versionen vorhanden. Der Rest des jeweiligen Verzeichnisnamens gibt an, welche Version sich in dem Verzeichnis befindet. Wenn Du ein Unterverzeichnis _pv_1_3_0 findest, enthält es die Version v1.3.0 des Plugins. Um diese Version, statt der aktuellen Version zu laden, musst Du nur den Eintrag plugin_version: 1.3.0 zur Plugin Konfiguration hinzufügen.