Пример #1
0
 public static function setPinValue($_logicalId, $_value)
 {
     $General_Debug = config::byKey('generalDebug', 'arduidom', 0, true);
     $DaemonReady = self::get_daemon_mode();
     if ($General_Debug) {
         log::add('arduidom', 'debug', 'setPinValue(' . $_logicalId . ',' . $_value . ') called');
     }
     $func_start_time = getmicrotime(true);
     if ($DaemonReady != "OK" && $DaemonReady != "STARTED") {
         if ($General_Debug) {
             log::add("arduidom", "debug", "le démon n'est pas pret");
         }
         return "DAEMON_NOT_OK";
     }
     $arduid = 0;
     if ($_logicalId > 999) {
         $arduid = $_logicalId[0];
         $_logicalId = intval(substr($_logicalId, 1));
     }
     $cachekey = "arduidom::lastSetPin" . (intval($arduid) * 1000 + intval($_logicalId));
     cache::set($cachekey, $_value, 0);
     if ($General_Debug) {
         log::add('arduidom', 'debug', '   cache::set(' . $cachekey . ',' . $_value . ')');
     }
     $tcpmsg = "";
     log::add('arduidom', 'debug', 'setPinValue(' . $_logicalId . ',' . $_value . ') for arduino ' . $arduid);
     $config = config::byKey('A' . $arduid . '_pin::' . $_logicalId, 'arduidom');
     if ($General_Debug) {
         log::add('arduidom', 'debug', '   $config=' . $config);
     }
     if ($config == 'disable') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . $_value;
     }
     if ($config == 'out') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . $_value;
     }
     if ($config == 'pup' || $config == 'pdwn' || $config == 'blnk') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . sprintf("%04s", $_value);
     }
     if ($config == 'oinv') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . $_value;
     }
     if ($config == 'rout') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . $_value;
     }
     if ($config == 'pout') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . sprintf("%03s", $_value);
     }
     if ($config == 'custout') {
         $tcpmsg = "SP" . sprintf("%02s", $_logicalId) . sprintf("%010s", $_value);
     }
     $tcpcheck = arduidom::sendtoArduino($tcpmsg, $arduid);
     if ($tcpcheck != $tcpmsg . "_OK") {
         //if ($tcpcheck != "SP_OK") {
         if ($tcpcheck == $tcpmsg . "_BAD") {
             log::add('arduidom', 'error', "Erreur sur setPinValue(" . $arduid . ',' . $tcpmsg . ") - (Recu : " . $tcpcheck . ") Vérifiez votre configutation des pins !");
             if (substr(jeedom::version(), 0, 1) == 2) {
                 event::add('jeedom::alert', array('level' => 'error', 'message' => __("Erreur sur setPinValue(" . $arduid . ',' . $tcpmsg . ") - (Recu : " . $tcpcheck . ") Vérifiez votre configutation des pins !", __FILE__)));
             }
         } else {
             log::add('arduidom', 'error', "Erreur sur setPinValue(" . $arduid . ',' . $tcpmsg . ") - (Recu : " . $tcpcheck . ")");
             if (substr(jeedom::version(), 0, 1) == 2) {
                 event::add('jeedom::alert', array('level' => 'error', 'message' => __("Erreur sur setPinValue(" . $arduid . ',' . $tcpmsg . ") - (Recu : " . $tcpcheck . ")", __FILE__)));
             }
         }
     }
     $elapsed_time = getmicrotime(true) - $func_start_time;
     $elapsed_time = $elapsed_time * 1000;
     $elapsed_time = number_format($elapsed_time, 1, '.', '') . " ms";
     if ($General_Debug) {
         log::add('arduidom', 'debug', 'setPinValue(' . $_logicalId . ',' . $_value . ') takes ' . $elapsed_time);
     }
     return $tcpcheck;
 }