示例#1
0
#!/usr/bin/php -q
<?php 
DEFINE('CONTEXT', dirname($_SERVER['SCRIPT_FILENAME']));
include CONTEXT . '/core/_includes/eib-functions.php';
$groupaddr = $argv[1];
$dpt = $argv[2];
if (count($argv) == 4) {
    $rendu = true;
} else {
    $rendu = false;
}
$hexa = exec('eibread -s 127.0.0.1 ' . $groupaddr);
$data = hexdec($hexa);
if (!$rendu) {
    print dptSelectDecode($dpt, $data) . "\n";
} else {
    print decodeState($dpt, $data) . "\n";
}
示例#2
0
function decodeState($dpt, $data)
{
    $state = dptSelectDecode($dpt, $data);
    $t = All_DPT();
    $type = recursive_array_search($dpt, $t);
    switch ($type) {
        case "Boolean":
            return $t[$type][$dpt]["Valeurs"][$state];
            break;
        case "8BitEncAbsValue":
            return $t[$type][$dpt]["Valeurs"][$state];
            break;
        default:
            return $state . " " . $t[$type][$dpt]["Unite"];
            break;
    }
}
示例#3
0
Mise a jour du ficheir knxtrace.json a chaque modification d'un equipement suivi
*/
System_Daemon::info("Mise a jour du fichier knxtrace.json a chaque modification d'un equipement suivi et sauvegarde en base s'il doit etre historisé");
//$lastpos = 0;
while (true) {
    // On tail le fichier de log
    $knxlisten = tail(PATH_LOG, $lastpos);
    // On r�agit d�s qu'on a un Write
    // Pour chaque ligne, on r�cup�re le Groupe d'Addresse et de la valeur qu'on converti
    $groupaddr = get_string_between($knxlisten, 'group addr: ', ' -');
    $hexa = get_string_between($knxlisten, 'Hexa: ', ' -');
    //on met a jour le valeur dans le tableau et on regenere le fichier json
    //recursive_array_search
    if (array_key_exists($groupaddr, $sniffed)) {
        $decimal = hexdec($hexa);
        $value = dptSelectDecode($sniffed[$groupaddr]['dpt'], $decimal);
        //ecriture en base si changement d'etat et bas simplement l'equipement qui redis la meme chose sur le bus
        //System_Daemon::notice("Old Value -> ".$groupaddr.":: ".$oldSniffedValue[$groupaddr]);
        //System_Daemon::notice("New Value -> ".$groupaddr.":: ".$value);
        if ($oldSniffedValue[$groupaddr] != $value) {
            //System_Daemon::notice("MAJ");
            $sniffed[$groupaddr]['value'] = $value;
            makeJsonTrace($sniffed);
            //System_Daemon::notice("TRACKED::".$sniffed[$groupaddr]['is_track']);
            if ($sniffed[$groupaddr]['is_track'] == 1) {
                //Inseetion en base de données car l'eqt is_track=true
                //System_Daemon::notice("SAVE");
                $jour = date('Y-m-d');
                //$heure  = date('H:i:s');
                $time = time();
                //time stamp is in seconds, so now -1 would be the current date minus 1
示例#4
0
    $sniffed[$data['group_addr']] = array("name" => $data['name'], "dpt" => $data['dpt'], "value" => "", "unite" => getDptUnite($data['dpt']));
}
var_dump($sniffed);
var_dump(json_encode($sniffed, JSON_UNESCAPED_SLASHES));
var_dump(decodeState('9.017', 1447));
echo ":::::::<br>";
echo "<br>";
/* DPT 1 */
echo 'DPT  1.xxx - OK -';
//$data = 0x0; //-> bin : 0 -> Off
$data = 0x80;
//-> bin 1 -> on
echo ' Decode : ' . $data . " - binaire : " . decbin($data) . " - ";
$res = $data;
var_dump($res);
echo dptSelectDecode('1.000', $data);
/* DPT 2 */
echo 'DPT  2.xxx - OK -';
// control type
//$data = 0x2; //-> bin : 10 -> Off
$data = 0x3;
//-> bin 01 -> on
echo ' Decode : ' . $data . " - binaire : " . decbin($data) . " - ";
//si control = 0 on garde la sortie a 0
$res = 0x0;
if ($data >> 1) {
    // si le control est a 1, on met en sortie la valeur du premier bit
    $res = $data & 0x1;
}
var_dump($res);
/* DPT 3 */