/** * @description Poll a device to get new value. * @param {Object} device - The device which is going to be polled. * @example * poll(device); */ async function poll(device) { logger.debug(`Polling device ${device.selector}`); const service = this.serviceManager.getService(device.service.name); if (service === null) { throw new NotFoundError(`Service ${device.service.name} was not found.`); } if (typeof get(service, 'device.poll') !== 'function') { throw new NotFoundError(`Service ${device.service.name} does not have a device.poll function.`); } try { await service.device.poll(device); } catch (e) { logger.error(`There was an error while polling device ${device.selector}`); logger.error(e); } }
/** * @description Execute a scene by its selector. * @param {string} sceneSelector - The selector of the scene to execute. * @param {Object} [scope] - The scope of the event triggering the scene. * @example * sceneManager.execute('test'); */ function execute(sceneSelector, scope) { try { if (!this.scenes[sceneSelector]) { throw new Error(`Scene with selector ${sceneSelector} not found.`); } this.queue.push(async () => { try { await executeActions(this, this.scenes[sceneSelector].actions, scope); } catch (e) { logger.error(e); } }); } catch (e) { logger.error(e); } return null; }
/** * @public * @description This function sync calendars for all users * @example * gladys.services.caldav.syncAllUsers(); */ async function syncAllUsers() { try { const users = await gladys.user.get(); const service = await gladys.service.getLocalServiceByName('caldav'); await Promise.map( users, async (user) => { const caldavUrl = await gladys.variable.getValue('CALDAV_URL', service.id, user.id); if (caldavUrl) { await calDavHandler.syncUserCalendars(user.id); } return null; }, { concurrency: 2 }, ); } catch (e) { logger.error(e); } }
return weatherFormatted; } catch (e) { logger.error(e); throw new Error400(ERROR_MESSAGES.REQUEST_TO_THIRD_PARTY_FAILED);
}); } catch (e) { logger.error('MQTT broker failed to install as Docker container:', e); this.gladys.event.emit(EVENTS.WEBSOCKET.SEND_ALL, { type: WEBSOCKET_MESSAGE_TYPES.MQTT.INSTALLATION_STATUS,
davCalendars = await this.requestCalendars(xhr, CALDAV_HOME_URL); } catch (e) { logger.error(e); throw new NotFoundError('CALDAV_FAILED_REQUEST_CALENDARS'); eventsToUpdate = await this.requestChanges(xhr, calendarToUpdate); } catch (e) { logger.error(e); throw new NotFoundError('CALDAV_FAILED_REQUEST_CHANGES'); jsonEvents = await this.requestEventsData(xhr, calendarToUpdate.external_id, eventsToUpdate, CALDAV_HOST); } catch (e) { logger.error(e); throw new NotFoundError('CALDAV_FAILED_REQUEST_EVENTS');
/** * @description Poll a device to get new value. * @param {Object} device - The device which is going to be polled. * @example * poll(device); */ async function poll(device) { logger.debug(`Polling device ${device.selector}`); const service = this.serviceManager.getService(device.service.name); if (service === null) { throw new NotFoundError(`Service ${device.service.name} was not found.`); } if (typeof get(service, 'device.poll') !== 'function') { throw new NotFoundError(`Service ${device.service.name} does not have a device.poll function.`); } try { await service.device.poll(device); } catch (e) { logger.error(`There was an error while polling device ${device.selector}`); logger.error(e); } }
/** * @description Execute a scene by its selector. * @param {string} sceneSelector - The selector of the scene to execute. * @param {Object} [scope] - The scope of the event triggering the scene. * @example * sceneManager.execute('test'); */ function execute(sceneSelector, scope) { try { if (!this.scenes[sceneSelector]) { throw new Error(`Scene with selector ${sceneSelector} not found.`); } this.queue.push(async () => { try { await executeActions(this, this.scenes[sceneSelector].actions, scope); } catch (e) { logger.error(e); } }); } catch (e) { logger.error(e); } return null; }
/** * @public * @description This function sync calendars for all users * @example * gladys.services.caldav.syncAllUsers(); */ async function syncAllUsers() { try { const users = await gladys.user.get(); const service = await gladys.service.getLocalServiceByName('caldav'); await Promise.map( users, async (user) => { const caldavUrl = await gladys.variable.getValue('CALDAV_URL', service.id, user.id); if (caldavUrl) { await calDavHandler.syncUserCalendars(user.id); } return null; }, { concurrency: 2 }, ); } catch (e) { logger.error(e); } }
/** * @public * @description This function sync calendars for all users * @example * gladys.services.caldav.syncAllUsers(); */ async function syncAllUsers() { try { const users = await gladys.user.get(); const service = await gladys.service.getLocalServiceByName('caldav'); await Promise.map( users, async (user) => { const caldavUrl = await gladys.variable.getValue('CALDAV_URL', service.id, user.id); if (caldavUrl) { await calDavHandler.syncUserCalendars(user.id); } return null; }, { concurrency: 2 }, ); } catch (e) { logger.error(e); } }
return weatherFormatted; } catch (e) { logger.error(e); throw new Error400(ERROR_MESSAGES.REQUEST_TO_THIRD_PARTY_FAILED);
}); } catch (e) { logger.error('MQTT broker failed to install as Docker container:', e); this.gladys.event.emit(EVENTS.WEBSOCKET.SEND_ALL, { type: WEBSOCKET_MESSAGE_TYPES.MQTT.INSTALLATION_STATUS,