Cela faisait un moment que je voulais faire cela, mais je n'avais pas pu encore prendre le temps de le faire. Mais les choses ont changé, car depuis ce soir, ma tablette murale n'est en charge que lorsque c'est nécessaire
Pour cela, il faut donc, outre une tablette murale Android, une wallplug ou un prise on/off RFX, par exemple. Voici donc les étapes pour cela.
[ Après différents tests, il vaut mieux utiliser ssh, voir ici : https://easydomoticz.com/forum/viewtopi ... =10#p47315 ]
1) La 1ère des choses à faire est d'installer adb sur votre serveur domoticz :
2) Activer adb en wifi sur votre tablette.sudo apt-get install android-tools-adb
Pour cela, branchez votre tablette en USB sur votre PC, lancez adb :
adb devices
Cela devrait vous montrer votre tablette. Puis :
Votre tablette doit maintenant être interrogeable en wifi avec ADB !
Pensez à mettre une ip statique sur votre tablette, soit en lui attribuant une ip fixe, soit en lui fixant un bail sur votre routeur.
Pour tester cela :
Code : Tout sélectionner
root@raspberrypi2:/home/pi/domoticz/scripts/shell# adb connect 192.168.1.10
root@raspberrypi2:/home/pi/domoticz/scripts/shell# adb shell dumpsys battery | grep level | head -n 1
level: 97
3) Créer un device virtuel en % . Notez son IDX dans la liste des devices, cela servira pour l'alimenter dans le script.
Notez également l'IDX de votre switch de prise électrique
4) Recopiez mon script, en modifiant les infos selon votre configuration pour l'IP du Domoticz et les devices de charge batterie et switch WallPlug
Code : Tout sélectionner
#!/bin/sh
###
# Envoie niveau de batterie a Domoticz
###
#
###
# YOU NEED TO CHANGE VALUE FOR YOUR CONFIGURATION
# Domoticz server
DOMOTICZ_SERVER="192.168.1.17:8080"
TABLETTE_IP="192.168.1.10"
#
# Device de la tablette
BATTERY_TABLETTE_IDX="378"
#
# Devices de la wallplug
WALLPLUG_TABLETTE_IDX="380"
#
# END CONFIGURATION VALUE
###
#
# Get the battery value for the tablet
adb disconnect ${TABLETTE_IP}
sleep 5
adb connect ${TABLETTE_IP}
sleep 5
BATTERY_LEVEL=$(adb shell dumpsys battery | grep level | head -n 1 | awk '{ print $2 }')
BATTERY_LEVEL=$(echo "${BATTERY_LEVEL}" | tr -d '[:space:]')
echo "Niveau de la batterie :${BATTERY_LEVEL}"
# Set Battery level in domoticz
# Send data to Domoticz
curl -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=udevice&idx=${BATTERY_TABLETTE_IDX}&nvalue=0&svalue=${BATTERY_LEVEL}"
#
if [ -z $BATTERY_LEVEL ] ;
then
echo "Pas de valeur pour la charge de la tablette ! "
echo "On rallume la prise de la tablette "
curl -s -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=On"
else
# Test de la valeur de la batterie. On eteind si c'est suerieur a 10 sinon on allume
if [ $(expr $BATTERY_LEVEL '<' 15 ) = 1 ] ;
then
echo " charge batterie inferieure a 15 %, on allume ! "
curl -s -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=On"
else
echo " charge batterie superieure a 15 "
fi
if [ $(expr $BATTERY_LEVEL '=' 100 ) = 1 ] ;
then
echo " batterie = 100 "
curl -s -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=Off"
else
echo " batterie = $BATTERY_LEVEL % "
fi
fi
Un petit chmod +x pour le rendre exécutable :
Code : Tout sélectionner
chmod +x batterie_level.shCode : Tout sélectionner
root@raspberrypi2:/home/pi/domoticz/scripts/shell# ./batterie_level.sh
already connected to 192.168.1.10:5555
Niveau de la batterie :95
HTTP/1.1 200 OK
Content-Length: 53
Content-Type: application/json;charset=UTF-8
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Allow-Origin: *
{
"status" : "OK",
"title" : "Update Device"
}
charge batterie superieure a 15
batterie = 95 %
Code : Tout sélectionner
crontab -e
*/10 * * * * /home/pi/domoticz/scripts/shell/batterie_level.sh > /dev/nullVoilà, si vous avez des questions... A vous de jouer !