value: function(opts, datahandler) { let handle = 0; let board = opts.board || five.Board.mount(); let unitName = opts.custom.unit || "MCP9808:0"; let openFlags = opts.custom.flags || 1; let openOpts = opts.custom.opts || 0; let freq = opts.freq || 250; let proxyRDD = new RDD.RemoteDeviceDriver({board: board}); log.debug(`RemoteDeviceDriver is created.`); let api = new API.MCP9808API({driver : proxyRDD}); log.debug(`MCP9808API is created.`); let seq = new Sequencer(api,["open", "read", "write", "close", "read-continuous"],{}); log.debug(`Sequencer is created.`); seq.on("error", (apiError) => { log.error(`Error ${RDD.SC[apiError.status].sym} (${apiError.status}) ${RDD.SC[apiError.status].msg}.`); }); seq.on("done", (apiResult) => { log.debug(`Initialization steps completed.`); }); api.on("read-continuous", (apiResult) => { log.trace(`${unitName} says temp is ${apiResult.C}°C, ${apiResult.F}°F, ${apiResult.K}°K.`); datahandler(apiResult.C); }); let step = [ (apiResult) => { log.debug(`Begin MCP9808 controller initialization processing.`); api.open(unitName,RDD.DAF.FORCE,0); }, (apiResult) => { log.trace(`Opened ${apiResult.unitName} with handle ${apiResult.handle}.`); handle = apiResult.handle; api.setHighPower(handle); }, (apiResult) => { log.trace(`High power (continuous conversion) set.`); api.setIntervals(handle,null,freq); }, (apiResult) => { log.trace(`Report interval has been set.`); api.readContinuousTempC(handle); }, (apiResult) => { log.debug(`Continuous temperature reading started.`); } ]; seq.start(step); }