Core: + Messaging envelopes
Core: ~ Model (+ Sensor)
Core: + ISensor, + SensorBase
Core.Model: + Temperature, ~ FbDbStructure
Core.Sensors: + TemperatureSensor, + TemperatureDto (in homepoint.Dto PCL), ~ ISensor, SensorBase (implements IDisposable), + RoutingTools, +Test
Core.Sensors: ~ SensorBase (added wrappers for Pub/Sub)
Core.Sensors: RequestEnvelope=>ActionEnvelope, ~ TemperatureSensor (added subscription for the messaging update action)
Core.Messaging: ResponseEnvelope=>NotificationEnvelope, ~TemperatureSensor, ~TemperatureSensorTest
Core.Models: +RelayState, ~FbDbStructure.sql
Core.Sensors: + RelaySensor, Dto: + RelayAction, + RelayDto, + Test
Tests.Core.Sensors: refactoring, + SensorMockingHelper
Tests.Core.Sensors: ~ SensorBaseTests (covered all methods, including protected)
Fx: + DisposableBase (has collection of IDisposable and disposes them on Dispose call), Core.Sensors: ~ SensorBase (inherits from DisposableBase)
Dto: TemperatureDto=>TemperatureValue, RelayDto=>RelayValue
Core.Sensors: + IUpdatableSensor (represents that sensor can update themself), ~ RelaySensor ~ TemperatureSensor (inherit from IUpdatableSensor) , Dto: + UpdateAction
Fx: + CallbackWaiter (for waiting result marked by unique key with exceution timeout)
Core.Messaging: ~ EnvelopeBase (added SessionId), + BusToolsExtensions (added pub/sub extensions for ISesnor),
Core.Sensors: ~ SensorBase (reduction, pub/sub=>extensions, Create*Envelop=>extensions, Route/AdapterRoute=>extensions, +CallbackWaiter), + SensorToolsExtensions (added Create*Envelop<T>)
Core.Sensors: ~ TemperatureSensor (implements IUpdatableSensor, UpdateAsync waiting the result of  the subscription, refactoring according to SensorBase)
Core.Sensors: ~ RelaySensor (implements IUpdatableSensor, UpdateAsync, TurnOn, TurnOff, Switch waiting the result of  the subscription, refactoring according to SensorBase)