{"id":1247,"date":"2016-12-28T15:23:02","date_gmt":"2016-12-28T14:23:02","guid":{"rendered":"https:\/\/android.chk.digital\/?page_id=1247"},"modified":"2017-01-02T20:22:53","modified_gmt":"2017-01-02T19:22:53","slug":"fhem","status":"publish","type":"page","link":"https:\/\/android.chk.digital\/de\/personal-sunrise\/features\/fhem\/","title":{"rendered":"FHEM","raw":"FHEM"},"content":{"rendered":"<p>Ab Version 1.8.22 wird nun auch das FHEM-System unterst\u00fctzt.<\/p>\n<p>Derzeit wird &#8220;nur&#8221; eine Telnet-Verbindung unterst\u00fctzt (d.h. eigentlich nur intern des LANs, aber das reicht ja wohl f\u00fcr diesen Zweck) und ohne SSL. Dies ist auch die schnellste Verbindung. Bei Bedarf kann das noch erweitert werden (HTTP, HTTPS, Telnet mit SSL), aber ohne Bedarf werde ich mich da nicht dransetzen. Mit SSL f\u00e4ngt man sich eine Menge Probleme ein (Zertifikate, self-signed, &#8230;), auf die ich gern verzichten w\u00fcrde.<\/p>\n<p>Die Ansteuerung\u00a0kann man auf zwei verschiedene Arten durchf\u00fchren:<\/p>\n<ol>\n<li>\u00dcber eine Dummy-Variable, deren reading von <em>Personal Sunrise<\/em> gesetzt wird.<\/li>\n<li>\u00dcber den Aufruf einer Perl-Funktion, der die Parameter direkt \u00fcbergeben werden.<\/li>\n<\/ol>\n<p>In beiden F\u00e4llen kann man den zu benutzenden Variablen- bzw. Funktions-Namen an das eigene Namen-System anpassen. Wenn man pro FHEM-Server mehrere Benutzer unterst\u00fctzen m\u00f6chte, vergibt man einfach verschiedene Namen.<\/p>\n<p>Es werden 2 Parameter \u00fcbergeben:<\/p>\n<ol>\n<li>Der Typ der Simulation:<br \/>\nSonnenaufgang = Wecker = &#8220;Sunrise&#8221;<br \/>\nSonnenuntergang = Einschlafhilfe = &#8220;Sunset&#8221;<\/li>\n<li>Der Fortschritt:<br \/>\nerst &#8220;init&#8221;, dann der Prozentbereich 0&#8230;100, dann &#8220;exit&#8221; (oder &#8220;cancelled&#8221;, wenn der Weckvorgang per D&amp;D abgebrochen wird).<\/li>\n<\/ol>\n<h4>1. Dummy-Variable<\/h4>\n<p>Man muss in FHEM eine Dummy-Variable (Voreinstellung &#8220;auto_PersonalSunrise&#8221;) anlegen:<\/p>\n<blockquote><p>define\u00a0auto_PersonalSunrise dummy<\/p><\/blockquote>\n<p>Da das State-Reading nur einen Wert haben kann, werden beide Parameter auf einmal, getrennt durch Schr\u00e4gstrich, gesetzt.<\/p>\n<p>Wenn man dann eine der Simulationen ausf\u00fchrt, sieht man in der Web-Oberfl\u00e4che, wie sich das State-reading \u00e4ndert, z.B.<\/p>\n<blockquote><p>Sunrise\/init<br \/>\nSunrise\/0<br \/>\nSunrise\/3.4<br \/>\nSunrise\/6.5<br \/>\n&#8230;<br \/>\nSunrise\/100<br \/>\nSunrise\/exit (oder\u00a0Sunrise\/cancelled)<\/p><\/blockquote>\n<p>\u00dcber ein Notify (oder DOIF) kann man diesen Parameter nun auswerten, um die eigene Steuerung umzusetzen.<\/p>\n<p>Tip: Man kann so auch nur auf &#8220;Sunrise\/exit&#8221; reagieren und dann beispielsweise alle Lichter einschalten in der Wohnung oder im Zimmer, ohne dass irgendein Dimmer ben\u00f6tigt wird (die Sonnen-Simulation kann man \u00fcber den Bildschirm machen). Oder ein Radio einschalten. Oder&#8230;<\/p>\n<blockquote><p>define n_PS notify auto_PersonalSunrise:Sunrise\/exit set Licht_* on<\/p><\/blockquote>\n<p>oder Rolladen hoch:<\/p>\n<blockquote><p>defmod di_PS DOIF ([auto_PersonalSunrise] eq &#8220;Sunrise\/exit&#8221;) (set Rollo_schlafzimmer up)<\/p><\/blockquote>\n<p>oder f\u00fcr Radio-\/Sonos-\/&#8230;steuerung kann man &#8220;init&#8221; dazu verwenden, Musik abzuspielen, die Prozentwerte f\u00fcr die Lautst\u00e4rke, und &#8220;exit&#8221;, um auf einen anderen Stream (Nachrichten?) umzuschalten.<\/p>\n<h4>2. Perl-Funktion<\/h4>\n<p>Bei dieser Funktionsweise wird f\u00fcr jeden Fortschrittswert eine Funktion aufgerufen. Voreinstellung ist onPersonalSunriseProgress, so dass <em>Personal Sunrise<\/em>\u00a0f\u00fcr jeden Fortschritt die folgende Zeile an FHEM \u00fcbergibt:<\/p>\n<blockquote><p>{ onPersonalSunriseProgress(&lt;Typ&gt;, &lt;Fortschritt&gt;) }<\/p><\/blockquote>\n<p>Hiermit kann man komplexere Aktionen \u00fcber die Perl-Funktion, die entsprechend in einer 99_my*.pl-Datei definiert wird, durchf\u00fchren lassen. Das einfachste ist:<\/p>\n<blockquote><p>sub onPersonalSunriseProgress($$) {<br \/>\nmy ($Mode, $Progress) = @_;<br \/>\nLog 2, &#8220;mode=&#8217;$Mode&#8217;, progress=&#8217;$Progress'&#8221;;<br \/>\n}<\/p><\/blockquote>\n<p>und im Log sieht man nun<\/p>\n<blockquote><p>mode=&#8217;Sunrise&#8217;, progress=&#8217;init&#8217;<br \/>\nmode=&#8217;Sunrise&#8217;, progress=&#8217;0&#8242;<br \/>\n&#8230;<br \/>\nmode=&#8217;Sunrise&#8217;, progress=&#8217;100&#8242;<br \/>\nmode=&#8217;Sunrise&#8217;, progress=&#8217;exit&#8217; (oder\u00a0mode=&#8217;Sunrise&#8217;, progress=&#8217;cancelled&#8217;)<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n","protected":false,"raw":"Ab Version 1.8.22 wird nun auch das FHEM-System unterst\u00fctzt.\r\n\r\nDerzeit wird \"nur\" eine Telnet-Verbindung unterst\u00fctzt (d.h. eigentlich nur intern des LANs, aber das reicht ja wohl f\u00fcr diesen Zweck) und ohne SSL. Dies ist auch die schnellste Verbindung. Bei Bedarf kann das noch erweitert werden (HTTP, HTTPS, Telnet mit SSL), aber ohne Bedarf werde ich mich da nicht dransetzen. Mit SSL f\u00e4ngt man sich eine Menge Probleme ein (Zertifikate, self-signed, ...), auf die ich gern verzichten w\u00fcrde.\r\n\r\nDie Ansteuerung\u00a0kann man auf zwei verschiedene Arten durchf\u00fchren:\r\n<ol>\r\n \t<li>\u00dcber eine Dummy-Variable, deren reading von <em>Personal Sunrise<\/em> gesetzt wird.<\/li>\r\n \t<li>\u00dcber den Aufruf einer Perl-Funktion, der die Parameter direkt \u00fcbergeben werden.<\/li>\r\n<\/ol>\r\nIn beiden F\u00e4llen kann man den zu benutzenden Variablen- bzw. Funktions-Namen an das eigene Namen-System anpassen. Wenn man pro FHEM-Server mehrere Benutzer unterst\u00fctzen m\u00f6chte, vergibt man einfach verschiedene Namen.\r\n\r\nEs werden 2 Parameter \u00fcbergeben:\r\n<ol>\r\n \t<li>Der Typ der Simulation:\r\nSonnenaufgang = Wecker = \"Sunrise\"\r\nSonnenuntergang = Einschlafhilfe = \"Sunset\"<\/li>\r\n \t<li>Der Fortschritt:\r\nerst \"init\", dann der Prozentbereich 0...100, dann \"exit\" (oder \"cancelled\", wenn der Weckvorgang per D&amp;D abgebrochen wird).<\/li>\r\n<\/ol>\r\n<h4>1. Dummy-Variable<\/h4>\r\nMan muss in FHEM eine Dummy-Variable (Voreinstellung \"auto_PersonalSunrise\") anlegen:\r\n<blockquote>define\u00a0auto_PersonalSunrise dummy<\/blockquote>\r\nDa das State-Reading nur einen Wert haben kann, werden beide Parameter auf einmal, getrennt durch Schr\u00e4gstrich, gesetzt.\r\n\r\nWenn man dann eine der Simulationen ausf\u00fchrt, sieht man in der Web-Oberfl\u00e4che, wie sich das State-reading \u00e4ndert, z.B.\r\n<blockquote>Sunrise\/init\r\nSunrise\/0\r\nSunrise\/3.4\r\nSunrise\/6.5\r\n...\r\nSunrise\/100\r\nSunrise\/exit (oder\u00a0Sunrise\/cancelled)<\/blockquote>\r\n\u00dcber ein Notify (oder DOIF) kann man diesen Parameter nun auswerten, um die eigene Steuerung umzusetzen.\r\n\r\nTip: Man kann so auch nur auf \"Sunrise\/exit\" reagieren und dann beispielsweise alle Lichter einschalten in der Wohnung oder im Zimmer, ohne dass irgendein Dimmer ben\u00f6tigt wird (die Sonnen-Simulation kann man \u00fcber den Bildschirm machen). Oder ein Radio einschalten. Oder...\r\n<blockquote>define n_PS notify auto_PersonalSunrise:Sunrise\/exit set Licht_* on<\/blockquote>\r\noder Rolladen hoch:\r\n<blockquote>defmod di_PS DOIF ([auto_PersonalSunrise] eq \"Sunrise\/exit\") (set Rollo_schlafzimmer up)<\/blockquote>\r\noder f\u00fcr Radio-\/Sonos-\/...steuerung kann man \"init\" dazu verwenden, Musik abzuspielen, die Prozentwerte f\u00fcr die Lautst\u00e4rke, und \"exit\", um auf einen anderen Stream (Nachrichten?) umzuschalten.\r\n<h4>2. Perl-Funktion<\/h4>\r\nBei dieser Funktionsweise wird f\u00fcr jeden Fortschrittswert eine Funktion aufgerufen. Voreinstellung ist onPersonalSunriseProgress, so dass <em>Personal Sunrise<\/em>\u00a0f\u00fcr jeden Fortschritt die folgende Zeile an FHEM \u00fcbergibt:\r\n<blockquote>{ onPersonalSunriseProgress(&lt;Typ&gt;, &lt;Fortschritt&gt;) }<\/blockquote>\r\nHiermit kann man komplexere Aktionen \u00fcber die Perl-Funktion, die entsprechend in einer 99_my*.pl-Datei definiert wird, durchf\u00fchren lassen. Das einfachste ist:\r\n<blockquote>sub onPersonalSunriseProgress($$) {\r\nmy ($Mode, $Progress) = @_;\r\nLog 2, \"mode='$Mode', progress='$Progress'\";\r\n}<\/blockquote>\r\nund im Log sieht man nun\r\n<blockquote>mode='Sunrise', progress='init'\r\nmode='Sunrise', progress='0'\r\n...\r\nmode='Sunrise', progress='100'\r\nmode='Sunrise', progress='exit' (oder\u00a0mode='Sunrise', progress='cancelled')<\/blockquote>\r\n&nbsp;"},"excerpt":{"rendered":"","protected":false,"raw":""},"author":2,"featured_media":0,"parent":359,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_en_post_content":"Starting with 1.8.22, the FHEM home automation system is\u00a0supported.\r\n\r\nHere I will present you tips for the configuration.\r\n\r\nFirst,\u00a0the documentation will be in German (<a href=\"https:\/\/android.chk.digital\/de\/personal-sunrise\/features\/fhem\/.\">FHEM<\/a>), as FHEM seems to be used mostly in German speaking countries, but on request I will translate it. Please contact me.","_en_post_name":"fhem","_en_post_excerpt":"","_en_post_title":"FHEM","_de_post_content":"Ab Version 1.8.22 wird nun auch das FHEM-System unterst\u00fctzt.\r\n\r\nDerzeit wird \"nur\" eine Telnet-Verbindung unterst\u00fctzt (d.h. eigentlich nur intern des LANs, aber das reicht ja wohl f\u00fcr diesen Zweck) und ohne SSL. Dies ist auch die schnellste Verbindung. Bei Bedarf kann das noch erweitert werden (HTTP, HTTPS, Telnet mit SSL), aber ohne Bedarf werde ich mich da nicht dransetzen. Mit SSL f\u00e4ngt man sich eine Menge Probleme ein (Zertifikate, self-signed, ...), auf die ich gern verzichten w\u00fcrde.\r\n\r\nDie Ansteuerung\u00a0kann man auf zwei verschiedene Arten durchf\u00fchren:\r\n<ol>\r\n \t<li>\u00dcber eine Dummy-Variable, deren reading von <em>Personal Sunrise<\/em> gesetzt wird.<\/li>\r\n \t<li>\u00dcber den Aufruf einer Perl-Funktion, der die Parameter direkt \u00fcbergeben werden.<\/li>\r\n<\/ol>\r\nIn beiden F\u00e4llen kann man den zu benutzenden Variablen- bzw. Funktions-Namen an das eigene Namen-System anpassen. Wenn man pro FHEM-Server mehrere Benutzer unterst\u00fctzen m\u00f6chte, vergibt man einfach verschiedene Namen.\r\n\r\nEs werden 2 Parameter \u00fcbergeben:\r\n<ol>\r\n \t<li>Der Typ der Simulation:\r\nSonnenaufgang = Wecker = \"Sunrise\"\r\nSonnenuntergang = Einschlafhilfe = \"Sunset\"<\/li>\r\n \t<li>Der Fortschritt:\r\nerst \"init\", dann der Prozentbereich 0...100, dann \"exit\" (oder \"cancelled\", wenn der Weckvorgang per D&amp;D abgebrochen wird).<\/li>\r\n<\/ol>\r\n<h4>1. Dummy-Variable<\/h4>\r\nMan muss in FHEM eine Dummy-Variable (Voreinstellung \"auto_PersonalSunrise\") anlegen:\r\n<blockquote>define\u00a0auto_PersonalSunrise dummy<\/blockquote>\r\nDa das State-Reading nur einen Wert haben kann, werden beide Parameter auf einmal, getrennt durch Schr\u00e4gstrich, gesetzt.\r\n\r\nWenn man dann eine der Simulationen ausf\u00fchrt, sieht man in der Web-Oberfl\u00e4che, wie sich das State-reading \u00e4ndert, z.B.\r\n<blockquote>Sunrise\/init\r\nSunrise\/0\r\nSunrise\/3.4\r\nSunrise\/6.5\r\n...\r\nSunrise\/100\r\nSunrise\/exit (oder\u00a0Sunrise\/cancelled)<\/blockquote>\r\n\u00dcber ein Notify (oder DOIF) kann man diesen Parameter nun auswerten, um die eigene Steuerung umzusetzen.\r\n\r\nTip: Man kann so auch nur auf \"Sunrise\/exit\" reagieren und dann beispielsweise alle Lichter einschalten in der Wohnung oder im Zimmer, ohne dass irgendein Dimmer ben\u00f6tigt wird (die Sonnen-Simulation kann man \u00fcber den Bildschirm machen). Oder ein Radio einschalten. Oder...\r\n<blockquote>define n_PS notify auto_PersonalSunrise:Sunrise\/exit set Licht_* on<\/blockquote>\r\noder Rolladen hoch:\r\n<blockquote>defmod di_PS DOIF ([auto_PersonalSunrise] eq \"Sunrise\/exit\") (set Rollo_schlafzimmer up)<\/blockquote>\r\noder f\u00fcr Radio-\/Sonos-\/...steuerung kann man \"init\" dazu verwenden, Musik abzuspielen, die Prozentwerte f\u00fcr die Lautst\u00e4rke, und \"exit\", um auf einen anderen Stream (Nachrichten?) umzuschalten.\r\n<h4>2. Perl-Funktion<\/h4>\r\nBei dieser Funktionsweise wird f\u00fcr jeden Fortschrittswert eine Funktion aufgerufen. Voreinstellung ist onPersonalSunriseProgress, so dass <em>Personal Sunrise<\/em>\u00a0f\u00fcr jeden Fortschritt die folgende Zeile an FHEM \u00fcbergibt:\r\n<blockquote>{ onPersonalSunriseProgress(&lt;Typ&gt;, &lt;Fortschritt&gt;) }<\/blockquote>\r\nHiermit kann man komplexere Aktionen \u00fcber die Perl-Funktion, die entsprechend in einer 99_my*.pl-Datei definiert wird, durchf\u00fchren lassen. Das einfachste ist:\r\n<blockquote>sub onPersonalSunriseProgress($$) {\r\nmy ($Mode, $Progress) = @_;\r\nLog 2, \"mode='$Mode', progress='$Progress'\";\r\n}<\/blockquote>\r\nund im Log sieht man nun\r\n<blockquote>mode='Sunrise', progress='init'\r\nmode='Sunrise', progress='0'\r\n...\r\nmode='Sunrise', progress='100'\r\nmode='Sunrise', progress='exit' (oder\u00a0mode='Sunrise', progress='cancelled')<\/blockquote>\r\n&nbsp;","_de_post_name":"fhem","_de_post_excerpt":"","_de_post_title":"FHEM","edit_language":"de","footnotes":""},"class_list":["post-1247","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/pages\/1247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/comments?post=1247"}],"version-history":[{"count":20,"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/pages\/1247\/revisions"}],"predecessor-version":[{"id":1366,"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/pages\/1247\/revisions\/1366"}],"up":[{"embeddable":true,"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/pages\/359"}],"wp:attachment":[{"href":"https:\/\/android.chk.digital\/de\/wp-json\/wp\/v2\/media?parent=1247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}