[DzVents] LiveBox 3 et 4

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] LiveBox 4

Message par Neutrino »

:shock: C'est quoi ta version de firmware ?
Ce qui me surprend le plus, c'est qu'une des requêtes fonctionne...
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
toutazimuth
Messages : 225
Inscription : 19 juil. 2015, 22:33

Re: [DzVents] LiveBox 4

Message par toutazimuth »

Neutrino a écrit : 24 oct. 2018, 21:03 :shock: C'est quoi ta version de firmware ?
Ce qui me surprend le plus, c'est qu'une des requêtes fonctionne...
Bonjour Neutrino

Modele : Livebox 4 sagemcom
version logicielle SG40-sip-fr-3.4.10.1_7.21.3.1

J'ai bon ? :mrgreen:
Merci pour le partage de ce script
SynoDS213J - RFXcom E - Cam IP HikVision Dahua- Thermostat+Météo NetAtmo - OWL180 - KLFO50 IO SOMFY - Zwave - Philips HUE - Passerelle MDAH - Imperihome par epierre - Controlicz by Madgeni - 2*Pi3 test - Connexoon by nonolk - aspi xiaomi :mrgreen:
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: [DzVents] LiveBox 4

Message par papoo »

ma livebox
Modele : Livebox 4 Sercomm
version logicielle SR40_sip-fr-3.4.10.1_7.21.3.1
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] LiveBox 4

Message par Neutrino »

Modele : Livebox 4 sagemcom
version logicielle SG40-sip-fr-3.4.12.1_7.21.3.1

La version xDSL semble avoir de l'avance, mais vous avez la même version fibre (hormis le fabricant).
C'est vraiment bizarre ce "access denied"...
As-tu essayé de redémarrer ta livebox ?
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
toutazimuth
Messages : 225
Inscription : 19 juil. 2015, 22:33

Re: [DzVents] LiveBox 4

Message par toutazimuth »

Neutrino a écrit : 24 oct. 2018, 21:47
As-tu essayé de redémarrer ta livebox ?
Oui j'ai redémarré la box, mais pas de changement.
L'IP6 remonté est effectivement le bon et s'affiche correctement dans le capteur.
Pour le reste (appel entrant, sortant, IP, et autres), c'est le désert des tartares :) .
SynoDS213J - RFXcom E - Cam IP HikVision Dahua- Thermostat+Météo NetAtmo - OWL180 - KLFO50 IO SOMFY - Zwave - Philips HUE - Passerelle MDAH - Imperihome par epierre - Controlicz by Madgeni - 2*Pi3 test - Connexoon by nonolk - aspi xiaomi :mrgreen:
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Noms des appelants (annuaire Livebox)

Message par papoo »

Dans la version précédente de ce script, nous récupérons la liste des derniers appels téléphonique de la livebox.

gros inconvénient pour moi qui ne mémorise plus les numéros depuis l’avènement du téléphone portable, ces numéros ne me disent rien.
du coup, pourquoi ne pas mettre en place un mini annuaire de mes contacts afin de voir au premier coup d’œil qui a appelé?


La première chose à faire donc, c'est un fichier annuaire simple. j'ai choisi le format json pour ce fichier afin d'extraire facilement et simplement les données qu'il contient.
exemple du formatage des données du fichier contacts.json

Code : Tout sélectionner

  [
  {
    "Name": "papoo",
    "Phone": "0607080910"
  },
  {
    "Name": "lambda",
    "Phone": "0605040302"
  }
  ]
J'ai placé ce fichier dans le répertoire scripts (/home/pi/domoticz/scripts/contacts.json) et modifié les droits d'accès à ce fichier via un chmod 0777
ensuite dans le script :>

il faut déclarer une variable contenant le chemin d'accès à ce fichier

Code : Tout sélectionner

local fichier_contacts = "/home/pi/domoticz/scripts/contacts.json"
il faut indiquer le chemin d'accès à la librairie JSON.lua

Code : Tout sélectionner

json = assert(loadfile('/home/pi/domoticz/scripts/lua/JSON.lua'))()
Créer une fonction pour lire le fichier

Code : Tout sélectionner

function json2table(file)
    local f = io.open(file, "rb")
	if(f == nil) then
		return ""
	else
		local content = f:read("*all")
		f:close()
        jsonValeur = json:decode(content)
		return jsonValeur
	end
end


Déclarer une variable de type table

Code : Tout sélectionner

contacts = {}
assigner le contenu du fichier à cette variable

Code : Tout sélectionner

contacts = json2table(fichier_contacts)
on créé une nouvelle fonction pour rechercher le nom lié au numéro de téléphone

Code : Tout sélectionner

function searchName(contacts, phoneNumber)
    for index, variable in pairs(contacts) do
        if variable.Phone == phoneNumber then
            name = variable.Name
        end
    end
    if name == nil then
        name = phoneNumber
    end
    return name
end
il ne reste plus qu'à remplacer

Code : Tout sélectionner

call.remoteNumber

par

Code : Tout sélectionner

searchName(contacts, call.remoteNumber)
dans le script




le script complet


https://github.com/papo-o/domoticz_scri ... ivebox.lua
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
pat054
Messages : 70
Inscription : 29 juil. 2018, 18:14

Re: [DzVents] LiveBox 4

Message par pat054 »

Bonsoir,
merci pour avoir traité ce sujet fort sympa avec 4 mains...

Je suis "novice" dans la mise en place de ce script dans Domoticz.

Voici mes interrogations :
- le fichier script qui s'appelle livebox.lua, est du LUA ou Dzvents?
- où place t-on ce fichier script exactement dans Domoticz? (vu d'ici c'est bien "/home/pi/domoticz/scripts/dzVents/scripts"?)
- comment fait-on pour voir si ce script fonctionne avec un minimum de modification? (à part le log)
A ce propos, je pensais modifier :
mettre mon n° de téléphone mobile dans contacts.json et faire chmod 0777
puis dans le fichier script mettre à jour le MDP (ligne 28) de ma box, le "Dernier Appel" (ligne 40) en enlevant les "--"
puis dans Domoticz créer le nom du capteur Text "Dernier Appel". Et c'est tout. Est-ce le minimum pour un fonctionnement?

Puis appeler mon téléphone de ma box avec mon téléphone mobile et voir dans Domoticz si le capteur "Dernier Appel" a bien reçu mon appel.

Est ce bien cela?

Et est ce que ce script fonctionne avec une Livebox Play?
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] LiveBox 4

Message par Neutrino »

Le script est du DzVents ET du LUA.
DzVents est une sorte de framework lua, une version de LUA adaptée spécialement pour Domoticz.
Le fichier est à placer effectivement dans /home/pi/domoticz/scripts/dzVents/scripts
Le script est un couteau suisse, tu utilises les capteurs que tu veux.
Il faut les créer via le hardware dummy et remplir le script en remplaçant les 'nil'.
Pour le test, c'est ça :)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
pat054
Messages : 70
Inscription : 29 juil. 2018, 18:14

Re: [DzVents] LiveBox 4

Message par pat054 »

Bonjour Neutrino,
merci pour ta réponse.

Ok pour Dzvents par rapport à LUA.
Qu'entends- tu par le hardware dummy?
Dans mon dernier message, je m'interrogeais sur le script : fonctionne t-il aussi avec une Livebox Play?

Car actuellement j'ai ceci dans le log :

Code : Tout sélectionner

2018-11-25 15:47:00.361 Status: dzVents: Info: Livebox 1.7: ------ Start external script: livebox.lua:, trigger: every 1 minutes
2018-11-25 15:47:03.685 Status: dzVents: Error (2.4.8): Livebox 1.7: An error occured when calling event handler livebox
2018-11-25 15:47:03.685 Status: dzVents: Error (2.4.8): Livebox 1.7: /home/pat/domoticz/scripts/dzVents/scripts/livebox.lua:219: attempt to index field 'dhcp_data' (a nil value)
2018-11-25 15:47:03.685 Status: dzVents: Info: Livebox 1.7: ------ Finished livebox.lua
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] LiveBox 4

Message par Neutrino »

Visiblement, la livebox Play ne retourne pas tout à fait la même chose.
Peux-tu lancer ce script et me retourner par mp les 3 fichier créé dans /var/tmp ?

Code : Tout sélectionner

#!/bin/bash

###########################################
# Firmware Livebox 4 = 3.4.10 g0-f-sip-fr #
#     Script mis a jour le 06/04/2018     #
###########################################
#Source : 	https://www.alex-braga.fr/ressources_externe/xdslbox_3.4.10.sh
#			https://github.com/rene-d/sysbus

#############################
# Declaration des variables #
#############################
myLivebox="192.168.1.1"
myPassword="motdepasse"

myBashDir=/var/tmp

myOutput=$myBashDir/myOutput.txt
myCookies=$myBashDir/myCookies.txt

########################################
# Connexion et recuperation du cookies #
########################################
curl -s -o "$myOutput" -X POST -c "$myCookies" -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah-Login' -d "{\"service\":\"sah.Device.Information\",\"method\":\"createContext\",\"parameters\":{\"applicationName\":\"so_sdkut\",\"username\":\"admin\",\"password\":\"$myPassword\"}}" http://$myLivebox/ws > /dev/null

##################################################
# Lecture du cookies pour utilisation ulterieure #
##################################################
myContextID=$(tail -n1 "$myOutput" | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/",//1' | sed 's/"groups":"http,admin//1' | sed 's/"}}//1')

###############################################################################################
# Envoi des commandes pour recuperer les informtations et ecriture dans un fichier TXT separe #
###############################################################################################
getMIBs=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.data\",\"method\":\"getMIBs\",\"parameters\":{}}" http://$myLivebox/ws`
echo $getMIBs > $myBashDir/MIBs.txt
getDSLStats=`curl -s -i -b "$myCookies" -X POST -H 'Content-Type: application/json' -H 'X-Context: '$cookiesContextID'' -d '{"parameters":{}}' http://$myLivebox/sysbus/NeMo/Intf/dsl0:getDSLStats | tail -n1`
echo $getDSLStats > $myBashDir/DSLStats.txt
getWANStatus=`curl -s -i -b "$myCookies" -X POST -H 'Content-Type: application/json' -H 'X-Context: '$cookiesContextID'' -d '{"parameters":{}}' http://$myLivebox/sysbus/NMC:getWANStatus | tail -n1`
echo $getWANStatus > $myBashDir/WANStatus.txt



#######################################################
# Deconnexion et suppression des fichiers temporaires #
#######################################################
curl -s -b "$myCookies" -X POST http://$myLivebox/logout
rm "$myCookies" "$myOutput"
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre