Kernkonzept
In ioBroker gibt es zwei grundlegend unterschiedliche Datentypen. Sogenannte Zustände (states) und Objekte
Objekte stellen selten wechselnde und größere Daten dar, z. B. Metadaten von Systemgeräten, Konfigurationen und zusätzliche Dateien. Jedes Objekt muss ein Attribut "Typ" haben. Im Folgenden gibt es weitere Informationen dazu, welche Objekttypen verfügbar sind und welche obligatorischen Attribute ein Objekt eines bestimmten Typs benötigt. Funktionen wie setObject, getObject, ... werden vom Adaptermodul zur Verfügung gestellt.
Zustände repräsentieren häufig sich ändernde Daten im System, wie z. Wenn eine Lampe ein- oder ausgeschaltet ist, wenn ein Bewegungsmelder eine Bewegung erkannt hat, die Temperatur des Wohnzimmers oder wenn die Taste einer Fernbedienung gedrückt wird. Im Gegensatz zu Objekten können Zustände verwendet werden, um Aktionen auszulösen, und Zustände können Verlaufsdaten erstellen. Um mit Zuständen zu arbeiten, gibt es im Adaptermodul verschiedene Funktionen wie setState, getState und so weiter.
Für jeden Zustand muss auch ein entsprechendes Objekt mit type=state vorhanden sein.
In den folgenden Kapiteln wird das Datenbankschema beschrieben.
IDs
Die ID ist ein string mit einer maximalen Länge von 240 Byte, hierarchisch strukturiert und durch Punkte getrennt.
Folgende Zeichen dürfen nicht in IDs verwendet werden: []*,;'"`<>\\?.
Es wird auch nicht empfohlen, ^$()/ zu verwenden.
Die ID hat verschiedene Ebenen. Jede Ebene wird durch einen Punkt getrennt. Beispiel: system.adapter.admin.0
system- ist ein Namensraum für Systemobjekteadapter- Namensraum für Adapterkonfigurationenadmin- Adaptername0- Adapterinstanz
Oder ein anderes Beispiel hm-rpc.1.ABC110022.2.VALUE:
hm-rpc- ist der Name des Adapters1- AdapterinstanzABC110022- Geräteadresse2- KanalnameVALUE- Statusname
Namensräume
system.- Systemobjekte und -zuständesystem.host.- Controller-Prozessesystem.config.- Systemeinstellungen wie Standardsprachesystem.meta.- System-Metadatensystem.user.- Benutzersystem.group.- Gruppensystem.adapter. <adapter-name>- Standardkonfiguration eines Adapters<adapter-name> .- Objekte für einen bestimmten Adapter.<adapter-name> .meta.- allgemeine Metadaten, die von allen Instanzen dieses Adapters verwendet werden<adapter-name>. <instance-number> .- Ein Adapterinstanz-Namensraumenum.- Aufzählungenhistory.- Verlaufsdatenscripts.- Script Enginescripts.js.- Javascript Engine Skriptescripts.py.- Python Script Engine Skripte (Zukunft)
Namensraum system.config.
{
_id: id,
type: 'config',
common: {
language: 'en', // Default language for adapters. Adapters can use different values.
tempUnit: '°C', // Default temperature units.
currency: '€', // Default currency sign.
dateFormat: 'DD.MM.YYYY' // Default date format.
isFloatComma: true, // Default float divider ('.' - false, ',' - true)
"activeRepo": "online1", // active repository
"listRepo": { // list of possible repositories
"default": "conf/sources-dist.json",
"online1": "https://raw.githubusercontent.com/ioBroker/ioBroker.nodejs/master/conf/sources-dist.json"
}
}
}
Namensraum system.host.<hostname>
{
_id: id,
type: 'host',
common: {
name: id,
process: title, // iobroker.ctrl
version: version, // Vx.xx.xx
platform: 'javascript/Node.js',
cmd: process.argv[0] + ' ' + process.execArgv.join(' ') + ' ' + process.argv.slice(1).join(' '),
hostname: hostname,
address: ipArr,
defaultIP: ???
},
native: {
process: {
title: process.title,
pid: process.pid,
versions: process.versions,
env: process.env
},
os: {
hostname: hostname,
type: os.type(),
platform: os.platform(),
arch: os.arch(),
release: os.release(),
uptime: os.uptime(),
endianness: os.endianness(),
tmpdir: os.tmpdir()
},
hardware: {
cpus: os.cpus(),
totalmem: os.totalmem(),
networkInterfaces: os.networkInterfaces()
}
}
};
Zustände
Die Methode getState und das Ereignis stateChange liefern ein Objekt mit allen Attributen außer expire
für die setState Methode ist alles außer val optional, from wird automatisch durch die setState Methode eingestellt. ack ist standardmäßig false, ts und lc werden wie erwartet gesetzt
Es ist wichtig zu beachten, dass der Wert ein Zustand vom Typ „array“, „object“, „mixed“ oder file mit „JSON.stringify()“ serialisiert werden muss.
Attribute für das Objekt getState/stateChange/setState:
val- der tatsächliche Wert - kann ein beliebiger Typ sein, der JSON-" codierbar "ist.ack- ein boolesches Flag, das angibt, ob das Zielsystem den Wert bestätigt hatts- ein Unix-Zeitstempel, der die letzte Aktualisierung des Status angibt (in Millisekunden)lc- ein Unix-Zeitstempel, der die letzte Änderung des tatsächlichen Status des Status angibt (in Millisekunden)from- Adapterinstanz, die densetStateausgeführt hatuser- Benutzername, der den Wert festlegtexpire- ein ganzzahliger Wert, mit dem Zustände festgelegt werden können, die nach einer bestimmten Anzahl von Sekunden ablaufen. Kann nur mitsetValueverwendet werden. Nachdem der Wert abgelaufen ist, verschwindet er aus redisDB.c- Kommentar für diese Statusänderung.q- Qualität. Nummer mit folgenden Zuständen:
0x00 - 00000000 - good (can be undefined or null)
0x01 - 00000001 - general bad, general problem
0x02 - 00000010 - no connection problem
0x10 - 00010000 - substitute value from controller
0x20 - 00100000 - substitute initial value
0x40 - 01000000 - substitute value from device or instance
0x80 - 10000000 - substitute value from sensor
0x11 - 01000001 - general problem by instance
0x41 - 01000001 - general problem by device
0x81 - 10000001 - general problem by sensor
0x12 - 00010010 - instance not connected
0x42 - 01000010 - device not connected
0x82 - 10000010 - sensor not connected
0x44 - 01000100 - device reports error
0x84 - 10000100 - sensor reports error
Jeder Datenpunkt muss durch ein Objekt vom Typ state dargestellt werden, das Metadaten für den Datenpunkt enthält. Siehe unten.
Objekte
Obligatorische Attribute
Folgende Attribute müssen in jedem Objekt vorhanden sein:
_idtype- mögliche Werte siehe untencommon- ein Objekt, das ioBroker-spezifische Abstraktionseigenschaften enthältnative- ein Objekt, das kongruente Eigenschaften des Zielsystems enthält
Optionale Attribute
common.name- der Name des Objekts (optional, aber unbedingt empfohlen)
Baumstruktur
Die Baumstruktur wird automatisch nach Namen zusammengestellt. Z.B. system.adapter.0.admin ist übergeordnet für system.adapter.0.admin.uptime. Diese Namenskonvention mit Punkt "." als Teiler der Ebenen ist zu verwenden.
Objekttypen
state- Datenpunkt. Eltern sollten vom Typ Kanal, Gerät, Instanz oder Host seinchannel- Objekt zum Gruppieren eines oder mehrerer Datenpunkte. Eltern sollten Gerät sein.device- Objekt zum Gruppieren eines oder mehrerer Kanäle oder Datenpunkte. Sollte außer dem Adapterinstanz-Namespace kein übergeordnetes Element haben.enum- Objekte, die ein Array in common.members enthalten, das auf Datenpunkte, Kanäle, Geräte oder Dateien verweist. Aufzählungen können eine übergeordnete Aufzählung haben (Baumstruktur möglich)host- ein Host, der einen Controller-Prozess ausführtadapter- die Standardkonfiguration eines Adapters. Das Vorhandensein zeigt auch an, dass der Adapter erfolgreich installiert wurde. (Vorschlag: sollte ein Attribut haben, das ein Array der Hosts enthält, auf denen es installiert ist)instance- Instanz des Adapters. Das übergeordnete Element muss vom Typ Adapter seinmeta- ändert selten Metainformationen, die ein Adapter oder seine Instanzen benötigenconfig- Konfigurationenscript- Skripteuser- Benutzergroup- Gruppenchart- Diagrammefolder- eine Reihe von Geräten oder andere Dinge.
Attribute für bestimmte Objekttypen
Datenpunkt
Attribute:
common.type(optional - (Standard ist gemischt == beliebiger Typ) (mögliche Werte:array,boolean,file,json,mixed,multistate,number,object,string). Ausnahmsweise können Objekte mit dem Typmetacommon haben .type = meta.userodermeta.foldercommon.min(optional, number)common.max(optional, number)common.step(optional, number) - Intervall erhöhen / verringern. Z.B. 0,5 für Thermostatcommon.unit(optional, string)common.def(optional - der Standardwert)common.defAck(optional - wenn common.def gesetzt ist, wird dieser Wert als ack-Flag verwendet, js-controller 2.0.0+)common.desc(optional,stringoder Objekt) - Beschreibung, Objekt für mehrsprachige Beschreibungcommon.read(bool, obligatorisch) - true, wenn der Datenpunkt lesbar istcommon.write(bool, obligatorisch) - true, wenn der Datenpunkt beschreibbar istcommon.role(string, obligatorisch) - Rolle des Datenpunktes (wird in Benutzeroberflächen verwendet, um anzugeben, welches Widget ausgewählt werden soll, siehe unten)common.states(optional) Attribut mit Objekt möglicher Zustände{'Wert': 'Wertname', 'Wert2': 'Wertname2', 0: 'AUS', 1: 'EIN'}- für Zahlen ohne bereitgestellt common.min/common.max: enthält die Liste der erlaubten Zahlenwerte und deren (angezeigte) Bezeichnung als Objekt in der Form
{0: 'OFF', 1: 'ON', '- 1': 'was auch immer'}. Nur diese Werte sind erlaubt - für Zahlen mit bereitgestelltem
common.minund/oder common.max: der zulässige Zahlenbereich wird durch min/max definiert, dieses Attribut enthält eine Liste von "speziellen" Zahlenwerten und deren ( angezeigt) Label als Objekt wie{0: 'OFF', 254: 'ON', 255: 'BLINK'}(min=0, max=255). Es darf nur min oder max angegeben werden, die fehlende Grenze wird dann als +/-Infinity angenommen (+/-Infinity nicht eingeschlossen) - für Strings enthält die Liste der erlaubten Werte und ihre (angezeigte) Beschriftung als Objekt wie
{'value': 'valueName', 'value2': 'valueName2'}. Nur diese Werte sind erlaubt - für Strings enthält die Liste der erlaubten Werte als Array wie
['Start', 'Flight', 'Land'](was eigentlich dasselbe ist wie{'Start': 'Start', 'Flight': ' Flug', 'Land': 'Land'}). Nur diese Werte sind erlaubt - Diese Werte werden derzeit (ab js-controller 4.0) nicht vom js-controller geprüft oder validiert und sind nur für UIs und Visualisierungen da
- für Zahlen ohne bereitgestellt common.min/common.max: enthält die Liste der erlaubten Zahlenwerte und deren (angezeigte) Bezeichnung als Objekt in der Form
common.workingID(string, optional) - wenn dieser Status den Hilfsstatus WORKING hat. Hier muss der vollständige Name oder nur der letzte Teil geschrieben werden, wenn die ersten Teile mit den tatsächlichen identisch sind. Wird fürHM.LEVELverwendet und hat normalerweise den WertWORKING.common.custom(optional) - die Struktur mit benutzerdefinierten Einstellungen für bestimmte Adapter. Wie{"influxdb.0": {"enabled": true, "alias": "name"}}. Das Attributenabledist erforderlich. Wenn dies nicht der Fall ist, wird das gesamte Attribut gelöscht.
Attribut common.role
common.role(gibt an, wie dieser Status in Benutzeroberflächen dargestellt werden soll)
Kanal
Kanal common.role (optional)
Vorschlag: Die Kanalobjekte common.role sollten / könnten eine Reihe von obligatorischen und / oder optionalen Datenpunkt-KInd-Objekte implizieren
mögliche Werte:
-
info- Währungs- oder Aktienkurs, Kraftstoffpreise, Postfacheinfügung und ähnliches -
calendar- -
forecast- Wettervorhersage -
`media - gemeinsamer Medienkanal
-
media.music- Media Player wie SONOS, YAMAHA und so weiter -
media.tv- TV -
media.tts- Text zu Sprache -
thermo- Überwachen oder steuern Sie Temperatur, Luftfeuchtigkeit usw. -
thermo.heat -
thermo.cool -
blind- Jalousiesteuerung -
light- Licht -
light.dimmer- Lichtdimmer -
light.switch- Lichtschalter. -
light.color- Lichtsteuerung mit Fähigkeit zur Farbänderung -
light.color.rgb- Farbe in RGB einstellen -
light.color.rgbw- Farbe in RGBW einstellen -
light.color.hsl- Farbe in Farbton / Sättigung / Luminanz einstellen (Farbton-Farblicht - LivingColors ...) -
light.color.hslct- Farbe in Farbton / Sättigung / Luminanz oder Farbtemperatur einstellen (Farbton erweitertes Farblicht) -
light.color.ct- Farbtemperatur K. -
switch- Ein generischer Schalter -
"sensor" - z. Fenster- oder Türkontakt, Wasserlecksensor, Feuersensor
-
sensor.door- öffnen, schließen -
sensor.door.lock- öffnen, schließen, verriegeln -
sensor.window- öffnen, schließen -
sensor.window.3- öffnen, kippen, schließen -
sensor.water- wahr (Alarm), falsch (kein Alarm) -
sensor.fire- wahr (Alarm), falsch (kein Alarm) -
sensor.CO2- wahr (Alarm), falsch (kein Alarm) -
alarm- ein Alarm -
phone- fritz box, speedport und so weiter -
button- wie ein Wandschalter oder eine TV-Fernbedienung, bei der jede Taste einen Zustand wie .play, .stop, .pause aufweist -
remote- TV oder andere Fernbedienungen: der Zustand ist einstringmit der gedrückten Taste, z. "PLAY", "STOP", "PAUSE" -
meta- Informationen zum Gerät -
meta.version- Geräteversion -
meta.config- Konfiguration vom Gerät -
...
Kanalbeschreibungen
~~ Die Namen der Attribute können vom Adapter frei definiert werden, mit Ausnahme derjenigen, die mit Fett geschrieben sind. ~~
"W" - common.write = true
"M" - Obligatorisch
Optionale Attribute für jeden Kanal / jedes Gerät
// state-working (optional)
{
"_id": "adapter.instance.channelName.stateName-working", // e.g. "hm-rpc.0.JEQ0205612:1.WORKING"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": false, // optional, default false
"type": "boolean", // optional, default "boolean"
"read": true, // mandatory, default true
"write": false, // mandatory, default false
"role": "indicator.working" // mandatory
"desc": "" // optional, default undefined
}
}
,
// state-direction (optional). The state can have following states: "up"/"down"/""
{
"_id": "adapter.instance.channelName.stateName-direction", // e.g. "hm-rpc.0.JEQ0205612:1.DIRECTION"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": "", // optional, default ""
"type": "string", // optional, default "string"
"read": true, // mandatory, default true
"write": false, // mandatory, default false
"role": "direction" // mandatory
"desc": "" // optional, default undefined
}
}
,
// state-maintenance (optional).
{
"_id": "adapter.instance.channelName.stateName-maintenance", //e.g. "hm-rpc.0.JEQ0205612:1.MAINTENANCE"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": false, // optional, default false
"type": "boolean", // optional, default "boolean"
"read": true, // mandatory, default true
"write": false, // mandatory, default false
"role": "indicator.maintenance" // mandatory
"desc": "Problem description" // optional, default undefined
}
}
,
// state-maintenance-unreach (optional).
{
"_id": "adapter.instance.channelName.stateName-maintenance-unreach", //e.g. "hm-rpc.0.JEQ0205612:0.UNREACH"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": false, // optional, default false
"type": "boolean", // optional, default "boolean"
"read": true, // mandatory, default true
"write": false, // mandatory, default false
"role": "indicator.maintenance.unreach" // mandatory
"desc": "Device unreachable" // optional, default 'Device unreachable'
}
}
light.switch - Attributbeschreibung
| Name | common.role | M | W | common.type | Beschreibung | ------------- |: -------------------------- |: -----: | : -----: | ----------------- | ---
| Zustand | Schalter | X | X | boolean | | Beschreibung | text.description | | | | | mmm | Indicator.maintenance.mmm | | | | mmm = Lowbat oder Unreach oder was auch immer |
// SWITCH CHANNEL
{
"_id": "adapter.instance.channelName", // e.g. "hm-rpc.0.JEQ0205614:1"
"type": "channel",
"common": {
"name": "Name of channel", // mandatory, default _id ??
"role": "light.switch" // optional default undefined
"desc": "" // optional, default undefined
}
},
// SWITCH STATES
{
"_id": "adapter.instance.channelName.state-switch", // e.g. "hm-rpc.0.JEQ0205614:1.STATE"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": false, // optional, default false
"type": "boolean", // optional, default "boolean"
"read": true, // mandatory, default true
"write": true, // mandatory, default true
"role": "switch" // mandatory
"desc": "" // optional, default undefined
}
}
// see "Optional states for every channel/device" for description of optional states
// "adapter.instance.channelName.state-maintenance" // optional
// "adapter.instance.channelName.state-maintenance-unreach" // optional
light.dimmer - Attributbeschreibung
// DIMMER CHANNEL
{
"_id": "adapter.instance.channelName", // e.g. "hm-rpc.0.JEQ0205612:1"
"type": "channel",
"common": {
"name": "Name of channel", // mandatory, default _id ??
"role": "light.dimmer" // optional default undefined
"desc": "" // optional, default undefined
}
},
// DIMMER STATES
{
"_id": "adapter.instance.channelName.state-level", // e.g. "hm-rpc.0.JEQ0205612:1.LEVEL"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": 0, // optional, default 0
"type": "number", // optional, default "number"
"read": true, // mandatory, default true
"write": true, // mandatory, default true
"min": 0, // optional, default 0
"max": 100, // optional, default 100
"unit": "%", // optional, default %
"role": "level.dimmer" // mandatory
"desc": "" // optional, default undefined
}
}
// see "Optional states for every channel/device" for description of optional states
// "adapter.instance.channelName.state-working", // optional
// "adapter.instance.channelName.state-direction", // optional
// "adapter.instance.channelName.state-maintenance" // optional
// "adapter.instance.channelName.state-maintenance-unreach" // optional
blind - Attributbeschreibung
// BLIND CHANNEL
{
"_id": "adapter.instance.channelName", // e.g. "hm-rpc.0.JEQ0205615:1"
"type": "channel",
"common": {
"name": "Name of channel", // mandatory, default _id ??
"role": "blind" // optional default undefined
"desc": "" // optional, default undefined
}
},
// BLIND STATES
// Important: 0% - blind is fully closed, 100% blind is fully opened
{
"_id": "adapter.instance.channelName.state-level", // e.g. "hm-rpc.0.JEQ0205615:1.LEVEL"
"type": "state",
"common": {
"name": "Name of state", // mandatory, default _id ??
"def": 0, // optional, default 0
"type": "number", // optional, default "number"
"read": true, // mandatory, default true
"write": true, // mandatory, default true
"min": 0, // optional, default 0
"max": 100, // optional, default 100
"unit": "%", // optional, default %
"role": "level.blind" // mandatory
"desc": "" // optional, default undefined
}
}
phone - Attributbeschreibung
| Name | common.role | M | W | common.type | Beschreibung |
|---|---|---|---|---|---|
ringing_number | text.phone_number | string | |||
ringing | indicator | boolean |
...
Gerät
Enum
common.members- (optionales) Array von Enum-Mitglieder-IDs
Meta
ID
*<adapter-name>.<instance-number>.meta.<meta-name>**<adapter-name>.meta.<meta-name>*system.*meta.<meta-name>*
Adapter
id system.adapter.<adapter.name>
-
Hinweis: * Alle Flags sind optional, außer als obligatorisch gekennzeichnet.
-
common.adminColumns- Custom attributes, that must be shown in the admin in the object browser. Like:[{"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"]}].typeis a type of the attribute (e.g. string, number, boolean) and only needed if edit is enabled.objTypesis a list of the object types, that could have such attribute. Used only in edit mode too. -
common.adminTab.fa-icon- (deprecated) Font-Awesome Symbolname für TAB. -
common.adminTab.ignoreConfigUpdate- Konfigurations-TAB nicht aktualisieren, wenn die Konfiguration geändert wurde (um die Konfigurationseinstellungen in TAB zu aktivieren) -
common.adminTab.link- Link für iframe in der TAB. Sie können die Parameter wie folgt ersetzen:http://%ip%:%port%. IP wird durch Host-IP ersetzt.portwird ausnative.portextrahiert. -
common.adminTab.name- Name der TAB in admin -
common.adminTab.singleton- [true/false], wenn der Adapter TAB für admin hat. Es wird nur eine TAB für alle Instanzen angezeigt. -
common.adminUI.config- [none/json/materialize/html] Art der Konfigurations-UI. Wenn nicht definiert, wird der Adapter als HTML angezeigt. (jsonConfig.jsonoderjsonConfig.json5vonjson,index_m.htmlvonmaterialize,index.htmlvonhtmlwerden im Ordneradminerwartet) -
common.adminUI.custom- [none/json] Art der Benutzeroberfläche für die benutzerdefinierte Konfiguration. Wenn nicht definiert, wird keine benutzerdefinierte Benutzeroberfläche angezeigt. Es ist nur möglich,jsonCustom.jsonoderjsonCustom.json5im Ordneradminzu verwenden. -
common.adminUI.tab- [none/html] Art der TAB-Benutzeroberfläche.tab.htmlodertab_m.htmlwerden im Ordneradminerweitert, wenn sie aufhtmldefiniert sind. -
common.allowInit- [true/false] ermöglicht den Aufruf des geplanten "Adapters" nicht im Zeitplan, wenn die Einstellungen geändert oder der Adapter gestartet wurde. Oder erlauben Sie den geplanten Adapterstart einmal nach Änderung der Konfiguration und dann nach Zeitplan. -
common.availableModes- Werte fürcommon.mode, wenn mehr als ein Modus möglich ist -
common.blockly- [true/false], wenn der Adapter benutzerdefinierte Blöcke für blockly hat. (admin/blockly.jserforderlich) -
common.compact- sagt dem Controller, dass dieser Adapter auf Wunsch im selben Prozess gestartet werden kann -
common.config.height- Standardhöhe für den Konfigurationsdialog (veraltet - nur für admin2 gültig) -
common.config.minHeight- minimale Höhe für den Konfigurationsdialog (veraltet - nur gültig für admin2) -
common.config.minWidth- minimale Breite für den Konfigurationsdialog (veraltet - nur gültig für admin2) -
common.config.width- Standardbreite für den Konfigurationsdialog (veraltet - nur gültig für admin2) -
common.connectionType- Verbindungstyp mit Gerät:local/cloud. Siehe auch "common.dataSource". -
common.dataFolder- Ordner relativ zu iobroker-Daten, in dem der Adapter die Daten speichert. Dieser Ordner wird automatisch gesichert und wiederhergestellt. Sie können die Variable '%INSTANCE%' verwenden. -
common.dataSource- Wie die Daten vom Gerät empfangen werden:poll / push / Annahme. Es ist wichtig zusammen mitconnectionType. -
common.dependencies- Array wie[{"js-controller": "> = 2.0.0"}], das beschreibt, welche ioBroker-Module für diesen Adapter erforderlich sind. -
common.disableDataReporting- Do not report errors via thesentryfor this instance -
common.docs- Die Struktur wie{"en": "docs / de / README.md", "de": ["docs / de / README.md", "docs / de / README1.md" ]}, das die Dokumentation beschreibt, wenn nicht in README.md -
common.enabled- obligatorisch Der Wert [true/false] sollte false sein, damit neue Instanzen standardmäßig deaktiviert werden -
common.engineTypes- veraltet. Verwenden Sie die Engine in package.json -
common.eraseOnUpload- Löscht alle vorherigen Daten im Verzeichnis vor dem Hochladen -
common.expert- Zeigt dieses Objekt nur im Expertenmodus in admin an -
common.extIcon- Link zum externen Symbol für deinstallierte Adapter. Normalerweise auf Github. -
common.getHistory- [true/false], wenn der Adapter die getHistory-Nachricht unterstützt -
common.globalDependencies- Array like[{"admin": ">=2.0.0"}]that describes which ioBroker modules are required for this adapter on one of the hosts. -
common.icon- Name des lokalen Symbols (sollte sich im Unterverzeichnis" admin "befinden) -
common.ignoreVersion- Do not show the update icon for this adapter for this specific version -
common.installedVersion- obligatorische installierte Version -
common.jsonConfig- This adapter supports admin5 and provides admin/jsonConfig.json with description of configuration dialog layout -
common.jsonCustom- This adapter supports admin5 and provides admin/jsonCustom.json with description of custom settings layout -
common.keywords- Ähnlich wie Schlüsselwörter in package.json, kann jedoch in vielen Sprachen definiert werden. Nur ein Array. -
common.localLink- veraltet. Verwenden Sie "common.localLinks". -
common.localLinks- Link zum Webdienst dieses Adapters. Zum Beispiel zu http:// localhost: 5984 / _utils für Futon von admin -
common.logTransporter- wenn dieser Adapter Protokolle von anderen Hosts und Adaptern empfängt (z. B. um sie irgendwo zu speichern) -
common.loglevel- debug, info, warn oder error -
common.main- Startdatei des Adapters. Gleich wie in package.json. -
common.materializeTab- wenn der Adapter> admin3 für tab unterstützt (materialize style) -
common.materialize- wenn der Adapter> admin3 unterstützt (materialize style) -
common.messagebox- true, wenn die Messagebox unterstützt wird. Dann wird das Objektsystem.adapter.<adapter.name>.<adapter.instance>.messageboxangelegt, über das sich Nachrichten an den Adapter senden lassen (benutzt von E-Mail, Pushover und ähnlichen). -
common.messages- Conditional messages by update. See Conditional messages for details. -
common.mode- obligatorisch mögliche Werte siehe unten -
common.name- obligatorischer Name des Adapters ohne" ioBroker ". -
common.noConfig- [true/false] zeigt beispielsweise keinen Konfigurationsdialog an -
common.noIntro- zeigt niemals Instanzen dieses Adapters auf dem Intro / Übersichtsbildschirm in admin an (wie Symbole, Widgets) -
common.noRepository- [true/false], wenn der Adapter bei der Erstinstallation geliefert wurde oder über ein eigenes Repository verfügt -
common.nogit- Wenn true, ist keine direkte Installation von Github möglich -
common.nondeletable- [true/false] Dieser Adapter kann nicht gelöscht oder aktualisiert werden. Es wird zusammen mit dem Controller aktualisiert. -
common.npmLibs- veraltet. Verwenden Sie package.jsondependencies. -
common.onlyWWW- [true/false] sagt dem Controller, dass der Adapter nur HTML-Dateien und keine main.js wie Rikscha hat -
common.osDependencies.darwin- Array von OSX-Paketen, die für diesen Adapter erforderlich sind -
common.osDependencies.linux- Array von Debian / Centos-Paketen, die für diesen Adapter erforderlich sind (natürlich nur Betriebssysteme mit apt, apt-get, yum als Paketmanager) -
common.osDependencies.win32- wird nicht verwendet, da win32 keinen Paketmanager hat -
common.os-stringoder Array unterstützter Betriebssysteme, z. B.["linux", "darwin"] -
common.platform- obligatorisch mögliche Werte: Javascript / Node.js, weitere folgen -
common.preserveSettings-string(oder Array) mit Namen von Attributen, die gemeinsam gelöscht werden und nicht gelöscht werden. Z.B. "history", also wird mit setState ('system.adapter.mqtt.0 ", {..}) das Feld common.history nicht gelöscht, auch wenn das neue Objekt dieses Feld nicht hat. Um das Attribut zu löschen, muss es explizit sein erledigt mitcommon: {history: null}. -
common.pugins.sentry- structure with the configuration data for thesentryplugin -
common.readme- veraltet. Verwenden Sie "docs". -
common.restartAdapters- Array mit den Namen des Adapters, der nach der Installation dieses Adapters neu gestartet werden muss, z. ["vis"] -
common.restartSchedule- CRON schedule to restart modedaemonadapters -
common.schedule- CRON-Zeitplan, wenn der Adapter im ModusZeitplanausgeführt wird. -
common.serviceStates- [true/false oder path], wenn der Adapter zusätzliche Zustände liefern kann. Wenn ja, wird der Pfadadapter/lib/states.jsaufgerufen und gibt folgende Parameterfunktion (Objekte, Zustände, Instanz, Konfiguration, Rückruf). Die Funktion muss das Array von Punkten mit Werten wiefunction (err, result) { result = [{id: 'id1', val: 1}, {id: 'id2', val: 2}]} -
common.singletonHost- Der Adapter kann nur einmal auf einem Host installiert werden -
common.singleton- Adapter kann nur einmal im gesamten System installiert werden -
common.statusStates- Struktur für die Statusanzeige im Admin in der Form"statusStates": {"onlineId": "0.connected", "errorId": "hm-rpc.0.AB203424.0.error"}. StattonlineIdkönnte auch dieofflineIdverwendet werden. Wenn die ID sehr kurz ist (weniger als 2 Punkte darin), wird die ID als relativ zum aktuellen Objekt behandelt. -
common.stopBeforeUpdate- [true/false], wenn der Adapter vor dem Update gestoppt werden muss -
common.stopTimeout- Zeitüberschreitung in ms, um zu warten, bis der Adapter heruntergefahren ist. Standard 500ms. -
common.stoppedWhenWebExtension- Wenn die Instanz den Modus "Daemon" hat, aber als Weberweiterung ausgeführt wird (native.webInstance !== ''), startet der Controller diese Instanz nicht, wenn "common.stoppedWhenWebExtension" wahr ist. -
common.subscribable- Variablen dieses Adapters müssen mit sendTo abonniert werden, um Updates zu ermöglichen -
common.subscribe- Name der Variablen, die automatisch abonniert wird -
common.supportCustoms- [true/false], wenn der Adapter Einstellungen für jeden Status unterstützt. Die Datei custom.html muss sich in admin befinden. Ein Beispiel finden Sie in ioBroker.history -
common.supportStopInstance- [true/false], wenn der Adapter das Signal stopInstance unterstützt (** Messagebox ** erforderlich). Das Signal wird vor dem Stopp an den Adapter gesendet. (wird verwendet, wenn die Probleme mit SIGTERM aufgetreten sind) -
common.titleLang- obligatorisch längerer Name des Adapters in allen unterstützten Sprachen wie {en: 'Adapter', de: 'Adapter', ru: 'Драйвер'} -
common.title- (veralteter) längerer Name des Adapters, der in admin angezeigt werden soll -
common.type- Adaptertyp. Siehe Typen -
common.unchanged- (System) Bitte verwenden Sie dieses Flag nicht. Es ist ein Flag, um das System darüber zu informieren, dass der Konfigurationsdialog in admin angezeigt werden muss. -
common.unsafePerm- [true/false], wenn das Paket mit dem Parameternpm --unsafe-perminstalliert werden muss -
common.version- obligatorische verfügbare Version -
common.visWidgets- Beschreibtvis2-react-Widgets. Z.B.{"i18n": "component", "vis2NAMEWidgets": { "name": "vis2NAMEWidgets", "url": "vis-2-widgets-NAME/customWidgets.js", "components": [ "NAMEwidgetName"]} } -
common.wakeup- Der Adapter wird gestartet, wenn ein Wert insystem.adapter.NAME.x.wakeupgeschrieben wird. Normalerweise sollte der Adapter nach der Verarbeitung des Ereignisses anhalten. -
common.webByVersion- Version als Präfix im Webadapter anzeigen (normalerweise - IP: Port / Material, WebByVersion - IP: Port / 1.2.3 / Material) -
common.webExtendable- [true/false], wenn der Webserver in diesem Adapter mit Plugins / Erweiterungen wie Proxy, Simple-API erweitert werden kann -
common.webExtension- relativer Dateiname zum Verbinden der Web-Erweiterung. Z.B. insimple-apilib/simpleapi.jsrelativ zum Adapter-Stammverzeichnis. Zusätzlich mussnative.webInstanceangeben, wo diese Erweiterung enthalten sein wird. Leer bedeutet, dass es als eigener Webdienst ausgeführt werden muss. "*" bedeutet, dass jeder Webserver es enthalten muss. -
common.webPreSettings- Liste der Parameter, die vom webServer-Adapter in info.js aufgenommen werden müssen. (Beispielmaterial) -
common.webservers- Array von Webserverinstanzen, die Inhalte aus dem www-Ordner des Adapters bereitstellen sollen -
common.welcomeScreen.order- todo -
common.welcomeScreenPro- Wiecommon.welcomeScreen, jedoch nur für den Zugriff von ioBroker.cloud verwendet. -
common.welcomeScreen- Array von den Seiten, die auf der Seite "web" index.html angezeigt werden sollen.["vis/edit.html", "vis/index.html"]oder[{"link": "vis/edit.html", "name": "Vis editor", "img": "vis/img/edit.png", "color": "blue"}, "vis/index.html"] -
common.wwwDontUpload- Laden Sie das Verzeichnis www nicht in die DB hoch. Wird nur für Administratoren verwendet. Sie können Ihrem Verzeichnis einfach einen anderen Namen geben und OK. -
protectedNative- Array von Konfigurationsattributen, auf die nur der eigene Adapter zugreifen kann, z.[" Passwort "] -
encryptedNative- Array von Konfigurationsattributen, die automatisch verschlüsselt werden, wenn sie über die Admin-Konfigurationsseite gespeichert und zur Laufzeit des Adapters automatisch entschlüsselt werden, z.[" Passwort "," Token "] -
native- vordefinierte Attribute, auf die in index_m.html und zur Laufzeit überadapter.config. <attribute>zugegriffen werden kann, z.{"port": 1234, "password": "secret"}
Conditional messages
Wenn Sie möchten, dass beim Update von einer bestimmten Version auf eine neue bestimmte Version die Nachricht angezeigt wird, können Sie common.messages definieren.
Beispiel:
"messages": {
"condition": {
"operand": "and", // "and" or "or"
"rules": [
"oldVersion<=1.0.44", // currently only oldVersion and newVersion are supported
"newVersion>=1.0.45" // possible comparators: <, >, >=, <=, !=, ==
]
},
"title": {
"en": "Important notice",
},
"text": {
"en": "Main text",
},
"link": "https://iobroker.net/www/pricing",
"buttons": ["agree", "cancel", "ok], // optional. If no buttons defined the info will be shown only in the change log dialog
"linkText" {
"en": "More info",
},
"level": "warn" // info, warn, error
}
Instanz
ID: system.adapter.<adapter.name>.<instance-number>
common.host- (obligatorischer) Host, auf dem der Adapter unter - objectsystem.host.<host>gestartet werden soll und muss vorhanden seincommon.enabled- (obligatorisch)common.mode- (obligatorische) mögliche Werte siehe unten
Adapter / Instanz common.mode
none- Dieser Adapter startet keinen Prozessdaemon- immer laufender Prozess (wird neu gestartet, wenn der Prozess beendet wird)subscribe- wird gestartet, wenn der Statussystem.adapter.<adapter-name>.<instance-number>.alivein true geändert wird. Wird beendet, wenn.aliveauffalsewechselt und.aliveauffalsegesetzt wird, wenn der Prozess beendet wird (wird nicht neu gestartet, wenn der Prozess beendet wird)schedule- wird durch den insystem.adapter.<adapter-name>.<instance-number>.schedulegefundenen Zeitplan gestartet - reagiert auf Änderungen von.scheduledurch Neuplanung mit neuem Statusonce- Dieser Adapter wird jedes Mal gestartet, wenn das Objekt system.adapter.yyy.x geändert wird. Es wird nach Beendigung nicht neu gestartet.extension- Dieser Adapter wird nicht vonjs-controllergestartet, sondern von einer Webinstanz. Die Webinstanz kann innative.webInstanceals "*" (wenn in jedem Web) oder alsweb.xfür eine bestimmte Webinstanz definiert werden. (Beispiele:Kameras, Proxy). Zusätzlich muss incommon.webExtensionder Pfad zur Plugin-Datei angegeben werden.
Host
id system.host.<host>
common.name- f.e.system.host.bananacommon.processcommon.versioncommon.platformcommon.cmdcommon.hostname- f.e. "Banane"common.address- Array von IP-Adresszeichenfolgen
Config
Skript
common.platform- (obligatorisch) mögliche WerteJavascript / Node.js(weitere werden folgen)common.enabled- (obligatorisch) ist skript aktiviert oder nichtcommon.source- (obligatorisch) die Skript quellecommon.engine- (optional) Skript-Engine Instanz, die dieses Skript ausführen soll (z. B. 'javascript.0') - wenn die ausgelassene Engine automatisch ausgewählt wird
Nutzer
common.name- (obligatorisch) Name des Benutzers (Groß- und Kleinschreibung beachten)common.password- (obligatorisch) MD5 Hash des Passworts
Gruppe
common.name- (obligatorischer) Name der Gruppecommon.members- (obligatorisches) Array von Benutzerobjekt-IDscommon.desc- (optionale) Beschreibung des Gruppenzwecks