@iobroker/socket-classes
June 20, 2026 ยท View on GitHub
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, files?, 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 executefiles?CommandFile[] | ((error: string | null | Error | undefined) => void): - Optional files to send with the command (base64 encoded). The command can refer to them just by name. Requires controller featureCONTROLLER_CMD_EXEC_FILES.callback?(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
2.3.6 (2026-06-20)
- (@GermanBluefox) Updated packages
- (@GermanBluefox) Corrected type
2.3.4 (2026-06-08)
- (@GermanBluefox) Extended cmdExec with files
- (@GermanBluefox) Migrated to TS 6
2.3.2 (2026-04-17)
- (@GermanBluefox) Implement
getAllObjectsin common commands. Made it available in web and admin. But they are different in admin and web
2.3.1 (2026-04-12)
- (@GermanBluefox) Moved
getCompactSystemConfigto common commands. Made it available in web and admin. - (@Marc-Berg) Emit tokenInfo event with exp on socket connection
2.2.21 (2026-01-25)
- (@Copilot) Added a missing return statement for Bearer token auth
2.2.20 (2025-07-22)
- (@GermanBluefox) Fixed change of the language in the admin
2.2.19 (2025-06-21)
- (@GermanBluefox) Added an option to disable filling of
info.connected
2.2.18 (2025-04-29)
- (@GermanBluefox) Send
reauthenticatecommand if token expired
2.2.16 (2025-04-27)
- (@GermanBluefox) Typing improvement
2.2.12 (2025-04-16)
- (@GermanBluefox) Make secret optional for cloud usage
2.2.11 (2025-04-15)
- (@GermanBluefox) Make objects optional for
SocketAdmin
2.2.9 (2025-04-15)
- (@GermanBluefox) Removed debug text
2.2.8 (2025-04-11)
- (@GermanBluefox) Deliver vendor information in
getCompactSystemConfigcommand
2.2.7 (2025-04-01)
- (@GermanBluefox) Changed the order of authentications. Basic authentication will be checked as the last one.
- (@GermanBluefox) Added the setting to disable basic authentication
2.2.2 (2025-03-29)
- (@GermanBluefox) Corrected functionality as a client
2.2.1 (2025-03-25)
- (@GermanBluefox) Allowed the authentication by token in the query
2.2.0 (2025-03-04)
- (@GermanBluefox) Removed debug text
- (@GermanBluefox) Moved to TypeScript 5.8
2.1.17 (2025-03-03)
- (@GermanBluefox) Corrected the user's right check
2.1.16 (2025-02-28)
- (@GermanBluefox) Added logout with bearer token
2.1.12 (2025-02-26)
- (@GermanBluefox) Added login with a token in the query or as bearer token
2.1.7 (2025-02-23)
- (@GermanBluefox) Added support for OAuth2 authentication
2.0.12 (2025-02-11)
- (@GermanBluefox) Corrected language settings
2.0.11 (2025-02-11)
- (@GermanBluefox) Code migrated to TypeScript
1.6.2 (2024-12-01)
- (@GermanBluefox) Caught the error if no authentication and logout called
1.6.1 (2024-10-05)
- (@GermanBluefox) Added support for iobroker.SocketIO with TypeScript
1.5.6 (2024-06-26)
- (@GermanBluefox) Corrected call of getObjectView with null parameter
1.5.5 (2024-06-26)
- (@GermanBluefox) updated packages
1.5.4 (2024-06-02)
- (@GermanBluefox) extend
getCompactInstancesmethod with version information
1.5.2 (2024-05-28)
- (foxriver76) ensure compatible
adapter-coreversion
1.5.0 (2024-02-22)
- (@GermanBluefox) Extended getObjects function with the possibility to read the list of IDs in admin
1.4.6 (2023-10-19)
- (@GermanBluefox) Added
publishInstanceMessageAllcommand
1.4.4 (2023-10-11)
- (@GermanBluefox) Caught errors by subscribe/unsubscribe
1.4.3 (2023-10-07)
- (foxriver76) do not await the subscribes anymore
1.4.2 (2023-09-28)
- (@GermanBluefox) Corrected error by unsubscribing on client disconnect
1.4.1 (2023-09-12)
- (foxriver76) do not cancel follow subscribes if one subscribe has an error
1.4.0 (2023-09-11)
- (foxriver76) fixed crash on invalid patterns with js-controller version 5
1.3.3 (2023-08-01)
- (@GermanBluefox) Implemented subscribing of a client on messages from a specific instance
- (@GermanBluefox) Moved checkFeatureSupported to regular connection and not only admin
1.2.0 (2023-07-07)
- (foxriver76) fixed crash on invalid patterns with js-controller version 5
- (@GermanBluefox) extended the getObjects function with the possibility to read the list of IDs
1.1.5 (2023-03-13)
- (@GermanBluefox) Added command
name
1.1.3 (2023-03-12)
- (@GermanBluefox) Treat
json5asjson
1.1.2 (2023-03-03)
- (@GermanBluefox) Allow deletion of fullcalendar objects
1.1.1 (2022-12-22)
- (@GermanBluefox) Corrected error with subscription
1.1.0 (2022-12-22)
- (@GermanBluefox) Added user check to many commands
- (@GermanBluefox) Downgrade axios to 0.27.2
1.0.2 (2022-11-08)
- (@GermanBluefox) Function
getObjectsfor web was extended by devices, channels and enums
1.0.1 (2022-10-10)
- (@GermanBluefox) Fixed error with delObject
0.5.5 (2022-10-09)
- (Apollon77) Prepare for future js-controller versions
0.5.4 (2022-09-23)
- (@GermanBluefox) Fixed error in
delObjectsmethod
0.5.3 (2022-08-24)
- (@GermanBluefox) Caught error by subscribing
0.5.2 (2022-08-19)
- (@GermanBluefox) Added command
getCompactSystemRepositories
0.5.0 (2022-07-20)
- (@GermanBluefox) Buffer conversion errors caught and handled
0.4.12 (2022-07-08)
- (@GermanBluefox) Corrected getAdapterInstances method
0.4.11 (2022-07-05)
- (@GermanBluefox) Corrected log transportation
0.4.10 (2022-06-22)
- (@GermanBluefox) Corrected getAdapterInstances
0.4.9 (2022-06-20)
- (@GermanBluefox) Do not show an error with failed authentication
0.4.7 (2022-06-20)
- (@GermanBluefox) Allowed overloading system language
0.4.6 (2022-06-20)
- (@GermanBluefox) updated
passport
0.4.5 (2022-06-20)
- (@GermanBluefox) allowed running socket.io behind reverse proxy
0.4.4 (2022-06-09)
- (@GermanBluefox) Do not show the requireLog message
0.4.3 (2022-06-03)
- (@GermanBluefox) Allowed call of getAdapterInstances for non admin
0.4.2 (2022-05-23)
- (@GermanBluefox) Corrected renameFile command for admin
0.4.1 (2022-05-23)
- (@GermanBluefox) Corrected changePassword command for admin
0.4.0 (2022-05-19)
- (@GermanBluefox) Added support of socket.io 4.x
0.3.2 (2022-05-19)
- (@GermanBluefox) Hide warn messages
0.3.1 (2022-05-16)
- (@GermanBluefox) Added back compatibility with js-controller@4.0 for
writeDirAsZip
0.3.0 (2022-05-16)
- (@GermanBluefox) Process
writeDirAsZiplocally
0.2.1 (2022-05-12)
- (@GermanBluefox) fixed
getObjectscommand
0.2.0 (2022-05-09)
- (@GermanBluefox) fixed
delObjectscommand
0.1.10 (2022-05-09)
- (@GermanBluefox) Added support for fileChanges
0.1.9 (2022-05-07)
- (@GermanBluefox) Corrected readLogs command and implement file subscriptions
0.1.7 (2022-05-05)
- (@GermanBluefox) Caught some sentry errors
0.1.6 (2022-05-05)
- (@GermanBluefox) fixed
delObjectcommand
0.1.5 (2022-04-25)
- (@GermanBluefox) added updateRatings
0.1.4 (2022-04-24)
- (@GermanBluefox) added passportSocket
0.1.2 (2022-04-24)
- (@GermanBluefox) initial commit
License
The MIT License (MIT)
Copyright (c) 2020-2026 @GermanBluefox dogafox@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.