Chorminator and myself were trying to automate the power of our mural android tablet depending on the battery level.
We finally succeeded, here is our method. For this you need :
- a power switch (rfx, zawe...)
- an android tablet
First we tried with ADB but the daemon on the tablet is very unstable. So we did it with a ssh server.
The original thread in french : https://easydomoticz.com/forum/viewtopic.php?f=7&t=4402
Here are the steps :
1) create a device for your power switch and a dummy device for the battery level.
2) install that simple sshd application on your android tablet : https://play.google.com/store/apps/deta ... ander.sshd
It is free and does not need root.
After the installation, try to connect on your tablet with the ip, default port is 2222
Code: Select all
ssh -p 2222 root@IP_of_domoticz
Code: Select all
ssh-keygen -t rsa
Then copy the content of the id_rsa.pub file to the tablet in the default dir /sdcard/ssh/authorized_keys
You should now be able to connect to your tablet without any password :
root@raspberrypi2:/home/pi# ssh -p 2222 192.168.1.18
user@TU_1491:/storage/emulated/legacy/ssh $
Now you can check if you are able to get the battery level :
Code: Select all
root@raspberrypi2:/home/pi/domoticz/scripts/shell# export TABLETTE_IP="192.168.1.18"
root@raspberrypi2:/home/pi/domoticz/scripts/shell# ssh -p 2222 ${TABLETTE_IP} 'cat /sys/class/power_supply/battery/capacity'
53
Code: Select all
#!/bin/bash
###
# Envoie niveau de batterie a Domoticz
# Script par manuloup https://easydomoticz.com/forum/viewtopic.php?f=7&t=4402#p38502
# 2017-12-31 : Chrominator / Remontée des messages liés à l'exécution dans le log Domoticz
# 2018-01-04 : manuloup / Utilisation d un serveur SSH sur la tablette
###
#
###
# YOU NEED TO CHANGE VALUE FOR YOUR CONFIGURATION
# Domoticz server
DOMOTICZ_SERVER="192.168.1.5:8080"
TABLETTE_IP="192.168.1.18"
#
# Device de la tablette
BATTERY_TABLETTE_IDX="378"
#
# Devices de la wallplug
WALLPLUG_TABLETTE_IDX="380"
#
# END CONFIGURATION VALUE
###
cURL="/usr/bin/curl"
#
voir_les_logs () {
msg="tablette: $1"
echo $msg
# Encode le caractère % en html: %25
msghtml=`echo $msg | sed 's/%/%25/g'`
# Encode le caractère espace en html: %20
msghtml=`echo $msghtml | sed 's/ /%20/g'`
# Les autres caractères même accentués devraient passer
$cURL -i -H "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command¶m=addlogmessage&message=$msghtml"
}
#
# Get the battery value for the tablet
BATTERY_LEVEL=$(ssh -p 2222 ${TABLETTE_IP} 'cat /sys/class/power_supply/battery/capacity')
#BATTERY_LEVEL=$(echo "${BATTERY_LEVEL}" | tr -d '[:space:]')
voir_les_logs "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
voir_les_logs "Pas de valeur pour la charge de la tablette ! "
voir_les_logs "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
voir_les_logs "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
voir_les_logs "charge de la batterie superieure a 15%"
fi
if [ $(expr $BATTERY_LEVEL '=' 100 ) = 1 ] ;
then
voir_les_logs "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
voir_les_logs "batterie=${BATTERY_LEVEL}%"
fi
fi
Let me know if you tried it and use it
Cheers.
Manu