function postToWebSocket($property, $value, $post_action = 'PostProperty') { if (defined('DISABLE_WEBSOCKETS') && DISABLE_WEBSOCKETS == 1) { return; } require_once ROOT . 'lib/websockets/client/lib/class.websocket_client.php'; global $wsClient; if (!Is_Object($wsClient)) { $wsClient = new WebsocketClient(); if (!@$wsClient->connect('127.0.0.1', WEBSOCKETS_PORT, '/majordomo')) { $wsClient = false; } } if (!Is_Object($wsClient) && isset($_SERVER['REQUEST_METHOD'])) { return false; } $payload = json_encode(array('action' => $post_action, 'data' => array('NAME' => $property, 'VALUE' => $value))); $data_sent = false; if (Is_Object($wsClient)) { $data_sent = @$wsClient->sendData($payload); } if (!$data_sent && !isset($_SERVER['REQUEST_METHOD'])) { //reconnect $wsClient = new WebsocketClient(); if (@$wsClient->connect('127.0.0.1', WEBSOCKETS_PORT, '/majordomo')) { $wsClient->sendData($payload); } } }
/** * Fonction permettant la planification horaire * $Mac est un string, l'adresse mac de la multiprise du client * $N_prise est un int, le numéro de la prise qui se modifie * $Nb_Ephe est un int, le nombre d'éphémeride * $Plannif est un string, il s'agit du jouer et l'heure planifié pour un changement d'etat * Return $resultat string, renvoi confirmation ou echec */ function Ephemeride($Mac, $N_prise, $Nb_Ephe, $Plannif) { //Adresse IP du serveur WS $Ip = '172.17.50.152'; //appel de la BDD Base_de_donnees(); try { $ephe = 'Nb_Ephe_Prise' . $N_prise; $prise = 'Prise' . $N_prise . '_E' . $Nb_Ephe; // Requete sql qui selectionne la ligne en fonction de l'adresse mac $requete = mysql_query("SELECT * FROM multiprise WHERE Mac='{$Mac}'"); // Vérification du contenu de la requete if (mysql_num_rows($requete) == 0) { return "Impossible d'effectuer cette action"; } else { //requete permettant la mise a jour de la table programmation contenant les données de la planification $reponse = mysql_query("UPDATE programmation SET {$ephe}='{$Nb_Ephe}', {$prise}='{$Plannif}' WHERE Mac='{$Mac}' "); //Le prise ayant subit une planification horaire prend la valeur 1 switch ($N_prise) { case 1: $p = '10000'; break; case 2: $p = '01000'; break; case 3: $p = '00100'; break; case 4: $p = '00010'; break; case 5: $p = '00001'; break; } // Création d'un client web socket et connexion au serveur $client = new WebsocketClient(); $client->connect($Ip, 9300, '/'); // Renvoi "#" + l'adresse Mac + la prise qui a subbit le changement $client->sendData("#{$Mac}{$p}"); return "Programmation de la prise effectuée"; } } catch (Exception $a) { //En cas d'erreur de connexion die('Erreur:' . $a->getMessage()); } }
*/ return true; } private function _disconnect() { fclose($this->_Socket); } private function _generateRandomString($length = 10, $addSpaces = true, $addNumbers = true) { $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"§$%&/()=[]{}'; $useChars = array(); // select some random chars: for ($i = 0; $i < $length; $i++) { $useChars[] = $characters[mt_rand(0, strlen($characters) - 1)]; } // add spaces and numbers: if ($addSpaces === true) { array_push($useChars, ' ', ' ', ' ', ' ', ' ', ' '); } if ($addNumbers === true) { array_push($useChars, rand(0, 9), rand(0, 9), rand(0, 9)); } shuffle($useChars); $randomString = trim(implode('', $useChars)); $randomString = substr($randomString, 0, $length); return $randomString; } } $WebSocketClient = new WebsocketClient('69.163.242.219', 8888, '5624c7d1f10b1'); echo $WebSocketClient->sendData('1337'); unset($WebSocketClient);