function msg_arr($arr) { if (@$arr['msg']) { return emsg($arr['msg'], 'ok'); } else { return emsg($arr['err'], 'alert_cross'); } }
$op = $raw_caseta >= 0 ? "lutron_pico_add" : "lutron_pico_del"; $caseta = abs($raw_caseta); function emsg($msg) { echo $msg; exit; } $db = "/database/apron.db"; $dbh = new SQLite3($db); $dbh->busyTimeout(5000); $device_result = $dbh->query("SELECT masterId FROM lutronDevice WHERE lNodeId = {$pico}"); $row = $device_result->fetchArray(SQLITE3_ASSOC) or emsg("No such device."); $pico_master = $row["masterId"]; $device_result->finalize(); $device_result = $dbh->query("SELECT masterId FROM lutronDevice WHERE lNodeId = {$caseta}"); $row = $device_result->fetchArray(SQLITE3_ASSOC) or emsg("No such device."); $caseta_master = $row["masterId"]; $device_result->finalize(); $dbh->close(); unset($dbh); $cmd = "aprontest --{$op} {$caseta_master} -m {$pico_master} | sed 's/[[:space:]][[:space:]]*/ /g' | grep '^[[:space:]][[:alnum:]]*: [A-Za-z0-9\\-_]*\$' | sed 's/^ //'"; $output = `{$cmd}`; $lines = explode(PHP_EOL, $output); $data = array("cmd" => $cmd, "serial" => $pico, "op" => $op, "value" => $caseta); $result = array(); foreach ($lines as $line) { if (!$line) { continue; } list($key, $value) = explode(": ", $line); $result[$key] = $value;
<?php // Hardware-pairs Pico remotes to a set of Caseta dimmers. // Useful for bypassing SmartThings' considerable latency and establishing // instant and reliable Pico-to-Caseta communication. // Pass comma delimited Pico serials in the pico parameter. if (!isset($_REQUEST["pico"])) { emsg('No pico parameter'); } // And a comma delimited set of Caseta serials as the caseta parameter. if (!isset($_REQUEST["caseta"])) { emsg("No caseta parameter specified (even empty)."); } header('Content-Type: application/json'); header('X-Response: DEVICE_LINKED'); $picos = $_REQUEST["pico"] ? array_map("intval", explode(",", $_REQUEST["pico"])) : array(); $new_dimmers = $_REQUEST["caseta"] ? array_map("intval", explode(",", $_REQUEST["caseta"])) : array(); function emsg($msg) { echo $msg; exit; } // Get existing links. $existing_dimmers = array(); foreach ($picos as $pico) { $existing_dimmers[$pico] = array(); } $db = "/database/lutron-db.sqlite"; $dbh = new SQLite3($db); $dbh->busyTimeout(15000); $picos_str = implode(",", $picos);