Dans les scripts LUA pour domoticz, nous utilisons la plupart du temps un ou plusieurs capteur(s) virtuel(s). Ce ou ces capteurs doivent être créés préalablement en indiquant à l’utilisateur final quel type de capteur il doit créer afin que le script qu’il tente d’utiliser soit fonctionnel du premier coup.
Je vous propose ici une fonction vous permettant de créer directement le ou les capteur(s) virtuel(s) nécessaire à l’exécution de votre script.
Il est possible de créer un capteur sans l’associer à un hardware, mais pour ma part, je préfère l’associer à un hardware existant de type dummy.
Cette fonction recherche donc si un hardware de type 15 existe et retourne l’ID de cet hardware.
Maintenant, pour créer un capteur virtuel il faut déterminer quel sera sont type.
Voici la liste des differents types de capteurs virtuels
il ne reste plus qu’a donner un nom à ce nouveau capteur ce qui donne par exemple pour un capteur de type texte :
CreateVirtualSensor("nom du capteur", 5)
voici la fonction
function CreateVirtualSensor(dname, sensortype) -- recherche d'un hardware dummy pour l'associer au futur device local config = assert(io.popen(curl..'"'.. domoticzURL ..'/json.htm?type=hardware" &')) local blocjson = config:read('*all') config:close() local jsonValeur = json:decode(blocjson) if jsonValeur ~= nil then for Index, Value in pairs( jsonValeur.result ) do if Value.Type == 15 then -- hardware dummy = 15 voir_les_logs("--- --- --- idx hardware dummy : ".. Value.idx .." --- --- ---",debugging) voir_les_logs("--- --- --- Nom hardware dummy : ".. Value.Name .." --- --- ---",debugging) id = Value.idx end end end if id ~= nil then -- si un hardware dummy existe on peut créer le device voir_les_logs("--- --- --- création du device : ".. dname .. " --- --- ---",debugging) voir_les_logs(curl..'"'.. domoticzURL ..'/json.htm?type=createvirtualsensor&idx='..id..'&sensorname='..url_encode(dname)..'&sensortype='..sensortype..'"',debugging) os.execute(curl..'"'.. domoticzURL ..'/json.htm?type=createvirtualsensor&idx='..id..'&sensorname='..url_encode(dname)..'&sensortype='..sensortype..'"') voir_les_logs("--- --- --- device : ".. dname .. " créé --- --- ---",debugging) end end --https://github.com/domoticz/domoticz/blob/development/hardware/hardwaretypes.h
cette fonction utilise deux autres fonctions , url_encode() et voir_les_logs(), ainsi que le fichier JSON.lua pré installé par domoticz
Retrouvez la dernière version de cette fonction sur [homepage]https://github.com/papo-o/domoticz_scripts/blob/master/Lua/fonctions/fonctions_perso.lua[/homepage]
Bonjour,
pour les switch selector c’est plus compliqué.
pour la création du device (ce n’est plus un sensor) il faut utiliser une autre requête, en spécifiant le type (244) le sous type (62) exemple :
/usr/bin/curl -m 5 "127.0.0.1:8080/json.htm?type=createdevice&idx=5&sensorname=testselector2&devicetype=244&devicesubtype=62"
le device créé n’est pas activé.il faut une deuxième requête pour l’activer (&used=true) et modifier le type du switch en spécifiant le « switchtype » (18) et l’idx du switch nouvellement créé. exemple :
/usr/bin/curl -m 5 "127.0.0.1:8080/json.htm?type=setused&idx=201&name=testswitchselector&switchtype=18&used=true"
mais cela ne créera un selector qu’avec une seule sélectionbonjour,
Super script pour creer un device automatiquement, je parle de (CreateVirtualSensor(« nom du capteur », 5).
Par contre connais tu, une syntaxe pour créer un device Dz selector switch, je n’arrive pas a trouver le type qui va bien, le type 6 me donne un light/switch normal on/off,
mais après connais tu les options pour le placer en selector
merci d’avance d’avoir pris le temps de lire cette demande;
homerci.