Re: Projet TBH
Publié : 18 févr. 2017, 00:08
Idem je serais intéresser
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
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¶m=udevice&idx='$idx'&svalue='$res
echo $url
curl $url
url="http://"$ip'/json.htm?type=command¶m=udevice&idx='$idx2'&nvalue=0&svalue='$res';0'
echo $url
curl $url
## inscription dans le fichier précédent
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 encore faut-il que ca fonctionneNeutrino a écrit :Merci !
Et bien détaillé en plus !
et c'est mieux ?deennoo a écrit :Perso j'ai remis une rom Archos smart Home sur la tablette.
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 commandArrayCode : 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);
?>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 ?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...