UNPKG

domotz-remote-pawn

Version:

Domotz Agent

74 lines (64 loc) 2.53 kB
/** This file is part of Domotz Agent. * Copyright (C) 2016 Domotz Ltd * * Domotz Agent is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Domotz Agent is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>. * * * Sends an heartbeat signal to the engine, in order to keep 'ONLINE' the agent's status * Created by Iacopo Papalini <iacopo@domotz.com> on 22/07/15. */ var counter = 50; var numberOfHeartBeatCyclesInLowThrottle = 60; var heartBeat = function (resourceLocator) { var myConsole = resourceLocator.log.decorateLogs(); var status = resourceLocator.status; var diagnostic = resourceLocator.diagnostic; var platform = resourceLocator.utils.platform; if (!status.canExecuteEventHandler()) { myConsole.info("Pawn in restricted or updating mode. Won't send heartbeat"); return; } counter++; var lowThrottleMode = resourceLocator.settingsManager.isLowThrottleMode(); var heartbeatRequest = resourceLocator.heartbeatRequest; var sideEffects = 'status-update'; if (lowThrottleMode && counter !== numberOfHeartBeatCyclesInLowThrottle) { sideEffects = 'none'; } if (counter === numberOfHeartBeatCyclesInLowThrottle) { counter = 0; } var discoveryDiagnostic = '&i=' + diagnostic.getDiscoveryIterationCounter() + '&a=' + diagnostic.getActualDiscoveryCounter() + '&m=' + diagnostic.getMissedDiscoveryCounter() + '&c=' + diagnostic.getCPU() + '&r=' + diagnostic.getMem() + '&u=' + diagnostic.getUptime() + '&l=' + diagnostic.getLoadAvg() + '&n=' + diagnostic.getNumberOfCPUs() + '&p=' + platform.getFullPlatformID(); myConsole.info('Sending heartbeat to engine side effects=%s, diagnostic=', sideEffects, discoveryDiagnostic); heartbeatRequest.send('/heartbeat?side-effects=' + sideEffects + discoveryDiagnostic, 'POST', null); }; module.exports.handler = heartBeat;