public static function pull() { $cache = cache::byKey('zwave::lastUpdate'); $http = new com_http(self::makeBaseUrl() . '/ZWaveAPI/Data/' . $cache->getValue(strtotime(date('Y-m-d H:i:s')) - 86400)); $results = json_decode(self::handleError($http->exec()), true); if (is_array($results)) { foreach ($results as $key => $result) { switch ($key) { case 'controller.data.controllerState': nodejs::pushUpdate('zwave::' . $key, $result['value']); break; case 'controller.data.lastExcludedDevice': if ($result['value'] != null) { nodejs::pushNotification('Razberry', 'Un périphérique Z-Wave vient d\'être exclu. Logical ID : ' . $result['value']); self::syncEqLogicWithRazberry(); } break; case 'controller.data.lastIncludedDevice': if ($result['value'] != null) { nodejs::pushNotification('Razberry', 'Un périphérique Z-Wave vient d\'être inclu. Logical ID : ' . $result['value']); self::syncEqLogicWithRazberry(); } break; default: $explodeKey = explode('.', $key); if (count($explodeKey) > 5) { $nodeId = intval($explodeKey[1]); $instanceId = intval($explodeKey[3]); $class = intval($explodeKey[5]); for ($i = 0; $i < 6; $i++) { array_shift($explodeKey); } $attribut = implode('.', $explodeKey); foreach (self::byLogicalId($nodeId, 'zwave') as $eqLogic) { foreach ($eqLogic->getCmd() as $cmd) { if ($cmd->getConfiguration('instanceId') == $instanceId && $cmd->getConfiguration('class') == '0x' . dechex($class)) { $configurationValue = $cmd->getConfiguration('value'); if (strpos($configurationValue, '[') !== false && strpos($configurationValue, ']') !== false) { $configurationValue = str_replace(']', '', str_replace('[', '.', $configurationValue)); } if (strpos($configurationValue, $attribut) !== false) { if (isset($result['val'])) { $value = zwaveCmd::handleResult($result['val']); } else { if (isset($result['level'])) { $value = zwaveCmd::handleResult($result['level']); } else { $value = zwaveCmd::handleResult($result); } } if ($value === '') { log::add('zwave', 'info', 'Event sur ' . $cmd->getId() . ' / ' . $cmd->getName() . ' mais aucun valeur trouvée. Event result :' . print_r($result, true)); $value = $cmd->execute(); } $cmd->event($value); } } } } } break; } } } if (isset($results['updateTime']) && is_numeric($results['updateTime']) && $results['updateTime'] > $cache->getValue(0)) { cache::set('zwave::lastUpdate', $results['updateTime'], 0); } }
public function save() { if ($this->getMessage() == '') { return; } if ($this->getLogicalId() == '') { $this->setLogicalId($this->getPlugin() . '::' . config::genKey()); } $values = array('message' => $this->getMessage(), 'logicalId' => $this->getLogicalId(), 'plugin' => $this->getPlugin()); $sql = 'SELECT count(*) FROM message WHERE plugin=:plugin AND ( logicalId=:logicalId OR message=:message ) '; $result = DB::Prepare($sql, $values, DB::FETCH_TYPE_ROW); if ($result['count(*)'] == 0) { DB::save($this); @nodejs::pushNotification(__('Message de ', __FILE__) . $this->getPlugin(), $this->getMessage(), 'message'); $cmds = explode('&&', config::byKey('emailAdmin')); if (count($cmds) > 0) { foreach ($cmds as $id) { $cmd = cmd::byId(str_replace('#', '', $id)); if (is_object($cmd)) { $cmd->execCmd(array('title' => __('[JEEDOM] Message de ', __FILE__) . $this->getPlugin(), 'message' => $this->getMessage())); } else { log::add('message', 'info', __('Impossible de trouver la commande correspondant à :', __FILE__) . $id); } } } } @nodejs::pushUpdate('message::refreshMessageNumber'); }