Tablette murale et chargement de sa batterie auto

les autres capteurs : Sondes Météo, switches
thier
Messages : 568
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: RE: Re: Tablette murale et chargement de sa batterie auto

Message par thier » 31 déc. 2017, 15:10

manuloup a écrit :Aucun. Ils étaient tous déjà en bash. C'est par réflex que j'ai mis /bin/sh dans mon script.

J'ai relancé en supprimant les -e et toujours le même souci. Je débuggerai plus tard. En attendan, mon ancienne version fonctionne.

Si tu veux le debug de ta version, la voici :

Code : Tout sélectionner

root@raspberrypi2:/home/pi/domoticz/scripts/shell# bash -x ./batterie_level.sh.new
+ DOMOTICZ_SERVER=192.168.1.7:8084
+ TABLETTE_IP=192.168.1.62
+ BATTERY_TABLETTE_IDX=378
+ WALLPLUG_TABLETTE_IDX=380
+ cURL=/usr/bin/curl
+ adb disconnect 192.168.1.62

+ sleep 5
++ adb connect 192.168.1.62
+ success='connected to 192.168.1.62:5555'
+ echo connected to 192.168.1.62:5555
+ grep unable
+ '[' 1 = 0 ']'
++ adb devices
+ success='List of devices attached
192.168.1.62:5555       offline'
+ echo List of devices attached 192.168.1.62:5555 offline
+ grep 192.168.1.62
List of devices attached 192.168.1.62:5555 offline
+ '[' 0 = 0 ']'
+ echo List of devices attached 192.168.1.62:5555 offline
+ grep offline
List of devices attached 192.168.1.62:5555 offline
+ '[' 0 = 0 ']'
+ voir_les_logs 'Echec de la connection à la tablette 192.168.1.62 : List of devices attached
192.168.1.62:5555       offline'
+ msg='./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached
192.168.1.62:5555       offline'
+ echo ./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached 192.168.1.62:5555 offline
./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached 192.168.1.62:5555 offline
++ echo ./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached 192.168.1.62:5555 offline
++ sed s/%/%25/g
+ msghtml='./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached 192.168.1.62:5555 offline'
++ sed 's/ /%20/g'
++ echo ./batterie_level.sh.new: Echec de la connection à la tablette 192.168.1.62 : List of devices attached 192.168.1.62:5555 offline
+ msghtml=./batterie_level.sh.new:%20Echec%20de%20la%20connection%20à%20la%20tablette%20192.168.1.62%20:%20List%20of%20devices%20attached%20192.168.1.62:5555%20offline
+ /usr/bin/curl -i -H 'Accept: application/json' 'http://192.168.1.7:8084/json.htm?type=command&param=addlogmessage&message=./batterie_level.sh.new:%20Echec%20de%20la%20connection%20à%20la%20tablette%20192.168.1.62%20:%20List%20of%20devices%20attached%20192.168.1.62:5555%20offline'
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" : "AddLogMessage"
Le debug de ma version :

Code : Tout sélectionner

root@raspberrypi2:/home/pi/domoticz/scripts/shell# bash -x ./batterie_level.sh
+ DOMOTICZ_SERVER=192.168.1.7:8084
+ TABLETTE_IP=192.168.1.62
+ BATTERY_TABLETTE_IDX=378
+ WALLPLUG_TABLETTE_IDX=380
+ adb disconnect 192.168.1.62

+ sleep 5
+ adb connect 192.168.1.62
connected to 192.168.1.62:5555
+ sleep 5
++ adb shell dumpsys battery
++ grep level
++ head -n 1
++ awk '{ print $2 }'
+ BATTERY_LEVEL=$'97\r'
++ echo $'97\r'
++ tr -d '[:space:]'
+ BATTERY_LEVEL=97
+ echo 'Niveau de la batterie :97'
Niveau de la batterie :97
+ curl -i -H 'Accept: application/json' 'http://192.168.1.7:8084/json.htm?type=command&param=udevice&idx=378&nvalue=0&svalue=97'
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"
}
+ '[' -z 97 ']'
++ expr 97 '<' 15
+ '[' 0 = 1 ']'
+ echo ' charge batterie superieure a 15 '
 charge batterie superieure a 15
++ expr 97 = 100
+ '[' 0 = 1 ']'
+ echo ' batterie = 97 % '
 batterie = 97 %
et en le renomman batterie_level_new.sh ?
Bonnes fêtes à tous.
PI3 + stretch, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Chrominator
Messages : 419
Enregistré le : 19 déc. 2015, 07:29

Re: Tablette murale et chargement de sa batterie auto

Message par Chrominator » 31 déc. 2017, 16:45

C'est étrange, c'est la commande "adb devices" que je fais et que tu ne fais pas qui fait la différence ;
Je le fais pour vérifier que la connexion a bien été établie, et chez toi ça renvoie "offline".
Chez moi aussi, mais moins souvent on dirait.
Peut-être que cette commande n'est pas très fiable.

Je l'ai supprimée dans le script ci-dessous, j'ai voulu trop bien faire on dirait ! :(

Code : Tout sélectionner

#!/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
###
#
###
# YOU NEED TO CHANGE VALUE FOR YOUR CONFIGURATION

voir_les_logs () {
	msg="$0: $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&param=addlogmessage&message=$msghtml"
}

# Domoticz server
DOMOTICZ_SERVER="127.0.0.1:8080"
TABLETTE_IP="192.168.1.11"
#
# Device de la tablette
BATTERY_TABLETTE_IDX="1036"
#
# Devices de la wallplug
WALLPLUG_TABLETTE_IDX="117"
#
cURL="/usr/bin/curl"
adb="/usr/bin/adb"
#
# END CONFIGURATION VALUE
###
#
# Get the battery value for the tablet
$adb disconnect ${TABLETTE_IP}
sleep 5
success=`$adb connect ${TABLETTE_IP}`
echo -e $success | grep 'unable'
if [ $? = '0' ]; then
	voir_les_logs "Impossible de se connecter à la tablette."
else
#	success=`$adb devices`
#	echo -e $success | grep $TABLETTE_IP
#	if [ $? = '0' ]; then
#		echo -e $success | grep 'offline'
#		if [ $? = '0' ]; then
#			voir_les_logs "Echec de la connection à la tablette "$TABLETTE_IP" : $success"
#		else
			voir_les_logs "Connexion à la tablette "$TABLETTE_IP" réussie."
			BATTERY_LEVEL=$($adb shell dumpsys battery | grep level | head -n 1 | awk '{ print $2 }')
			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&param=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&param=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=On"
			else
			# Test de la valeur de la batterie. On éteint si c'est suerieur a 20% sinon on allume
			   if [ $BATTERY_LEVEL -lt 20 ];
			   then
				  voir_les_logs "Charge batterie inférieure a 15%, on allume !"
				  $cURL -s -i -H  "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command&param=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=On"
			   else
				  voir_les_logs "Charge batterie $BATTERY_LEVEL% supérieure a 20% - Pas besoin de recharge."
			   fi
			   if [ $BATTERY_LEVEL -eq 100 ];
			   then
				  voir_les_logs "Batterie = 100%"
				  $cURL -s -i -H  "Accept: application/json" "http://${DOMOTICZ_SERVER}/json.htm?type=command&param=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=Off"
			   fi
			fi
#		fi
#	else
#		voir_les_logs "Echec de la connection à la tablette "$TABLETTE_IP" : $success"
#	fi
fi		

manuloup
Messages : 484
Enregistré le : 18 févr. 2015, 13:05

Re: Tablette murale et chargement de sa batterie auto

Message par manuloup » 31 déc. 2017, 17:36

Probablement une question de timing. Entre le wifi et le serveur ADB....

Bon réveillon ! En 2018, les scripts shell fonctionneront toujours et du 1er coup ! :)
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

manuloup
Messages : 484
Enregistré le : 18 févr. 2015, 13:05

Re: Tablette murale et chargement de sa batterie auto

Message par manuloup » 31 déc. 2017, 17:49

Ah oui j'oubliais : j'ai trouvé comment redémarrer le serveur ADB sans avoir à rebrancher la tablette en USB sur le PC !

Il faut d'abord rooter la tablette. Pour cela, kingo root fait très bien l'affaire : http://fr.kingoapp.com

Ensuite, installer l'appli "ADB wireless by Henry". Tu auras ce gros carré vert ou rouge qui te dit l'état du serveur. Je n'ai pas encore trouvé comment automatiser le redémarrage du serveur ADB en cas de plantage sur la tablette.
20171231_174027.jpg
20171231_174027.jpg (601.64 Kio) Vu 4457 fois
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Chrominator
Messages : 419
Enregistré le : 19 déc. 2015, 07:29

Re: Tablette murale et chargement de sa batterie auto

Message par Chrominator » 31 déc. 2017, 18:17

Merci pour le tuyau, ça peut toujours servir.

Bon réveillon à toi aussi ainsi qu'à ceux qui nous lisent. :D

manuloup
Messages : 484
Enregistré le : 18 févr. 2015, 13:05

Re: Tablette murale et chargement de sa batterie auto

Message par manuloup » 03 janv. 2018, 10:42

Je ne sais pas pour toi, mais le serveur adb de ma tablette est très instable et il faut très souvent le réactiver manuellement hélas :(
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

Chrominator
Messages : 419
Enregistré le : 19 déc. 2015, 07:29

Re: Tablette murale et chargement de sa batterie auto

Message par Chrominator » 03 janv. 2018, 12:04

Oui, pareil chez moi.
Et puis comme ma tablette n'est pas routée, grosse mise en œuvre à chaque fois que j'ai l'idée de la rebooter.

On verra avec le temps.

manuloup
Messages : 484
Enregistré le : 18 févr. 2015, 13:05

Re: Tablette murale et chargement de sa batterie auto

Message par manuloup » 04 janv. 2018, 09:14

Bon, j'ai trouvé la solution, je vous la donne ce soir :)

Cela marche chez moi depuis hier soir et ça semble stable.
domoticz.png
domoticz.png (56.1 Kio) Vu 4390 fois
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

manuloup
Messages : 484
Enregistré le : 18 févr. 2015, 13:05

Re: Tablette murale et chargement de sa batterie auto

Message par manuloup » 04 janv. 2018, 23:16

Alors voilà la solution que j'ai trouvée et qui fonctionne : se passer d'ADB et utiliser un serveur SSH sur la tablette !

Pour cela il faut donc :

- installer le sshd sur la tablette (pas besoin de root). Cette appli SimpleSSHD est parfaite et suffisante (et gratuite !) :
https://play.google.com/store/apps/deta ... ander.sshd

- gémérer une clé sans passphrase sur votre serveur domoticz :
ssh-keygen -t rsa
appuyez simplement sur entrée quand il demande la passphrase

. une fois cela fait, connectez-vous en ssh pour la 1ère fois depuis votre serveur domoticz sur votre tablette :

Code : Tout sélectionner

ssh -p 2222 root@IP_de_la_tablette
Le mot de passe apparaît en clair sur la tablette

Une fois connecté, copiez le contenu du fichier /root/.ssh/id_rsa.pub (si vous êtes en root par exemple) dans un fichier sur la tablette sous /sdcard/ssh/authorized_keys
Retentez de vous connectez sans mot de passe, cela devrait fonctionner :

Code : Tout sélectionner

root@raspberrypi2:/home/pi# ssh -p 2222 192.168.1.18
user@TU_1491:/storage/emulated/legacy/ssh $
Pour vérifier que vous arrivez à récupérer le niveau de la batterie sans entrer de mot de passe :

Code : Tout sélectionner

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
Voilà, il ne reste plus qu'à prendre mon script modifié et changer les paramètres qui vont bien !

Code : Tout sélectionner

#!/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&param=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&param=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&param=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&param=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&param=switchlight&idx=${WALLPLUG_TABLETTE_IDX}&switchcmd=Off"
   else
      voir_les_logs "batterie=${BATTERY_LEVEL}%"
   fi
fi
A vous de jouer ! Dites-moi si j'ai omis des choses.
Modifié en dernier par manuloup le 04 mars 2019, 19:45, modifié 1 fois.
Rapberry PI 2 (RaspBian), RFplayer, Aeon Labs Z-Stick Gen5, Everspring ST814 Temperature Sensor, Everspring SF812 Smoke Detector, 4x Fibaro Wallplug, Aeon Zwave Miniremote , Teleinfo USB

Chrominator
Messages : 419
Enregistré le : 19 déc. 2015, 07:29

Re: Tablette murale et chargement de sa batterie auto

Message par Chrominator » 05 janv. 2018, 07:46

Encore une fois une super idée !
Tu ne manques pas de ressources :)

C'est vrai que ça devrait être beaucoup plus fiable qu'avec adb.

Merci, et encore bravo.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre