Bonjour,
La méthode que je vais décrire et que j’utilise avec succès depuis plusieurs mois n’est certainement pas la meilleure au yeux des programmeurs que vous êtes et que je ne suis pas …
Pour utiliser mes fonctions php, je n’ai pas créé d’object de class, de méthodes ou autre, j’au juste créé un fichier php classique, que j’inclus au début de mon code …
En pratique :
J’ai créé un répertoire à mon nom (#fnc_perso) dans le répertoire « plugins » (parce que je ne savais pas ou d’autre).
et j’ai créé un fichier de fonction (ex : fnc_perso_com.inc.php) dans lequel je mets toutes mes fonction de communication … par exemple :
function tts_sonos ($msg, $place = 'SAM', $urg = 0){
// variables locales
$vol_urg_1 = '55'; // Volumes prédéfinit selon les urgences
$vol_urg_2 = '100';
$id_tts = [ // Sonos Dire et Volume
'SAM' => ['dire'=>'1917', 'vol'=>'1907', 'statusvol'=>'1906'],
'Chambre' => ['dire'=>'3868', 'vol'=>'3858', 'statusvol'=>'3857'],
'Cuisine' => ['dire'=>'2587', 'vol'=>'2577', 'statusvol'=>'2576'],
'Veranda' => ['dire'=>'2612', 'vol'=>'2602', 'statusvol'=>'2601'],
'Bureau' => ['dire'=>'4431', 'vol'=>'4421', 'statusvol'=>'4420'],
'SDB' => ['dire'=>'4113', 'vol'=>'4103', 'statusvol'=>'4102'],
'Salon' => ['dire'=>'2739', 'vol'=>'2729', 'statusvol'=>'2728'],
];
// Si argument de lieux faux
if (!isset($id_tts[$place])){
$place = 'SAM';
$msg = "Erreur d'argument dans la fonction. ".$msg;
};
// On calcule le volume
$volume = 0;
$actual_time = date('Hi');
if ($actual_time > 730 and $actual_time < 2100){
$volume = 55;
}elseif (($actual_time > 700 and $actual_time < 730) or ($actual_time > 2300 and $actual_time < 2359)){
$volume = 25;
}elseif ($actual_time > 2100 and $actual_time < 2200){
$volume = 45;
}elseif ($actual_time > 2200 and $actual_time < 2300){
$volume = 35;
};
if ($urg == '1'){$volume = $vol_urg_1;};
if ($urg == '2'){$volume = $vol_urg_2;};
// récupère volume actuel
$cmd = cmd::byId($id_tts[$place]['statusvol']);
$actual_volume = $cmd->execCmd();
// fixe le volume
$cmd=cmd::byId($id_tts[$place]['vol']);
$cmd->execCmd($options=array('slider'=>$volume), $cache=0);
sleep(2);
// Lance le message
$cmd=cmd::byId($id_tts[$place]['dire']);
$cmd->execCmd($options=array('title'=>'Alerte Jeedom', 'message'=> $msg), $cache=0);
sleep(5);
// restaure le volume
$cmd=cmd::byId($id_tts[$place]['vol']);
$cmd->execCmd($options=array('slider'=>$actual_volume), $cache=0);
}
//*********************************************************************************
function send_mail ($msg, $who = 'Manu'){
// Variables ID des emails
$id_mail = [
'Manu' => '77',
'Chrys' => '78',
'Sophie' => '649',
];
if (!isset($id_mail[$who])){$who = 'Manu';};
// Envoie du message
$cmd=cmd::byID($id_mail[$who]);
$cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> $msg), $cache=0);
}
//*********************************************************************************
function send_telegram ($msg, $who = 'Manu'){
// Variables ID de Telegram
$id_telegram = [
'Manu' => '2904',
'Chrys' => '2905',
'Sophie' => '4986',
];
if (!isset($id_telegram[$who])){$who = 'Manu';};
// Envoie du message
$cmd=cmd::byID($id_telegram[$who]);
$cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> $msg), $cache=0);
}
Ensuite dans mes scénarios, je débute par
include ‹ /var/www/html/plugins/#fnc_perso/fnc_perso_com.inc.php ›;
et dans le code il me suffit d’appeler mes fonction directement sans devoir passer par test::test->(), mais directement comme ca :
tts_sonos ($msg);
ou
send_mail ($msg);
In fine, j’ai créé plusieurs fichiers selon les routines dont j’ai besoin en les regroupant par thème :
fnc_perso_date_time.inc.php
fnc_perso_string.inc.php
etc
a inclure selon les besoins … ou passer par un fichier global qui inclus tout (fnc_perso_all.inc.php) :
include '/var/www/html/plugins/#fnc_perso/fnc_perso_com.inc.php';
include '/var/www/html/plugins/#fnc_perso/fnc_perso_date_time.inc.php';
include '/var/www/html/plugins/#fnc_perso/fnc_perso_string.inc.php';
Je sais que ce n’est pas optimal … mais pour ma petite programmation et mon utilisation perso, je trouve ca utile …
Ca peut peut être être utile à d’autres …
Manu