Domoticz et Freebox

Forum pour tous les autres objets : sondes météo, capteurs, actionneurs ...
Vous avez un besoin mais vous ne savez pas quel matériel choisir ? C'est ici.
Ninipc
Messages : 101
Inscription : 28 nov. 2016, 20:07

Re: Domoticz et Freebox

Message par Ninipc »

Pour info si ca peut intéresser quelqu'un j'ai rajouté sur la valeur de débit down les FEC/CRC. On peut faire pareil pour les infos UP mais bon ca sert moins.

Code : Tout sélectionner

#!/bin/bash
cd /home/pi/freebox
# Domoticz server
DOMOTICZ_SERVER="TONIP:8080"
# Freebox Server idx
FREEBOX_FW_IDX="TON IDX"
FREEBOX_UPTIME_IDX="TON IDX"
FREEBOX_UP_MAX_IDX="TON IDX"
FREEBOX_DOWN_MAX_IDX="TON IDX"
FREEBOX_DISKSPACE_IDX="TON IDX"
# Password admin domoticz à modifier
login=TON LOGIN
pwd=TON MOT DE PASSE
#
function show_time () {
    num=$1
    min=0
    hour=0
    day=0
    if((num>59));then
        ((sec=num%60))
        ((num=num/60))
        if((num>59));then
            ((min=num%60))
            ((num=num/60))
            if((num>23));then
                ((hour=num%24))
                ((day=num/24))
            else
                ((hour=num))
            fi
        else
            ((min=num))
        fi
    else
        ((sec=num))
    fi
    echo "$day"%20jours%20"$hour"%20heures%20"$min"%20mn%20"$sec"%20secs
}

MY_APP_ID="Domoticz.app"
MY_APP_TOKEN="TON TOKEN"

# source the freeboxos-bash-api
source ./freeboxos_bash_api.sh

# login
login_freebox "$MY_APP_ID" "$MY_APP_TOKEN"

# get xDSL data
answer=$(call_freebox_api '/connection/xdsl')
#echo " answer : ${answer} "
#echo " "
# extract max upload xDSL rate
up_max_rate=$(get_json_value_for_key "$answer" 'result.up.maxrate')
up_max_rate=$(awk "BEGIN {printf \"%.1f\",${up_max_rate}/1024}")
up_max_rate=$(echo "$up_max_rate%20Mb/s")
down_max_rate=$(get_json_value_for_key "$answer" 'result.down.maxrate')
down_max_rate=$(awk "BEGIN {printf \"%.1f\",${down_max_rate}/1024}")
down_max_rate=$(echo "$down_max_rate%20Mb/s")
down_fec=$(get_json_value_for_key "$answer" 'result.down.fec')
down_fec=$(awk "BEGIN {printf \"%.1f\",${down_fec}}")
down_fec=$(echo "%20/%20$down_fec%20FEC")
down_crc=$(get_json_value_for_key "$answer" 'result.down.crc')
down_crc=$(awk "BEGIN {printf \"%.1f\",${down_crc}}")
down_crc=$(echo "%20/%20$down_crc%20CRC")

uptime=$(get_json_value_for_key "$answer" 'result.status.uptime')
uptimefreebox=$(show_time ${uptime})
echo "Uptime : ${uptimefreebox} "

echo "Max Upload xDSL rate: ${up_max_rate} "
echo "Max Download xDSL rate: ${down_max_rate} "
answer=$(call_freebox_api '/system')
#echo " answer : ${answer} "
#uptimefreebox=$(get_json_value_for_key "$answer" 'result.uptime')
fwfreebox=$(get_json_value_for_key "$answer" 'result.firmware_version')
#echo "Uptime : ${uptimefreebox} "
echo "Firmware : ${fwfreebox} "
answer=$(call_freebox_api '/storage/disk')
answer=$(echo ${answer} | sed -e "s/\[//g" | sed -e "s/\]//g")
#echo " answer : ${answer} "
freediskspace=$(get_json_value_for_key "$answer" 'result.partitions.free_bytes')
freediskspace=$(echo $((${freediskspace}/1024/1024)))
freediskspace=$(awk "BEGIN {printf \"%.2f\",${freediskspace}/1024}")
freediskspace=$(echo "${freediskspace}%20Go")

echo "Free space HD : ${freediskspace} "
echo "CRC Down : ${down_fec} "
echo "CRC Down : ${down_crc} "
#
#Envoi des valeurs vers les devices virtuels
# Send data to Domoticz
curl --silent -s -i -H  "Accept: application/json"  "http://$login:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_FW_IDX&nvalue=0&svalue=$fwfreebox"
curl --silent -s -i -H  "Accept: application/json"  "http://$login:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UPTIME_IDX&nvalue=0&svalue=$uptimefreebox"
curl --silent -s -i -H  "Accept: application/json"  "http://$login:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UP_MAX_IDX&nvalue=0&svalue=$up_max_rate"
curl --silent -s -i -H  "Accept: application/json"  "http://$login:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_DOWN_MAX_IDX&nvalue=0&svalue=$down_max_rate$down_fec$down_crc"
curl --silent -s -i -H  "Accept: application/json"  "http://$login:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_DISKSPACE_IDX&nvalue=0&svalue=$freediskspace"
Par contre ca affiche genre "82.0 FEC / 6.0 CRC" je sais pas comment virer le ".0" pour que ca fasse plus propre. Mais c'est pas très important :D
domotech
Messages : 57
Inscription : 21 janv. 2017, 15:41
Localisation : AJACCIO (2A)

Re: Domoticz et Freebox

Message par domotech »

merci pour le tuto !!!
le domotiseur fou :lol: !!!
pigloox
Messages : 78
Inscription : 18 janv. 2016, 16:12

Re: Domoticz et Freebox

Message par pigloox »

minos a écrit :Salut Manuloup,

Code : Tout sélectionner

#!/bin/bash
cd /volume1/@appstore/domoticz/var/scripts/freebox
# Domoticz server
DOMOTICZ_SERVER="192.168.0.25:8084"
# Freebox Server idx
FREEBOX_FW_IDX="47"
FREEBOX_UPTIME_IDX="56"
FREEBOX_UP_MAX_IDX="49"
FREEBOX_DOWN_MAX_IDX="50"
FREEBOX_DISKSPACE_IDX="51"
FREEBOX_SPEED_DOWNLOAD="53"
# Password admin domoticz à modifier
pwd=toto_est_sur_un_bateau
#
function show_time () {
    num=$1
    min=0
    hour=0
    day=0
    if((num>59));then
        ((sec=num%60))
        ((num=num/60))
        if((num>59));then
            ((min=num%60))
            ((num=num/60))
            if((num>23));then
                ((hour=num%24))
                ((day=num/24))
            else
                ((hour=num))
            fi
        else
            ((min=num))
        fi
    else
        ((sec=num))
    fi
    echo "$day"%20jours%20"$hour"%20heures%20"$min"%20mn%20"$sec"%20secs
}

MY_APP_ID="Domoticz.app"
MY_APP_TOKEN="titi_lui_boit_une_bière"

# source the freeboxos-bash-api
source ./freeboxos_bash_api.sh

# login
login_freebox "$MY_APP_ID" "$MY_APP_TOKEN"

# get /connection/xdsl
answer=$(call_freebox_api '/connection/xdsl')
#echo " answer : ${answer} "
#echo " "
# extract max upload xDSL rate
up_max_rate=$(get_json_value_for_key "$answer" 'result.up.maxrate')
up_max_rate=$(awk "BEGIN {printf \"%.1f\",${up_max_rate}/1024}")
up_max_rate=$(echo "$up_max_rate%20Mb/s")
down_max_rate=$(get_json_value_for_key "$answer" 'result.down.maxrate')
down_max_rate=$(awk "BEGIN {printf \"%.1f\",${down_max_rate}/1024}")
down_max_rate=$(echo "$down_max_rate%20Mb/s")

# extract Uptime FREEBOX
uptime=$(get_json_value_for_key "$answer" 'result.status.uptime')
uptimefreebox=$(show_time ${uptime})
echo "Uptime : ${uptimefreebox} "

echo "Max Upload xDSL rate: ${up_max_rate} "
echo "Max Download xDSL rate: ${down_max_rate} "

# get /system data
answer=$(call_freebox_api '/system')
#echo " answer : ${answer} "
#uptimefreebox=$(get_json_value_for_key "$answer" 'result.uptime')
fwfreebox=$(get_json_value_for_key "$answer" 'result.firmware_version')
#echo "Uptime : ${uptimefreebox} "
echo "Firmware : ${fwfreebox} "

# get /storage/disk data
answer=$(call_freebox_api '/storage/disk')
answer=$(echo ${answer} | sed -e "s/\[//g" | sed -e "s/\]//g")
#echo " answer : ${answer} "
freediskspace=$(get_json_value_for_key "$answer" 'result.partitions.free_bytes')
freediskspace=$(echo $((${freediskspace}/1024/1024)))
freediskspace=$(awk "BEGIN {printf \"%.2f\",${freediskspace}/1024}")
freediskspace=$(echo "${freediskspace}%20Go")

echo "Free space HD : ${freediskspace} "

# get ConnectionStatus data
answer=$(call_freebox_api '/connection/')
#echo " answer : ${answer} "
#echo " "
# extract rate_down
rate_down=$(get_json_value_for_key "$answer" 'result.rate_down')
rate_down=$(awk "BEGIN {printf \"%.1f\",${rate_down}/1024}")
rate_down=$(echo "$rate_down%20Ko/s")
echo "Vitesse de Telechargement : ${rate_down} "

#
#Envoi des valeurs vers les devices virtuels
# Send data to Domoticz
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_FW_IDX&nvalue=0&svalue=$fwfreebox"
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UPTIME_IDX&nvalue=0&svalue=$uptimefreebox"
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UP_MAX_IDX&nvalue=0&svalue=$up_max_rate"
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_DOWN_MAX_IDX&nvalue=0&svalue=$down_max_rate"
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_DISKSPACE_IDX&nvalue=0&svalue=$freediskspace"
curl --silent -s -i -H  "Accept: application/json"  "http://admin:$pwd@$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_SPEED_DOWNLOAD&nvalue=0&svalue=$rate_down"
Voilà le script complet.... :D

@+
Minos
Bonsoir Minos,

Alors moi, en copiant / collant ton script, j'ai un soucis de remontées d'information (la vitesse de téléchargement ainsi que l'espace restant disque dur reste à 0)

Par ailleurs, une erreur est remontée lorsque je lance le script manuellement :

Code : Tout sélectionner

Uptime : 0%20jours%2021%20heures%2029%20mn%2010%20secs
Max Upload xDSL rate: 15.9%20Mb/s
Max Download xDSL rate: 43.7%20Mb/s
Firmware : 3.3.6
EXPECTED string GOT {
./freebox_infos.sh: ligne 83: /1024/1024 : erreur de syntaxe : opérande attendue                                              (le symbole erroné est "/1024/1024")
awk: line 1: runaway regular expression /1024} ...
Free space HD : %20Go
Vitesse de Telechargement : 0.0%20Ko/s
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: *

Raspberry PI 3 & Raspbian 9 (Stretch) sur disque dur, Domoticz Beta Release,
RFX433E + USB Teleinfo + Zwave Stick
Modules Chacon DI-O, Fibaro, Qubino et sondes de températures
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Domoticz et Freebox

Message par manuloup »

Bonjour,

Apparemment tu as une erreur sur ces lignes :

freediskspace=$(get_json_value_for_key "$answer" 'result.partitions.free_bytes')
freediskspace=$(echo $((${freediskspace}/1024/1024)))
freediskspace=$(awk "BEGIN {printf \"%.2f\",${freediskspace}/1024}")
freediskspace=$(echo "${freediskspace}%20Go")

Tu peux vérifier que ton copier/coller est ok ?
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
Xanxi
Messages : 5
Inscription : 31 mars 2017, 14:16

Re: Domoticz et Freebox

Message par Xanxi »

Hello.

J'ai lu cet article avec intérêt car j'aimerais aussi associé ma Freebox V6 non révolution à Domoticz, mais je ne comprends rien aux scripts qui sont postés car j'utilise Domoticz sur un NAS Synology et non pas sur un Raspberry Pi.
Je n'ai pas l'impression qu'il soit possible ou faisable de mètre autant les mains dans le cambouis dans mon installation et n'ai de toute façon pas les compétences.

Il me serait utile de pouvoir récupérer certaine données comme de savoir si tel ou tel appareil est connecté au réseau freebox, la température de la box, etc.

Pouvez vous m'orienter sur la façon de le faire sur la dernier version de Domoticz pour Synology (v3.7149)?

Merci à vous.
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Domoticz et Freebox

Message par manuloup »

Bonjour Xanxi,

Sans aucune connaissance en shellscript il me parait difficile pour toi de récupérer les infos dont tu parles.

Je crois que des plugins sont en cours de développement, à suivre...
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: Domoticz et Freebox

Message par deennoo »

Tu peux surveiller ta Freebox non révolution avec ton nas le principe est le même sauf que tu dois placer tes script s dans ton home et utiliser le plannifacteur de tâche de dsm.
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Mise à jour du Freebox Server 3.4.0

Message par papoo »

Depuis fin mars et la dernière mise à jour de freebox os en V3.4.0 l'api freebox est passée en version 4.
la version 3 fonctionne encore mais ne devrait pas survivre à la prochaine mise à jour.
cela risque de remettre en cause l'ensemble de nos scripts exploitant cette api
je me suis dis que ce serait sans doute le bon moment pour se mettre aux plugins python et implémenter la freebox comme un hardware sous dz avec création automatique des devices disponible depuis l'api :
player et télécommande comme le plugin kodi, appareils connectés à la freebox, espace disque, débits, etc ... la liste des possibilités est longue.
après quelques essais je me suis par contre rendu compte du chose, je suis une bille en python.
si quelqu'un avait la même envie que moi, tout en étant un peu plus au fait de python je veux bien aider

les changements de l'api :
Api changes from version 3.0 to 4.0
Secure Access
The Freebox OS API can now be reached over HTTPS. All applications MUST switch to https access. Unsecure access will be removed at some point.
Deprecated api
The old upload api as been deprecated in favor of the WebSocket upload api. The v3 upload api will be removed in next firmware release. All new apps should only use websocket upload api. However tracking of uploads has not been changed.
Changed API
The File System api now return more details error codes, and can now return ‘access_denied’ and ‘disk_full’ in case of IO errors
SystemConfig has new ‘disk_status’, ‘box_flavor’ attributes
ConnectionStatus now expose ‘ipv4_port_range’ for customers that don’t have a ‘full’ IPv4
Added new ‘port_outside_range’ error_code when attempting to use a port outside of assigned ‘ipv4_port_range’
Added ‘remote_access_min_port’ and ‘remote_access_max_port’ to ConnectionConfiguration
Added ‘min_port’, ‘max_port’ for IncomingPortConfig, VPNServerConfig
Added ‘readonly’ for IncomingPortConfig
Added ‘allow_remote_access’ for FtpConfig
Added ‘mark_all_as_read’ and ‘delete_all’ for Call api
Added ‘enabled_ipv6’ and ‘node_count_ipv6’ for DhtStats
Added ‘preview_url’ to DownloadFile for bittorrent downloads
Added ‘info_hash’, ‘piece_length’ to Download for bittorrent downloads
New API
Added StorageConfig api
Added Download Pieces information
les differents scripts python que j'ai trouvé exploitant la freebox :
http://www.manatlan.com/blog/freeboxv6_ ... vec_python
https://github.com/herrersystem/fbxtools
https://github.com/Oxeo/FreeboxControl
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Domoticz et Freebox

Message par manuloup »

C'est une bonne idée. Hélas je suis comme toi, je ne connais pas le python, je maitrise bien mieux le ksh.
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
rad0712
Messages : 11
Inscription : 29 août 2016, 15:34

Re: Domoticz et Freebox

Message par rad0712 »

Bonjour,

Je prefere prevenir de suite, je ne suis pas un pro de la programmation (voir pas du tout).
Je dispose de la crystal et j'aurais souhaite pouvoir avoir des informations de la freebox. Je n'arrive pas a mettre en route le script propose pour la crystal. Etant novice je pense que je dois faire une bourde quelque part. Si quelqu'un peut regarder ce que je fais de mal cela serait sympa (merci).

Voici les etapes que je réalise :
1) se connecter au Raspberry ou votre serveur domoticz, créer un répertoire dédié pour les scripts pour la freebox => OK
2) prendre le script propose pour la crystal (freebox_infos.sh) par chacal62 (page 16) et l'adapte :

Code : Tout sélectionner

#!/bin/bash
#SERVER
DOMOTICZ_SERVER="192.168.0.20:9090"
#SERVER idx
FREEBOX_UPTIME="128"
FREEBOX_DOWNLOAD="129"
FREEBOX_UPLOAD="130"
#VARIABLES"


DOWNLOAD=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep WAN | awk '{printf $3}'`
curl -s "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_DOWNLOAD&svalue="$DOWNLOAD%20ko/s

UPLOAD=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep WAN | awk '{printf $5}'`
curl -s "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UPLOAD&svalue="$UPLOAD%20ko/s

UPTIME_1=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep Temps | awk '{printf $7}'`
UPTIME_2=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep Temps | awk '{printf $9}'`
UPTIME_3=`wget -q -O - http://mafreebox.freebox.fr/pub/fbx_info.txt | grep Temps | awk '{printf $11}'`

UPTIME=$UPTIME_1%20'jours,'%20$UPTIME_2%20'heures,'%20$UPTIME_3%20'min'
curl -s "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$FREEBOX_UPTIME&svalue="$UPTIME

3) rendre le script executable

Code : Tout sélectionner

chmod +x freebox_infos.sh
Pas d'erreur lorsque je tape donc je suppose que cela se passe bien

4) Tester manuellement

Code : Tout sélectionner

sudo ./freebox_infos.sh
et la j'ai cette erreur :
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html><html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html><html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html>pi@raspberrypi:~/freebox$ nano test2.sh
J'ai tente plusieurs fichier different et j'arrive toujours a cette erreur. Une ame charitable pourrait me debloquer ?

D'avance merci
Répondre