_sensor_8h_source.html 40 KB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>hueplusplus: include/hueplusplus/Sensor.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">hueplusplus
   &#160;<span id="projectnumber">1.0.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_e05b4b7707bd5f9fd045e8be02b17d0a.html">hueplusplus</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Sensor.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_sensor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#ifndef INCLUDE_HUEPLUSPLUS_HUE_SENSOR_H</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#define INCLUDE_HUEPLUSPLUS_HUE_SENSOR_H</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_base_device_8h.html">BaseDevice.h</a>&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_condition_8h.html">Condition.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_hue_command_a_p_i_8h.html">HueCommandAPI.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_time_pattern_8h.html">TimePattern.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;json/json.hpp&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacehueplusplus.html">hueplusplus</a></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">   38</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">Alert</a></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa334c4a4c42fdb79d7ebc3e73b517e6f8">none</a>, </div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa99938282f04071859941e18f16efcf42">select</a>, </div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa365f10ce924756817157a1f37d5ad27b">lselect</a> </div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;};</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;std::string <a class="code" href="namespacehueplusplus.html#a5cd7662da9c6923e35b22c30e3ac5e90">alertToString</a>(<a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">Alert</a> alert);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">Alert</a> <a class="code" href="namespacehueplusplus.html#a6da197fef27f8228fa2f4d7b5cda6663">alertFromString</a>(<span class="keyword">const</span> std::string&amp; s);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1_sensor.html">   59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classhueplusplus_1_1_sensor.html">Sensor</a> : <span class="keyword">public</span> <a class="code" href="classhueplusplus_1_1_base_device.html">BaseDevice</a></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="classhueplusplus_1_1_sensor.html">Sensor</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keyword">const</span> std::shared_ptr&lt;APICache&gt;&amp; baseCache);</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <a class="code" href="classhueplusplus_1_1_sensor.html">Sensor</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classhueplusplus_1_1_hue_command_a_p_i.html">HueCommandAPI</a>&amp; commands, std::chrono::steady_clock::duration refreshDuration, <span class="keyword">const</span> nlohmann::json&amp; currentState);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordtype">bool</span> hasOn() <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordtype">bool</span> isOn() <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordtype">void</span> setOn(<span class="keywordtype">bool</span> on);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordtype">bool</span> hasBatteryState() <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="keywordtype">int</span> getBatteryState() <span class="keyword">const</span>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordtype">void</span> setBatteryState(<span class="keywordtype">int</span> percent);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordtype">bool</span> hasAlert() <span class="keyword">const</span>;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">Alert</a> getLastAlert() <span class="keyword">const</span>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordtype">void</span> sendAlert(<a class="code" href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">Alert</a> type);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">bool</span> hasReachable() <span class="keyword">const</span>;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordtype">bool</span> isReachable() <span class="keyword">const</span>;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordtype">bool</span> hasUserTest() <span class="keyword">const</span>;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordtype">void</span> setUserTest(<span class="keywordtype">bool</span> enabled);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordtype">bool</span> hasURL() <span class="keyword">const</span>;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    std::string getURL() <span class="keyword">const</span>;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordtype">void</span> setURL(<span class="keyword">const</span> std::string&amp; url);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    std::vector&lt;std::string&gt; getPendingConfig() <span class="keyword">const</span>;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordtype">bool</span> hasLEDIndication() <span class="keyword">const</span>;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordtype">bool</span> getLEDIndication() <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="keywordtype">void</span> setLEDIndication(<span class="keywordtype">bool</span> on);</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    nlohmann::json getConfig() <span class="keyword">const</span>;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">void</span> setConfigAttribute(<span class="keyword">const</span> std::string&amp; key, <span class="keyword">const</span> nlohmann::json&amp; value);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <a class="code" href="classhueplusplus_1_1time_1_1_absolute_time.html">time::AbsoluteTime</a> getLastUpdated() <span class="keyword">const</span>;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    nlohmann::json getState() <span class="keyword">const</span>;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="keywordtype">void</span> setStateAttribute(<span class="keyword">const</span> std::string&amp; key, <span class="keyword">const</span> nlohmann::json&amp; value);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    std::string getStateAddress(<span class="keyword">const</span> std::string&amp; key) <span class="keyword">const</span>;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">bool</span> isCertified() <span class="keyword">const</span>;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordtype">bool</span> isPrimary() <span class="keyword">const</span>;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1_sensor.html#a3dd55641f02c9a59f69dd37b87f9d621">  210</a></span>&#160;    T <a class="code" href="classhueplusplus_1_1_sensor.html#a3dd55641f02c9a59f69dd37b87f9d621">asSensorType</a>() const&amp;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    {</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordflow">if</span> (getType() != T::typeStr)</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        {</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classhueplusplus_1_1_hue_exception.html">HueException</a>(<a class="code" href="structhueplusplus_1_1_file_info.html">FileInfo</a> {__FILE__, __LINE__, __func__}, <span class="stringliteral">&quot;Sensor type does not match: &quot;</span> + getType());</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        }</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordflow">return</span> T(*<span class="keyword">this</span>);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1_sensor.html#a2aaa1a662822dfb1fc6e70b03c565b56">  224</a></span>&#160;    T <a class="code" href="classhueplusplus_1_1_sensor.html#a2aaa1a662822dfb1fc6e70b03c565b56">asSensorType</a>() &amp;&amp;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordflow">if</span> (getType() != T::typeStr)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        {</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classhueplusplus_1_1_hue_exception.html">HueException</a>(<a class="code" href="structhueplusplus_1_1_file_info.html">FileInfo</a> {__FILE__, __LINE__, __func__}, <span class="stringliteral">&quot;Sensor type does not match: &quot;</span> + getType());</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        }</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        <span class="keywordflow">return</span> T(std::move(*<span class="keyword">this</span>));</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    }</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;};</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1_create_sensor.html">  237</a></span>&#160;<span class="keyword">class </span><a class="code" href="classhueplusplus_1_1_create_sensor.html">CreateSensor</a></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;{</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <a class="code" href="classhueplusplus_1_1_create_sensor.html">CreateSensor</a>(<span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> std::string&amp; modelid, <span class="keyword">const</span> std::string&amp; swversion,</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keyword">const</span> std::string&amp; type, <span class="keyword">const</span> std::string&amp; uniqueid, <span class="keyword">const</span> std::string&amp; manufacturername);</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <a class="code" href="classhueplusplus_1_1_create_sensor.html">CreateSensor</a>&amp; setState(<span class="keyword">const</span> nlohmann::json&amp; state);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <a class="code" href="classhueplusplus_1_1_create_sensor.html">CreateSensor</a>&amp; setConfig(<span class="keyword">const</span> nlohmann::json&amp; config);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <a class="code" href="classhueplusplus_1_1_create_sensor.html">CreateSensor</a>&amp; setRecycle(<span class="keywordtype">bool</span> recycle);</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    nlohmann::json getRequest() <span class="keyword">const</span>;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1_create_sensor.html#a87769c93bab254272db88ac7ba6aff60">  268</a></span>&#160;    nlohmann::json <a class="code" href="classhueplusplus_1_1_create_sensor.html#a87769c93bab254272db88ac7ba6aff60">request</a>;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;};</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="keyword">namespace </span>sensors</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html">  279</a></span>&#160;<span class="keyword">class </span><a class="code" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html">DaylightSensor</a> : <span class="keyword">public</span> <a class="code" href="classhueplusplus_1_1_base_device.html">BaseDevice</a></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html#aac221bfc9ecd336606bc09347cf0d865">  283</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html#aac221bfc9ecd336606bc09347cf0d865">DaylightSensor</a>(<a class="code" href="classhueplusplus_1_1_sensor.html">Sensor</a> sensor) : <a class="code" href="classhueplusplus_1_1_base_device.html">BaseDevice</a>(std::move(sensor)) { }</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordtype">bool</span> isOn() <span class="keyword">const</span>;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordtype">void</span> setOn(<span class="keywordtype">bool</span> on);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="keywordtype">bool</span> hasBatteryState() <span class="keyword">const</span>;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordtype">int</span> getBatteryState() <span class="keyword">const</span>;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keywordtype">void</span> setBatteryState(<span class="keywordtype">int</span> percent);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keywordtype">void</span> setCoordinates(<span class="keyword">const</span> std::string&amp; latitude, <span class="keyword">const</span> std::string&amp; longitude);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="keywordtype">bool</span> isConfigured() <span class="keyword">const</span>;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keywordtype">int</span> getSunriseOffset() <span class="keyword">const</span>;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keywordtype">void</span> setSunriseOffset(<span class="keywordtype">int</span> minutes);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <span class="keywordtype">int</span> getSunsetOffset() <span class="keyword">const</span>;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordtype">void</span> setSunsetOffset(<span class="keywordtype">int</span> minutes);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="keywordtype">bool</span> isDaylight() <span class="keyword">const</span>;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <a class="code" href="classhueplusplus_1_1time_1_1_absolute_time.html">time::AbsoluteTime</a> getLastUpdated() <span class="keyword">const</span>;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html#a4bc8c167e6438842b20be9fbc230316e">  357</a></span>&#160;    <span class="keyword">static</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* typeStr = <span class="stringliteral">&quot;Daylight&quot;</span>;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;};</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;detail::ConditionHelper&lt;bool&gt; <a class="code" href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">makeCondition</a>(<span class="keyword">const</span> <a class="code" href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html">DaylightSensor</a>&amp; sensor);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SensorT, detail::<span class="keywordtype">void</span>_t&lt;decltype(std::declval&lt;const SensorT&gt;().getLastUpdated())&gt;* = <span class="keywordtype">nullptr</span>&gt;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="namespacehueplusplus_1_1sensors.html#aa674bacddb9d714ed65cf3c41306c8f5">  363</a></span>&#160;detail::ConditionHelper&lt;time::AbsoluteTime&gt; <a class="code" href="namespacehueplusplus_1_1sensors.html#aa674bacddb9d714ed65cf3c41306c8f5">makeConditionLastUpdate</a>(<span class="keyword">const</span> SensorT&amp; sensor)</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;{</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <span class="keywordflow">return</span> detail::ConditionHelper&lt;time::AbsoluteTime&gt;(</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="stringliteral">&quot;/sensors/&quot;</span> + std::to_string(sensor.getId()) + <span class="stringliteral">&quot;/state/lastupdated&quot;</span>);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;}</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ButtonSensor, detail::<span class="keywordtype">void</span>_t&lt;decltype(std::declval&lt;const ButtonSensor&gt;().getButtonEvent())&gt;* = <span class="keywordtype">nullptr</span>&gt;</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="namespacehueplusplus_1_1sensors.html#a346d70ad65e2ec757a7ee50e16a5aa0b">  370</a></span>&#160;detail::ConditionHelper&lt;int&gt; <a class="code" href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">makeCondition</a>(<span class="keyword">const</span> ButtonSensor&amp; sensor)</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;{</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    <span class="keywordflow">return</span> detail::ConditionHelper&lt;int&gt;(</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="stringliteral">&quot;/sensors/&quot;</span> + std::to_string(sensor.getId()) + <span class="stringliteral">&quot;/state/buttonevent&quot;</span>);</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;}</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> PresenceSensor, detail::<span class="keywordtype">void</span>_t&lt;decltype(std::declval&lt;const PresenceSensor&gt;().getPresence())&gt;* = <span class="keywordtype">nullptr</span>&gt;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="namespacehueplusplus_1_1sensors.html#ab7eac0726430cc92ceaeaa89b2a57655">  377</a></span>&#160;detail::ConditionHelper&lt;bool&gt; <a class="code" href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">makeCondition</a>(<span class="keyword">const</span> PresenceSensor&amp; sensor)</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;{</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="keywordflow">return</span> detail::ConditionHelper&lt;bool&gt;(</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <span class="stringliteral">&quot;/sensors/&quot;</span> + std::to_string(sensor.getId()) + <span class="stringliteral">&quot;/state/presence&quot;</span>);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;}</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> TemperatureSensor, detail::<span class="keywordtype">void</span>_t&lt;decltype(std::declval&lt;const TemperatureSensor&gt;().getPresence())&gt;* = <span class="keywordtype">nullptr</span>&gt;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">  384</a></span>&#160;detail::ConditionHelper&lt;int&gt; <a class="code" href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">makeCondition</a>(<span class="keyword">const</span> TemperatureSensor&amp; sensor)</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;{</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    <span class="keywordflow">return</span> detail::ConditionHelper&lt;int&gt;(</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        <span class="stringliteral">&quot;/sensors/&quot;</span> + std::to_string(sensor.getId()) + <span class="stringliteral">&quot;/state/temperature&quot;</span>);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;}</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;} <span class="comment">// namespace sensors</span></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;} <span class="comment">// namespace hueplusplus</span></div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classhueplusplus_1_1_hue_command_a_p_i_html"><div class="ttname"><a href="classhueplusplus_1_1_hue_command_a_p_i.html">hueplusplus::HueCommandAPI</a></div><div class="ttdef"><b>Definition:</b> HueCommandAPI.h:37</div></div>
<div class="ttc" id="classhueplusplus_1_1_hue_exception_html"><div class="ttname"><a href="classhueplusplus_1_1_hue_exception.html">hueplusplus::HueException</a></div><div class="ttdoc">Exception class with file information. Base class of all custom exception classes. </div><div class="ttdef"><b>Definition:</b> HueException.h:49</div></div>
<div class="ttc" id="namespacehueplusplus_html_aeb1b8dcc03d48ce621a23ce3b2012c1aa365f10ce924756817157a1f37d5ad27b"><div class="ttname"><a href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa365f10ce924756817157a1f37d5ad27b">hueplusplus::Alert::lselect</a></div><div class="ttdoc">Long select alert (15s breathe) </div></div>
<div class="ttc" id="classhueplusplus_1_1sensors_1_1_daylight_sensor_html_aac221bfc9ecd336606bc09347cf0d865"><div class="ttname"><a href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html#aac221bfc9ecd336606bc09347cf0d865">hueplusplus::sensors::DaylightSensor::DaylightSensor</a></div><div class="ttdeci">DaylightSensor(Sensor sensor)</div><div class="ttdoc">Construct from generic sensor. </div><div class="ttdef"><b>Definition:</b> Sensor.h:283</div></div>
<div class="ttc" id="classhueplusplus_1_1_sensor_html_a2aaa1a662822dfb1fc6e70b03c565b56"><div class="ttname"><a href="classhueplusplus_1_1_sensor.html#a2aaa1a662822dfb1fc6e70b03c565b56">hueplusplus::Sensor::asSensorType</a></div><div class="ttdeci">T asSensorType() &amp;&amp;</div><div class="ttdoc">Convert sensor to a specific type. </div><div class="ttdef"><b>Definition:</b> Sensor.h:224</div></div>
<div class="ttc" id="namespacehueplusplus_html"><div class="ttname"><a href="namespacehueplusplus.html">hueplusplus</a></div><div class="ttdoc">Namespace for the hueplusplus library. </div><div class="ttdef"><b>Definition:</b> Action.h:27</div></div>
<div class="ttc" id="namespacehueplusplus_html_a5cd7662da9c6923e35b22c30e3ac5e90"><div class="ttname"><a href="namespacehueplusplus.html#a5cd7662da9c6923e35b22c30e3ac5e90">hueplusplus::alertToString</a></div><div class="ttdeci">std::string alertToString(Alert alert)</div><div class="ttdoc">Convert alert to string form. </div><div class="ttdef"><b>Definition:</b> Sensor.cpp:30</div></div>
<div class="ttc" id="namespacehueplusplus_html_aeb1b8dcc03d48ce621a23ce3b2012c1a"><div class="ttname"><a href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1a">hueplusplus::Alert</a></div><div class="ttdeci">Alert</div><div class="ttdoc">Specifies light alert modes. </div><div class="ttdef"><b>Definition:</b> Sensor.h:38</div></div>
<div class="ttc" id="_base_device_8h_html"><div class="ttname"><a href="_base_device_8h.html">BaseDevice.h</a></div></div>
<div class="ttc" id="classhueplusplus_1_1_base_device_html"><div class="ttname"><a href="classhueplusplus_1_1_base_device.html">hueplusplus::BaseDevice</a></div><div class="ttdoc">Base class for physical devices connected to the bridge (sensor or light). </div><div class="ttdef"><b>Definition:</b> BaseDevice.h:35</div></div>
<div class="ttc" id="structhueplusplus_1_1_file_info_html"><div class="ttname"><a href="structhueplusplus_1_1_file_info.html">hueplusplus::FileInfo</a></div><div class="ttdoc">Contains information about error location, use CURRENT_FILE_INFO to create. </div><div class="ttdef"><b>Definition:</b> HueException.h:34</div></div>
<div class="ttc" id="_hue_command_a_p_i_8h_html"><div class="ttname"><a href="_hue_command_a_p_i_8h.html">HueCommandAPI.h</a></div></div>
<div class="ttc" id="classhueplusplus_1_1time_1_1_absolute_time_html"><div class="ttname"><a href="classhueplusplus_1_1time_1_1_absolute_time.html">hueplusplus::time::AbsoluteTime</a></div><div class="ttdoc">One-time, absolute time point. </div><div class="ttdef"><b>Definition:</b> TimePattern.h:72</div></div>
<div class="ttc" id="classhueplusplus_1_1_create_sensor_html_a87769c93bab254272db88ac7ba6aff60"><div class="ttname"><a href="classhueplusplus_1_1_create_sensor.html#a87769c93bab254272db88ac7ba6aff60">hueplusplus::CreateSensor::request</a></div><div class="ttdeci">nlohmann::json request</div><div class="ttdef"><b>Definition:</b> Sensor.h:268</div></div>
<div class="ttc" id="classhueplusplus_1_1sensors_1_1_daylight_sensor_html"><div class="ttname"><a href="classhueplusplus_1_1sensors_1_1_daylight_sensor.html">hueplusplus::sensors::DaylightSensor</a></div><div class="ttdoc">Daylight sensor to detect sunrise and sunset. </div><div class="ttdef"><b>Definition:</b> Sensor.h:279</div></div>
<div class="ttc" id="_time_pattern_8h_html"><div class="ttname"><a href="_time_pattern_8h.html">TimePattern.h</a></div></div>
<div class="ttc" id="classhueplusplus_1_1_sensor_html"><div class="ttname"><a href="classhueplusplus_1_1_sensor.html">hueplusplus::Sensor</a></div><div class="ttdoc">Class for generic or unknown sensor types. </div><div class="ttdef"><b>Definition:</b> Sensor.h:59</div></div>
<div class="ttc" id="namespacehueplusplus_html_a6da197fef27f8228fa2f4d7b5cda6663"><div class="ttname"><a href="namespacehueplusplus.html#a6da197fef27f8228fa2f4d7b5cda6663">hueplusplus::alertFromString</a></div><div class="ttdeci">Alert alertFromString(const std::string &amp;s)</div><div class="ttdoc">Convert string to Alert enum. </div><div class="ttdef"><b>Definition:</b> Sensor.cpp:44</div></div>
<div class="ttc" id="namespacehueplusplus_html_aeb1b8dcc03d48ce621a23ce3b2012c1aa99938282f04071859941e18f16efcf42"><div class="ttname"><a href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa99938282f04071859941e18f16efcf42">hueplusplus::Alert::select</a></div><div class="ttdoc">Select alert (breathe cycle) </div></div>
<div class="ttc" id="classhueplusplus_1_1_sensor_html_a3dd55641f02c9a59f69dd37b87f9d621"><div class="ttname"><a href="classhueplusplus_1_1_sensor.html#a3dd55641f02c9a59f69dd37b87f9d621">hueplusplus::Sensor::asSensorType</a></div><div class="ttdeci">T asSensorType() const &amp;</div><div class="ttdoc">Convert sensor to a specific type. </div><div class="ttdef"><b>Definition:</b> Sensor.h:210</div></div>
<div class="ttc" id="classhueplusplus_1_1_create_sensor_html"><div class="ttname"><a href="classhueplusplus_1_1_create_sensor.html">hueplusplus::CreateSensor</a></div><div class="ttdoc">Parameters for creating a new Sensor. </div><div class="ttdef"><b>Definition:</b> Sensor.h:237</div></div>
<div class="ttc" id="namespacehueplusplus_html_aeb1b8dcc03d48ce621a23ce3b2012c1aa334c4a4c42fdb79d7ebc3e73b517e6f8"><div class="ttname"><a href="namespacehueplusplus.html#aeb1b8dcc03d48ce621a23ce3b2012c1aa334c4a4c42fdb79d7ebc3e73b517e6f8">hueplusplus::Alert::none</a></div><div class="ttdoc">No alert. </div></div>
<div class="ttc" id="namespacehueplusplus_1_1sensors_html_a0172a7e14a1d4eadf0179a1a98692d43"><div class="ttname"><a href="namespacehueplusplus_1_1sensors.html#a0172a7e14a1d4eadf0179a1a98692d43">hueplusplus::sensors::makeCondition</a></div><div class="ttdeci">detail::ConditionHelper&lt; int &gt; makeCondition(const TemperatureSensor &amp;sensor)</div><div class="ttdef"><b>Definition:</b> Sensor.h:384</div></div>
<div class="ttc" id="namespacehueplusplus_1_1sensors_html_aa674bacddb9d714ed65cf3c41306c8f5"><div class="ttname"><a href="namespacehueplusplus_1_1sensors.html#aa674bacddb9d714ed65cf3c41306c8f5">hueplusplus::sensors::makeConditionLastUpdate</a></div><div class="ttdeci">detail::ConditionHelper&lt; time::AbsoluteTime &gt; makeConditionLastUpdate(const SensorT &amp;sensor)</div><div class="ttdef"><b>Definition:</b> Sensor.h:363</div></div>
<div class="ttc" id="_condition_8h_html"><div class="ttname"><a href="_condition_8h.html">Condition.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>