io-package.json

Jeder Adapter enthält neben der package.json für npm noch eine io-package.json. Hier werden sämtliche Meta-Informationen für den Adpater hinterlegt.

Beispiel

Hier eine Beispiel-Datei aus dem Luftdaten-Adapter. Eine Beschreibung der einzelnen Eigenschaften folgt weiter unten.

{
    "common": {
        "name": "luftdaten",
        "version": "2.1.1",
        "news": {
            "2.0.3": {
                "en": "Fixed error logging",
                "de": "Fehler-Logging behoben"
            },
            "2.0.2": {
                "en": "Added timeout option",
                "de": "Option für Timeout-Limit hinzugefügt"
            },
            "2.0.1": {
                "en": "Minor bug fixes",
                "de": "Kleinere Bugfixes"
            },
            "2.0.0": {
                "en": "Updated admin interface to maintain multiple sensors in one instance",
                "de": "Benutzeroberfläche angepasst, um mehrere Sensoren in einer Instanz verwalten zu können"
            }
        },
        "title": "Luftdaten.info",
        "titleLang": {
            "en": "Luftdaten.info",
            "de": "Luftdaten.info"
        },
        "desc": {
            "en": "Loads current air quality data from a local or remote sensor",
            "de": "Lädt aktuelle Luftqualitätsdaten eines lokalen oder Cloud-Sensors"
        },
        "authors": [
            "Matthias Kleine <info@haus-automatisierung.com>"
        ],
        "keywords": [
            "web",
            "weather",
            "air",
            "quality"
        ],
        "license": "MIT",
        "platform": "Javascript/Node.js",
        "icon": "luftdaten.png",
        "extIcon": "https://raw.githubusercontent.com/klein0r/ioBroker.luftdaten/master/admin/luftdaten.png",
        "enabled": true,
        "readme": "https://github.com/klein0r/ioBroker.luftdaten/blob/master/README.md",
        "loglevel": "info",
        "mode": "schedule",
        "allowInit": true,
        "schedule": "*/30 * * * *",
        "type": "weather",
        "compact": true,
        "connectionType": "cloud",
        "dataSource": "poll",
        "adminUI": {
            "config": "json"
        },
        "dependencies": [
            {
                "js-controller": ">=3.3.0"
            }
        ],
        "globalDependencies": [
            {
                "admin": ">=5.1.19"
            }
        ],
        "plugins": {
            "sentry": {
                "dsn": "https://baf35e4e423d409bbec94cb01b55257e@sentry.iobroker.net/103"
            }
        }
    },
    "native": {
        "requestTimeout": 10
    },
    "objects": [
    ]
}

Eigenschaften (erforderlich)

common.name

Name des Adapters (darf nicht „ioBroker“ enthalten)

Type

string

common.version

Aktuelle Version des Adapters (muss mit der Version der package.json übereinstimmen)

Type

string

common.platform

Die Plattform, auf welcher der Adapter programmiert wurde

Type

string

Default

Javascript/Node.js

common.titleLang

Titel des Adapters (übersetzt in mehrere Sprachen)

"titleLang": {
    "en": "Luftdaten.info",
    "de": "Luftdaten.info"
}
Type

object

common.desc

Beschreibung, was der Adapter machen soll (übersetzt in mehrere Sprachen)

"desc": {
    "en": "Loads current air quality data from a local or remote sensor",
    "de": "Lädt aktuelle Luftqualitätsdaten eines lokalen oder Cloud-Sensors"
}
Type

object

common.news

Liste mit Infos zu den verschiedenen Versionen (Updatehistorie / Changelog)

"news": {
    "2.0.3": {
        "en": "Fixed error logging",
        "de": "Fehler-Logging behoben"
    },
    "2.0.2": {
        "en": "Added timeout option",
        "de": "Option für Timeout-Limit hinzugefügt"
    },
    "2.0.1": {
        "en": "Minor bug fixes",
        "de": "Kleinere Bugfixes"
    },
    "2.0.0": {
        "en": "Updated admin interface to maintain multiple sensors in one instance",
        "de": "Benutzeroberfläche angepasst, um mehrere Sensoren in einer Instanz verwalten zu können"
    }
}
Type

object

common.mode

Modus des Adapters

  • none - Der Adapter wird nicht gestartet

  • daemon - Separat laufender Prozess

  • subscribe - Wird gestartet, wenn der State system.adapter.<adapter-name>.<instanz-nummmer>.alive auf true gesetzt wird. Wird automatisch beendet, wenn der State auf false geändert wird. Der State wird automatisch auf false gesetzt, wenn der Prozess beendet wurde.

  • schedule - Wird nach dem in common.schedule festgelegten Zeitplan automatisch gestartet

  • once - Wird jedes Mal automatisch gestartet, wenn das system.adater.<adapter-name>.<instanz-nummmer>-Objekt geändert wird

  • extension - ???

Type

string

Eigenschaften (Allgemein)

common.enabled

Legt fest, ob die Instanz gestartet werden soll, oder nicht

Type

boolean

Default

true

common.tier

Legt fest, in welcher Reihenfolge die Adapter gestartet werden

  • 1 - Logik

  • 2 - API und andere Daten

  • 3 - alle anderen

Type

number

Default

3

common.messagebox

true wenn Nachrichten per sendTo() an den Adapter erlaubt sind. Siehe Messagebox

Type

boolean

Default

false

common.readme

URL zur Readme-Datei (z.B. HTTP-URL zur README.md auf GitHub)

Type

string

common.docs
Type

object

common.authors

Liste mit Entwicklern des Adapters

"authors": [
    "Matthias Kleine <info@haus-automatisierung.com>"
]
Type

array

common.license

Lizenz des Adapters (z.B. MIT). Gültige Werte sind im Schema zu finden (Link siehe unten)

Type

string

common.type

Typ/Kategorie des Adapters

  • alarm - Sicherheitssysteme, Alarmanlagen, …

  • climate-control - Klimasteuerung, Heizung, Luftfilter, …

  • communication - Kommunikation mit anderen Adaptern (REST Api)

  • date-and-time - Kalender, Ferien, Feiertage, …

  • energy - PV-Anlage, Verbrauchsdaten, …

  • metering - Energiemessung

  • garden - Rasenmähroboter, Bewässerung, …

  • general - Allgemeine Adapter wie Admin

  • geoposition - Position von Objekten oder Personen

  • hardware - Allgemeine Hardware-Schnittstellen (z.B. für ESP8266, ESP32)

  • health - Gesundheitsdaten wie Blutdruck, Blutzucker, …

  • household - Küchengeräte, Haushaltsgeräte, Staubsaugerroboter, …

  • infrastructure - Netzwerktechnik, Drucker, Scanner, Telefone, …

  • iot-systems - Weitere IoT-Geräte, welche nicht in die anderen Kategorien passen

  • lighting - Beleuchtung

  • logic - Logikmodule für eigene Regeln oder Szenen

  • messaging - Nachrichtendienste wie Telegram oder E-Mail

  • misc-data - Export und Import von Daten

  • multimedia - Fernseher, Receiver, Beamer, …

  • network - Ping, …

  • protocols - Generische Protokolle (wie MQTT)

  • storage - Daten-Speicherung wie mySQL oder InfluxDB

  • utility - Weitere Tools wie Backup-Adapter

  • visualization - Visualisierungs-Adapter

  • visualization-icons - Zusätzliche Icons für die Visualisierung

  • visualization-widgets - Weitere Widgets für die Visualisierung

  • weather - Wetterdaten

Type

string

common.unsafePerm

Legt fest, ob das Adapter-Paket mit dem --unsafe-perm Parameter für npm installiert werden muss. Siehe npm Dokumentation

Type

boolean

common.plugins

Liste von Plugins (z.B. Sentry)

Type

object

common.plugins.sentry

Konfiguration des Sentry-Plugins. Siehe Sentry

"plugins": {
    "sentry": {
        "dsn": "https://xxx@sentry.iobroker.net/xxx"
    }
}
Type

object

common.availableModes

Werte für common.mode (falls mehr als ein Wert erlaubt ist)

Type

array

common.blockly

Legt fest, ob der Adapter eigene Blockly-Bausteine mitbringt (admin/blockly.js erforderlich)

Type

boolean

Default

false

common.connectionType

Definiert die Qulle der Adapter-Daten. Wird im Admin ab Version 5 dargestellt und dient als Information für den Nutzer

  • local - Die Kommunikation findet lokal / im eigenen Netzwerk statt (z.B. mit dem Gerät direkt per HTTP)

  • cloud - Für den Adapter ist eine aktive Internetverbindung erforderlich. Die Daten werden z.B. vom Server des Herstellers abgerufen.

Type

string

common.dataSource

Legt fest, wie Daten geholt werden

  • poll - Die Daten werden regelmäßig abgefragt (z.B. per Zeitplan)

  • push - Das Gerät liefert die Daten selbstständig zum Adapter

  • assumption - Der genaue Status ist nicht definiert

Type

string

common.compact

Legt fest, ob der Adapter im Compact Mode gestartet werden kann

Type

boolean

Default

false

common.dataFolder

Verzeichnis-Pfad, in welchem der Adapter seine Daten ablegt (relativ zu iobroker-data). Die Variable %INSTANCE% kann ebenfalls im Pfad genutzt werden

Type

string

common.dependencies

Liste von Abhängigkeiten auf dem lokalen System, welche für diesen Adapter notwendig sind

"dependencies": [
    {
        "js-controller": ">=3.3.0"
    }
]
Type

array

common.eraseOnUpload

Löscht alle existierenden Daten im Adapter-Verzeichnis vor einem Upload

Type

boolean

common.extIcon

URL zur Icon-Datei für die Admin-Übersicht (z.B. PNG-Datei auf GitHub)

Type

string

common.getHistory

Legt fest, ob der Adapter den getHistory Befehl unterstützt

Type

boolean

common.globalDependencies

Liste von Abhängigkeiten im gesamten ioBroker-System (Multihost-Betrieb). Siehe Multihost

"globalDependencies": [
    {
        "admin": ">=5.1.19"
    }
]
Type

array

common.icon

Pfad zum lokalen Icon des Adapters (nach Installation). Sollte im Unterverzeichnis admin liegen

Type

string

common.keywords

Liste von Schlüsselwörtern, um den Adapter über die Suche (besser) finden zu können

"keywords": [
    "web",
    "weather",
    "air",
    "quality"
]
Type

array

Konfiguration für Intro-Tab

"localLinks": {
    "_default": {
        "link": "%protocol%://%bind%:%port%",
        "pro": true
    }
}
Type

object

common.loglevel

Standard Log-Level neuer Instanzen. Empfohlen: info

  • silly - Alles

  • debug - Debug-Nachrichten

  • info - Informationen

  • warn - Warnungen

  • error - Fehler

Type

string

common.logTransporter

Legt fest, ob der Adapter die Log-Einträge von anderen Adaptern entgegen nehmen kann (um sie z.B. wo anders zu speichern)

Type

boolean

common.noIntro
Type

boolean

common.noRepository
Type

boolean

common.nogit

Legt fest, ob eine Installation direkt von GitHub verboten werden soll

Type

boolean

common.nondeletable

Legt fest, ob ein Adapter gelöscht oder aktualisiert werden kann. Falls true, kümmert sich der js-controller um diese Aufgaben

Type

boolean

Default

false

common.onlyWWW

Legt fest, ob der Adapter nur weitere HTML-Dateien bereitstellt und keine Logik enthält (wie zum Beispiel Widget-Adapter für VIS)

Type

boolean

common.osDependencies.darwin

Liste mit erforderlichen MacOS-Paketen für diesen Adapter

Type

array

common.osDependencies.linux

Liste mit erforderlichen Linux-Paketen für diesen Adapter

Type

array

common.osDependencies.win32

Aktuell nicht genutzt, da Linux keinen Paket-Manager hat

Type

array

common.os

Liste mit unterstützten Betriebssystemen

  • darwin - Mac OS X

  • linux - Linux

  • win32 - Windows

type

string / array

common.preserveSettings

Liste mit Attributen, welche nicht automatisch gelöscht werden sollen (z.B. history)

Type

string / array

common.restartAdapters

Liste mit Adaptern, welche neugestartet werden sollen, nachdem dieser Adapter installiert wurde (z.B. ["vis"])

Type

array

common.serviceStates
Type

string / boolean

common.singletonHost

Legt fest, ob es nur eine einzelne Instanz pro Host geben darf

Type

boolean

Default

false

common.singleton

Legt fest, ob es nur eine einzelne Instanz im gesamten ioBroker-System geben darf (Multihost-Betrieb). Siehe Multihost

Type

boolean

Default

false

common.stopBeforeUpdate

Legt fest, ob die Instanzen vor einem Update gestoppt werden müssen

Type

boolean

common.stopTimeout

Wartezeit in Millisekunden, bis der Adapter angehalten wird

Type

number

Default

500

common.subscribable

???

Type

boolean

common.subscribe

???

Type

string

common.supportCustoms

Legt fest, ob es zusätzliche Einstellungen für jeden Datenpunkt gibt (admin/custom.html erforderlich)

Type

boolean

common.supportStopInstance

Legt fest, ob der Adapter das stopInstance Signal unterstützt. Siehe Messagebox

Type

boolean

common.wakeup

Legt fest, ob die Instanz gestartet werden soll, wenn ein Wert in system.adapter.<adapter-name>.<instanz-nummmer>.wakeup geschrieben wird.

Type

boolean

common.webByVersion
Type

boolean

common.webExtendable

Legt fest, ob der Webserver dieses Adapters mit Plugins erweitert werden kann (z.B. simple-api)

Type

boolean

common.webExtension

Relativer Pfad der Web-Extension (z.B. lib/simpleapi.js)

Type

string

common.webPreSettings
Type

object

common.webservers

Liste mit Webservern, welche Inhalte aus dem www-Verzeichnis des Adapters liefern

Type

array

common.welcomeScreen
Type

array

common.welcomeScreenPro

Identisch zu common.welcomeScreen, allerdings für Zugriff über die ioBroker-Cloud

   "welcomeScreenPro": {
       "link": "admin/index.html",
       "name": "Admin",
       "img": "admin/img/admin.png",
       "color": "pink",
       "order": 5,
       "localLinks": "_default",
       "localLink": true
   }

:type: object

Eigenschaften (Schedule)

common.schedule

CRON-Definition, wann die Instanzen gestartet werden sollen (kann vom Benutzer angepasst werden)

Type

string

common.allowInit

Legt fest, ob ein Adapter auch außerhalb des definierten Zeitplanes gestartet wird (z.B. nach Änderung der Instanz-Konfiguration)

Type

boolean

Eigenschaften (Daemon)

common.restartSchedule

CRON-Definition, wann die laufenden Instanzen neugestartet werden sollen (kann vom Benutzer angepasst werden)

Type

string

Eigenschaften (Admin)

common.adminColumns

Custom attributes, that must be shown in the admin in the object browser. Like: Type is a type of the attribute (e.g. string, number, boolean) and only needed if edit is enabled. objTypes is a list of the object types, that could have such attribute. Used only in edit mode too

[
    {
        "name": {
            "en": "KNX address"
        },
        "path": "native.address",
        "width": 100,
        "align": "left"
    },
    {
        "name": "DPT",
        "path": "native.dpt",
        "width": 100,
        "align": "right",
        "type": "number",
        "edit": true,
        "objTypes": [
            "state",
            "channel"
        ]
    }
]
Type

array

common.adminTab.fa-icon

Font-Awesome Icon für das Tab

Type

string

common.adminTab.ignoreConfigUpdate
Type

boolean

Type

string

common.adminTab.name

Titel des Tabs (übersetzt in mehrere Sprachen)

Type

object

common.adminTab.singleton

Legt fest, ob nur ein Tab für alle Instanzen angezeigt werden soll

Type

boolean

common.adminUI

Legt fest, wie die Konfiguration im Admin erfolgen soll

Type

object

common.adminUI.config

Legt fest, wie die Konfiguration für die Admin-Oberfläche aufgebaut ist

  • none

  • materialize (admin/index_m.html erforderlich - ab Admin Version 4)

  • json (admin/jsonConfig.json erforderlich - ab Admin Version 5)

Type

string

common.adminUI.custom
  • none

  • materialize (admin/custom_m.html erforderlich - ab Admin Version 4)

  • json (admin/jsonCustom.json erforderlich - ab Admin Version 5)

Type

string

common.adminUI.tab
  • html

  • materialize

Type

string

Weitere Optionen

objects

Liste von Objekten, welche für den Adapter erstellt werden sollen

Type

array

instanceObjects

Liste von Objekten, welche für jede Instanz automatisch erstellt werden

Type

array

protectedNative

Liste von Attributen, welche nur vom Adapter selbst lesbar sind (z.B. ["password"]). Siehe Daten-Verschlüsselung

Type

array

encryptedNative

Liste vo automatisch verschlüsselten Attributen. Siehe Daten-Verschlüsselung

Type

array

native

Liste von vordefinierten Attributen, welche z.B. in der Admin-Konfiguration überschrieben werden können

Type

object

notifications

Liste von Objekten zur Konfiguration zur Konfiguration des internen Notification-Systems. Siehe Notifications

Seit js-controller 3.2.0

Type

array

Eigenschaften (deprecated)

Diese Eigenschaften sind für aktuelle Adapter mit dem Admin 5 nicht mehr relevant

  • common.title - Langer Name des Adapters für Admin-Version 2, 3 und 4

  • common.npmLibs - Ersetzt durch Abhängigkeiten in der package.json

  • common.main - Ersetzt durch main in der package.json

  • common.localLink - Ersetzt durch common.localLinks

  • common.engineTypes - Ersetzt durch engine in der package.json

  • common.config.height - Standard-Höhe für den Konfigurations-Dialog für Admin 2

  • common.config.minHeight - Mindest-Höhe für den Konfigurations-Dialog für Admin 2

  • common.config.width - Standard-Breite für den Konfigurations-Dialog für Admin 2

  • common.config.minWidth - Mindest-Breite für den Konfigurations-Dialog für Admin 2

  • common.materialize (boolean) - Legt fest, ob der Adapter die Admin-Oberfläche für Admin-Version 3 und 4 bereitstellt

  • common.materializeTab (boolean) - Legt fest, ob der Adapter ein eigenes Tab für Admin-Version 3 und 4 bereitstellt

  • common.noConfig (boolean) - Definiert, ob Instanzen konfiguriert werden können (ab Admin 5 sollte adminUI.config = none verwendet werden)