[PHP] Recharger son android seulement quand necessaire.

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

[PHP] Recharger son android seulement quand necessaire.

Message par minicupi »

Bonjour,

Petite idée qui m'a traversé l'esprit, mes tablettes "monitoring" sont branché sur une prise on/off controlable par domoticz. L'idée est de charger la tablette quand elle atteint un seuil que je definit, puis de mettre la prise a off lorsque la batterie est chargée, de maniere a economiser en energie.

Avant de pouvoir utiliser ce script, vous devrez installer "adb" et passer votre tablette en mode developpeur(les premiers liens de googles montrent comment faire l'un et l'autre :), puis connecter votre tablette a adb(pour ma part en wifi)
normalement quand vous aurez fait ca vous devriez avoir en lancant la commande adb devices, votre tablette qui est reconnue.

Si c'est le cas, voici le script que j'ai créé et que je vous partage. En gros il sert a aller chercher le niveau de charge de la batterie de votre tablette/ mobile/quesaisje sous android, en %. Puis le stock dans une variable IDX de domoticz. De la libre a vous de creer une regle du genre si "variable tablette<10" alors active le chargeur, sinon si variable tablette >90 alors desactive" par exemple :)


voici le code(meme si j'en suis l'auteur c'est plus du copier coller de bout de code d'autres scripts pour parvenir a mes fins)

Code : Tout sélectionner

<?php

$IDX = '241';  // votre dummy text IDX de  domoticz
$IPdomoticz = '192.168.1.10:8080'; // votre ip port domoticz






$rChariot = "\n"; 
exec( 'adb shell dumpsys battery >batteriesinfos.txt', $output, $return_val );
$searchthis = "level";
$matches = array();

$handle = @fopen("batteriesinfos.txt", "r");
if ($handle)
{
    while (!feof($handle))
    {
        $buffer = fgets($handle);
        if(strpos($buffer, $searchthis) !== FALSE)
            $matches[] = $buffer;
    }
    fclose($handle);
}

$batterie = substr($matches[0],9,11);

//show results:
print_r($batterie);



$json_result = maj_periph($IDX,$batterie); //Mise à jour Domoticz


//vire les accents
function supprimer_accents($str, $encoding='ISO-8859-1')
{
    // transformer les caractères accentués en entités HTML
    $str = htmlentities($str, ENT_NOQUOTES, $encoding);
  
    // remplacer les entités HTML pour avoir juste le premier caractères non accentués
    // Exemple : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
    $str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);
  
    // Remplacer les ligatures tel que : Œ, Æ ...
    // Exemple "Å“" => "oe"
    $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
    // Supprimer tout le reste
    $str = preg_replace('#&[^;]+;#', '', $str);
    // Supprimer les espaces
    $str = preg_replace('/\s/', '', $str);
  
    return $str;
}



//met a jour le peripherique
function maj_periph( $periphID, $val )
{
   global $IPdomoticz;
   global $rChariot;

// Remplacement des blancs par le code hexa
   $val = str_replace(' ', '%20', $val);
// Remplacement des points virgules par le blanc
   $val = str_replace(';','%20', $val);
// Remplacement des accents
   $val = supprimer_accents($val);
   $val = utf8_encode($val);
   
//Contruction de l'url Local
   $url = "http://".$IPdomoticz."/json.htm?type=command"; 
   $url .= "&param=udevice";
   $url .= "&idx=$periphID";
   $url .= "&vnalue=0";
   $url .= "&svalue=$val";
   
   echo 'Domoticz Mis a jour - Idx : '.$periphID.' - Valeur donnee :'.$val.$rChariot;
   
// Mis à jour du périphérique
   $result = @file_get_contents($url);

   $pos = strpos($result, '"OK"');
   if ($pos === false)
   {

   echo $rChariot."Une erreur est survenue lors de la mise à jour [".$result."]".$rChariot;//}
   }
   return $result;
} 
 

?>
zaraki673
Messages : 229
Inscription : 07 oct. 2016, 04:29

Re: Recharger son android seulement quand necessaire.

Message par zaraki673 »

une alternative au projet de Cirus qui lui fait ca (entre autres) via une appli :D

je suis plus ADB, je l'utilises pour l envoies de SMS donc ta solution me convient plus, merci ;)
enfin c'est surtout la batterie de mon vieux HTC Magic qui va te remercier :D
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

Re: Recharger son android seulement quand necessaire.

Message par minicupi »

comme dirais l'ami jacquet,
ravi que ca vous plaise ^^

j'en profite pour donner quelques bouts de code qui pourrait vous etre utile, utilisant la meme trame avec adb
(dans mes exemples, 1.91 et 92 sont des tablettes, 1.9 est domoticz)
Se connecter puis Mettre la tablette en veille :

Code : Tout sélectionner

exec( 'adb connect 192.168.1.91');
sleep(1);

exec( 'adb shell input keyevent 26');

Se connecter puis se reloguer sur la tablette(la y' apas de MDP mais y'a moyen de faire avec) :

Code : Tout sélectionner

exec( 'adb connect 192.168.1.92');
sleep(1);

exec( 'adb shell input keyevent 26');
sleep(4);
exec( 'adb shell input keyevent 82');
sleep(4);
lancer chrome puis Mettre MONITOR (ou n'importe quelle page) en full screen :

Code : Tout sélectionner

exec( 'adb connect 192.168.1.90');
sleep(1);

exec( 'adb shell am force-stop com.android.chrome');
sleep(4);
exec( 'adb shell am start -a android.intent.action.VIEW -d "http://192.168.1.9:8080/monitor/index.html"');
sleep(6);
exec( 'adb shell input touchscreen swipe 346 463 172 44d');
sleep(1);
voila :)
Pour ma part ca marche bien et tout est fini
Quand j'arrive dans la maison les tbalette sortent de leur veille, quand je quitte la maison ou que personne bouge dans la maison plus de 20 minute elles se remettent en veille.
une fois par jour la tablette remet monitor en page de garde, au cas ou kkun ai joué avec la tablette.

Et des que l'une des tablette n'a plus de batterie, la prise sur laquelle elle est branchée s'active le temps du rechargement et des que la batterie est a 99 la prise se desactive :) plus rien a faire jmen retourne a configurer monitor
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Recharger son android seulement quand necessaire.

Message par Chrominator »

Exercice intéressant du point de vue intellectuel/mise en œuvre et identification des ressources nécessaires.

Ensuite, l'économie étant le motif invoqué :roll:, côté finances et retour sur investissement, le très bon rendement des chargeurs fait qu' il sera possible qu'on commence à faire des économies au terme de quelques années, après avoir épongé le coût du matériel investi (la prise on/off)... voire juste avant de devoir changer la tablette devenue HS :lol:

Bon j'avoue, c'est un brin sarcastique. ;)
Merci encore pour ce partage et ce développement. :)
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
zaraki673
Messages : 229
Inscription : 07 oct. 2016, 04:29

Re: Recharger son android seulement quand necessaire.

Message par zaraki673 »

Chrominator a écrit : le très bon rendement des chargeurs [...] voire juste avant de devoir changer la tablette devenue HS :lol:
ca depend, dans mon cas ca aurait évité que ma batterie ne gonfle a etre brancher en h24, sans controle du niveau de charge. puis une tablette pour domoticz, y a pas besoin de la changer tous les 6mois 1an, si elle peut faire 2 ou 3 ans c est pas plus mal

:P
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

Re: Recharger son android seulement quand necessaire.

Message par minicupi »

faut bien s'inventer des excuses pour coder un peu et voir émerger des trucs qui servent a rien mais qui prouve que t’était capable de le faire ;p
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Recharger son android seulement quand necessaire.

Message par Chrominator »

J'aurais pas mieux dit, absolument ! :D
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
FullMetalKnet
Messages : 52
Inscription : 02 août 2016, 21:41

Re: Recharger son android seulement quand necessaire.

Message par FullMetalKnet »

Beau projet!

Seulement pas possible sur raspberry?
FullMetalKnet
Messages : 52
Inscription : 02 août 2016, 21:41

Re: Recharger son android seulement quand necessaire.

Message par FullMetalKnet »

J'ai enfin réussi a mettre en place ADB sur la tablette et la raspberry! c'est franchement génial! Bravo à toi @minicupi!

J'ai toutefois une question concernant les commandes shell envoyés à la tablette, Lorsque met hors veille la tablette, il m'ouvre bien une page chrome avec la page de ma custom page, cependant après plusieurs mise en veille et mise hors veille , je commence à avoir une multitude d'onglet de ma custom page. je n'est pas trouvé dans les paramètres de la tablette afin de bloquer la possibilité d'ouvrir qu'un seul onglet.

Ma question est-il possible d'ouvrir la raccourci créé pour démarrer ma custom page?

J'avais essayé pour la mise hors veille, juste le déverrouillage de la tablette pour retrouver la custom page mais le problème, c'est que la page reste figé et même si je fais un rafraîchissement des données reste figées.

Une solution?
merci d'avance
Répondre