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()); } }