function wireRelay_plugin_setting_page() { global $_, $myUser, $conf; if (isset($_['section']) && $_['section'] == 'wireRelay') { if (!$myUser) { throw new Exception('Vous devez être connecté pour effectuer cette action'); } $wireRelayManager = new WireRelay(); $wireRelays = $wireRelayManager->populate(); $roomManager = new Room(); $rooms = $roomManager->populate(); $selected = new WireRelay(); $selected->pulse = 0; $selected->icon = 'fa fa-flash'; //Si on est en mode modification if (isset($_['id'])) { $selected = $wireRelayManager->getById($_['id']); } $icons = array('fa fa-lightbulb-o', 'fa fa-power-off', 'fa fa-flash', 'fa fa-gears', 'fa fa-align-justify', 'fa fa-adjust', 'fa fa-arrow-circle-o-right', 'fa fa-desktop', 'fa fa-music', 'fa fa-bell-o', 'fa fa-beer', 'fa fa-bullseye', 'fa fa-automobile', 'fa fa-book', 'fa fa-bomb', 'fa fa-clock-o', 'fa fa-cutlery', 'fa fa-microphone', 'fa fa-tint'); ?> <div class="span9 userBloc"> <h1>Relais</h1> <p>Gestion des relais filaires</p> <fieldset> <legend>Ajouter/Modifier un relais filaire</legend> <div class="left"> <label for="nameWireRelay">Nom</label> <input type="hidden" id="id" value="<?php echo $selected->id; ?> "> <input type="text" id="nameWireRelay" value="<?php echo $selected->name; ?> " placeholder="Lumiere Canapé…"/> <label for="descriptionWireRelay">Description</label> <input type="text" value="<?php echo $selected->description; ?> " id="descriptionWireRelay" placeholder="Relais sous le canapé…" /> <label for="iconWireRelay">Icone</label> <input type="hidden" value="<?php echo $selected->icon; ?> " id="iconWireRelay" /> <div> <div style='margin:5px;'> <?php foreach ($icons as $i => $icon) { if ($i % 6 == 0) { echo '</div><div style="margin:5px;">'; } ?> <i style="width:25px;" onclick="plugin_wirerelay_set_icon(this,'<?php echo $icon; ?> ');" class="<?php echo $icon; ?> btn <?php echo $selected->icon == $icon ? 'btn-success' : ''; ?> "></i> <?php } ?> </div> </div> <label for="onWireRelay">Commande vocale "ON" associée</label> <?php echo $conf->get('VOCAL_ENTITY_NAME'); ?> , <input type="text" id="onWireRelay" value="<?php echo $selected->oncommand; ?> " placeholder="Allume la lumière, Ouvre le volet…"/> <label for="offWireRelay">Commande vocale "OFF" associée</label> <?php echo $conf->get('VOCAL_ENTITY_NAME'); ?> , <input type="text" id="offWireRelay" value="<?php echo $selected->offcommand; ?> " placeholder="Eteinds la lumière, Ferme le volet…"/> <label for="pinWireRelay">Pin GPIO (Numéro Wiring PI) relié au relais</label> <input type="number" value="<?php echo $selected->pin; ?> " id="pinWireRelay" placeholder="0,1,2…" /> <label for="roomWireRelay">Pièce de la maison</label> <select id="roomWireRelay"> <?php foreach ($rooms as $room) { ?> <option <?php if ($selected->room == $room->getId()) { echo "selected"; } ?> value="<?php echo $room->getId(); ?> "><?php echo $room->getName(); ?> </option> <?php } ?> </select> <label for="pinWireRelay">Mode impulsion (micro secondes)</label> <input type="number" value="<?php echo $selected->pulse; ?> " id="pulseWireRelay" placeholder="0" /> <small>laisser à zéro pour désactiver le mode impulsion</small> </div> <div class="clear"></div> <br/><button onclick="plugin_wirerelay_save(this)" class="btn">Enregistrer</button> </fieldset> <br/> <fieldset> <legend>Consulter les relais filaires existants</legend> <table class="table table-striped table-bordered table-hover"> <thead> <tr> <th>Nom</th> <th>Description</th> <th>Pin GPIO</th> <th>Pièce</th> <th colspan="2">Impulsion</th> </tr> </thead> <?php foreach ($wireRelays as $wireRelay) { $room = $roomManager->load(array('id' => $wireRelay->room)); ?> <tr> <td><?php echo $wireRelay->name; ?> </td> <td><?php echo $wireRelay->description; ?> </td> <td><?php echo $wireRelay->pin; ?> </td> <td><?php echo $room->getName(); ?> </td> <td><?php echo $wireRelay->pulse; ?> </td> <td> <a class="btn" href="setting.php?section=wireRelay&id=<?php echo $wireRelay->id; ?> "><i class="fa fa-pencil"></i></a> <div class="btn" onclick="plugin_wirerelay_delete(<?php echo $wireRelay->id; ?> ,this);"><i class="fa fa-times"></i></div> </td> </td> </tr> <?php } ?> </table> </fieldset> </div> <?php } }
function wireRelay_action_wireRelay() { global $_, $conf, $myUser; switch ($_['action']) { case 'wireRelay_delete_wireRelay': if ($myUser->can('relais filaire', 'd')) { $wireRelayManager = new WireRelay(); $wireRelayManager->delete(array('id' => $_['id'])); } header('location:setting.php?section=wireRelay'); break; case 'wireRelay_plugin_setting': $conf->put('plugin_wireRelay_emitter_pin', $_['emiterPin']); $conf->put('plugin_wireRelay_emitter_code', $_['emiterCode']); header('location: setting.php?section=preference&block=wireRelay'); break; case 'wireRelay_add_wireRelay': if ($myUser->can('relais filaire', $_['id'] != '' ? 'u' : 'c')) { $wireRelayManager = new WireRelay(); $wireRelay = $_['id'] != '' ? $wireRelayManager->getById($_['id']) : new WireRelay(); $wireRelay->setName($_['nameWireRelay']); $wireRelay->setDescription($_['descriptionWireRelay']); $wireRelay->setPin($_['pinWireRelay']); $wireRelay->setRoom($_['roomWireRelay']); $wireRelay->setPulse($_['pulseWireRelay']); $wireRelay->save(); } header('location:setting.php?section=wireRelay'); break; case 'wireRelay_change_state': global $_, $myUser; if ($myUser->can('relais filaire', 'u')) { $wireRelay = new WireRelay(); $wireRelay = $wireRelay->getById($_['engine']); //TODO - remplacer par Gpio::mode($wireRelay->getPin(),'out'); $cmd = '/usr/local/bin/gpio mode ' . $wireRelay->getPin() . ' out'; Functions::log('Launch system command : ' . $cmd); system($cmd, $out); if ($wireRelay->getPulse() == 0) { //TODO - remplacer par Gpio::write($wireRelay->getPin(),$_['state']); $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' ' . $_['state']; Functions::log('Launch system command : ' . $cmd); system($cmd, $out); } else { //TODO - remplacer par Gpio::write($wireRelay->getPin(),1); $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' 1'; system($cmd, $out); usleep($wireRelay->getPulse()); //TODO - remplacer par Gpio::write($wireRelay->getPin(),0); $cmd = '/usr/local/bin/gpio write ' . $wireRelay->getPin() . ' 0'; Functions::log('Launch system command : ' . $cmd); system($cmd, $out); } //TODO change bdd state if (!isset($_['webservice'])) { header('location:index.php?module=room&id=' . $wireRelay->getRoom()); } else { $affirmations = array('A vos ordres!', 'Bien!', 'Oui commandant!', 'Avec plaisir!', 'J\'aime vous obéir!', 'Avec plaisir!', 'Certainement!', 'Je fais ça sans tarder!', 'Avec plaisir!', 'Oui chef!'); $affirmation = $affirmations[rand(0, count($affirmations) - 1)]; $response = array('responses' => array(array('type' => 'talk', 'sentence' => $affirmation))); $json = json_encode($response); echo $json == '[]' ? '{}' : $json; } } else { $response = array('responses' => array(array('type' => 'talk', 'sentence' => 'Je ne vous connais pas, je refuse de faire ça!'))); echo json_encode($response); } break; } }