Je poste ca, si ca intéresse qqun...
Il y a déjà un plugin qui permet d'avoir quelques informations sur le livebox ORANGE
mais il me manquait la partie téléphonie
La 1er étape est de faire fonctionner ce script
https://github.com/rene-d/sysbus
j'ai mis le SH et le PY dans le plugin script
il faut lancer la commande en ligne pour configurer l'accès comme indiqué, la partie PYTHON et addon étaient déjà en place sur ma SMART
Puis j'ai créer un autre script en action/defaut : sysbuscalls.sh (toujours dans le plugin script) qui lance le PYTHON en demandant les infos CALLS et en sortie le fichier avec les données
Code : Tout sélectionner
/var/www/html/plugins/script/core/ressources/sysbus.py -calls -out /tmp/sysbuslistcalls.txt
chmod 777 /tmp/sysbuslistcalls.txt
Code : Tout sélectionner
sudo /var/www/html/plugins/script/core/ressources/sysbuscalls.sh
/var/www/html/plugins/script/core/ressources/sysbuslecturelistecalls.php
dont voici le code
Code : Tout sélectionner
<?php
# AKL 09/10/2018
$debut_traitement = time ();
require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
$fichier_source = "/tmp/sysbuslistcalls.txt";
$list_calls = "";
$list_callsOUT = "";
$list_callsIN = "";
$list_callsMissed = "";
$list_DATAcalls = "";
$list_DATAcallsOUT = "";
$list_DATAcallsIN = "";
$list_DATAcallsMissed = "";
$infoAK_callsMissed = "";
$infoAR_callsMissed = "";
$NbrAK_callsMissed = 0;
$NbrAR_callsMissed = 0;
$nbr_call_total = 0;
$nbr_call_out = 0;
$nbr_call_in = 0;
$nbr_call_missed = 0;
$french_days = array('jour','Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
$french_months = array('Mois','Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
# Récupération date dernier message Antoine
$cmd = cmd::byString("#[Divers][ORANGEBox_TEL][DATE_INFO_AK]#");
$timestamp_INFO_AK = $cmd->execCmd();
$cmd = cmd::byString("#[Divers][ORANGEBox_TEL][DATE_INFO_AR]#");
$timestamp_INFO_AR = $cmd->execCmd();
# Récupération de la source dans un fichier
# Date MAJ
$datemaj=date("j/m/Y H:i:s");
scenario::setData("LISTCALLS_DateMAJ", $datemaj);
$source = fopen($fichier_source, 'r');
if ($source) {
echo "<br />lecture du fichier";
# Balayge de tout le fichier SOURCE
while (!feof($source)) {
$nbr_call_total++;
$ligne = fgets($source);
if ($ligne != "") {
#lecture de la ligne et traitement
echo "<br />Traitement ".$ligne;
$call_ChampLigne = explode('|', $ligne);
$Call_numero = $call_ChampLigne[1];
#Gestion Dateheure
$Call_dateheure = $call_ChampLigne[2];
$Call_ChampDateHeure = explode(' ', $Call_dateheure);
$Call_ChampDate = explode('-', $Call_ChampDateHeure[0]);
$Call_DateJour = $Call_ChampDate[2];
$Call_DateMois = $Call_ChampDate[1];
$Call_DateAnnee = $Call_ChampDate[0];
$Call_ChampHeure = explode(':', $Call_ChampDateHeure[1]);
$Call_Heure = $Call_ChampHeure[0];
$Call_Minute = $Call_ChampHeure[1];
$Call_timestamp = mktime(0, 0, 0,$Call_DateJour,$Call_DateMois,$Call_DateAnnee);
$Call_DateJour = date('w', $Call_timestamp);
echo "<br />Debug Jour = '".$Call_Jour."'";
$Call_DateText = $french_days[$Call_DateJour]." ".$Call_DateJour." ".$french_months[$Call_DateMois];
$Call_HeureText = $Call_Heure." heure ".$Call_Minute;
$Call_HorodatageText = "le ".$Call_DateText." à ".$Call_HeureText;
#Gestion durée
$Call_DureeText = "";
$Call_ChampDuree = explode(':', $call_ChampLigne[3]);
$Call_DureeSeconde = $Call_ChampDuree[2];
$Call_DureeMinute = $Call_ChampDuree[1];
$Call_DureeSHeure = $Call_ChampDuree[0];
echo "<br />Debug Durée = '".$call_ChampLigne[3]."'";
if ($call_ChampLigne[3] != "0:00:00") {
$Call_DureeText = " durée ";
if ($Call_DureeSHeure > 0) { $Call_DureeText = $Call_DureeText.$Call_DureeSHeure. " heure "; }
if ($Call_DureeMinute > 0) { $Call_DureeText = $Call_DureeText.$Call_DureeMinute. " minute "; }
if ($Call_DureeSeconde > 0) { $Call_DureeText = $Call_DureeText.$Call_DureeSeconde. " seconde"; }
}
$Call_ligneText = $Call_numero." ".$Call_HorodatageText.$Call_DureeText;
# Appel entrant
if (strstr($ligne, 'IN')) {
# dernier appel manqué
if (strstr($ligne, 'missed')) {
$nbr_call_missed++;
if ($nbr_call_missed == 1) { $list_callsMissed = $Call_ligneText; } else { $list_callsMissed = $list_callsMissed."<br />".$Call_ligneText; }
if ($nbr_call_missed == 1) { $list_DATAcallsMissed = $ligne; } else { $list_DATAcallsMissed = $list_DATAcallsMissed."<br />".$ligne; }
scenario::setData("LISTCALLS_lastManque", $Call_ligneText);
scenario::setData("LISTCALLS_lastNumManque", $Call_numero);
scenario::setData("LISTCALLS_lastDateManque", $Call_timestamp);
#Gestion des messages d'info appel manqué
echo "Debug ".$Call_timestamp." > ".$timestamp_INFO_AK;
if ($Call_timestamp > $timestamp_INFO_AK) {
$NbrAK_callsMissed++;
if ($NbrAK_callsMissed == 1) { $infoAK_callsMissed = $Call_ligneText; } else { $infoAK_callsMissed = $infoAK_callsMissed." et le ".$Call_ligneText; }
}
echo "Debug ".$Call_timestamp." > ".$timestamp_INFO_AR;
if ($Call_timestamp > $timestamp_INFO_AR) {
$NbrAR_callsMissed++;
if ($NbrAR_callsMissed == 1) { $infoAR_callsMissed = $Call_ligneText; } else { $infoAR_callsMissed = $infoAR_callsMissed." et le ".$Call_ligneText; }
}
} else {
$nbr_call_in++;
if ($nbr_call_int == 1) { $list_callsIN = $Call_ligneText; } else { $list_callsIN = $list_callsIN."<br />".$Call_ligneText; }
if ($nbr_call_int == 1) { $list_DATAcallsIN = $ligne; } else { $list_DATAcallsIN = $list_DATAcallsIN."<br />".$ligne; }
scenario::setData("LISTCALLS_lastNumIN", $Call_numero);
scenario::setData("LISTCALLS_lastIN", $Call_ligneText);
}
}
# Appel sortant
if (strstr($ligne, 'OUT')) {
$nbr_call_out++;
if ($nbr_call_out == 1) { $list_callsOUT = $Call_ligneText; } else { $list_callsOUT = $list_callsOUT."<br />".$Call_ligneText; }
if ($nbr_call_out == 1) { $list_DATAcallsOUT = $ligne; } else { $list_DATAcallsOUT = $list_DATAcallsOUT."<br />".$ligne; }
# dernier Appel passé
if (strstr($ligne, 'succeeded')) {
scenario::setData("LISTCALLS_lastOUT", $Call_ligneText);
scenario::setData("LISTCALLS_lastNumOUT", $Call_numero);
}
}
$list_calls = $list_calls."<br />".$ligne;
}
}
} else { echo "<br />Accès source impossible"; }
scenario::setData("LISTCALLS_allTEXT", $list_calls);
scenario::setData("LISTCALLS_allTEXTOUT", $list_callsOUT);
scenario::setData("LISTCALLS_allTEXTIN", $list_callsIN);
scenario::setData("LISTCALLS_allTEXTTManque", $list_callsMissed);
scenario::setData("LISTCALLS_allDATA", $list_DATAcalls);
scenario::setData("LISTCALLS_allDATAOUT", $list_DATAcallsOUT);
scenario::setData("LISTCALLS_allDATAIN", $list_DATAcallsIN);
scenario::setData("LISTCALLS_allDATAManque", $list_DATAcallsMissed);
scenario::setData("LISTCALLS_NbrTotal", $nbr_call_total);
scenario::setData("LISTCALLS_NbrIN", $nbr_call_in);
scenario::setData("LISTCALLS_NbrOUT", $nbr_call_out);
scenario::setData("LISTCALLS_NbrManque", $nbr_call_missed);
scenario::setData("LISTCALLS_InfoAKManque", $infoAK_callsMissed);
scenario::setData("LISTCALLS_InfoARManque", $infoAR_callsMissed);
scenario::setData("LISTCALLS_NbrAKManque", $NbrAK_callsMissed);
scenario::setData("LISTCALLS_NbrARManque", $NbrAR_callsMissed);
?>
le python est capable de remonter d'autre info, le lancer avec la commande --help pour les voir.
La partie avec les variables infoAK et infoAR peut être enlevée, je l'utilise pour donner verbalement les appels manqués lors de notre retour à la maison.