2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 12:49:34 +00:00
fhem-mirror/fhem/webfrontend/pgm4/fs20.php
rudolfkoenig 71fe020f84 Initial version
git-svn-id: https://svn.fhem.de/fhem/trunk@3 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2007-01-30 12:47:36 +00:00

241 lines
8.4 KiB
PHP

<HTML>
<HEAD>
</HEAD>
<BODY>
<TITLE>
FS 20 Haussteuerrung
</TITLE>
</BODY>
<?PHP
function is_posint($a) {
return (((string)$a === (string)(int)$a) && ((int)$a >= 0));
}
function print_options($name, $device, $dimmable, $href)
{
echo "<A href=\"fs20.php?device=$device&state=toggle&command=set\">";
echo "$name</A>";
echo "<FORM action=\"fs20.php\">";
echo "<SELECT size=1 name=\"state\">";
echo "<OPTION value=\"off\" selected>Off";
if ( $dimmable ) {
echo "<OPTION value=\"dimup\">Up";
echo "<OPTION value=\"dimdown\">Down";
echo "<OPTION value=\"dim06%\">6%";
echo "<OPTION value=\"dim12%\">12%";
echo "<OPTION value=\"dim18%\">18%";
echo "<OPTION value=\"dim25%\">25%";
echo "<OPTION value=\"dim31%\">31%";
echo "<OPTION value=\"dim37%\">37%";
echo "<OPTION value=\"dim43%\">43%";
echo "<OPTION value=\"dim50%\">50%";
echo "<OPTION value=\"dim56%\">56%";
echo "<OPTION value=\"dim62%\">62%";
echo "<OPTION value=\"dim68%\">68%";
echo "<OPTION value=\"dim75%\">75%";
echo "<OPTION value=\"dim81%\">81%";
echo "<OPTION value=\"dim87%\">87%";
echo "<OPTION value=\"dim93%\">93%";
}
echo "<OPTION value=\"dim100%\">100%";
echo "</SELECT>";
echo "<INPUT type=\"hidden\" name=\"device\" value=\"$device\">";
echo "<INPUT type=\"hidden\" name=\"command\" value=\"set\">";
echo "<BR>";
echo "<INPUT type=\"submit\" name=\"dim\" value=\"Dim\">";
echo "</FORM>";
}
function generate_random()
{
$devices=array("dg.gang", "dg.wand", "dg.dusche", "dg.bad", "dg.reduit", "dg.eltern", "dg.kino", "og.gang", "og.bad.links", "og.bad.rechts", "og.bad.sterne", "og.bad.decke", "og.stefan.decke", "og.stefan.pult", "og.sandra.decke", "og.kind.r", "og.kind.l", "eg.sitzplatz", "eg.wohnzimmer", "eg.bar", "eg.tisch", "eg.decke", "eg.kueche", "eg.bahnlicht", "eg.bad", "eg.gang", "eg.og.treppe", "ug.gast", "ug.gast.dose", "ug.aussen", "ug.gang", "ug.eg.treppe");
#number of events (min - max)
$event_min=isset($_GET['event_min']) ? $_GET['event_min'] : 5;
$event_max=isset($_GET['event_max']) ? $_GET['event_max'] : 20;
#maximum delay in minutes
$delay_min=isset($_GET['delay_min']) ? $_GET['delay_min'] : 0;
$delay_max=isset($_GET['delay_max']) ? $_GET['delay_max'] : 240;
#minimum and maximum ontime in minutes
$ontime_min=isset($_GET['ontime_min']) ? $_GET['ontime_min'] : 5;
$ontime_max=isset($_GET['ontime_max']) ? $_GET['ontime_max'] : 60;
$variant=isset($_GET['variant']) ? $_GET['variant'] : "onoff";
echo "<H2>Random event generator (\"holiday-function\")</H2>";
echo "<FORM action=\"fs20.php\">";
echo "<TABLE>";
echo "<TR><TD>Number of events:</TD><TD><INPUT type=\"text\" size=\"3\" name=\"event_min\" value=\"$event_min\">-";
echo "<INPUT type=\"text\" size=\"3\" name=\"event_max\" value=\"$event_max\">";
if ( $event_min > $event_max ) { echo " : <FONT color=\"red\">min has to be <= max</FONT>"; unset($_GET['random']); }
if ( !is_posint($event_min)) { echo " : <FONT color=\"red\">min has to be a integer</FONT>"; unset($_GET['random']); }
if ( !is_posint($event_max)) { echo " : <FONT color=\"red\">max has to be a integer</FONT>"; unset($_GET['random']); }
echo "</TD></TR>";
echo "<TR><TD>Delay from now:</TD><TD><INPUT type=\"text\" size=\"3\" name=\"delay_min\" value=\"$delay_min\">-";
echo "<INPUT type=\"text\" size=\"3\" name=\"delay_max\" value=\"$delay_max\">Min.";
if ( $delay_min > $delay_max ) { echo " : <FONT color=\"red\">min has to be <= max</FONT>"; unset($_GET['random']); }
if ( !is_posint($delay_min)) { echo " : <FONT color=\"red\">min has to be a integer</FONT>"; unset($_GET['random']); }
if ( !is_posint($delay_max)) { echo " : <FONT color=\"red\">max has to be a integer</FONT>"; unset($_GET['random']); }
echo "</TD></TR>";
echo "<TR><TD>Time to keep on:</TD><TD><INPUT type=\"text\" size=\"3\" name=\"ontime_min\" value=\"$ontime_min\">-";
echo "<INPUT type=\"text\" size=\"3\" name=\"ontime_max\" value=\"$ontime_max\">Min.";
if ( $ontime_min > $ontime_max ) { echo " : <FONT color=\"red\">min has to be <= max</FONT>"; unset($_GET['random']); }
if ( !is_posint($ontime_min)) { echo " : <FONT color=\"red\">min has to be a integer</FONT>"; unset($_GET['random']); }
if ( !is_posint($ontime_max)) { echo " : <FONT color=\"red\">max has to be a integer</FONT>"; unset($_GET['random']); }
echo "</TD></TR>";
echo "<TR><TD colspan=\"2\">Varant: <SELECT size=1 name=\"variant\">";
echo "<OPTION value=\"onoff\"";
printf("%s", $variant == "onoff" ? " selected" : "");
echo ">on / off";
echo "<OPTION value=\"oft\"";
printf("%s", $variant == "oft" ? " selected" : "");
echo ">on-for-timer";
echo "</SELECT>";
echo "<INPUT type=\"submit\" name=\"random\" value=\"Generate!\">";
echo "</TD></TR></TABLE>";
echo "</FORM><P>";
if ( isset($_GET['random'])) {
$event=rand($event_min, $event_max);
echo "Just copy lines below into FHZ1000 command window";
echo "<pre>";
for($i=0; $i<$event; $i++) {
$starttime=rand($delay_min, $delay_max);
$hour=intval($starttime/60);
$minute=intval($starttime%60);
$second=rand(0,59);
$ontime=rand($ontime_min, $ontime_max);
$dev=$devices[array_rand($devices)];
if ($variant == "oft") {
printf("at +%02d:%02d:%02d set %s on-for-timer %d<br>", $hour, $minute, $second, $dev, $ontime);
} elseif ($variant == "onoff") {
$offtime=$starttime + $ontime;
$hour_off=intval($offtime / 60);
$minute_off=intval($offtime % 60);
$second_off=rand(0,59);
printf("at +%02d:%02d:%02d set %s on<br>", $hour, $minute, $second, $dev);
printf("at +%02d:%02d:%02d set %s off<br>", $hour_off, $minute_off, $second_off, $dev);
}
}
echo "<pre>";
}
}
?>
<H1>
FS 20 Haussteuerrung
</H1>
Quicklinks:
<A HREF="#EG">EG</A>
<A HREF="#GE">Generic</A>
<A HREF="#RA">Random</A>
<HR>
<A name="EG">
<H2>EG</H2>
</A>
<TABLE background=images/EG.gif width=567 height=589 border=0>
<TR height=100 align=center><TD width=55></TD><TD width=70></TD><TD width=25></TD><TD width=100></TD><TD width=60></TD><TD width=25></TD><TD width=70></TD><TD width=25></TD><TD width=70></TD><TD></TD></TR>
<TR height=120 align=center><TD></TD><TD colspan=2>
<?PHP print_options("BAR", "eg.bar", TRUE, "EG"); ?>
</TD><TD></TD><TD colspan=4>
<?PHP print_options("WOHNZIMMER", "eg.wohnzimmer", TRUE, "EG"); ?>
</TD><TD></TD><TD></TD></TR>
<TR height=20></TR>
<TR height=70 align=center><TD></TD><TD>
<?PHP print_options("BAD", "eg.bad", FALSE, "EG"); ?>
</TD><TD></TD><TD colspan=2>
<?PHP print_options("GANG", "eg.gang", TRUE, "EG"); ?>
</TD><TD></TD><TD>
<?PHP print_options("TREPPE", "eg.og.treppe", FALSE, "EG"); ?>
</TD><TD></TD><TD></TD><TD></TD></TR>
<TR height=20></TR>
<TR height=70 align=center><TD></TD><TD colspan=2>
<?PHP print_options("KUECHE", "eg.kueche", TRUE, "EG"); ?>
</TD><TD></TD><TD colspan=3>
<?PHP print_options("ESSTISCH", "eg.tisch", TRUE, "EG"); ?>
</TD><TD></TD><TD>
<?PHP print_options("BAHNLICHT", "eg.bahnlicht", FALSE, "EG"); ?>
</TD><TD></TD></TR>
<TR height=20 align=center></TR>
<TR height=70 align=center><TD></TD><TD></TD><TD></TD><TD></TD><TD colspan=3>
<?PHP print_options("DECKE", "eg.decke", FALSE, "EG"); ?>
</TD><TD></TD><TD>
<?PHP print_options("SITZPLATZ", "eg.sitzplatz", FALSE, "EG"); ?>
</TD><TD></TD></TR>
<TR></TR>
</TABLE>
<HR>
<A name="GE">
<H2>Send generic command:</H2>
<FORM action="fs20.php">
<?PHP
echo "<INPUT type=\"textarea\" cols=\"80\" rows=\"5\" name=\"generic\"";
printf("value=\"%s\">", isset($_GET['generic']) ? $_GET['generic'] : "");
?>
<INPUT type="submit" name="submit" value="send">
</FORM>
<HR>
<A name="RA">
<?PHP
generate_random();
//execute command
unset($cmdline);
if (isset($_GET['generic'])) {
$cmdline=explode("\n", $_GET['generic']);
} elseif (isset($_GET['device']) && isset($_GET['state']) && isset($_GET['command'])) {
$cmdline=array($_GET['command']." ".$_GET['device']." ".$_GET['state']);
}
if (isset($cmdline)) {
array_push($cmdline, "quit");
echo "<HR><H2>Last command</H2>";
echo "<TABLE><TR valign=top><TD>send:</TD><TD>";
foreach($cmdline as $line) {
echo "$line<br>";
}
echo "</TD></TR></TABLE>";
echo "<H3><Output></H3>";
$fp = fsockopen("localhost", 7072, $errno, $errstr, 10);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
foreach($cmdline as $line) {
fwrite($fp, $line."\n");
}
echo "<pre>";
while (!feof($fp)) {
echo htmlentities(fgets($fp));
}
echo "</pre>";
fclose($fp);
}
echo "<HR>";
}
?>
</BODY>
</HTML>