@iobroker/socket-classes
v2.3.2
Published
ioBroker server-side web sockets
Readme
@iobroker/socket-classes
This library is used at least for the following adapters:
Usage as admin
const TTL_SEC = 3600;
const SocketAdmin = require('@iobroker/socket-classes').SocketAdmin;
const ws = require('@iobroker/ws-server');
const session = require('express-session');
const utils = require('@iobroker/adapter-core'); // Get common adapter utils
const AdapterStore = require(utils.controllerDir + '/lib/session.js')(session, TTL_SEC);
const store = new AdapterStore({adapter});
const io = new SocketAdmin(adapter.config, adapter, objects);
io.start(
server,
ws,
{
userKey: 'connect.sid',
store,
secret: adapter.config.secret
}
);
// subscribe on all object changes
io.subscribe('objectChange', '*');
// later
io.close();Usage as socket (ws or socketio)
const TTL_SEC = 3600;
const ws = require('@iobroker/ws-server');
const SocketWS = require('@iobroker/socket-classes').SocketCommon;
const session = require('express-session');
const utils = require('@iobroker/adapter-core'); // Get common adapter utils
const AdapterStore = require(utils.controllerDir + '/lib/session.js')(session, TTL_SEC);
const store = new AdapterStore({adapter});
const settings = adapter.config;
settings.crossDomain = true;
settings.ttl = settings.ttl || TTL_SEC;
const io = new SocketWS(settings, adapter);
io.start(server.server, ws, {userKey: 'connect.sid', checkUser, store, secret: adapter.config.secret});
// later
io.close();GUI subscribes
GUI client can send to desired instance the subscribe message
socket.emit('clientSubscribe', 'cameras.0', 'startCamera', { width: 640, height: 480 }, result => console.log('Started: ' + result));The instance 'cameras.0' will receive message clientSubscribe with information who want to receive messages.
adapter.on('message', obj => {
if (obj?.command === 'clientSubscribe') {
if (obj?.message.type && obj.message.type.startsWith('startCamera/')) {
const [, camera] = obj.message.type.split('/');
// start camera with obj.message.data
// ...
// inform GUI that camera is started
adapter.sendTo(obj.from, obj.command, {result: true}, obj.callback);
this.subscribes = this.subscribes || [];
this.subscribes.push({sid: obj.message.sid, from: obj.from, type: obj.message.type, camera});
}
} else if (obj?.command === 'clientUnsubscribe' || obj?.command === 'clientSubscribeError') {
if (obj?.message.type && obj.message.type.startsWith('startCamera/')) {
const [, camera] = obj.message.type.split('/');
if (this.subscribes) {
const pos = this.subscribes.findIndex(s => s.sid === obj.message.sid && s.from === obj.from && s.type === obj.message.type);
if (pos !== -1) {
this.subscribes.splice(pos, 1);
// stop camera
// ...
}
}
}
}
});and after that the client will receive messages from instance
function sendImage(camera, data) {
this.subscribes.forEach(it => {
if (it.camera !== camera) {
return;
}
// send image to GUI
adapter.sendTo(it.from, 'im', {m: it.type, s: it.sid, d: data});
});
}Web Methods
List of commands
authenticateupdateTokenExpirationerrorlogcheckFeatureSupportedgetHistoryhttpGetsendTosendToHostauthEnabledlogoutlistPermissionsgetUserPermissionsgetVersiongetAdapterNameclientSubscribeclientUnsubscribegetCompactSystemConfiggetAdapterInstancesgetObjectgetObjectsgetAllObjectssubscribeObjectsunsubscribeObjectsgetObjectViewsetObjectdelObjectgetStatesgetForeignStatesgetStatesetStategetBinaryStatesetBinaryStatesubscribesubscribeStatesunsubscribeunsubscribeStatesreadFilereadFile64writeFile64writeFileunlinkdeleteFiledeleteFolderrenameFilerenamemkdirreadDirchmodFilechownFilefileExistssubscribeFilesunsubscribeFiles
Commands
authenticate(callback)
Wait till the user is authenticated. As the user authenticates himself, the callback will be called
callback(isUserAuthenticated: boolean, isAuthenticationUsed: boolean) => void) => void: Callback(isUserAuthenticated: boolean, isAuthenticationUsed: boolean) => void
updateTokenExpiration(accessToken, callback)
After the access token is updated, this command must be called to update the session (Only for OAuth2)
accessTokenstring: New access tokencallback(error: string | undefined | null, success?: boolean) => void) => void: Callback(error: string | undefined | null, success?: boolean) => void
error(error)
Write error into ioBroker log
errorError | string: Error object or error text
log(text, level)
Write log entry into ioBroker log
textstring: log textlevelioBroker.LogLevel: one of['silly', 'debug', 'info', 'warn', 'error']. The default is 'debug'.
checkFeatureSupported(feature, callback)
Check if the same feature is supported by the current js-controller
featureSupportedFeature: feature name likeCONTROLLER_LICENSE_MANAGERcallback(error: string | Error | null | undefined, isSupported?: boolean) => void) => void: callback(error: string | Error | null | undefined, isSupported: boolean) => void
getHistory(id, options, callback)
Get the history data from the specific instance
idstring: object IDoptionsioBroker.GetHistoryOptions: History optionscallback(error: string | Error | null | undefined, result: ioBroker.GetHistoryResult) => void) => void: callback(error: string | Error | null | undefined, result: ioBroker.GetHistoryResult) => void
httpGet(url, callback)
Read content of HTTP(s) page server-side (without CORS and stuff)
urlstring: Page URLcallback(error: Error | null | undefined | string, result?: {status: number; statusText: string}, data?: string) => void: callback(error: Error | null, result?: { status: number; statusText: string }, data?: string) => void
sendTo(adapterInstance, command, message, callback)
Send the message to specific instance
adapterInstancestring: instance name, e.g.history.0commandstring: command namemessageany: the message is instance-dependentcallback(result: any) => void) => void: callback(result: any) => void
sendToHost(host, command, message, callback)
Send a message to the specific host.
Host can answer to the following commands: cmdExec, getRepository, getInstalled, getInstalledAdapter, getVersion, getDiagData, getLocationOnDisk, getDevList, getLogs, getHostInfo, delLogs, readDirAsZip, writeDirAsZip, readObjectsAsZip, writeObjectsAsZip, checkLogging, updateMultihost.
hoststring: Host name. With or without 'system.host.' prefixcommand* 'shell' | 'cmdExec' | 'getRepository' | 'getInstalled' | 'getInstalledAdapter' | 'getVersion' | 'getDiagData' | 'getLocationOnDisk' | 'getDevList' | 'getLogs' | 'getLogFile' | 'getLogFiles' | 'getHostInfo' | 'getHostInfoShort' | 'delLogs' | 'readDirAsZip' | 'writeDirAsZip' | 'readObjectsAsZip' | 'writeObjectsAsZip' | 'checkLogging' | 'updateMultihost' | 'upgradeController' | 'upgradeAdapterWithWebserver' | 'getInterfaces' | 'upload' | 'rebuildAdapter' | 'readBaseSettings' | 'writeBaseSettings' | 'addNotification' | 'clearNotifications' | 'getNotifications' | 'updateLicenses' | 'upgradeOsPackages' | 'restartController' | 'sendToSentry'*: Host commandmessageany: the message is command-specificcallback(result: {error?: string; result?: any}) => void) => void: callback(result: { error?: string; result?: any }) => void
authEnabled(callback)
Ask server is authentication enabled, and if the user authenticated
callback(isUserAuthenticated: boolean | Error | string, isAuthenticationUsed: boolean) => void) => void: callback(isUserAuthenticated: boolean | Error | string, isAuthenticationUsed: boolean) => void
logout(callback)
Logout user
callbackioBroker.ErrorCallback: callback(error?: Error) => void
listPermissions(callback)
List commands and permissions
callback(permissions: Record< string, {type: 'object' | 'state' | 'users' | 'other' | 'file' | ''; operation: SocketOperation} >) => void: callback(permissions: Record<string, { type: 'object' | 'state' | 'users' | 'other' | 'file' | ''; operation: SocketOperation }>) => void
getUserPermissions(callback)
Get user permissions
callback(error: string | null | undefined, userPermissions?: SocketACL | null) => void) => void: callback(error: string | null | undefined, userPermissions?: SocketACL | null) => void
getVersion(callback)
Get the adapter version. Not the socket-classes version!
callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void: callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void
getAdapterName(callback)
Get adapter name: "iobroker.ws", "iobroker.socketio", "iobroker.web", "iobroker.admin"
callback(error: string | Error | null | undefined, adapterName: string) => void) => void: callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void
clientSubscribe(targetInstance, messageType, data, callback)
Client subscribes to specific instance's messages. Client informs a specific instance about subscription on its messages. After subscription, the socket will receive "im" messages from the desired instance The target instance MUST acknowledge the subscription and return result
targetInstancestring: Instance name, e.g., 'cameras.0'messageTypestring: Message type, e.g., 'startRecording/cam1'dataany: Optional data object, e.g., {width: 640, height: 480}callback(error: string | null | Error | undefined, result?: {accepted: boolean; heartbeat?: number; error?: string}) => void: Callback(error: string | null, result?:{ accepted: boolean; heartbeat?: number; error?: string; }) => void
clientUnsubscribe(targetInstance, messageType, callback)
Client unsubscribes from specific instance's messages. The target instance MUST NOT acknowledge the un-subscription
targetInstancestring: Instance name, e.g., 'cameras.0'messageTypestring: Message type, e.g., 'startRecording/cam1'callback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
getCompactSystemConfig(callback)
Get the system configuration in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, systemConfig?: {common: ioBroker.SystemConfigCommon; native?: {secret: string; vendor?: any}}) => void: - Callback function(error: string | null, systemConfig?: { common: any; native?: { secret: string } }) => void
getAdapterInstances(adapterName, callback)
Read all instances of the given adapter, or all instances of all adapters if adapterName is not defined
adapterNamestring | undefined: adapter name, e.g.history. To get all instances of all adapters, just place here "".callback(error: null | undefined | Error | string, instanceList?: ioBroker.InstanceObject[]) => void) => void: callback(error: null | undefined | Error | string, instanceList?: ioBroker.InstanceObject[]) => void
Objects
getObject(id, callback)
Get one object.
idstring: Object IDcallback(error: Error | undefined | string | null, obj?: ioBroker.Object) => void) => void: Callback(error: string | null, obj?: ioBroker.Object) => void
getObjects(list, callback)
Get all objects that are relevant for the web: all states and enums with rooms. This is a non-admin version of "all objects" and will be overloaded in admin
liststring[] | null: Optional list of IDscallback(error: Error | undefined | string | null, objs?: Record<string, ioBroker.Object>) => void) => void: Callback(error: string | null, objs?: Record<string, ioBroker.Object>) => void
getAllObjects(callback)
Get all objects that are relevant for the web: all states and enums with rooms.
callback(error: null | undefined | Error | string, result?: Record<string, ioBroker.Object>) => void) => void: - Callback function(error: string | null, objects?: Record<string, ioBroker.Object>) => void
subscribeObjects(pattern, callback)
Subscribe to object changes by pattern. The events will come as 'objectChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of IDs like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: Error | undefined | string | null) => void) => void: Callback(error: string | null) => void
unsubscribeObjects(pattern, callback)
Unsubscribe from object changes by pattern.
patternstring | string[]: Pattern likesystem.adapter.*or array of IDs like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
getObjectView(design, search, params, callback)
Get a view of objects. Make a query to the object database.
designstring: Design name, e.g., 'system' or other designs likecustom, but it must exist object_design/custom. To 99,9% usesystem.searchstring: Search name, object type, likestate,instance,adapter,host, ...params{startkey?: string; endkey?: string; depth?: number}: Parameters for the query, e.g.,{startkey: 'system.adapter.', endkey: 'system.adapter.\u9999', depth?: number}callback(error: string | null | Error | undefined, result?: {rows: {id: string; value: ioBroker.Object & {virtual: boolean; hasChildren: number;};}[];}) => void: Callback(error: string | null, result?: { rows: Array<GetObjectViewItem> }) => void
setObject(id, obj, callback)
Set an object.
idstring: Object IDobjioBroker.Object: Object to setcallback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
delObject(id, _options, callback)
Delete an object. Only deletion of flot and fullcalendar objects is allowed
idstring: Object ID, like 'flot.0.myChart'_optionsany: Options for deletion. Ignoredcallback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
States
getStates(pattern, callback)
Get states by pattern of current adapter
patternstring | string[] | undefined: optional pattern, likesystem.adapter.*or array of state IDs. If the pattern is omitted, you will get ALL states of current adaptercallback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void) => void: callback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void
getForeignStates(pattern, callback)
Same as getStates
patternstring | string[]: pattern likesystem.adapter.*or array of state IDscallback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void) => void: callback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void
getState(id, callback)
Get a state by ID
idstring: State ID, e.g.system.adapter.admin.0.memRsscallback(error: null | undefined | Error | string, state?: ioBroker.State) => void) => void: Callback(error: null | undefined | Error | string, state?: ioBroker.State) => void
setState(id, state, callback)
Set a state by ID
idstring: State ID, e.g.system.adapter.admin.0.memRssstateioBroker.SettableState: State value or object, e.g.{val: 123, ack: true}callback(error: null | undefined | Error | string, state?: ioBroker.State) => void) => void: Callback(error: null | undefined | Error | string, state?: ioBroker.State) => void
getBinaryState(id, callback)
Get a binary state by ID
idstring: State ID, e.g.javascript.0.binarycallback(error: null | undefined | Error | string, base64?: string) => void) => void: Callback(error: null | undefined | Error | string, base64?: string) => void
setBinaryState(id, _base64, callback)
Set a binary state by ID
idstring: State ID, e.g.javascript.0.binary_base64string: State value as base64 string. Binary states have no acknowledged flag.callback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
subscribe(pattern, callback)
Subscribe to state changes by pattern. The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
subscribeStates(pattern, callback)
Subscribe to state changes by pattern. Same as subscribe.
The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
unsubscribe(pattern, callback)
Unsubscribe from state changes by pattern.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
unsubscribeStates(pattern, callback)
Unsubscribe from state changes by pattern. Same as unsubscribe.
The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
Files
readFile(adapter, fileName, callback)
Read a file from ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, data: Buffer | string, mimeType: string) => void) => void: Callback(error: null | undefined | Error | string, data: Buffer | string, mimeType: string) => void
readFile64(adapter, fileName, callback)
Read a file from ioBroker DB as base64 string
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, base64?: string, mimeType?: string) => void) => void: Callback(error: null | undefined | Error | string, base64: string, mimeType: string) => void
writeFile64(adapter, fileName, data64, options, callback?)
Write a file into ioBroker DB as base64 string
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsondata64string: file content as base64 stringoptions{mode?: number} | ((error: null | undefined | Error | string) => void): optional{mode: 0x0644}callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
writeFile(adapter, fileName, data, options, callback?)
Write a file into ioBroker DB as text This function is overloaded in admin (because admin accepts only base64)
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsondatastring: file content as textoptions{mode?: number} | ((error: null | undefined | Error | string) => void): optional{mode: 0x0644}callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
unlink(adapter, name, callback)
Delete a file in ioBroker DB
adapterstring: instance name, e.g.vis.0namestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
deleteFile(adapter, name, callback)
Delete a file in ioBroker DB (same as "unlink", but only for files)
adapterstring: instance name, e.g.vis.0namestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
deleteFolder(adapter, name, callback)
Delete folder in ioBroker DB (same as unlink, but only for folders)
adapterstring: instance name, e.g.vis.0namestring: folder name, e.g.maincallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
renameFile(adapter, oldName, newName, callback)
Rename a file in ioBroker DB
adapterstring: instance name, e.g.vis.0oldNamestring: current file name, e.g.main/vis-views.jsonnewNamestring: new file name, e.g.main/vis-views-new.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
rename(adapter, oldName, newName, callback)
Rename file or folder in ioBroker DB
adapterstring: instance name, e.g.vis.0oldNamestring: current file name, e.g.main/vis-views.jsonnewNamestring: new file name, e.g.main/vis-views-new.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
mkdir(adapter, dirName, callback)
Create a folder in ioBroker DB
adapterstring: instance name, e.g.vis.0dirNamestring: desired folder name, e.g.maincallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
readDir(adapter, dirName, options, callback?)
Read the content of the folder in ioBroker DB
adapterstring: instance name, e.g.vis.0dirNamestring: folder name, e.g.mainoptionsobject | ((error: null | undefined | Error | string, files: ioBroker.ReadDirResult[]) => void): for future usecallback?(error: null | undefined | Error | string, files: ioBroker.ReadDirResult[]) => void: Callback(error: null | undefined | Error | string, files: Array<{file: string, isDir: boolean, stats: {size: number}, modifiedAt: number, acl: {owner: string, ownerGroup: string, permissions: number, read: boolean, write: boolean}}>) => void
chmodFile(adapter, fileName, options, callback?)
Change a file mode in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsonoptions{mode?: number}: options{mode: 0x644}callback?(error: string | Error | null | undefined) => void: Callback(error: string | Error | null | undefined) => void
chownFile(adapter, fileName, options, callback?)
Change file owner in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsonoptions{owner:system.user.${string}; ownerGroup?:system.group.${string}}: options{owner: 'system.user.user', ownerGroup: 'system.group.administrator'}orsystem.user.user. If ownerGroup is not defined, it will be taken from an owner.callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
fileExists(adapter, fileName, callback)
Check if the file or folder exists in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, exists?: boolean) => void) => void: Callback(error: null | undefined | Error | string, exists?: boolean) => void
subscribeFiles(id, pattern, callback)
Subscribe to file changes in ioBroker DB
idstring: instance name, e.g.vis.0or any object ID of typemeta.idcould have wildcards*too.patternstring | string[]: file name pattern, e.g.main/*.jsonor array of namescallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
unsubscribeFiles(id, pattern, callback)
Unsubscribe from file changes in ioBroker DB
idstring: instance name, e.g.vis.0or any object ID of typemeta.idcould have wildcards*too.patternstring | string[]: file name pattern, e.g.main/*.jsonor array of namescallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
Admin Methods
List of commands
authenticateupdateTokenExpirationerrorlogcheckFeatureSupportedgetHistoryhttpGetsendTosendToHostauthEnabledlogoutlistPermissionsgetUserPermissionsgetVersiongetAdapterNameclientSubscribeclientUnsubscribegetCompactSystemConfiggetAdapterInstancesgetHostByIprequireLogreadLogscmdExeceventsThresholdgetRatingsgetCurrentInstancedecryptencryptgetIsEasyModeStrictgetEasyModegetAdaptersupdateLicensesgetCompactInstancesgetCompactAdaptersgetCompactInstalledgetCompactSystemRepositoriesgetCompactRepositorygetCompactHostsdelStategetStatesgetForeignStatesgetStatesetStategetBinaryStatesetBinaryStatesubscribesubscribeStatesunsubscribeunsubscribeStatesaddUserdelUseraddGroupdelGroupchangePasswordgetObjectgetObjectsgetAllObjectssubscribeObjectsunsubscribeObjectsgetObjectViewsetObjectdelObjectextendObjectgetForeignObjectsdelObjectsreadFilereadFile64writeFile64writeFileunlinkdeleteFiledeleteFolderrenameFilerenamemkdirreadDirchmodFilechownFilefileExistssubscribeFilesunsubscribeFiles
Commands
authenticate(callback)
Wait till the user is authenticated. As the user authenticates himself, the callback will be called
callback(isUserAuthenticated: boolean, isAuthenticationUsed: boolean) => void) => void: Callback(isUserAuthenticated: boolean, isAuthenticationUsed: boolean) => void
updateTokenExpiration(accessToken, callback)
After the access token is updated, this command must be called to update the session (Only for OAuth2)
accessTokenstring: New access tokencallback(error: string | undefined | null, success?: boolean) => void) => void: Callback(error: string | undefined | null, success?: boolean) => void
error(error)
Write error into ioBroker log
errorError | string: Error object or error text
log(text, level)
Write log entry into ioBroker log
textstring: log textlevelioBroker.LogLevel: one of['silly', 'debug', 'info', 'warn', 'error']. The default is 'debug'.
checkFeatureSupported(feature, callback)
Check if the same feature is supported by the current js-controller
featureSupportedFeature: feature name likeCONTROLLER_LICENSE_MANAGERcallback(error: string | Error | null | undefined, isSupported?: boolean) => void) => void: callback(error: string | Error | null | undefined, isSupported: boolean) => void
getHistory(id, options, callback)
Get the history data from the specific instance
idstring: object IDoptionsioBroker.GetHistoryOptions: History optionscallback(error: string | Error | null | undefined, result: ioBroker.GetHistoryResult) => void) => void: callback(error: string | Error | null | undefined, result: ioBroker.GetHistoryResult) => void
httpGet(url, callback)
Read content of HTTP(s) page server-side (without CORS and stuff)
urlstring: Page URLcallback(error: Error | null | undefined | string, result?: {status: number; statusText: string}, data?: string) => void: callback(error: Error | null, result?: { status: number; statusText: string }, data?: string) => void
sendTo(adapterInstance, command, message, callback)
Send the message to specific instance
adapterInstancestring: instance name, e.g.history.0commandstring: command namemessageany: the message is instance-dependentcallback(result: any) => void) => void: callback(result: any) => void
sendToHost(host, command, message, callback)
Send a message to the specific host.
Host can answer to the following commands: cmdExec, getRepository, getInstalled, getInstalledAdapter, getVersion, getDiagData, getLocationOnDisk, getDevList, getLogs, getHostInfo, delLogs, readDirAsZip, writeDirAsZip, readObjectsAsZip, writeObjectsAsZip, checkLogging, updateMultihost.
hoststring: Host name. With or without 'system.host.' prefixcommand* 'shell' | 'cmdExec' | 'getRepository' | 'getInstalled' | 'getInstalledAdapter' | 'getVersion' | 'getDiagData' | 'getLocationOnDisk' | 'getDevList' | 'getLogs' | 'getLogFile' | 'getLogFiles' | 'getHostInfo' | 'getHostInfoShort' | 'delLogs' | 'readDirAsZip' | 'writeDirAsZip' | 'readObjectsAsZip' | 'writeObjectsAsZip' | 'checkLogging' | 'updateMultihost' | 'upgradeController' | 'upgradeAdapterWithWebserver' | 'getInterfaces' | 'upload' | 'rebuildAdapter' | 'readBaseSettings' | 'writeBaseSettings' | 'addNotification' | 'clearNotifications' | 'getNotifications' | 'updateLicenses' | 'upgradeOsPackages' | 'restartController' | 'sendToSentry'*: Host commandmessageany: the message is command-specificcallback(result: {error?: string; result?: any}) => void) => void: callback(result: { error?: string; result?: any }) => void
authEnabled(callback)
Ask server is authentication enabled, and if the user authenticated
callback(isUserAuthenticated: boolean | Error | string, isAuthenticationUsed: boolean) => void) => void: callback(isUserAuthenticated: boolean | Error | string, isAuthenticationUsed: boolean) => void
logout(callback)
Logout user
callbackioBroker.ErrorCallback: callback(error?: Error) => void
listPermissions(callback)
List commands and permissions
callback(permissions: Record< string, {type: 'object' | 'state' | 'users' | 'other' | 'file' | ''; operation: SocketOperation} >) => void: callback(permissions: Record<string, { type: 'object' | 'state' | 'users' | 'other' | 'file' | ''; operation: SocketOperation }>) => void
getUserPermissions(callback)
Get user permissions
callback(error: string | null | undefined, userPermissions?: SocketACL | null) => void) => void: callback(error: string | null | undefined, userPermissions?: SocketACL | null) => void
getVersion(callback)
Get the adapter version. Not the socket-classes version!
callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void: callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void
getAdapterName(callback)
Get adapter name: "iobroker.ws", "iobroker.socketio", "iobroker.web", "iobroker.admin"
callback(error: string | Error | null | undefined, adapterName: string) => void) => void: callback(error: string | Error | null | undefined, version: string | undefined, adapterName: string) => void
clientSubscribe(targetInstance, messageType, data, callback)
Client subscribes to specific instance's messages. Client informs a specific instance about subscription on its messages. After subscription, the socket will receive "im" messages from the desired instance The target instance MUST acknowledge the subscription and return result
targetInstancestring: Instance name, e.g., 'cameras.0'messageTypestring: Message type, e.g., 'startRecording/cam1'dataany: Optional data object, e.g., {width: 640, height: 480}callback(error: string | null | Error | undefined, result?: {accepted: boolean; heartbeat?: number; error?: string}) => void: Callback(error: string | null, result?:{ accepted: boolean; heartbeat?: number; error?: string; }) => void
clientUnsubscribe(targetInstance, messageType, callback)
Client unsubscribes from specific instance's messages. The target instance MUST NOT acknowledge the un-subscription
targetInstancestring: Instance name, e.g., 'cameras.0'messageTypestring: Message type, e.g., 'startRecording/cam1'callback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
getCompactSystemConfig(callback)
Get the system configuration in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, systemConfig?: {common: ioBroker.SystemConfigCommon; native?: {secret: string; vendor?: any}}) => void: - Callback function(error: string | null, systemConfig?: { common: any; native?: { secret: string } }) => void
getAdapterInstances(adapterName, callback)
Read all instances of the given adapter, or all instances of all adapters if adapterName is not defined
adapterNamestring | undefined: adapter name, e.g.history. To get all instances of all adapters, just place here "".callback(error: null | undefined | Error | string, instanceList?: ioBroker.InstanceObject[]) => void) => void: callback(error: null | undefined | Error | string, instanceList?: ioBroker.InstanceObject[]) => void
Admin
getHostByIp(ip, callback?)
Read the host object by IP address.
ipstring: - IP address, e.g.,192.168.1.1. IPv4 or IPv6callback?(error: string | null | Error | undefined, hostObject?: ioBroker.HostObject | null) => void: - Callback function(ip: string, obj: ioBroker.HostObject | null) => void
requireLog(isEnabled, callback?)
Activate or deactivate logging events. Events will be sent to the socket as log events. Adapter must have common.logTransporter = true.
isEnabledboolean: - Is logging enabledcallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
readLogs(host, callback?)
Get the log files from the given host.
hoststring: - Host ID, e.g.,system.host.raspberrypicallback?(error: string | null | Error | undefined, list?: {fileName: string; size: number}[]) => void: - Callback function(error: string | null, list?: { fileName: string; size: number }[]) => void
cmdExec(host, id, cmd, callback?)
Execute the shell command on host/controller.
The following response commands are expected: cmdStdout, cmdStderr, cmdExit.
hoststring: - Host name, e.g.,system.host.raspberrypiidnumber: - Session ID, e.g.,Date.now(). This session ID will come in eventscmdStdout,cmdStderr,cmdExitcmdstring: - Command to executecallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
eventsThreshold(isActive)
Enable or disable the event threshold. Used only for admin to limit the number of events to the front-end.
isActiveboolean: - If true, then events will be limited
getRatings(update, callback?)
Get the ratings of adapters.
updateboolean | ((error: string | null | Error | undefined, ratings?: Ratings) => void): - If true, the ratings will be read from the central server, if false from the local cachecallback?(error: string | null | Error | undefined, ratings?: Ratings) => void: - Callback function(error: string | null, ratings?: Ratings) => void
getCurrentInstance(callback)
Get the current instance name, like "admin.0"
callback(error: string | null | Error | undefined, namespace: string) => void) => void: - Callback function(error: string | null, namespace?: string) => void
decrypt(encryptedText, callback)
Decrypts text with the system secret key.
encryptedTextstring: - Encrypted textcallback(error: string | null | Error | undefined, decryptedText?: string) => void) => void: - Callback function(error: string | null, decryptedText?: string) => void
encrypt(plainText, callback)
Encrypts text with the system secret key.
plainTextstring: - Plain text to encryptcallback(error: string | null | Error | undefined, encryptedText?: string) => void) => void: - Callback function(error: string | null, encryptedText?: string) => void
getIsEasyModeStrict(callback)
Get if the admin has easy mode enabled.
callback(error: string | null | Error | undefined, isEasyModeStrict?: boolean) => void) => void: - Callback function(error: string | null, isEasyModeStrict?: boolean) => void
getEasyMode(callback)
Get easy mode configuration.
callback(error: string | null | Error | undefined, easyModeConfig?: {strict: boolean; configs: InstanceConfig[]}) => void: - Callback function(error: string | null, easyModeConfig?: { strict: boolean; configs: InstanceConfig[] }) => void
getAdapters(adapterName, callback)
Get all adapter as objects.
adapterNamestring: - Optional adapter namecallback(error: string | null | Error | undefined, result?: ioBroker.AdapterObject[]) => void) => void: - Callback function(error: string | null, results?: ioBroker.Object[]) => void
updateLicenses(login, password, callback)
Read software licenses (vis, knx, ...) from ioBroker.net cloud for given user
loginstring: - Cloud loginpasswordstring: - Cloud passwordcallback(error: string | null | Error | undefined, result?: License[]) => void) => void: - Callback function(error: string | null, results?: License[]) => void
getCompactInstances(callback)
Get all instances in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, result?: Record<string, CompactInstanceInfo>) => void) => void: - Callback function(error: string | null, results?: Record<string, { adminTab: boolean; name: string; icon: string; enabled: boolean }>) => void
getCompactAdapters(callback)
Get all adapters in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, result?: Record<string, CompactAdapterInfo>) => void) => void: - Callback function(error: string | null, results?: Record<string, { icon: string; v: string; iv: string }>) => void
getCompactInstalled(host, callback)
Get all installed adapters in a compact form to save bandwidth.
hoststring: - Host name, e.g.,system.host.raspberrypicallback(result?: Record<string, {version: string}>) => void) => void: - Callback function(error: string | null, results?: Record<string, { version: string }>) => void
getCompactSystemRepositories(callback)
Get system repositories in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, systemRepositories?: CompactSystemRepository) => void) => void: - Callback function(error: string | null, systemRepositories?: { common: any; native?: { repositories: Record<string, { json: { _repoInfo: any } } } }) => void
getCompactRepository(host, callback)
Get the repository in a compact form to save bandwidth.
hoststring: - Host name, e.g.,system.host.raspberrypicallback(result: Record<string, {version: string; icon?: string}>) => void) => void: - Callback function(error: string | null, results?: Record<string, { version: string; icon?: string }>) => void
getCompactHosts(callback)
Get all hosts in a compact form to save bandwidth.
callback(error: string | null | Error | undefined, hosts?: CompactHost[]) => void) => void: - Callback function(error: string | null, results?: Record<string, { common: { name: string; icon: string; color: string; installedVersion: string }; native: { hardware: { networkInterfaces: any[] } } }>) => void
States
delState(id, callback?)
Delete a state. The corresponding object will be deleted too.
idstring: - State IDcallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
getStates(pattern, callback)
Get states by pattern of current adapter
patternstring | string[] | undefined: optional pattern, likesystem.adapter.*or array of state IDs. If the pattern is omitted, you will get ALL states of current adaptercallback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void) => void: callback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void
getForeignStates(pattern, callback)
Same as getStates
patternstring | string[]: pattern likesystem.adapter.*or array of state IDscallback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void) => void: callback(error: null | undefined | Error | string, states?: Record<string, ioBroker.State>) => void
getState(id, callback)
Get a state by ID
idstring: State ID, e.g.system.adapter.admin.0.memRsscallback(error: null | undefined | Error | string, state?: ioBroker.State) => void) => void: Callback(error: null | undefined | Error | string, state?: ioBroker.State) => void
setState(id, state, callback)
Set a state by ID
idstring: State ID, e.g.system.adapter.admin.0.memRssstateioBroker.SettableState: State value or object, e.g.{val: 123, ack: true}callback(error: null | undefined | Error | string, state?: ioBroker.State) => void) => void: Callback(error: null | undefined | Error | string, state?: ioBroker.State) => void
getBinaryState(id, callback)
Get a binary state by ID
idstring: State ID, e.g.javascript.0.binarycallback(error: null | undefined | Error | string, base64?: string) => void) => void: Callback(error: null | undefined | Error | string, base64?: string) => void
setBinaryState(id, _base64, callback)
Set a binary state by ID
idstring: State ID, e.g.javascript.0.binary_base64string: State value as base64 string. Binary states have no acknowledged flag.callback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
subscribe(pattern, callback)
Subscribe to state changes by pattern. The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
subscribeStates(pattern, callback)
Subscribe to state changes by pattern. Same as subscribe.
The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
unsubscribe(pattern, callback)
Unsubscribe from state changes by pattern.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
unsubscribeStates(pattern, callback)
Unsubscribe from state changes by pattern. Same as unsubscribe.
The events will come as 'stateChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of states like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null) => void) => void: Callback(error: string | null) => void
Users
addUser(user, pass, callback?)
Add a new user.
userstring: - User name, e.g.,benjaminpassstring: - User passwordcallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
delUser(user, callback?)
Delete an existing user. Admin cannot be deleted.
userstring: - User name, e.g.,benjamincallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
addGroup(group, desc, acl, callback?)
Add a new group.
groupstring: - Group name, e.g.,usersdescioBroker.StringOrTranslated | null: - Optional descriptionaclOmit<ioBroker.PermissionSet, 'user' | 'groups'> | null: - Optional access control list object, e.g.,{"object":{"list":true,"read":true,"write":false,"delete":false},"state":{"list":true,"read":true,"write":true,"create":true,"delete":false},"users":{"list":true,"read":true,"write":false,"create":false,"delete":false},"other":{"execute":false,"http":true,"sendto":false},"file":{"list":true,"read":true,"write":false,"create":false,"delete":false}}callback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
delGroup(group, callback?)
Delete an existing group. Administrator group cannot be deleted.
groupstring: - Group name, e.g.,userscallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
changePassword(user, pass, callback?)
Change user password.
userstring: - User name, e.g.,benjaminpassstring: - New passwordcallback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
Objects
getObject(id, callback)
Get one object.
idstring: Object IDcallback(error: Error | undefined | string | null, obj?: ioBroker.Object) => void) => void: Callback(error: string | null, obj?: ioBroker.Object) => void
getObjects(list, callback)
Get all objects that are relevant for the web: all states and enums with rooms. This is a non-admin version of "all objects" and will be overloaded in admin
liststring[] | null: Optional list of IDscallback(error: Error | undefined | string | null, objs?: Record<string, ioBroker.Object>) => void) => void: Callback(error: string | null, objs?: Record<string, ioBroker.Object>) => void
getAllObjects(callback)
Get all objects that are relevant for the web: all states and enums with rooms.
callback(error: null | undefined | Error | string, result?: Record<string, ioBroker.Object>) => void) => void: - Callback function(error: string | null, objects?: Record<string, ioBroker.Object>) => void
subscribeObjects(pattern, callback)
Subscribe to object changes by pattern. The events will come as 'objectChange' events to the socket.
patternstring | string[]: Pattern likesystem.adapter.*or array of IDs like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: Error | undefined | string | null) => void) => void: Callback(error: string | null) => void
unsubscribeObjects(pattern, callback)
Unsubscribe from object changes by pattern.
patternstring | string[]: Pattern likesystem.adapter.*or array of IDs like['system.adapter.admin.0.memRss', 'system.adapter.admin.0.memHeapTotal']callback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
getObjectView(design, search, params, callback)
Get a view of objects. Make a query to the object database.
designstring: Design name, e.g., 'system' or other designs likecustom, but it must exist object_design/custom. To 99,9% usesystem.searchstring: Search name, object type, likestate,instance,adapter,host, ...params{startkey?: string; endkey?: string; depth?: number}: Parameters for the query, e.g.,{startkey: 'system.adapter.', endkey: 'system.adapter.\u9999', depth?: number}callback(error: string | null | Error | undefined, result?: {rows: {id: string; value: ioBroker.Object & {virtual: boolean; hasChildren: number;};}[];}) => void: Callback(error: string | null, result?: { rows: Array<GetObjectViewItem> }) => void
setObject(id, obj, callback)
Set an object.
idstring: Object IDobjioBroker.Object: Object to setcallback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
delObject(id, _options, callback)
Delete an object. Only deletion of flot and fullcalendar objects is allowed
idstring: Object ID, like 'flot.0.myChart'_optionsany: Options for deletion. Ignoredcallback(error: string | null | Error | undefined) => void) => void: Callback(error: string | null) => void
extendObject(id, obj, callback?)
Extend the existing object.
idstring: - Object IDobjPartial<ioBroker.Object>: - New parts of the object, e.g.,{common: {name: 'new name'}}callback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
getForeignObjects(pattern, type, callback?)
Read objects by pattern.
patternstring: - Pattern likesystem.adapter.admin.0.*type* ioBroker.ObjectType | undefined | ((error: string | null | Error | undefined, objects?: Record<string, ioBroker.Object>) => void)*: - Type of objects to delete, likestate,channel,device,host,adapter. Default -statecallback?(error: string | null | Error | undefined, objects?: Record<string, ioBroker.Object>) => void: - Callback function(error: string | null, objects?: Record<string, ioBroker.Object>) => void
delObjects(id, options?, callback?)
Delete an object or objects recursively.
Objects with dontDelete cannot be deleted.
Same as delObject but with recursive: true.
idstring: - Object ID, like 'adapterName.0.channel'options?ioBroker.DelObjectOptions | ((error: string | null | Error | undefined) => void) | null: - Options for deletion.callback?(error: string | null | Error | undefined) => void: - Callback function(error: string | null) => void
Files
readFile(adapter, fileName, callback)
Read a file from ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, data: Buffer | string, mimeType: string) => void) => void: Callback(error: null | undefined | Error | string, data: Buffer | string, mimeType: string) => void
readFile64(adapter, fileName, callback)
Read a file from ioBroker DB as base64 string
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, base64?: string, mimeType?: string) => void) => void: Callback(error: null | undefined | Error | string, base64: string, mimeType: string) => void
writeFile64(adapter, fileName, data64, options, callback?)
Write a file into ioBroker DB as base64 string
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsondata64string: file content as base64 stringoptions{mode?: number} | ((error: null | undefined | Error | string) => void): optional{mode: 0x0644}callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
writeFile(adapter, fileName, data, options, callback?)
Write a file into ioBroker DB as text This function is overloaded in admin (because admin accepts only base64)
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsondatastring: file content as textoptions{mode?: number} | ((error: null | undefined | Error | string) => void): optional{mode: 0x0644}callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
unlink(adapter, name, callback)
Delete a file in ioBroker DB
adapterstring: instance name, e.g.vis.0namestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
deleteFile(adapter, name, callback)
Delete a file in ioBroker DB (same as "unlink", but only for files)
adapterstring: instance name, e.g.vis.0namestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
deleteFolder(adapter, name, callback)
Delete folder in ioBroker DB (same as unlink, but only for folders)
adapterstring: instance name, e.g.vis.0namestring: folder name, e.g.maincallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
renameFile(adapter, oldName, newName, callback)
Rename a file in ioBroker DB
adapterstring: instance name, e.g.vis.0oldNamestring: current file name, e.g.main/vis-views.jsonnewNamestring: new file name, e.g.main/vis-views-new.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
rename(adapter, oldName, newName, callback)
Rename file or folder in ioBroker DB
adapterstring: instance name, e.g.vis.0oldNamestring: current file name, e.g.main/vis-views.jsonnewNamestring: new file name, e.g.main/vis-views-new.jsoncallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
mkdir(adapter, dirName, callback)
Create a folder in ioBroker DB
adapterstring: instance name, e.g.vis.0dirNamestring: desired folder name, e.g.maincallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
readDir(adapter, dirName, options, callback?)
Read the content of the folder in ioBroker DB
adapterstring: instance name, e.g.vis.0dirNamestring: folder name, e.g.mainoptionsobject | ((error: null | undefined | Error | string, files: ioBroker.ReadDirResult[]) => void): for future usecallback?(error: null | undefined | Error | string, files: ioBroker.ReadDirResult[]) => void: Callback(error: null | undefined | Error | string, files: Array<{file: string, isDir: boolean, stats: {size: number}, modifiedAt: number, acl: {owner: string, ownerGroup: string, permissions: number, read: boolean, write: boolean}}>) => void
chmodFile(adapter, fileName, options, callback?)
Change a file mode in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsonoptions{mode?: number}: options{mode: 0x644}callback?(error: string | Error | null | undefined) => void: Callback(error: string | Error | null | undefined) => void
chownFile(adapter, fileName, options, callback?)
Change file owner in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsonoptions{owner:system.user.${string}; ownerGroup?:system.group.${string}}: options{owner: 'system.user.user', ownerGroup: 'system.group.administrator'}orsystem.user.user. If ownerGroup is not defined, it will be taken from an owner.callback?(error: null | undefined | Error | string) => void: Callback(error: null | undefined | Error | string) => void
fileExists(adapter, fileName, callback)
Check if the file or folder exists in ioBroker DB
adapterstring: instance name, e.g.vis.0fileNamestring: file name, e.g.main/vis-views.jsoncallback(error: null | undefined | Error | string, exists?: boolean) => void) => void: Callback(error: null | undefined | Error | string, exists?: boolean) => void
subscribeFiles(id, pattern, callback)
Subscribe to file changes in ioBroker DB
idstring: instance name, e.g.vis.0or any object ID of typemeta.idcould have wildcards*too.patternstring | string[]: file name pattern, e.g.main/*.jsonor array of namescallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
unsubscribeFiles(id, pattern, callback)
Unsubscribe from file changes in ioBroker DB
idstring: instance name, e.g.vis.0or any object ID of typemeta.idcould have wildcards*too.patternstring | string[]: file name pattern, e.g.main/*.jsonor array of namescallback(error: null | undefined | Error | string) => void) => void: Callback(error: null | undefined | Error | string) => void
