Page 16 sur 19

Re: Projet TBH

Publié : 18 févr. 2017, 00:08
par slybreiz
Idem je serais intéresser

Re: Projet TBH

Publié : 20 févr. 2017, 19:27
par ganq
voici une premiere version du tuto. Comme j'ai un peu galéré pour le faire, il est possible que j'ai oublié quelque chose, mais le principe est là.
N'hésitez à me donner vos erreurs, je corrigerai au fur et à mesure.

Alors, il nous faut
le root : avec kingoroot https://play.google.com/store/apps/deta ... tplus.king
busybox avec Busybox https://play.google.com/store/apps/deta ... on.busybox (au choix, il y en a plusieurs)
Le curl avec https://play.google.com/store/apps/deta ... ywong.curl
Crond avec https://play.google.com/store/apps/deta ... nscheduler
installer tout cela. Pour crond, on peut laisser vide ou taper le script plus bas (qui commence par 5 *, sauvegarder et lancer)

un terminal avec terminal emulator : https://play.google.com/store/apps/deta ... ndroidterm
et airdroid pour taper les commandes ici : https://play.google.com/store/apps/deta ... d.airdroid et la version PC ou autre


Copier le code suivant dans le repertoire Domoticz de votre carte sd après avoir modifier la partie données (ip, idx des compteurs:
Pour faire cela, moi j'ai installé un serveur ssh (https://play.google.com/store/apps/deta ... s.sshdroid ) et un copier coller ftp

Code : Tout sélectionner

#!/system/bin/sh

## Guillaume Anquetil - puissance.sh
## envoi de données de la tablette TBH vers domoticz (pi)
## via un cron :
## * * * * * sudo /root/puissance.sh

## données
ip='ip:8080'
idx='185' ## compteur electrique 
idx2='184' ## puissance electrique
## fin des données 

bdd='/data/data/com.ecoco2.tbh/databases/database.db'
cd /mnt/external_sd/Domoticz
# TIMESTAMP =`date +%Y%m%d%T`
heure=$(date +%Y%m%d%T)
## récupération des 2 dernieres données (date + puissance) dans une variable
sql='"select maxpower from fludia_index order by id desc limit 1;"'

res=$(sqlite3 $bdd  "select maxpower from fludia_index order by id desc limit 1;") 

echo $heure - $res >> log.puissance.sh

## récupérer anciences dates dans fichier puis, envoi de la moyenne vers domoticz via script json
url="http://"$ip'/json.htm?type=command&param=udevice&idx='$idx'&svalue='$res

echo $url
curl $url 

url="http://"$ip'/json.htm?type=command&param=udevice&idx='$idx2'&nvalue=0&svalue='$res';0'
echo $url
curl $url 

## inscription dans le fichier précédent
Dans terminal editor taper les commandes suivantes
Dans terminal emulator, taper les commandes suivantes : (les commandes après les ## ne sont que des commentaires, il ne faut pas les taper)

Code : Tout sélectionner

su # mode admin (attention, cela ouvre toutes les possibilités, même de brick)
mount -o rw,remount /dev/stl12 /system ## monte le dossier /system en écriture
echo "* * * * * /root/puissance.sh" > /data/crontab/root  ## ecrit le fichier crond qui sera effectué toutes les minutes
chmod +x /mnt/external_sd/Domoticz/puissance.sh ## ajoute la possibilité d'éxécutation du script
cd /root ## va dans le répertoire /root
cp /mnt/external_sd/Domoticz/puissance.sh . ## copie le script de la carte sd vers /root
chmod +x /data/crontab/root ##ajoute la possibilité d'éxécuter le script du crond
crond -b -c /data/crontab ## lance le cron
echo "crond -b -c /data/cronjob" > /system/etc/init.d ## "ecrit la 1ere ligne du script au démarrage de la tablette : le cron
echo "cp /mnt/external_sd/Domoticz/puissance.sh /root/." >> /system/etc/init.d  ## écrit la 2nde ligne (copie le script dans /root)
mount -o ro,remount /dev/stl12 /system ## remet le /system en lecture seule

sh puissance.sh ## execute puissance.sh
exit	## sort du mode root 
Il doit y avoir un retour ok suite à l'avant dernière ligne (même 2 ;) )
Et ca devrait fonctionner tout le temps.
Reste à vérifier lors d'un reboot car le repertoire /root est réinitialisé à chaque fois..

Re: Projet TBH

Publié : 20 févr. 2017, 22:51
par Neutrino
Merci !
Et bien détaillé en plus ! ;)

Re: Projet TBH

Publié : 20 févr. 2017, 23:06
par ganq
Neutrino a écrit :Merci !
Et bien détaillé en plus ! ;)
encore faut-il que ca fonctionne ;)

Re: Projet TBH

Publié : 21 févr. 2017, 09:57
par deennoo
Perso j'ai remis une rom Archos smart Home sur la tablette.

Re: Projet TBH

Publié : 21 févr. 2017, 10:07
par ganq
deennoo a écrit :Perso j'ai remis une rom Archos smart Home sur la tablette.
et c'est mieux ?

Re: Projet TBH

Publié : 21 févr. 2017, 11:47
par deennoo
c'est sur mon blog ;-)

Re: Projet TBH

Publié : 30 juin 2018, 11:37
par scfrancis
Bonjour à tous,

Je me permet de déterrer ce sujet, car j'essai, en vain, de faire remonter les infos du site TBH dans domoticz.
J'utilise la version 4.9700 de Domoticz sur un NAS Synology.
J'ai injecté le fichier "script_time_tbhweb.lua" dans "/usr/local/domoticz/var/scripts/lua" et "tbhweb.php" dans /usr/local/domoticz/var/scripts/" et j'obtiens le message d'erreur suivant : "2018-06-30 11:20:02.010 Error: EventSystem: in /usr/local/domoticz/var/scripts/lua/script_time_tbhweb.lua: /usr/local/domoticz/var/scripts/lua/script_time_tbhweb.lua:14: attempt to index global 'tempHygroTBH' (a nil value)"

Voici mon fichier "script_time_tbhweb.lua" :

Code : Tout sélectionner

commandArray = {}
---récupère l'heure en minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
maintenant=tonumber(hours*60+minutes)


if(maintenant%10 ==0 )then
   local appelTBH=assert(io.popen("php /usr/local/domoticz/var/scripts/tbhweb.php login@login password"))

   local tempHyroTBH = appelTBH:read('*all')
   appelTBH:close()
   tempInt,hygroInt,tempExt,hygroExt = tempHyroTBH:match("([^;]+);([^;]+);([^;]+);([^;]+)")
   print(tempInt.." "..hygroInt.." "..tempExt.." "..hygroExt)
   --Ensuite remplissez votre commandArray avec les données recueillies :)

end
return commandArray
Et mon fichier "tbh.php" :

Code : Tout sélectionner

<?php
///////////////////////////////////////////////
// Slush Coin Check
///////////////////////////////////////////////

if($argc == 3) {
    $username =  $argv[1];
    $password =  $argv[2];
} else {
    die("Usage: username password\n");
}


///////////////////////////////////////////////
// Create the temporary cookie
///////////////////////////////////////////////

$cookiefile = tempnam("", "slush_");

///////////////////////////////////////////////
// Get CSRF
///////////////////////////////////////////////

$url = "https://mon.projet-tbh.fr/accounts/login/?next=/";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);

preg_match("/<input type='hidden' name='csrfmiddlewaretoken' value='(.*?)' \/>/", $data, $csrf);

///////////////////////////////////////////////
// Login to Slush
///////////////////////////////////////////////

$url = "https://mon.projet-tbh.fr/accounts/login/?next=/";
$postfields = "csrfmiddlewaretoken=$csrf[1]&username=$username&password=$password";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
$data = curl_exec($curl);
curl_close($curl);

///////////////////////////////////////////////
// Visit earnings page
///////////////////////////////////////////////

$url = "https://mon.projet-tbh.fr/confort/data-confort-instantane";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);

///////////////////////////////////////////////
// Capture current temperature
///////////////////////////////////////////////

try{ 
   $temperature = json_decode($data, true);
    if(isset($temperature['temp_int']) and isset($temperature['hygro_int']) and isset($temperature['temp_ext']) and isset($temperature['hygro_ext'])) {
    echo $temperature['temp_int'] . ";" . $temperature['hygro_int'] . ";" . $temperature['temp_ext'] . ";" . $temperature['hygro_ext'];
   } else {
     echo null;
   }


} catch(Exception $e){
    echo($e);
}


///////////////////////////////////////////////
// Clean up cookie
///////////////////////////////////////////////

unlink($cookiefile);
?>
En espérant trouver de l'aide, par avance un énorme merci !!

Re: Projet TBH

Publié : 30 juin 2018, 14:46
par Neutrino
Bonjour,
Cela ressemble à un problème de login ou mot de passe incorrect.
Perso, j'ai rangé le bordel depuis un moment.
J'ai juste gardé la tablette comme afficheur et installé la rom Archos.
Maintenant, je lui envoie des ordres via pushBullet qu'elle transmet à Domoticz (un peu comme une passerelle SMS, mais via PB).
Que de promesses non tenues, de dates repoussées et finalement, aucune suite...

Re: Projet TBH

Publié : 30 juin 2018, 15:25
par scfrancis
Neutrino a écrit :Bonjour,
Cela ressemble à un problème de login ou mot de passe incorrect.
Perso, j'ai rangé le bordel depuis un moment.
J'ai juste gardé la tablette comme afficheur et installé la rom Archos.
Maintenant, je lui envoie des ordres via pushBullet qu'elle transmet à Domoticz (un peu comme une passerelle SMS, mais via PB).
Que de promesses non tenues, de dates repoussées et finalement, aucune suite...
Dac merci pour ta réponse... Juste une précision au sujet des identifiants, ils sont à mettre dans le fichier .lua ? Mon identifiant est mon adresse mail, serait ce ça le problème ?