function refreshSensorValue($con, $sensorId, $sensorWert) { $SHORTCUTS_URL_COMMAND = ""; $lastVal = getDbValue("homecontrol_sensor", "lastValue", "id=" . $sensorId); if ($lastVal == $sensorWert) { return; } // MySQL UPDATE $sql = "UPDATE homecontrol_sensor SET lastValue=" . $sensorWert . ", lastSignal=" . time() . " WHERE id=" . $sensorId; $result = $con->executeQuery($sql); $sql = "INSERT INTO homecontrol_sensor_log(sensor_id, value, update_time) values (" . $sensorId . "," . $sensorWert . "," . time() . ")"; $result = $con->executeQuery($sql); try { $myfile = fopen("signalIn.log", "a+"); fwrite($myfile, "" . date("d.M.Y H:i:s") . ": " . "Sensor " . $sensorId . " aktualisiert von: " . $lastVal . " nach " . $sensorWert . "\n"); fclose($myfile); } catch (Exception $e) { } // URL-Aufruf ermitteln // Wenn keine Schaltvorgaenge notwendig sind (nur Status-Update) // wird ein Leerstring zurueckgeliefert $SENSOR_URL_COMMAND = prepareSensorSwitchLink($sensorId); // HTML-Daten an Browser senden, // bevor Schaltvorgaenge ausgeloest werden. ob_implicit_flush(); ob_end_flush(); flush(); // Wenn auszufuehrendes Kommando gefunden wurde, ausfuehren if (strlen($SENSOR_URL_COMMAND) > 0) { switchShortcut("", $SENSOR_URL_COMMAND, $con); try { $myfile = fopen("signalIn.log", "a+"); fwrite($myfile, "SCHALTUNG -> " . $SENSOR_URL_COMMAND . "\n"); fclose($myfile); } catch (Exception $e) { } } }
while ($row = mysql_fetch_array($result)) { if (isCronPaused($_SESSION['config']->DBCONNECT, $row['id'])) { deleteCronPause($_SESSION['config']->DBCONNECT, $row['id']); } else { $shortcutUrl = getShortcutSwitchKeyForCron($_SESSION['config']->DBCONNECT, $row['id']); $url = parse_url(__FILE__); $currPath = dirname($url['path']); if (substr($currPath, strlen($currPath) - 1) != "/" && strlen($currPath) > 1) { $currPath .= "/"; } $shortcutUrls[count($shortcutUrls)] = $shortcutUrl; } } } // ------------------------------ foreach ($shortcutUrls as $shortcutUrl) { echo "Switch: " . $shortcutUrl . "\n\n"; switchShortcut($arduinoUrl, $shortcutUrl, $_SESSION['config']->DBCONNECT); } // ------------------------------ function isCronPaused($con, $id) { $sql = "SELECT 'X' FROM homecontrol_cron_pause WHERE cron_id = " . $id; $result = $con->executeQuery($sql); return mysql_num_rows($result) > 0; } function deleteCronPause($con, $id) { $sql = "DELETE FROM homecontrol_cron_pause WHERE cron_id = " . $id; $result = $con->executeQuery($sql); }
} $link = mysql_connect($DBHOST, $DBUSER, $DBPASS); if (!$link) { die('Verbindung schlug fehl: ' . mysql_error()); } mysql_select_db($DBNAME, $link) or die('Could not select database.'); /********************** * Script Start **********************/ // URL-Aufruf ermitteln // Wenn keine Schaltvorgaenge notwendig sind (nur Status-Update) // wird ein Leerstring zurueckgeliefert $SENSOR_URL_COMMAND = getShortcutSwitchKeyByName($shortcutName); // HTML Ausgabe echo "\r\n<html>\r\n <head>\r\n <title>Shortcut schalten</title>\r\n </head>\r\n <body>\r\n Shortcut: " . $shortcutName . "</br>\r\n " . $SENSOR_URL_COMMAND . "</br>\r\n </body>\r\n</html>\r\n"; mysql_close($link); // HTML-Daten an Browser senden, // bevor Schaltvorgaenge ausgeloest werden. ob_implicit_flush(); ob_end_flush(); flush(); // Wenn auszufuehrendes Kommando gefunden wurde, ausfuehren if (strlen($SENSOR_URL_COMMAND) > 0) { $dc = new DbConnect($DBHOST, $DBUSER, $DBPASS, $DBNAME); switchShortcut($arduinoUrl, $SENSOR_URL_COMMAND, $dc); } function exitMissingValues() { echo "<html>\r\n <head>\r\n <title>Input: FAILED!</title>\r\n </head>\r\n <body>\r\n FEHLER!</br>\r\n shortcutName muss angegeben werden!\r\n </body>\r\n </html>\r\n "; exit("shortcutName muss angegeben werden!"); }
if (isset($_REQUEST['run']) && strlen($_REQUEST['run']) > 0) { if (isValidRun($_REQUEST['run'])) { // NEUES ZIEL ANGEFORDERT $run = $RUNLINKS->getLinkByName($_REQUEST['run']); $_SESSION['runLink'] = $_REQUEST['run']; $_SESSION['tmp'] = array(); } } else { if (!isset($_SESSION[$runLinkTarget]) || strlen($_SESSION[$runLinkTarget]) == 0) { //KEIN ZIEL ANGEGEBEN -> KEIN ALTES ZIEL VORHANDEN Default: start $run = $RUNLINKS->getLinkByName("start"); $_SESSION['runLink'] = "start"; } } //Wurde ein Link gefunden wird dieser Wert im entsprechenden Ziel aktualisiert if (strlen($run) > 0) { // Ist ein alternatives Ziel gesetzt, // wird der neue link in die entsprechende session-variable geschrieben // ansonsten gilt der RUNLINK für die Hauptseite (mainpage) if (isset($runLinkTarget) && strlen($runLinkTarget) > 0) { $_SESSION[$runLinkTarget] = $run; } else { $_SESSION['mainpage'] = $run; } } include "header_index.php"; if (isset($_REQUEST['switchShortcut']) && strlen($_REQUEST['switchShortcut']) > 3) { switchShortcut("http://" . $_SESSION['config']->PUBLICVARS['arduino_url'], $_REQUEST['switchShortcut'], $_SESSION['config']->DBCONNECT); } include "layout.php"; include "foot.php";
function switchObject($id, $onOff, $dimm = 0) { switchShortcut("http://" . $_SESSION['config']->PUBLICVARS['arduino_url'], $id . "-" . $onOff . ($dimm > 0 && $dimm < 17 ? "-" . $dimm : ""), $_SESSION['config']->DBCONNECT); }