function radioRelay_action_radioRelay()
{
    global $_, $conf, $myUser;
    //Mise à jour des droits
    $myUser->loadRight();
    switch ($_['action']) {
        case 'radioRelay_delete_radioRelay':
            if ($myUser->can('radio relais', 'd')) {
                $radioRelayManager = new RadioRelay();
                $radioRelayManager->delete(array('id' => $_['id']));
                header('location:setting.php?section=radioRelay');
            } else {
                header('location:setting.php?section=radioRelay&error=Vous n\'avez pas le droit de faire ça!');
            }
            break;
        case 'radioRelay_plugin_setting':
            $conf->put('plugin_radioRelay_emitter_pin', $_['emiterPin']);
            $conf->put('plugin_radioRelay_emitter_code', $_['emiterCode']);
            header('location: setting.php?section=preference&block=radioRelay');
            break;
        case 'radioRelay_add_radioRelay':
            //Vérifie si on veut modifier ou ajouter un relai
            $right_toverify = isset($_['id']) ? 'u' : 'c';
            if ($myUser->can('radio relais', $right_toverify)) {
                $radioRelay = new RadioRelay();
                //Si modification on charge la ligne au lieu de la créer
                if ($right_toverify == "u") {
                    $radioRelay = $radioRelay->load(array("id" => $_['id']));
                }
                $radioRelay->setName($_['nameRadioRelay']);
                $radioRelay->setDescription($_['descriptionRadioRelay']);
                $radioRelay->setRadioCode($_['radioCodeRadioRelay']);
                $radioRelay->setRoom($_['roomRadioRelay']);
                $radioRelay->setPulse($_['pulseRadioRelay']);
                $radioRelay->save();
                header('location:setting.php?section=radioRelay');
            } else {
                header('location:setting.php?section=radioRelay&error=Vous n\'avez pas le droit de faire ça!');
            }
            break;
        case 'radioRelay_change_state':
            global $_, $myUser;
            if ($myUser->can('radio relais', 'u')) {
                $radioRelay = new RadioRelay();
                $radioRelay = $radioRelay->getById($_['engine']);
                Event::emit('relay_change_state', array('relay' => $radioRelay, 'state' => $_['state']));
                if ($radioRelay->getPulse() == 0) {
                    $cmd = dirname(__FILE__) . '/radioEmission ' . $conf->get('plugin_radioRelay_emitter_pin') . ' ' . $conf->get('plugin_radioRelay_emitter_code') . ' ' . $radioRelay->getRadioCode() . ' ' . $_['state'];
                } else {
                    $cmd = dirname(__FILE__) . '/radioEmission ' . $conf->get('plugin_radioRelay_emitter_pin') . ' ' . $conf->get('plugin_radioRelay_emitter_code') . ' ' . $radioRelay->getRadioCode() . ' pulse ' . $radioRelay->getPulse();
                }
                //TODO change bdd state
                Functions::log('Launch system command : ' . $cmd);
                system($cmd, $out);
                if (!isset($_['webservice'])) {
                    header('location:index.php?module=room&id=' . $radioRelay->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;
    }
}
Exemplo n.º 2
0
function radioRelay_plugin_setting_page()
{
    global $_, $myUser, $conf;
    if (isset($_['section']) && $_['section'] == 'radioRelay') {
        if (!$myUser) {
            throw new Exception('Vous devez être connecté pour effectuer cette action');
        }
        $radioRelayManager = new RadioRelay();
        $radioRelays = $radioRelayManager->populate();
        $roomManager = new Room();
        $rooms = $roomManager->populate();
        $selected = new RadioRelay();
        $selected->pulse = 0;
        $selected->icon = 'fa fa-flash';
        //Si on est en mode modification
        if (isset($_['id'])) {
            $selected = $radioRelayManager->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 radios</p>  

			<fieldset>
			    <legend>Ajouter/Modifier un relais radio</legend>

			    <div class="left">

				    <label for="nameRadioRelay">Nom</label>
				    <input type="hidden" id="id" value="<?php 
        echo $selected->id;
        ?>
">
				    <input type="text" id="nameRadioRelay" value="<?php 
        echo $selected->name;
        ?>
" placeholder="Lumiere Canapé…"/>
				    
				    <label for="descriptionRadioRelay">Description</label>
				    <input type="text"  value="<?php 
        echo $selected->description;
        ?>
" id="descriptionRadioRelay" placeholder="Relais sous le canapé…" />

					<label for="iconRadioRelay">Icone</label>
				    <input type="hidden"  value="<?php 
        echo $selected->icon;
        ?>
" id="iconRadioRelay"  />
					
					<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_radiorelay_set_icon(this,'<?php 
            echo $icon;
            ?>
');" class="<?php 
            echo $icon;
            ?>
 btn <?php 
            echo $selected->icon == $icon ? 'btn-success' : '';
            ?>
"></i>
						<?php 
        }
        ?>
 
						</div>
					</div>

					<label for="radioCodeRadioRelay">Code radio</label>
					<input type="text" value="<?php 
        echo $selected->radiocode;
        ?>
" name="radioCodeRadioRelay" id="radioCodeRadioRelay" placeholder="1234,1111,0022..." />

				    <label for="onRadioRelay">Commande vocale "ON" associée</label>
				    <?php 
        echo $conf->get('VOCAL_ENTITY_NAME');
        ?>
, <input type="text" id="onRadioRelay" value="<?php 
        echo $selected->onCommand;
        ?>
" placeholder="Allume la lumière, Ouvre le volet…"/>
				   
				    
				    <label for="offRadioRelay">Commande vocale "OFF" associée</label>
				    <?php 
        echo $conf->get('VOCAL_ENTITY_NAME');
        ?>
, <input type="text" id="offRadioRelay" value="<?php 
        echo $selected->offCommand;
        ?>
" placeholder="Eteinds la lumière, Ferme le volet…"/>
				    
				    
				    <label for="roomRadioRelay">Pièce de la maison</label>
				    <select id="roomRadioRelay">
				    	<?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="pinRadioRelay">Mode impulsion (micro secondes)</label>
				   <input type="number" value="<?php 
        echo $selected->pulse;
        ?>
" id="pulseRadioRelay" placeholder="0" />
				   <small>laisser à zéro pour désactiver le mode impulsion</small>
				</div>

	  			<div class="clear"></div>
			    <br/><button onclick="plugin_radiorelay_save(this)" class="btn">Enregistrer</button>
		  	</fieldset>
			<br/>


			<fieldset>
				<legend>Consulter les relais radios existants</legend>
				<table class="table table-striped table-bordered table-hover">
				    <thead>
					    <tr>
					    	<th>Nom</th>
						    <th>Description</th>
						    <th>Code</th>
						    
						    <th>Pièce</th>
						    <th colspan="2">Impulsion</th>
						    
					    </tr>
				    </thead>
			    
			    	<?php 
        foreach ($radioRelays as $radioRelay) {
            $room = $roomManager->load(array('id' => $radioRelay->room));
            ?>
					<tr>
				    	<td><?php 
            echo $radioRelay->name;
            ?>
</td>
					    <td><?php 
            echo $radioRelay->description;
            ?>
</td>
					    <td><?php 
            echo $radioRelay->radiocode;
            ?>
</td>
					    
					    <td><?php 
            echo $room->getName();
            ?>
</td>
					    <td><?php 
            echo $radioRelay->pulse;
            ?>
</td>
					    <td>
					    	<a class="btn" href="setting.php?section=radioRelay&id=<?php 
            echo $radioRelay->id;
            ?>
"><i class="fa fa-pencil"></i></a>
					    	<div class="btn" onclick="plugin_radiorelay_delete(<?php 
            echo $radioRelay->id;
            ?>
,this);"><i class="fa fa-times"></i></div>
					    </td>
					    </td>
			    	</tr>
			    <?php 
        }
        ?>
			    </table>
			</fieldset>
		</div>

<?php 
    }
}