function send_dmx_input_level_info_message($id, &$in_states) { global $dinames; $endpoint_name = ''; $displaytext = ''; $state = substr($in_states, $id * 2, 2) == '00' ? 'Off' : 'On'; $level = hexdec(substr($in_states, $id * 2, 2)) . '/255'; $displaytext = ''; if (isset($dinames[$id + 1]) and $dinames[$id + 1] != '') { $endpoint_name = $dinames[$id + 1] . '.Level'; $displaytext = sprintf("displaytext=Status and Dimmer Level of DMX Channel %s, %s\n", $id + 1, $dinames[$id + 1]); } $msg = sprintf("input.state\n{\nstate=%s\nlevel=%s\n%s}\n", $state, $level, $displaytext); xap_sendInfoMsg($msg, '', xap_make_endpoint_source(XAPSRC_DMX_IN1, $id, $endpoint_name), xap_make_endpoint_uid(XAPUID_DMX_IN1, $id)); }
function xap_send_switch_msg($switch_no, $state, $displayTxt = '') { $msg = "input.state\n{\nState=" . $state . "\n"; if ($displayTxt != '') { $msg .= "DisplayText=" . $displayTxt . "\n"; } $msg .= "}\n"; $source = xap_make_endpoint_source($switch_no); $uid = xap_make_endpoint_uid($switch_no); xap_sendEventMsg($msg, "", $source, $uid); }
function send_data() { global $debug, $minmax; $s = enumerate_w1_sensors(); if (is_array($s)) { foreach ($s as $k => $v) { //$k=xap_id $v=sensor metadata if ($v['AVAILABLE'] == 'YES') { if ($v['TYPE'] == 28) { //1 wire temperature sensor $id = $v['TYPE'] . '-' . $v['SENSOR_ID']; logformat(sprintf("Reading 1 wire temperature sensor with ID: '%s' and NAME: '%s'.\n", $id, $v['NAME'])); $cmd = 'cat ' . SENSORPATH . '/' . $id . '/w1_slave'; $r = explode("\n", `{$cmd}`); if (substr($r[0], -3) == 'YES') { $t = explode("=", $r[1]); $temp = sprintf("%.03f", $t[1] / 1000); $dt = date('YmdHis'); // deal with min and max values and save them if (!isset($minmax[$id])) { $minmax[$id] = array('min' => $temp, 'mintime' => $dt, 'max' => $temp, 'maxtime' => $dt); } if ($temp < $minmax[$id]['min']) { $minmax[$id]['min'] = $temp; $minmax[$id]['mintime'] = $dt; } if ($temp > $minmax[$id]['max']) { $minmax[$id]['max'] = $temp; $minmax[$id]['maxtime'] = $dt; } logformat(sprintf("Id=%s,Name=%s,Data=%s°C\n", $id, $v['NAME'], $temp)); $msg = sprintf("info.temperature\n{\nname=%s\ndatetime=%s\nunit=c\nvalue=%s\nsensorId=%s\n}\n", XAPSOURCE . '.' . $v['NAME'], $dt, $temp, $id); $msg .= sprintf("stats.temperature\n{\nmax=%s\nmaxtime=%s\nmin=%s\nmintime=%s\n}\n", $minmax[$id]['max'], $minmax[$id]['maxtime'], $minmax[$id]['min'], $minmax[$id]['mintime']); xap_sendMsg('xAPTSC.info', $msg, '', xap_make_endpoint_source(XAPSOURCE, $k), xap_make_endpoint_uid(XAPUID, $k)); } } } else { logformat(sprintf("Skipping 1 wire sensor with ID: '%s-%s' and NAME: '%s'.\n", $v['TYPE'], $v['SENSOR_ID'], $v['NAME'])); } } } return 1; }
function send_io_output_binary_info_message($id, &$out_states) { global $onames; $endpoint_name = ''; $displaytext = ''; $state = substr($out_states, $id * 2, 2) == 'FF' ? 'On' : 'Off'; if (isset($onames[$id + 1]) and $onames[$id + 1] != '') { $endpoint_name = $onames[$id + 1]; $displaytext = sprintf("displaytext=Status of Lighting Fixture %s\n", $onames[$id + 1]); } $msg = sprintf("output.state\n{\nstate=%s\n%s}\n", $state, $displaytext); xap_sendInfoMsg($msg, '', xap_make_endpoint_source(XAPSRC_IO_OUT, $id, $endpoint_name), xap_make_endpoint_uid(XAPUID_IO_OUT, $id)); }