@startuml
participant Physical
participant Logical
participant Remote

group Asynchronous update
    Physical -> Logical: Notify changed
    Logical -> Remote: Send event
end

group Timed update
    Logical -> Logical: Timed check
    Logical -> Physical: Request value
    Physical -> Logical: Respond
    Logical --> Remote: Send event if changed
end

group Request update
    Remote -> Logical: Request value
    Logical --> Physical: Request if needed
    Physical --> Logical: Respond
    Logical -> Remote: Force send event
end

@enduml