Our example model is static, as we mentioned before. We will not support editing of nodes:
public DateTime LastChanged => DateTime.MinValue;
Our sensor will always be readable and never controllable. While the ISensor and IActuator interfaces define the methods for these actions, a class implementing the ISensor interface, for example, might not always be readable. It might depend on settings or timing:
public bool IsReadable => true; public bool IsControllable => false;
Our nodes will not define any commands either:
public bool HasCommands => false; public Task<IEnumerable<ICommand>> Commands => null;
We need to define a localizable human-readable name for the node class:
public Task<string> GetTypeNameAsync(Language ...