Aller au contenu

HC3 : Liste des devices et leur ID


jojo

Messages recommandés

Bonjour,

J'ai déjà posé la question, et on m'a donné la réponse : le code LUA d'une scène, mais je ne le retrouve plus :94:

Donc sur la HC2, on avait un script qui générait un tableau avec le nom des devices et leur ID technique.

C'était super pratique, comme ça dans GEA, je faisait mes règles oar rapport au nom, et si l'ID était modifié, pas de soucis. De plus, la règle était plus lisible.

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

local hidden = false --- true pour exporter les devices cachés
local dead = false -- true pour exporter les devices morts
 
local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"}
local excludeID = {}
local devicesJSon = api.get("/devices")
 
local devices = {}
local names = {}
local rooms = {}
 
function addName(name, roomname)
	if (type(names[name]) == "nil") then
		names[name] = true
		return name
	else 
		return addName(name.."_"..roomname, roomname)
	end
end
 
function getRooms() 
	local roomsJSon = api.get("/rooms")
	rooms[0] = "inconnu"
  	for k, v in ipairs(roomsJSon) do
    	rooms[v.id] = v.name
    end
end
 
function rename(name, roomname)
  local name = name:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_")
  local roomname = roomname:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_")
  return addName(name, roomname)
end
 
getRooms()
 
for k, v in pairs(devicesJSon) do
    local doit = (hidden or v.visible) and (dead or not v.dead)
  	if (doit) then  
  		for h, w in pairs(excludeType) do
      		if (v.type == w) then
        		doit = false
        	end
        end
    	if (doit) then
			for h, w in pairs(excludeID) do
        		if (v.id == w) then
          			doit = false
        		end
      		end
      	end
	end
  	if (doit) then
		table.insert(devices, v)
   	end
end
 
table.sort(devices, function(a,b) return a.roomID<b.roomID end)
 
local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à %X")
local room = -1
local lastinfo = "";
 
result = result .. "<BR><BR>local id = {"
for k, v in ipairs(devices) do
  	if (room ~= v.roomID) then
    	room = v.roomID
    	result = result .. "<BR>--"..rooms[v.roomID].."<BR>"
    end
  	lastinfo = rename(v.name, rooms[v.roomID])
	result = result .. lastinfo .. " = " .. v.id .. ", "
end
result = result .. "<BR>}"
result = result .. "<BR>"
result = result .. "<BR>-- usage :"
result = result .. "<BR>--     fibaro:getValue(id[\""..lastinfo .."\"], \"value\")"
result = result .. "<BR>--     GEA.add(id[\""..lastinfo .."\"], 30, \"\")"
print(result)

salut @jojo, c'est ca que tu cherches ?

 

 

  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...