Class AbstractVelbusProtocol<S extends AbstractVelbusProtocol<S,T>,T extends VelbusAgent<T,S>>

java.lang.Object
org.openremote.agent.protocol.AbstractProtocol<T,VelbusAgentLink>
org.openremote.agent.protocol.velbus.AbstractVelbusProtocol<S,T>
All Implemented Interfaces:
org.openremote.model.asset.agent.Protocol<T>, org.openremote.model.protocol.ProtocolAssetImport
Direct Known Subclasses:
VelbusSerialProtocol, VelbusTCPProtocol

public abstract class AbstractVelbusProtocol<S extends AbstractVelbusProtocol<S,T>,T extends VelbusAgent<T,S>> extends AbstractProtocol<T,VelbusAgentLink> implements org.openremote.model.protocol.ProtocolAssetImport
  • Field Details

    • DEFAULT_TIME_INJECTION_INTERVAL_SECONDS

      public static final int DEFAULT_TIME_INJECTION_INTERVAL_SECONDS
      See Also:
    • LOG

      public static final Logger LOG
    • network

      protected VelbusNetwork network
    • attributePropertyValueConsumers

      protected final Map<org.openremote.model.attribute.AttributeRef,Consumer<Object>> attributePropertyValueConsumers
  • Constructor Details

    • AbstractVelbusProtocol

      protected AbstractVelbusProtocol(T agent)
  • Method Details

    • getProtocolInstanceUri

      public String getProtocolInstanceUri()
      Description copied from interface: org.openremote.model.asset.agent.Protocol
      Get a URI that describes this specific protocol instance
      Specified by:
      getProtocolInstanceUri in interface org.openremote.model.asset.agent.Protocol<S extends AbstractVelbusProtocol<S,T>>
    • doStart

      protected void doStart(org.openremote.model.Container container) throws Exception
      Description copied from class: AbstractProtocol
      Start this protocol instance
      Specified by:
      doStart in class AbstractProtocol<T extends VelbusAgent<T,S>,VelbusAgentLink>
      Throws:
      Exception
    • doStop

      protected void doStop(org.openremote.model.Container container) throws Exception
      Description copied from class: AbstractProtocol
      Stop this protocol instance
      Specified by:
      doStop in class AbstractProtocol<T extends VelbusAgent<T,S>,VelbusAgentLink>
      Throws:
      Exception
    • doLinkAttribute

      protected void doLinkAttribute(String assetId, org.openremote.model.attribute.Attribute<?> attribute, VelbusAgentLink agentLink)
      Description copied from class: AbstractProtocol
      Link an Attribute to its linked Agent.
      Specified by:
      doLinkAttribute in class AbstractProtocol<T extends VelbusAgent<T,S>,VelbusAgentLink>
    • doUnlinkAttribute

      protected void doUnlinkAttribute(String assetId, org.openremote.model.attribute.Attribute<?> attribute, VelbusAgentLink agentLink)
      Description copied from class: AbstractProtocol
      Unlink an Attribute from its linked Agent.
      Specified by:
      doUnlinkAttribute in class AbstractProtocol<T extends VelbusAgent<T,S>,VelbusAgentLink>
    • doLinkedAttributeWrite

      protected void doLinkedAttributeWrite(VelbusAgentLink agentLink, org.openremote.model.attribute.AttributeEvent event, Object processedValue)
      Description copied from class: AbstractProtocol
      An Attribute event (write) has been requested for an attribute linked to this protocol. The processedValue is the resulting value after applying standard outbound value processing (see ProtocolUtil.doOutboundValueProcessing(org.openremote.model.attribute.AttributeRef, org.openremote.model.asset.agent.AgentLink<?>, java.lang.Object, boolean, java.time.Instant)). Protocol implementations should generally use the processedValue but may also choose to use the original value for some purpose if required.
      Specified by:
      doLinkedAttributeWrite in class AbstractProtocol<T extends VelbusAgent<T,S>,VelbusAgentLink>
    • createIoClient

      protected abstract IOClient<VelbusPacket> createIoClient(T agent) throws RuntimeException
      Should return an instance of IOClient for the supplied agent
      Throws:
      RuntimeException
    • startAssetImport

      public Future<Void> startAssetImport(byte[] fileData, Consumer<org.openremote.model.asset.AssetTreeNode[]> assetConsumer)
      Description copied from interface: org.openremote.model.protocol.ProtocolAssetImport
      Start the process asynchronously; the implementation can make as many calls as it desires to the assetConsumer with the found assets; when the implementation has finished then the returned future will become Future.isDone(). The callee can also cancel the future at any time. If for some reason the process cannot be started or encounters an error then this method should log more details before completing the future.
      Specified by:
      startAssetImport in interface org.openremote.model.protocol.ProtocolAssetImport