Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagexml
titlePhidgetMotor Complete Model
linenumberstrue
collapsetrue
<Namespace Name="Atomiton">

  <Domain Name="Lights">




    <PhilipLightBaseURI>http://10.0.2.16/api/newdeveloper</PhilipLightBaseURI>







    <Macro Name="ExecuteQuery">

      <Argument>

        <QueryString>

          <Query/>

        </QueryString>

      </Argument>

      <Result>

        <OnRequest>

          <Target>[:RuntimeParams.FacetIDName:]</Target>

          <Process>

            <Message>

              <Value>[:$Macro.Argument.QueryString:]</Value>

            </Message>

          </Process>

        </OnRequest>

      </Result>

    </Macro>




    <Macro Name="AddLight">

      <Argument>

        <LightNumber/>

        <On/>

        <bri/>

        <hue/>

        <sat/>

      </Argument>

      <Result>

        <ExecuteQuery>

          <QueryString>

            <DeleteAll>

              <PhilipLightModel>

                <LightNumber eq="[:$Macro.Argument.LightNumber:]"/>

              </PhilipLightModel>

            </DeleteAll>

            <Create>

              <PhilipLightModel>

                <LightNumber>[:$Macro.Argument.LightNumber:]</LightNumber>

                <state>

                  <On>[:$Macro.Argument.On:]</On>

                  <bri>[:$Macro.Argument.bri:]</bri>

                  <hue>[:$Macro.Argument.hue:]</hue>

                  <sat>[:$Macro.Argument.sat:]</sat>

                </state>

              </PhilipLightModel>

            </Create>

          </QueryString>

        </ExecuteQuery>

      </Result>

    </Macro>










    <Def Name="PhilipLightState">

      <Boolean Name="On"/>

      <Integer Name="bri"/>

      <Integer Name="hue"/>

      <Integer Name="sat"/>

      <String Name="effect"/>

      <Double Name="xy" cardinality="2"/>

      <Integer Name="ct"/>

      <String Name="alert"/>

      <String Name="colormode"/>

      <Boolean Name="reachable"/>

    </Def>

    <Def Name="PointSymbol">

      <String name="1" default="none"/>

      <String name="2" default="none"/>

      <String name="3" default="none"/>

      <String name="4" default="none"/>

      <String name="5" default="none"/>

      <String name="6" default="none"/>

      <String name="7" default="none"/>

      <String name="8" default="none"/>

    </Def>







    <ThingFacet Name="PhilipLightFacet">

      <String Name="LightNumber"/>

      <PhilipLightState Name="state" KnownBy="PhilipLightActionUsingCurl"/>

      <String Name="Type"/>

      <String Name="Name"/>

      <String Name="modelid"/>

      <String Name="uniqueid"/>

      <String Name="swversion"/>

      <PointSymbol Name="Pointsymbol"/>




      <AA>[:#o#Event.Argument:]</AA>

      <Ontrue>{"on":true}</Ontrue>

      <Onfalse>"on":false</Onfalse>




      <Action Name="PhilipLightActionUsingCurl">

        <Workflow Limit="1" Live="1" Timeout="-1">

          <Task name="Main" While="True">

            <Event name="Argument" as="ActionArgument"/>

            <Invoke name="SetState" waitFor="ActionArgument"

              execute="curl -X PUT -d '{&quot;on&quot;:[%:[:AA:].state.On.Value:%]}' [:PhilipLightBaseURI:]/lights/[%:[:AA:].LightNumber.Value:%]/state"/>

            <Log Message="[:Invoke.SetState:]"/>

            <Output name="Result" as="ActionResult">

              <Value>

                <state>

                  [%:[:AA:].state.On.Value:%]

                </state>

              </Value>

            </Output>

          </Task>

        </Workflow>

      </Action>

    </ThingFacet>







    <ThingFacet Name="PhilipLightManagerFacet">

      <String Name="LoadLights" KnownBy="LoadLightsAction"/>

      <Action Name="LoadLightsAction">

        <Workflow Limit="1" Live="1" Timeout="-1">

          <Task Name="Main" While="True">

            <Event Name="Argument" as="ActionArgument"/>

            <Invoke Name="GetLights" waitFor="ActionArgument" Get="[:PhilipLightBaseURI:]/lights"/>

            <Log Message="Lights Loaded...[:Invoke.GetLights.Message.Value:]"/>

            <Invoke Name="ParseGetLightsResult">

              <FacetScript>

                <AddLight>

                  <LightNumber>1</LightNumber>

                  <On>[:Invoke.GetLights.Message.Value.1.State.On:]</On>

                  <bri>[:Invoke.GetLights.Message.Value.1.State.bri:]</bri>

                  <hue>[:Invoke.GetLights.Message.Value.1.State.hue:]</hue>

                  <sat>[:Invoke.GetLights.Message.Value.1.State.sat:]</sat>

                </AddLight>

                <AddLight>

                  <LightNumber>2</LightNumber>

                  <On>[:Invoke.GetLights.Message.Value.2.State.On:]</On>

                  <bri>[:Invoke.GetLights.Message.Value.2.State.bri:]</bri>

                  <hue>[:Invoke.GetLights.Message.Value.2.State.hue:]</hue>

                  <sat>[:Invoke.GetLights.Message.Value.2.State.sat:]</sat>

                </AddLight>

                <AddLight>

                  <LightNumber>3</LightNumber>

                  <On>[:Invoke.GetLights.Message.Value.3.State.On:]</On>

                  <bri>[:Invoke.GetLights.Message.Value.3.State.bri:]</bri>

                  <hue>[:Invoke.GetLights.Message.Value.3.State.hue:]</hue>

                  <sat>[:Invoke.GetLights.Message.Value.3.State.sat:]</sat>

                </AddLight>

              </FacetScript>

            </Invoke>

            <Output Name="Result" as="ActionResult">

              <Value>

                <LoadLights>True</LoadLights>

              </Value>

            </Output>

          </Task>

        </Workflow>

      </Action>

    </ThingFacet>




    <ThingModel Name="PhilipLightModel" Combines="PhilipLightFacet">

      <Sid Name="LightId"/>

    </ThingModel>




    <ThingModel Name="PhilipLightManagerModel" Combines="PhilipLightManagerFacet">

      <sid Name="ManagerId"/>

    </ThingModel>

  </Domain>

</Namespace>