La livebox TV (aussi appelé Livebox play) dispose d’une API sommaire permettant de connaitre son état (marche ou arrêt) ainsi que la chaîne diffusée par l’intermédiaire d’un ID (egp_id)
voici un script qui utilise cette API afin d’afficher ces informations dans domoticz
Les device_chaine et livebox_tv, s’ils sont utilisés, ne sont mis à jour que si vous changez de chaîne (pour device_chaine), allumez/éteignez le player (pour livebox_tv) afin de ne pas remplir les log
n’hésitez pas à proposer l’ajout de vos chaines préférés
--[[ name : script_time_liveboxTV.lua auteur : papoo date de création : 21/01/2018 Date de mise à jour : 21/01/2018 Principe : Via l'api de la livebox TV, connaitre son état et afficher la chaine en cours d'affichage /etat-livebox-tv-en-lua/ http://easydomoticz.com/forum/viewtopic.php?f=17&t=5762#p48244 https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_liveboxTV.lua ]]-- -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir local script_actif = true -- active (true) ou désactive (false) ce script simplement local device_chaine = "Chaine Livebox" -- nom du dummy text affichant la chaine en cours de lecture local livebox_tv = "Livebox TV" -- nom du dummy interrupteur pour connaitre l'état de la livebox TV, nil si inutilisé local liveboxtv_ip = "http://192.168.1.12:8080" -- adresse ip de la livebox TV -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- -------------------------------------------- ------------- Autres Variables ------------- -------------------------------------------- local nom_script = 'Chaine liveboxTV' local version = '0.1' local les_chaines = {} les_chaines[#les_chaines+1] = {canal="1", nom="TF1", id="192"} les_chaines[#les_chaines+1] = {canal="10", nom="TMC", id="195"} les_chaines[#les_chaines+1] = {canal="11", nom="NT1", id="446"} les_chaines[#les_chaines+1] = {canal="111", nom="Vivolta", id="659"} les_chaines[#les_chaines+1] = {canal="12", nom="NRJ 12", id="444"} les_chaines[#les_chaines+1] = {canal="120", nom="DogTv", id="-1"} les_chaines[#les_chaines+1] = {canal="13", nom="LCP", id="234"} les_chaines[#les_chaines+1] = {canal="135", nom="MyZenTV", id="829"} les_chaines[#les_chaines+1] = {canal="138", nom="NoLife", id="787"} les_chaines[#les_chaines+1] = {canal="14", nom="France 4", id="78"} les_chaines[#les_chaines+1] = {canal="140", nom="GINX", id="563"} les_chaines[#les_chaines+1] = {canal="145", nom="Mangas", id="6"} les_chaines[#les_chaines+1] = {canal="15", nom="BFMTV", id="481"} les_chaines[#les_chaines+1] = {canal="150", nom="Trace Urban", id="325"} les_chaines[#les_chaines+1] = {canal="151", nom="NRJ Hits TV", id="605"} les_chaines[#les_chaines+1] = {canal="152", nom="Virgin Radio Tv", id="-1"} les_chaines[#les_chaines+1] = {canal="153", nom="Indies Live", id="1622"} les_chaines[#les_chaines+1] = {canal="154", nom="OFive", id="-1"} les_chaines[#les_chaines+1] = {canal="155", nom="BBlackClasik", id="-1"} les_chaines[#les_chaines+1] = {canal="156", nom="BBlackCaribbean", id="-1"} les_chaines[#les_chaines+1] = {canal="16", nom="CNEWS", id="226"} les_chaines[#les_chaines+1] = {canal="161", nom="RFMTV", id="241"} les_chaines[#les_chaines+1] = {canal="162", nom="TraceTropical", id="753"} les_chaines[#les_chaines+1] = {canal="164", nom="Melody", id="265"} les_chaines[#les_chaines+1] = {canal="166", nom="myMTV", id="-1"} les_chaines[#les_chaines+1] = {canal="17", nom="CStar", id="458"} les_chaines[#les_chaines+1] = {canal="170", nom="Classica", id="1353"} les_chaines[#les_chaines+1] = {canal="173", nom="EquidiaLIFE", id="64"} les_chaines[#les_chaines+1] = {canal="176", nom="BeingSport1", id="1290"} les_chaines[#les_chaines+1] = {canal="177", nom="OUATCH", id="-1"} les_chaines[#les_chaines+1] = {canal="18", nom="Gulli", id="226"} les_chaines[#les_chaines+1] = {canal="187", nom="MotorSportTV", id="237"} les_chaines[#les_chaines+1] = {canal="19", nom="France O", id="160"} les_chaines[#les_chaines+1] = {canal="198", nom="OLTV", id="463"} les_chaines[#les_chaines+1] = {canal="2", nom="France 2", id="4"} les_chaines[#les_chaines+1] = {canal="20", nom="HD1", id="1404"} les_chaines[#les_chaines+1] = {canal="21", nom="L'Equipe21", id="1401"} les_chaines[#les_chaines+1] = {canal="211", nom="LuckyJack", id="1061"} les_chaines[#les_chaines+1] = {canal="214", nom="FashionTv", id="1996"} les_chaines[#les_chaines+1] = {canal="215", nom="LuxeTv", id="531"} les_chaines[#les_chaines+1] = {canal="217", nom="Ma chaine Etudiante", id="987"} les_chaines[#les_chaines+1] = {canal="219", nom="Demain!", id="57"} les_chaines[#les_chaines+1] = {canal="22", nom="6ter", id="1403"} les_chaines[#les_chaines+1] = {canal="225", nom="LCP100%", id="992"} les_chaines[#les_chaines+1] = {canal="226", nom="PublicSénat", id="-1"} les_chaines[#les_chaines+1] = {canal="227", nom="France 24", id="529"} les_chaines[#les_chaines+1] = {canal="228", nom="BFMBusines", id="1073"} les_chaines[#les_chaines+1] = {canal="23", nom="Numéro 23", id="1402"} les_chaines[#les_chaines+1] = {canal="232", nom="France 24 English", id="671"} les_chaines[#les_chaines+1] = {canal="234", nom="CNN", id="53"} les_chaines[#les_chaines+1] = {canal="235", nom="CNBC", id="51"} les_chaines[#les_chaines+1] = {canal="236", nom="Bloomberg", id="410"} les_chaines[#les_chaines+1] = {canal="24", nom="RMC Découverte", id="1400"} les_chaines[#les_chaines+1] = {canal="25", nom="Chérie 25", id="1399"} les_chaines[#les_chaines+1] = {canal="26", nom="LCI", id="112"} les_chaines[#les_chaines+1] = {canal="27", nom="France Info", id="2111"} les_chaines[#les_chaines+1] = {canal="3", nom="France 3", id="80"} les_chaines[#les_chaines+1] = {canal="34", nom="Teva", id="191"} les_chaines[#les_chaines+1] = {canal="4", nom="Canal+", id="34"} les_chaines[#les_chaines+1] = {canal="5", nom="France 5", id="47"} les_chaines[#les_chaines+1] = {canal="585", nom="Télé Sud", id="449"} les_chaines[#les_chaines+1] = {canal="6", nom="M6", id="118"} les_chaines[#les_chaines+1] = {canal="7", nom="Arte", id="111"} les_chaines[#les_chaines+1] = {canal="8", nom="C8", id="445"} les_chaines[#les_chaines+1] = {canal="86", nom="Disney Channel", id="58"} les_chaines[#les_chaines+1] = {canal="9", nom="W9", id="119"} -------------------------------------------- ----------- Fin Autres Variables ----------- -------------------------------------------- -------------------------------------------- ---------------- Fonctions ----------------- -------------------------------------------- function voir_les_logs (s, debugging) if (debugging) then if s ~= nil then print ("".. s .."") else print ("aucune valeur affichable") end end end -------------------------------------------- -- chemin vers le dossier lua if (package.config:sub(1,1) == '/') then luaDir = debug.getinfo(1).source:match("@?(.*/)") else luaDir = string.gsub(debug.getinfo(1).source:match("@?(.*\\)"),'\\','\\\\') end curl = '/usr/bin/curl -m 5 -u domoticzUSER:domoticzPSWD ' -- ne pas oublier l'espace à la fin json = assert(loadfile(luaDir..'JSON.lua'))() -- chargement du fichier JSON.lua -------------------------------------------- -- Obtenir l'idx d'un device via son nom function GetDeviceIdxByName(deviceName) for i, v in pairs(otherdevices_idx) do if i == deviceName then return v end end return 0 end -- exemple usage = commandArray['UpdateDevice'] = GetDeviceIdxByName('Compteur Gaz') .. '|0|' .. variable -------------------------------------------- -------------------------------------------- -------------- Fin Fonctions --------------- -------------------------------------------- commandArray = {} time=os.date("*t") if script_actif == true then voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging) --=========== Lecture json livebox TV ===============-- local config = assert(io.popen('/usr/bin/curl "'.. liveboxtv_ip ..'/remoteControl/cmd?operation=10"')) local blocjson = config:read('*all') config:close() local jsonValeur = json:decode(blocjson) local etat = jsonValeur.result.data.activeStandbyState voir_les_logs('--- --- --- etat livebox tv '..etat,debugging) --=========== Vérification état Livebox TV ===============-- if etat == '1'then --commandArray[#commandArray+1]={['UpdateDevice'] = idx..'|0|'..'Arret' } voir_les_logs('--- --- --- Livebox tv à l\'arret',debugging) end if etat == '0' then chaine = jsonValeur.result.data.playedMediaId if chaine ~= nil then voir_les_logs('--- --- --- Livebox tv en marche chaine (id) '..chaine,debugging) for k,v in pairs(les_chaines) do-- On parcourt chaque chaine if tonumber(v.id) == tonumber(chaine) then voir_les_logs('--- --- --- Livebox tv en marche chaine '..v.nom,debugging) if ( otherdevices[chaine] ~= v.nom and device_chaine ~= nil) then commandArray[#commandArray + 1] = { ['UpdateDevice'] = GetDeviceIdxByName(device_chaine)..'|0|'..v.nom } voir_les_logs('--- --- --- idx du device chaine '..otherdevices_idx[device_chaine],debugging) voir_les_logs('--- --- --- Mise à jour chaine '..v.nom,debugging) end end end end end -- ==================================================================================================================== voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging) end -- if script_actif return commandArray
Envie de la dernière version de ce script? elle est sur Github
[homepage]https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_liveboxTV.lua[/homepage]