Script to turn off/on a power switch for a mural tablet
Posted: Friday 05 January 2018 17:17
Hi,
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
3) create a ssh key to be able to login on your tablet without a password.
Press enter when the passphrase is asked, do not enter any password !
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 :
Fine ! Now you just have to copy my script and change the parameters with your settings :
Do not forget to chmod +x your script and put it in the crontab !
Let me know if you tried it and use it
Cheers.
Manu
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