public override void StopPlugin() { base.StopPlugin(); adapter.Dispose(); adapter = null; }
public override void InitPlugin() { //Debugger.Launch(); base.InitPlugin(); adapter = new OneWireAdapter(OneWireAdapterConfiguration.Default); oneWireSensorTypes = GetSensorsTypes(); }
private string ProcessWriteDataRequest(Request.WriteDataRequest writeData) { if (!_devices.ContainsKey(writeData.Id)) { Logger.Logger.Log("WriteDataRequest on unknown device {0}", writeData.Id); return(""); } OneWireAdapter.beginExclusive(true); DoWriteDeviceData(writeData); OneWireAdapter.endExclusive(); return(JsonConvert.SerializeObject(new WriteAckAnswer { Ack = true })); }
private string ProcessReadChanelsNbRequest(Request.ReadNbChanelsRequest readData) { if (!_devices.ContainsKey(readData.Id)) { Logger.Logger.Log("ReadChanelsNbRequest on unknown device {0}", readData.Id); return(JsonConvert.SerializeObject(new InvalidRequestAnswer { InvalidRequestReason = "UnknownDevice" })); } OneWireAdapter.beginExclusive(true); var answer = DoReadDeviceChanelsNb(readData); OneWireAdapter.endExclusive(); return(JsonConvert.SerializeObject(answer)); }
private string ProcessGetDevicesRequest() { // Search for all 1-wire devices OneWireAdapter.beginExclusive(true); var devices = OneWireAdapter.getAllDeviceContainers(); OneWireAdapter.endExclusive(); // Rebuild internal devices list _devices = new Dictionary <string, Device>(); while (devices.hasMoreElements()) { var dev = ConvertDevice((OneWireContainer)devices.nextElement()); _devices[dev.Id] = dev; } // Build answer var answer = new GetDevicesAnswer { Devices = new List <Device>(_devices.Values) }; return(JsonConvert.SerializeObject(answer)); }
private object DoReadDeviceChanelsNb(Request.ReadNbChanelsRequest readData) { var device = OneWireAdapter.getDeviceContainer(_devices[readData.Id].FullId); if (!device.isPresent()) { Logger.Logger.Log("ReadChanelsNbRequest, selected device ({0}) is no longer present", readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "DeviceNotPresent" }); } var switchDevice = device as SwitchContainer; if (switchDevice != null) { var rawData = switchDevice.readDevice(); return(new ReadNbChanelsAnswer { ChanelsNb = switchDevice.getNumberChannels(rawData) }); } var adDevice = device as ADContainer; if (adDevice != null) { adDevice.readDevice(); return(new ReadNbChanelsAnswer { ChanelsNb = adDevice.getNumberADChannels() }); } Logger.Logger.Log("ReadDeviceChanelsNb, type {0} for selected device ({1}) is not supported", device.GetType(), readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "TryToReadChanelsNbUnsupportedDevice" }); }
private void DoWriteDeviceData(Request.WriteDataRequest writeData) { var device = OneWireAdapter.getDeviceContainer(_devices[writeData.Id].FullId); if (!device.isPresent()) { Logger.Logger.Log("WriteDataRequest, selected device ({0}) is no longer present", writeData.Id); return; } var switchDevice = device as SwitchContainer; if (switchDevice != null) { var rawData = switchDevice.readDevice(); if (writeData.Unit >= switchDevice.getNumberChannels(rawData)) { Logger.Logger.Log("WriteDataRequest, invalid unit number ({0}) for selected device ({1})", writeData.Unit, writeData.Id); return; } switchDevice.setLatchState((int)writeData.Unit, writeData.Value, false, rawData); switchDevice.writeDevice(rawData); } }
private object DoReadDeviceData(Request.ReadDataRequest readData) { var device = OneWireAdapter.getDeviceContainer(_devices[readData.Id].FullId); if (!device.isPresent()) { Logger.Logger.Log("ReadDataRequest, selected device ({0}) is no longer present", readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "DeviceNotPresent" }); } var switchDevice = device as SwitchContainer; if (switchDevice != null) { var rawData = switchDevice.readDevice(); if (!switchDevice.hasLevelSensing()) { Logger.Logger.Log("ReadDataRequest, selected device ({0}) has no level sensing", readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "TryToReadIoDeviceWithoutLevelSensing" }); } if (readData.Unit >= switchDevice.getNumberChannels(rawData)) { Logger.Logger.Log("ReadDataRequest, invalid unit number ({0}) for selected device ({1})", readData.Unit, readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "IoDeviceReadWithUnitNumberOutOfRange" }); } return(new ReadDataAnswer { DigitalIo = switchDevice.getLevel((int)readData.Unit, rawData) }); } var temperatureDevice = device as TemperatureContainer; if (temperatureDevice != null) { var rawData = temperatureDevice.readDevice(); temperatureDevice.doTemperatureConvert(rawData); rawData = temperatureDevice.readDevice(); return(new ReadDataAnswer { Temperature = (float)temperatureDevice.getTemperature(rawData) }); } var humidityDevice = device as HumidityContainer; if (humidityDevice != null) { var rawData = humidityDevice.readDevice(); return(new ReadDataAnswer { Humidity = (float)humidityDevice.getHumidity(rawData) }); } var potentiometerDevice = device as PotentiometerContainer; if (potentiometerDevice != null) { potentiometerDevice.readDevice(); return(new ReadDataAnswer { Voltage = potentiometerDevice.getWiperPosition() }); } var adDevice = device as ADContainer; if (adDevice != null) { var rawData = adDevice.readDevice(); if (readData.Unit >= adDevice.getNumberADChannels()) { Logger.Logger.Log("ReadDataRequest, invalid unit number ({0}) for selected device ({1})", readData.Unit, readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "AdDeviceReadWithUnitNumberOutOfRange" }); } return(new ReadDataAnswer { Voltage = (int)(adDevice.getADVoltage((int)readData.Unit, rawData) * 1000) }); } Logger.Logger.Log("ReadDataRequest, type {0} for selected device ({1}) is not supported", device.GetType(), readData.Id); return(new InvalidRequestAnswer { InvalidRequestReason = "TryToReadUnsupportedDevice" }); }
protected TemperatureSensorBase(byte[] address, OneWireAdapter adapter) : base(address, adapter) { }
public SensorDS18B20(byte[] address, OneWireAdapter adapter) : base(address, adapter) { }
public OneWireDevice(byte[] address, OneWireAdapter adapter) { Address = address; Adapter = adapter; }