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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
--[[ 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 ("<font color='#f3031d'>".. s .."</font>") else print ("<font color='#f3031d'>aucune valeur affichable</font>") 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