{"id":364,"date":"2015-01-20T22:37:16","date_gmt":"2015-01-20T21:37:16","guid":{"rendered":"http:\/\/ipsview.brownson.at\/?p=364"},"modified":"2015-01-20T22:42:35","modified_gmt":"2015-01-20T21:42:35","slug":"skript-zur-anwesenheitssteuerung","status":"publish","type":"post","link":"https:\/\/ipsview.brownson.at\/?p=364","title":{"rendered":"Skript zur Anwesenheitssteuerung"},"content":{"rendered":"<p>M\u00f6chte diesmal ein kleines Skript zur Anwesenheitssteuerung vorstellen.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-highlight=\"42-57\" data-enlighter-title=\"\">&lt;?\r\n\t\/**\r\n\t * @file          IPSView_PresenceControl.ips.php\r\n\t * @author        brownson\r\n\t * @version\r\n\t *   Version 1.0, 2014-01-20 brownson: Initiale Version&lt;br\/&gt;\r\n\t *\r\n\t * Skript\/Variable um eine Anwesenheitssteuerung zu realisieren.\r\n\t *\r\n\t * Konfiguration Einstellungen:\r\n\t *   $presenceStatusList     ... Liste der Anwesenheitsstatus, die unterst\u00fctzt\r\n\t *                               werden:\r\n\t *                               - Anwesend\r\n\t *                               - Nachtruhe\r\n\t *                               - Unterwegs\r\n\t *                               - Urlaub\r\n\t *                               Nach dem ersten Ausf\u00fchren des Skriptes, wird\r\n\t *                               die Status Variable und das zugeh\u00f6rige Profil\r\n\t *                               angelegt.\r\n\t *\r\n\t *   Presence_Present        ... Hier k\u00f6nnen Befehle platziert werden, die beim\r\n\t *                               Status &quot;Anwesend&quot; ausgef\u00fchrt werden sollen.\r\n\t *   Presence_Sleeping       ... Hier k\u00f6nnen Befehle platziert werden, die beim\r\n\t *                               Status &quot;Nachtruhe&quot; ausgef\u00fchrt werden sollen.\r\n\t *   Presence_OutOfHome      ... Hier k\u00f6nnen Befehle platziert werden, die beim\r\n\t *                               Status &quot;Unterwegs&quot; ausgef\u00fchrt werden sollen.\r\n\t *   Presence_Holiday        ... Hier k\u00f6nnen Befehle platziert werden, die beim\r\n\t *                               Status &quot;Urlaub&quot; ausgef\u00fchrt werden sollen.\r\n\t *\r\n\t *\/\r\n\r\n\tdefine (&#039;PRESENCE_VALUE_PRESENT&#039;,\t\t\t\t\t0);\r\n\tdefine (&#039;PRESENCE_VALUE_SLEEPING&#039;,\t\t\t\t\t1);\r\n\tdefine (&#039;PRESENCE_VALUE_OUTOFHOME&#039;,\t\t\t\t\t2);\r\n\tdefine (&#039;PRESENCE_VALUE_HOLIDAY&#039;,\t\t\t\t\t3);\r\n\r\n\t\/*\r\n\t * Konfiguration:\r\n\t * -------------------------------------------------------------------------\r\n\t *\/\r\n\r\n\t$presenceStatusList = array(PRESENCE_VALUE_PRESENT    =&gt; &#039;Anwesend&#039;,\r\n                               PRESENCE_VALUE_SLEEPING   =&gt; &#039;Nachtruhe&#039;,\r\n                               PRESENCE_VALUE_OUTOFHOME  =&gt; &#039;Unterwegs&#039;,\r\n                               PRESENCE_VALUE_HOLIDAY    =&gt; &#039;Urlaub&#039;);\r\n\r\n\tfunction Presence_Present() {\r\n\t}\r\n\r\n\tfunction Presence_Sleeping() {\r\n\t}\r\n\r\n\tfunction Presence_OutOfHome() {\r\n\t}\r\n\r\n\tfunction Presence_Holiday() {\r\n\t}\r\n\r\n\t\/*\r\n\t * Programmlogik:\r\n\t * -------------------------------------------------------------------------\r\n\t *\/\r\n\t$scriptID     = $_IPS[&#039;SELF&#039;];\r\n\t$sender       = $_IPS[&#039;SENDER&#039;];\r\n\t$parentID     = IPS_GetParent($scriptID);\r\n\r\n\r\n\tif ($sender==&#039;Execute&#039;) {\r\n\t\t@IPS_DeleteVariableProfile(&#039;PresenceStatus&#039;);\r\n\t\t$variableId  = CreateVariablePresence(&#039;PresenceStatus&#039;,  1, $parentID, 10,\r\n\t\t                         &#039;PresenceStatus&#039;, $scriptID, $presenceStatusList);\r\n\t} else {\r\n\t\t$variableId  = CreateVariablePresence(&#039;PresenceStatus&#039;,  1, $parentID, 10,\r\n\t\t                         &#039;PresenceStatus&#039;, $scriptID, $presenceStatusList);\r\n\t\t$value        = $_IPS[&#039;VALUE&#039;];\r\n\r\n\t\tSetValue($variableId, $value);\r\n\t\tswitch ($value) {\r\n\t\t\tcase PRESENCE_VALUE_PRESENT:\r\n\t\t\t\tPresence_Present();\r\n\t\t\t\tbreak;\r\n\t\t\tcase PRESENCE_VALUE_SLEEPING:\r\n\t\t\t\tPresence_Sleeping();\r\n\t\t\t\tbreak;\r\n\t\t\tcase PRESENCE_VALUE_OUTOFHOME:\r\n\t\t\t\tPresence_OutOfHome();\r\n\t\t\t\tbreak;\r\n\t\t\tcase PRESENCE_VALUE_HOLIDAY:\r\n\t\t\t\tPresence_Holiday();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tdie(&quot;Unbekannter Wert $value f\u00fcr Anwesenheit&quot;);\r\n\t\t}\r\n\t}\r\n\t\r\n\t\/*\r\n\t * Funktionen:\r\n\t * -------------------------------------------------------------------------\r\n\t *\/\r\n\r\n\tfunction CreateVariablePresence ($name, $type, $parentId, $position=0, $profile,\r\n\t                                 $action=null, $associations) {\r\n\t\t$variableId = @IPS_GetObjectIDByIdent($name, $parentId);\r\n\t\tif ($variableId === false) {\r\n\t \t\t@IPS_CreateVariableProfile($profile, 1);\r\n\t\t\tIPS_SetVariableProfileText($profile, &#039;&#039;, &#039;&#039;);\r\n\t\t\tIPS_SetVariableProfileValues($profile, 0, 0, 0);\r\n\t\t\tIPS_SetVariableProfileDigits($profile, 0);\r\n\t\t\tIPS_SetVariableProfileIcon($profile, null);\r\n\t\t\tforeach($associations as $idx =&gt; $association) {\r\n\t\t\t\t\tIPS_SetVariableProfileAssociation($profile, $idx, $association, &quot;&quot;, null);\r\n\t\t\t}\r\n\r\n\t\t\t$variableId = IPS_CreateVariable($type);\r\n\t\t\tIPS_SetParent($variableId, $parentId);\r\n\t\t\tIPS_SetName($variableId, $name);\r\n\t\t\tIPS_SetIdent($variableId, $name);\r\n\t\t\tIPS_SetPosition($variableId, $position);\r\n  \t\t\tIPS_SetVariableCustomProfile($variableId, $profile);\r\n \t\t\tIPS_SetVariableCustomAction($variableId, $action);\r\n\t\t}\r\n\t\treturn $variableId;\r\n\t}\r\n\r\n?&gt;\r\n<\/pre>\n<p>Nach dem erstmaligen Ausf\u00fchren des Skriptes, wird automatisch die zugeh\u00f6rige Variable in IP-Symcon angelegt.<\/p>\n<p>Das Skript legt auch gleich ein passendes Variablen Profil an, um eine Darstellung im WebFront zu erm\u00f6glichen. Zus\u00e4tzlich dient dieses Profil auch als Default Konfiguration in IPSView.<\/p>\n<p>In den Funktionsbl\u00f6cken der einzelnen Zust\u00e4nde werden die Befehle platziert, die beim Einschalten des jeweiligen Anwesenheitsstatus ausgef\u00fchrt werden sollen.<\/p>\n<p>Beispiele hierf\u00fcr sind:<\/p>\n<ul>\n<li>Alle Lichter ausschalten bei Status \u201eAbwesend\u201c<\/li>\n<li>WLAN aktivieren bzw. deaktivieren<\/li>\n<li>Alarmanlage aktivieren bzw. deaktivieren<\/li>\n<li>Touchscreens ausschalten bei \u201eNachtruhe\u201c oder \u201eAbwesenheit\u201c<\/li>\n<li>Bestimmte Lichtszene starten bei Status \u201eNachtruhe\u201c<\/li>\n<\/ul>\n<p><strong><span style=\"text-decoration: underline;\">Einbindung in IPSView:<\/span><\/strong><\/p>\n<p>Eine Einbindung ist in folgenden Variationen m\u00f6glich:<\/p>\n<ul>\n<li>ValueButton: Nach Aktivierung des Buttons wird der jeweilige Anwesenheitsstatus gesetzt<\/li>\n<li>AssoziationButton: Nach Aktivierung erscheint ein Popup zur Auswahl des neuen Anwesenheitsstatus<\/li>\n<li>AssoziationImage: Nach Aktivierung erscheint ein Popup zur Auswahl des neuen\u00a0\u00a0Anwesenheitsstatus<\/li>\n<li>VarLabel: Anzeige des aktuellen Anwesenheitsstatus als Text<\/li>\n<\/ul>\n<p>Bei Buttons bietet sich auch die M\u00f6glichkeit an, die Zust\u00e4nde in unterschiedlichen Farben darzustellen.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-366\" src=\"http:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Designer-300x109.png\" alt=\"IPSView_Presence_Designer\" width=\"300\" height=\"109\" srcset=\"https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Designer-200x73.png 200w, https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Designer-300x109.png 300w, https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Designer.png 783w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\u00a0\u00a0<img decoding=\"async\" class=\"alignnone size-medium wp-image-365\" src=\"http:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Client-300x143.png\" alt=\"IPSView_Presence_Client\" width=\"300\" height=\"143\" srcset=\"https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Client-200x95.png 200w, https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Client-300x143.png 300w, https:\/\/ipsview.brownson.at\/wp-content\/uploads\/IPSView_Presence_Client.png 423w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chte diesmal ein kleines Skript zur Anwesenheitssteuerung vorstellen. &lt;? \/**  [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,6],"tags":[24],"class_list":["post-364","post","type-post","status-publish","format-standard","hentry","category-howto","category-skripte","tag-anwesenheit"],"_links":{"self":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=364"}],"version-history":[{"count":2,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/364\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/364\/revisions\/416"}],"wp:attachment":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}