Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagexml
firstline0
titleThingFacet Camera Example
<ThingFacet name="Esky">
      <Sid name="CameraId"/>
      <String name="URL"/>
      <String name="UserName"/>
      <String name="Password"/>
      <String name="State"  KnownBy="SyncImage,SyncPreset"/>
      <String name="Image"  KnownBy="SyncImage"/>
      <String name="Preset" KnownBy="SyncPreset"/>
      <Unique name="Camera" value="URL"/>
      <!-- Helpers -->
      <AA>[:#o#Event.Argument:]</AA>
      <UP>user=[%:[:AA:].UserName.Value:%][%:amp:%]pwd=[%:[:AA:].Password.Value:%]</UP>
      <POK>Invoke/SetPreset/Message/starts-with(Value, 'ok')</POK>
      <IOK>Invoke/GetImage/Message/starts-with(Value, 'data')</IOK>
      <!-- Actions -->
      <Action name="SyncPreset" documentation="Synchronize camera state and preset">
        <Workflow Limit="1" Live="1" Timeout="PT20S">
            <Task name="Main" while="true">
                <Event name="Argument" as="ActionArgument"/>
                <Invoke name="SetPreset" waitFor="Argument" skip-if="[%:[:AA:].Preset/no-value(Value):%]" delayAfter="PT5S"
                        get="[%:[:AA:].URL.Value:%]/cgi-bin/decoder_control.cgi?[:UP:][%:amp:%]command=15[%:amp:%]sit=[%:[:AA:].Preset.Value:%]"/>
                <Output name="Result" as="ActionResult">
                    <Value>
                        <State> [%:[%:@Output:%]/if([:POK:]) then 'ON' else 'OFF':%]</State>
                        <Preset>[%:[%:@Output:%]/if([:POK:]) then '[%:[:AA:].Preset.Value:%]' else null():%]</Preset>
                    </Value>
                </Output>
            </Task>
        </Workflow>
      </Action>
      <Action name="SyncImage" documentation="Synchronize camera state and snapshot image">
        <Workflow Limit="1" Live="1" Timeout="PT10S">
            <Task name="Main" while="true">
                <Event name="Argument" as="ActionArgument"/>
                <Invoke name="GetImage" waitFor="Argument" delay="PT1S"
                        get="[%:[:AA:].URL.Value:%]/cgi-bin/video_snapshot.cgi?[:UP:]"/>
                <Output name="Result" as="ActionResult">
                    <Value>
                        <State>[%:[%:@Output:%]/if([:IOK:]) then 'ON' else 'OFF':%]</State>
                        <Image>[%:[%:@Output:%]/if([:IOK:]) then Invoke/GetImage/Message/Value/text() else '/img/no-image.jpg':%]</Image>
                    </Value>
                </Output>
            </Task>
        </Workflow>
      </Action>
    </ThingFacet>