Page 19 sur 22
Re: Domoticz et Freebox
Publié : 30 avr. 2017, 08:47
par vil1driver
Salut,
Directement dans ton navigateur, ceci fonctionne ?
http://mafreebox.freebox.fr/pub/fbx_info.txt
Re: Domoticz et Freebox
Publié : 01 mai 2017, 07:02
par rad0712
Bonjour,
Oui cela fonctionne, je recupere les informations de la freebox :
______________________________________________________________________
Etat de la Freebox
______________________________________________________________________
Informations générales :
========================
Modèle Freebox ADSL
Version du firmware 1.5.25
Mode de connection Dégroupé
Temps depuis la mise en route 9 jours, 13 heures, 11 minutes
Téléphone :
===========
Etat Ok
Etat du combiné Raccroché
Sonnerie Inactive
Adsl :
======
Etat Showtime
Protocole RE-ADSL2
Mode Interleaved
Descendant Montant
-- --
Journal de connexion adsl :
---------------------------
Wifi :
======
Réseau :
========
Attributions dhcp :
-------------------
Adresse MAC Adresse IP
-- --
Redirections de ports :
Interfaces réseau :
Cordialement
Re: Domoticz et Freebox
Publié : 01 mai 2017, 15:30
par rad0712
Bonjour,
Je pense avoir trouve une erreur. Je ne mettais pas le login et mot de passe de domoticz.
Par contre je n'ai pas de retour dans domoticz (pas de message d’erreur)
J'ai rendu mon script exécutable :
pas d'erreur
lorsque je teste manuellement je n'ai rien, pas de retour des variables , est ce normal ?
merci de votre retour
Re: Domoticz et Freebox
Publié : 01 mai 2017, 18:28
par rad0712
Re,
Desole s'est encore moi.
Voila ou j'en suis.
Le dernier code que j'utilise
Code : Tout sélectionner
#!/bin/bash
#SERVER
SERVER1="login:mdp"
SERVER2="192.168.0.20:9090"
DOWNLOAD=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep ATM | awk '{printf $3}'`
curl -s "http://$SERVER1@$SERVER2/json.htm?type=command¶m=udevice&idx=129&svalue=$DOWNLOAD"
printf $DOWNLOAD
UPLOAD=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep ATM | awk '{printf $5}'`
curl -s "http://$SERVER1@$SERVER2/json.htm?type=command¶m=udevice&idx=130&svalue=$UPLOAD"
Lorsque j'execute le script , le printf donne bien une valeur.
Voila ce que j'ai mis dans le crontab
Par contre rien dans domoticz.
Comment savoir si la fonction json fonctionne correctement ? (en gros pas d'erreur)
Dans les log de domoticz je ne vois rien, meme pas un acces ....
Merci de m'aider, je ne sais plus quoi faire
Rad
Re: Domoticz et Freebox
Publié : 04 mai 2017, 20:34
par rad0712
Bonjour,
Juste pour prévenir que j'ai trouve d ou cela venait : tout simplement de mon login qui comportait un "@"
Merci d'avoir partage ce script et surtout pour le tuto.
R@d.
Re: Domoticz et Freebox
Publié : 31 mai 2017, 17:27
par landaisbenj
Bonjour à tous.
Juste pour vous dire que je viens de me taper les 19 pages du post pour me lancer dans la récupération des infos de la freebox aussi
Mon but est de récupérer le status d'un périphérique reseau. Tout ca pour améliorer la détection d'absence.
Je reviendrai ici si j'ai produit quelque chose
Re: Domoticz et Freebox
Publié : 01 juin 2017, 00:08
par landaisbenj
Bon voila. Apres des heures de test et de comprehenssion (vu que j'y connais rien en curl ni en bash d'ailleur), j'arrive a savoir si le telephone de ma femme est connecté:
limabravo@homepi:~/bin $ freebox_infos.sh
Uptime : 0 jours 23 heures 2 min 44 secs
Max Upload xDSL rate: 1.1 Mb/s
Max Download xDSL rate: 25.1 Mb/s
Firmware : 3.4.1
Free space HD : 82.00 Go
TEL Celou connecté: true
J'adapte ca demain sur domoticz puis en terme de gestion de presence.
Bonne nuit.
Re: Domoticz et Freebox
Publié : 01 juin 2017, 23:05
par landaisbenj
Bon comme je n'arrive pas trop a gerer les dummys text je vous laisse mon idée.
Pour avoir la presence sur le reseau freebox d'un equipement lan (type smartphone) voici ma requete:
Code : Tout sélectionner
##### Présence périphérique reseau via @MAC
# idx du dummys Domoticz
IDX="30"
# recuperation de la valeur dans l'API
answer=$(call_freebox_api '/lan/browser/pub/ether-[ADRESSE MAC PERIPHERIQUE]')
# filtre sur la reponse
value=$(get_json_value_for_key "$answer" 'result.reachable')
testname=$(get_json_value_for_key "$answer" 'result.primary_name')
activity=$(get_json_value_for_key "$answer" 'result.last_activity')
# format de la reponse
activity=$(date -d @"$activity")
# affichage de la valeur
echo "${testname} connecté: ${value} dernière activité depuis: ${activity}"
dummys "$IDX" "$value"
En supplément voici ma fonction dummys qui me permet de retirer toutes les lignes de curl vers domoticz
Code : Tout sélectionner
function dummys () {
curl --silent -s -i -H "Accept: application/json" "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=udevice&idx=$1&nvalue=0&svalue=$2"
}
Cela raccourci le code. Et permet de traiter une requete dans un block (afin d'etre plus claire pour en rajouter d'autre).
Je fais ceci a cause des iphones car ils sont tres mal percu sur le reseau. La freebox gere plutot bien leur presence.
Comme j'ai un peu de mal a gerer les dummys texte je partage afin de voir si vous pouvez m'aider a automatiser une presence.
Le but:
Si la requete renvoi false dans mon dummys mettre un interrupteur ou une variable absence a on
et vis et versa.
[EDIT] D'ailleurs si vous savez comment transformer le dummys text en interrupteur on off... Ou autre afin d'appliquer une vraie simulation de connexion.
Re: Domoticz et Freebox
Publié : 09 août 2017, 13:05
par StephBel
Bonjour,
Je te conseillais d'utiliser un "Switchlight"
Si
value est vrai il faut envoyer "On" sinon "Off"
Donc j'ajouterais une nouvelle variable
presence
Voici un exemple de code (
non testé)
Code : Tout sélectionner
presence = "Off"
if((value == true));then
presence = "On"
else
presence = "Off"
fi
dummys "$IDX" "$presence"
Et enfin le code mis à jour pour envoyer
Code : Tout sélectionner
function dummys () {
curl --silent -s -i -H "Accept: application/json" "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=switchlight&idx=$1&switchlight=$2"
}
Re: Domoticz et Freebox
Publié : 09 août 2017, 13:30
par landaisbenj
StephBel a écrit :Si value est vrai il faut envoyer "On" sinon "Off"
Yes c'est exactement ce que j'ai fais avec une variable.
Mais ça ne me conviens toujours pas pour la facilité d'emploi dans le déclenchement d'un script du coup je vais surement passer sur un switchlight effectivement.
J'ai aussi rajouter dans mon freebox_infos.sh une detection permettant de ne faire la mise a jour que si la valeur a changé.
La recuperation:
Code : Tout sélectionner
##### Presence peripherique reseau via @MAC
# idx du dummys Domoticz
IDX="28"
# recuperation de la valeur dans l'API
answer=$(call_freebox_api '/lan/browser/pub/ether-....')
# filtre sur la reponse
value=$(get_json_value_for_key "$answer" 'result.reachable')
testname=$(get_json_value_for_key "$answer" 'result.primary_name')
activity=$(get_json_value_for_key "$answer" 'result.last_activity')
activity=$(date -d @"$activity")
# format de la reponse
# affichage de la valeur
#echo "${testname} connecté: ${value} derniere activité depuis: ${activity}"
##### Presence peripherique reseau via @MAC
# idx du dummys Domoticz
IDX="30"
# recuperation de la valeur dans l'API
answer=$(call_freebox_api '/lan/browser/pub/ether-....')
# filtre sur la reponse
valueb=$(get_json_value_for_key "$answer" 'result.reachable')
testname=$(get_json_value_for_key "$answer" 'result.primary_name')
activity=$(get_json_value_for_key "$answer" 'result.last_activity')
activity=$(date -d @"$activity")
# format de la reponse
# affichage de la valeur
#echo "${testname} connecté: ${value} derniere activité depuis: ${activity}"
Le test de changement de valeur:
Code : Tout sélectionner
LINE=`sed -n '1p' /home/pi/bin/presence.tmp`
if [ $value != $LINE ]
then
dummys "$IDX" "$value" "presence1" "3"
fi
LINEB=`sed -n '2p' /home/pi/bin/presence.tmp`
if [ $valueb != $LINEB ]
then
dummys "$IDX" "$valueb" "presence2" "4"
fi
echo $value > /home/pi/bin/presence.tmp
echo $valueb >> /home/pi/bin/presence.tmp
L'adressage a domoticz:
Code : Tout sélectionner
function dummys () {
if [ $2 = 'false' ] || [ $2 = 'true' ]
then
curl --silent -s -H "Accept: application/json" "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=updateuservariable&idx=$4&vname=$3&vtype=2&vvalue=$2"
else
curl --silent -s -H "Accept: application/json" "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=udevice&idx=$1&nvalue=0&svalue=$2"
fi
}