Aller au contenu

Messages recommandés

Posté(e)

Pour ceux que ça intéresse

 

Les QA prennent tous leurs sens avec un IPX, c'est génial !! je partage :

 

Principe ultra simple 

 

  1. Le QA permet de piloter la sortie de l'IPX.
  2. Le retour d'état de la sortie se fait via les messages PUSH de l'IPX.

 

DANS LA HC3 :

 

- il faut créer un utilisateur spécifique pour que l'IPX puisse se connecter à la HC3 (et prendre autre chose que le super user...)

- il faut créer un QA avec comme type rôle Binary Swicth.

- vous choisissez les icones qui vont bien, les différents réglages de notifications, la pièce, ...

- Vous lui donnez un type (lights, sprinkler, ...)

- vous créez 3 variables dans le QA 

  • IP = adresse IP de l'IPX
  • password = user:password encodé en base 64 (celui permettant de se connecter sur l'IPX)
  • IpxOutNumber=N° de la sortie que vous voulez qu'il pilote

- vous créez un label avec comme nom "LBL_State" (permettra de récupérer les éventuels messages d'erreur)

 

et dans le code vous insérez cela :

 

function QuickApp:onInit()
    self:debug("onInit")
end

-------------------------------------------------------------------------------------
-- Méthodes pouvant être appelées de partout
-------------------------------------------------------------------------------------
function QuickApp:turnOn()
    self:Switch(self:getVariable("IpxOutNumber"),1)
end

function QuickApp:turnOff()
    self:Switch(self:getVariable("IpxOutNumber"),0)
end

-------------------------------------------------------------------------------------
-- Function pour actionner la sortie défini dans la variable
-------------------------------------------------------------------------------------
function QuickApp:Switch(Num,State)
    self.http = net.HTTPClient({timeout=3000})
    self.http:request("http://"..self:getVariable("IP").."/preset.htm?set"..Num.."="..State,
    {
        options = {
            headers = {['Authorization']='Basic '..self:getVariable("password")},
            method = 'GET'
        },  
        success = function(response) self:updateView("LBL_State", "text", tostring(response.data)) end, 
        error = function(err) self:updateView("LBL_State", "text", tostring(err)) end
    })
end

-------------------------------------------------------------------------------------
-- Function pour réceptionner le retour d'état de la sortie
-------------------------------------------------------------------------------------
function QuickApp:ReceiveState(status)
self:debug(status)
    if status == 1 then
        self:updateProperty("value", true)
    else
        self:updateProperty("value", false)
    end
end

 

Dans l'IPX : 

 

les messages push de chaque sortie seront sous la forme : /api/callAction?deviceID=284&name=ReceiveState&arg1=1

 

en rouge = adresse IP de la HC3

en vert = le user:mot_de_passe (en clair) pour se connecter à la HC3 (avec l'utilisateur créé plus haut)

en jaune = l'ID du QA que vous avez créé

 

image.png.ce083bb8a7b2e89022a863a22b542f47.png

 

il ne faut pas oublier, dans la gestion des accès de la HC3, d'autoriser le user, créé spécifiquement plus haut, à utiliser le QA !!!

 

image.png.0743282eb0c9e9274ddca97d9bda22fa.png

 

 

pour piloter le QA depuis une scène en LUA :

 

--pour le pilotage
fibaro.call(284, "turnOn")

--pour connaitre son status
fibaro.getValue(284, "value")

 

Divers :

 

Pour créé rapidement d'autres QA, il suffit d'exporter le QA qui vient d'être créé (fichier .fqa) et de l'importer pour passer à une autre sortie.

Il faudra alors, modifier la variable "IpxOutNumber" du QA.

Attention de penser au droits d'accès pour ce nouveau QA du coup...

 

Fichier DEMO :

 

Demo_IPX.fqa

 

 

  • Like 3
  • Upvote 1
Posté(e)

concrètement, 

 

tu pilotes une carte d’entrées-sorties exactement de la même manière que les autres device z-wave.

le typage des QA permet de les voir apparaître comme une simple lampe ou autre.

 

donc dans mon cas, les lumières du jardin ne sont pas connectées à un relais Z-wave, mais à cette carte.

et je les pilotes comme si de rien était.

 

  • Upvote 1
  • 4 mois après...
Posté(e)

Merci Jean-Jacques, je fais des essais avec un ipx800 v3 v4 et Ecodevice et je te dis s'il y a des problèmes !

Bien cordialement.

 

Yves

  • 4 mois après...
Posté(e)

Bonjour,

Possesseur de la HC3 et d'un IPX800 v3, j'ai essayé la solution proposée ci-dessus, cela fonctionne dans un sens (màj PUSH de l'iPX vers HC3, c'est déjà un bon point!), mais pas dans l'autre..

Je pense que l'erreur peut venir du user:password : est-ce uniquement le password qu'il faut encoder en Base64, ou le user également? (ex. en essayant de convertir "password", j'obtient cGFzc3dvcmQ= -> est-ce que la variable doit être user:cGFzc3dvcmQ=

La variable IpxOutNumber s'écrit sous quelle forme (01/1/R01)?

Doit-on préciser un port pour l'adresse IP?

Le LBL_State ne change pas d'état..

Je précise que j'ai désactivé la clé api du côté de l'IPX.

J'ai déjà effectué pas mal de test mais rien n'y fait snif..

 

Enfin, dernière question (promis!): peut-on imaginer une requête lancée régulièrement pour aller chercher des valeurs analogiques de l'IPX ou l'état des entrées numériques?

 

Merci!!

Posté(e)

je confirme que c'est le couple user:password qui doit être encodé en base64.

Concernant le port, j'ai un doute là, je ne l'ai pas précisé, peut-être bien qu'il faut le rajouter derrière l'IP, du style @ip:port... suis désolé pour ce doute. Faut essayer... 

la variable IpxOutNumber prend juste la valeur de la sortie que tu veux : 1 ou 2 ou ... 8.

 

j'avoue ne pas savoir ce dont tu parles avec la clé API, je ne trouve pas ce paramètre chez moi !?

 

concernant ta dernière question, je rebondis sur le fait que depuis la création ce petit tuto, j'ai complètement changé ma manière de gérer l'IPX.

En effet je le pilote maintenant entièrement par socket et non par http.

En utilisant la solution des QA Parent/Child.

Et le top c'est de justement récupérer automatiquement l'ensemble des valeurs de l'IPX (état des sorties + compteur + entrées) à chaque changement d'état, grâce à la fonction "send data on status change" de l'onglet M2M.

 

c'est un peu plus compliqué à coder, mais fonctionne à la perfection.

 

Il me semble que qqun sur le forum avait poster qqch sur les QA Parent/Child avec l'IPX, mais il me semble que c'était en version 4.

 

PS : j'ai mis à jour mon IPX, je suis en version 3.05.74.

 

 

Posté(e)

Merci pour ta réponse.

J'ai fait plein de tests mais rien.. J'ai une erreur 404 dans le label. Sais-tu si il y a une solution pour tester le code directement dans le navigateur?

 

Je vais chercher sur le forum si je trouve la solution 2 (en M2M) car j'ai actuellement beaucoup de périphériques branchés sur l'IPX, mais déjà je suis étonné de ne pas trouver l'option "send data on status change" (je suis en 4.04.04)..

 

Posté(e)

Ouah l'erreur de bébé!

 

Si je suis en V4 (j'ai confondu avec le 3 de la HC!!!).

Est-ce que ça change beaucoup?

Connais-tu l'existence d'une QA (même en cours de développement) pour faire ce que je souhaite?

  • Haha 1
Posté(e)

Purée ça c'est trop cool! J'ai beaucoup hésité à passer chez fibaro car cela me manque énormément (histoire ne pas remplacer mon IPX par un tas de module ZWave..), me voilà rassuré!

Peux-tu me dire quel est l'objectif de ce QA? (relais? Entrées analogiques? la totale?..)

J'en profite pour remercier tous les développeurs sans qui, pour ma part et n'ayant pas énormément de connaissances en programmation, beaucoup n'exploiterait pas toutes les possibilités de cette box! Merci!

Posté(e)

La "totale" :D
Les relais, les entrées analogiques, les entrées numériques, etc

Mais comme je n'ai pas les extensions Volets roulants, Dimmers, Fil Pilote, etc, pour l'instant elles ne seront pas supportées... mais ça sera possible de rajouter ultérieurement.

  • 4 semaines après...
Posté(e)

En attendant la tant désirée QuickApp en question, je me suis lancé dans un petit morceau de code pour aller chercher une valeur analogique dans l'IPX, mais je coince à un endroit :

function QuickApp:onInit()
    self:debug("onInit")
    self.http = net.HTTPClient({timeout=3000})
    self.http:request("http://user:password@192.168.0.4:80/user/status.xml",
      {
        options = {
            method = 'GET'
        },  
        success = function(response)
        local data=json.encode(response.data)

        self:debug("data = ", data)
      end,
        error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    })
end

La variable data retournée est la suivante :

data = "\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<\/dimper>\n000000000000000000000000<\/dimon>\n\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<\/x010vper>\n0000000000000000<\/x010von>\n\n0<\/led0>\n0<\/led1>\n1<\/led2>\n1<\/led3>\n1<\/led4>\n0<\/led5>\n0<\/led6>\n0<\/led7>\n0<\/led8>\n0<\/led9>\n0<\/led10>\n0<\/led11>\n0<\/led12>\n1<\/led13>\n0<\/led14>\n0<\/led15>\n0<\/led16>\n0<\/led17>\n0<\/led18>\n0<\/led19>\n0<\/led20>\n0<\/led21>\n0<\/led22>\n0<\/led23>\n0<\/led24>\n0<\/led25>\n0<\/led26>\n0<\/led27>\n0<\/led28>\n0<\/led29>\n0<\/led30>\n0<\/led31>\n0<\/led32>\n0<\/led33>\n0<\/led34>\n0<\/led35>\n0<\/led36>\n0<\/led37>\n0<\/led38>\n0<\/led39>\n0<\/led40>\n0<\/led41>\n0<\/led42>\n0<\/led43>\n0<\/led44>\n0<\/led45>\n0<\/led46>\n0<\/led47>\n0<\/led48>\n0<\/led49>\n0<\/led50>\n0<\/led51>\n0<\/led52>\n0<\/led53>\n0<\/led54>\n0<\/led55>\n\n0<\/btn0>\n0<\/btn1>\n0<\/btn2>\n0<\/btn3>\n0<\/btn4>\n0<\/btn5>\n0<\/btn6>\n0<\/btn7>\n0<\/btn8>\n1<\/btn9>\n0<\/btn10>\n0<\/btn11>\n0<\/btn12>\n0<\/btn13>\n0<\/btn14>\n0<\/btn15>\n0<\/btn16>\n0<\/btn17>\n0<\/btn18>\n0<\/btn19>\n0<\/btn20>\n0<\/btn21>\n0<\/btn22>\n0<\/btn23>\n1<\/btn24>\n0<\/btn25>\n1<\/btn26>\n0<\/btn27>\n0<\/btn28>\n0<\/btn29>\n0<\/btn30>\n0<\/btn31>\n0<\/btn32>\n0<\/btn33>\n0<\/btn34>\n0<\/btn35>\n0<\/btn36>\n0<\/btn37>\n0<\/btn38>\n0<\/btn39>\n0<\/btn40>\n0<\/btn41>\n0<\/btn42>\n0<\/btn43>\n0<\/btn44>\n0<\/btn45>\n0<\/btn46>\n0<\/btn47>\n0<\/btn48>\n0<\/btn49>\n0<\/btn50>\n0<\/btn51>\n0<\/btn52>\n0<\/btn53>\n0<\/btn54>\n0<\/btn55>\n\n0<\/outtaon0>\n0<\/outtaon1>\n0<\/outtaon2>\n0<\/outtaon3>\n0<\/outtaon4>\n0<\/outtaon5>\n0<\/outtaon6>\n0<\/outtaon7>\n0<\/outtaon8>\n0<\/outtaon9>\n0<\/outtaon10>\n0<\/outtaon11>\n0<\/outtaon12>\n0<\/outtaon13>\n0<\/outtaon14>\n0<\/outtaon15>\n0<\/outtaon16>\n0<\/outtaon17>\n0<\/outtaon18>\n0<\/outtaon19>\n0<\/outtaon20>\n0<\/outtaon21>\n0<\/outtaon22>\n0<\/outtaon23>\n0<\/outtaon24>\n0<\/outtaon25>\n0<\/outtaon26>\n0<\/outtaon27>\n0<\/outtaon28>\n0<\/outtaon29>\n0<\/outtaon30>\n0<\/outtaon31>\n0<\/outtaon32>\n0<\/outtaon33>\n0<\/outtaon34>\n0<\/outtaon35>\n0<\/outtaon36>\n0<\/outtaon37>\n0<\/outtaon38>\n0<\/outtaon39>\n0<\/outtaon40>\n0<\/outtaon41>\n0<\/outtaon42>\n0<\/outtaon43>\n0<\/outtaon44>\n0<\/outtaon45>\n0<\/outtaon46>\n0<\/outtaon47>\n0<\/outtaon48>\n0<\/outtaon49>\n0<\/outtaon50>\n0<\/outtaon51>\n0<\/outtaon52>\n0<\/outtaon53>\n0<\/outtaon54>\n0<\/outtaon55>\n\n0<\/vin0>\n0<\/vin1>\n0<\/vin2>\n0<\/vin3>\n0<\/vin4>\n0<\/vin5>\n0<\/vin6>\n0<\/vin7>\n0<\/vin8>\n0<\/vin9>\n0<\/vin10>\n0<\/vin11>\n0<\/vin12>\n0<\/vin13>\n0<\/vin14>\n0<\/vin15>\n0<\/vin16>\n0<\/vin17>\n0<\/vin18>\n0<\/vin19>\n0<\/vin20>\n0<\/vin21>\n0<\/vin22>\n0<\/vin23>\n0<\/vin24>\n0<\/vin25>\n0<\/vin26>\n0<\/vin27>\n0<\/vin28>\n0<\/vin29>\n0<\/vin30>\n0<\/vin31>\n0<\/vin32>\n0<\/vin33>\n0<\/vin34>\n0<\/vin35>\n0<\/vin36>\n0<\/vin37>\n0<\/vin38>\n0<\/vin39>\n0<\/vin40>\n0<\/vin41>\n0<\/vin42>\n0<\/vin43>\n0<\/vin44>\n0<\/vin45>\n0<\/vin46>\n0<\/vin47>\n0<\/vin48>\n0<\/vin49>\n0<\/vin50>\n0<\/vin51>\n0<\/vin52>\n0<\/vin53>\n0<\/vin54>\n0<\/vin55>\n0<\/vin56>\n0<\/vin57>\n0<\/vin58>\n0<\/vin59>\n0<\/vin60>\n0<\/vin61>\n0<\/vin62>\n0<\/vin63>\n0<\/vin64>\n0<\/vin65>\n0<\/vin66>\n0<\/vin67>\n0<\/vin68>\n0<\/vin69>\n0<\/vin70>\n0<\/vin71>\n0<\/vin72>\n0<\/vin73>\n0<\/vin74>\n0<\/vin75>\n0<\/vin76>\n0<\/vin77>\n0<\/vin78>\n0<\/vin79>\n0<\/vin80>\n0<\/vin81>\n0<\/vin82>\n0<\/vin83>\n0<\/vin84>\n0<\/vin85>\n0<\/vin86>\n0<\/vin87>\n0<\/vin88>\n0<\/vin89>\n0<\/vin90>\n0<\/vin91>\n0<\/vin92>\n0<\/vin93>\n0<\/vin94>\n0<\/vin95>\n0<\/vin96>\n0<\/vin97>\n0<\/vin98>\n0<\/vin99>\n0<\/vin100>\n0<\/vin101>\n0<\/vin102>\n0<\/vin103>\n0<\/vin104>\n0<\/vin105>\n0<\/vin106>\n0<\/vin107>\n0<\/vin108>\n0<\/vin109>\n0<\/vin110>\n0<\/vin111>\n0<\/vin112>\n0<\/vin113>\n0<\/vin114>\n0<\/vin115>\n0<\/vin116>\n0<\/vin117>\n0<\/vin118>\n0<\/vin119>\n0<\/vin120>\n0<\/vin121>\n0<\/vin122>\n0<\/vin123>\n0<\/vin124>\n0<\/vin125>\n0<\/vin126>\n0<\/vin127>\n\n1<\/vout0>\n0<\/vout1>\n0<\/vout2>\n0<\/vout3>\n0<\/vout4>\n0<\/vout5>\n0<\/vout6>\n0<\/vout7>\n0<\/vout8>\n0<\/vout9>\n0<\/vout10>\n0<\/vout11>\n0<\/vout12>\n0<\/vout13>\n0<\/vout14>\n0<\/vout15>\n0<\/vout16>\n0<\/vout17>\n0<\/vout18>\n0<\/vout19>\n0<\/vout20>\n0<\/vout21>\n0<\/vout22>\n0<\/vout23>\n0<\/vout24>\n0<\/vout25>\n0<\/vout26>\n0<\/vout27>\n0<\/vout28>\n0<\/vout29>\n0<\/vout30>\n0<\/vout31>\n0<\/vout32>\n0<\/vout33>\n0<\/vout34>\n0<\/vout35>\n0<\/vout36>\n0<\/vout37>\n0<\/vout38>\n0<\/vout39>\n0<\/vout40>\n0<\/vout41>\n0<\/vout42>\n0<\/vout43>\n0<\/vout44>\n0<\/vout45>\n0<\/vout46>\n0<\/vout47>\n0<\/vout48>\n0<\/vout49>\n0<\/vout50>\n0<\/vout51>\n0<\/vout52>\n0<\/vout53>\n0<\/vout54>\n0<\/vout55>\n0<\/vout56>\n0<\/vout57>\n0<\/vout58>\n0<\/vout59>\n0<\/vout60>\n0<\/vout61>\n0<\/vout62>\n0<\/vout63>\n0<\/vout64>\n0<\/vout65>\n0<\/vout66>\n0<\/vout67>\n0<\/vout68>\n0<\/vout69>\n0<\/vout70>\n0<\/vout71>\n0<\/vout72>\n0<\/vout73>\n0<\/vout74>\n0<\/vout75>\n0<\/vout76>\n0<\/vout77>\n0<\/vout78>\n0<\/vout79>\n0<\/vout80>\n0<\/vout81>\n0<\/vout82>\n0<\/vout83>\n0<\/vout84>\n0<\/vout85>\n0<\/vout86>\n0<\/vout87>\n0<\/vout88>\n0<\/vout89>\n0<\/vout90>\n0<\/vout91>\n0<\/vout92>\n0<\/vout93>\n0<\/vout94>\n0<\/vout95>\n0<\/vout96>\n0<\/vout97>\n0<\/vout98>\n0<\/vout99>\n0<\/vout100>\n0<\/vout101>\n0<\/vout102>\n0<\/vout103>\n0<\/vout104>\n0<\/vout105>\n0<\/vout106>\n0<\/vout107>\n0<\/vout108>\n0<\/vout109>\n0<\/vout110>\n0<\/vout111>\n0<\/vout112>\n0<\/vout113>\n0<\/vout114>\n0<\/vout115>\n0<\/vout116>\n0<\/vout117>\n0<\/vout118>\n0<\/vout119>\n0<\/vout120>\n0<\/vout121>\n0<\/vout122>\n0<\/vout123>\n0<\/vout124>\n0<\/vout125>\n0<\/vout126>\n0<\/vout127>\n\n\n0<\/votaon0>\n0<\/votaon1>\n0<\/votaon2>\n0<\/votaon3>\n0<\/votaon4>\n0<\/votaon5>\n0<\/votaon6>\n0<\/votaon7>\n0<\/votaon8>\n0<\/votaon9>\n0<\/votaon10>\n0<\/votaon11>\n0<\/votaon12>\n0<\/votaon13>\n0<\/votaon14>\n0<\/votaon15>\n0<\/votaon16>\n0<\/votaon17>\n0<\/votaon18>\n0<\/votaon19>\n0<\/votaon20>\n0<\/votaon21>\n0<\/votaon22>\n0<\/votaon23>\n0<\/votaon24>\n0<\/votaon25>\n0<\/votaon26>\n0<\/votaon27>\n0<\/votaon28>\n0<\/votaon29>\n0<\/votaon30>\n0<\/votaon31>\n0<\/votaon32>\n0<\/votaon33>\n0<\/votaon34>\n0<\/votaon35>\n0<\/votaon36>\n0<\/votaon37>\n0<\/votaon38>\n0<\/votaon39>\n0<\/votaon40>\n0<\/votaon41>\n0<\/votaon42>\n0<\/votaon43>\n0<\/votaon44>\n0<\/votaon45>\n0<\/votaon46>\n0<\/votaon47>\n0<\/votaon48>\n0<\/votaon49>\n0<\/votaon50>\n0<\/votaon51>\n0<\/votaon52>\n0<\/votaon53>\n0<\/votaon54>\n0<\/votaon55>\n0<\/votaon56>\n0<\/votaon57>\n0<\/votaon58>\n0<\/votaon59>\n0<\/votaon60>\n0<\/votaon61>\n0<\/votaon62>\n0<\/votaon63>\n0<\/votaon64>\n0<\/votaon65>\n0<\/votaon66>\n0<\/votaon67>\n0<\/votaon68>\n0<\/votaon69>\n0<\/votaon70>\n0<\/votaon71>\n0<\/votaon72>\n0<\/votaon73>\n0<\/votaon74>\n0<\/votaon75>\n0<\/votaon76>\n0<\/votaon77>\n0<\/votaon78>\n0<\/votaon79>\n0<\/votaon80>\n0<\/votaon81>\n0<\/votaon82>\n0<\/votaon83>\n0<\/votaon84>\n0<\/votaon85>\n0<\/votaon86>\n0<\/votaon87>\n0<\/votaon88>\n0<\/votaon89>\n0<\/votaon90>\n0<\/votaon91>\n0<\/votaon92>\n0<\/votaon93>\n0<\/votaon94>\n0<\/votaon95>\n0<\/votaon96>\n0<\/votaon97>\n0<\/votaon98>\n0<\/votaon99>\n0<\/votaon100>\n0<\/votaon101>\n0<\/votaon102>\n0<\/votaon103>\n0<\/votaon104>\n0<\/votaon105>\n0<\/votaon106>\n0<\/votaon107>\n0<\/votaon108>\n0<\/votaon109>\n0<\/votaon110>\n0<\/votaon111>\n0<\/votaon112>\n0<\/votaon113>\n0<\/votaon114>\n0<\/votaon115>\n0<\/votaon116>\n0<\/votaon117>\n0<\/votaon118>\n0<\/votaon119>\n0<\/votaon120>\n0<\/votaon121>\n0<\/votaon122>\n0<\/votaon123>\n0<\/votaon124>\n0<\/votaon125>\n0<\/votaon126>\n0<\/votaon127>\n\n15872<\/analog0>\n0<\/analog1>\n0<\/analog2>\n0<\/analog3>\n\n0<\/analogV0>\n0<\/analogV1>\n0<\/analogV2>\n0<\/analogV3>\n0<\/analogV4>\n0<\/analogV5>\n0<\/analogV6>\n0<\/analogV7>\n0<\/analogV8>\n0<\/analogV9>\n0<\/analogV10>\n0<\/analogV11>\n0<\/analogV12>\n0<\/analogV13>\n0<\/analogV14>\n0<\/analogV15>\n0<\/analogV16>\n0<\/analogV17>\n0<\/analogV18>\n0<\/analogV19>\n0<\/analogV20>\n0<\/analogV21>\n0<\/analogV22>\n0<\/analogV23>\n0<\/analogV24>\n0<\/analogV25>\n0<\/analogV26>\n0<\/analogV27>\n0<\/analogV28>\n0<\/analogV29>\n0<\/analogV30>\n0<\/analogV31>\n\n0<\/xths01>\n0<\/xths02>\n0<\/xths03>\n0<\/xths11>\n0<\/xths12>\n0<\/xths13>\n0<\/xths21>\n0<\/xths22>\n0<\/xths23>\n0<\/xths31>\n0<\/xths32>\n0<\/xths33>\n0<\/xths41>\n0<\/xths42>\n0<\/xths43>\n0<\/xths51>\n0<\/xths52>\n0<\/xths53>\n0<\/xths61>\n0<\/xths62>\n0<\/xths63>\n0<\/xths71>\n0<\/xths72>\n0<\/xths73>\n0<\/xths81>\n0<\/xths82>\n0<\/xths83>\n0<\/xths91>\n0<\/xths92>\n0<\/xths93>\n0<\/xths101>\n0<\/xths102>\n0<\/xths103>\n0<\/xths111>\n0<\/xths112>\n0<\/xths113>\n0<\/xths121>\n0<\/xths122>\n0<\/xths123>\n0<\/xths131>\n0<\/xths132>\n0<\/xths133>\n\n0<\/cpt0>\n5<\/cpt1>\n0<\/cpt2>\n0<\/cpt3>\n0<\/cpt4>\n0<\/cpt5>\n0<\/cpt6>\n0<\/cpt7>\n0<\/cpt8>\n0<\/cpt9>\n0<\/cpt10>\n0<\/cpt11>\n0<\/cpt12>\n0<\/cpt13>\n0<\/cpt14>\n0<\/cpt15>\n\n0<\/volet0>\n0<\/volet1>\n0<\/volet2>\n0<\/volet3>\n0<\/volet4>\n0<\/volet5>\n0<\/volet6>\n0<\/volet7>\n0<\/volet8>\n0<\/volet9>\n0<\/volet10>\n0<\/volet11>\n0<\/volet12>\n0<\/volet13>\n0<\/volet14>\n0<\/volet15>\n0<\/volet16>\n0<\/volet17>\n0<\/volet18>\n0<\/volet19>\n0<\/volet20>\n0<\/volet21>\n0<\/volet22>\n0<\/volet23>\n0<\/volet24>\n0<\/volet25>\n0<\/volet26>\n0<\/volet27>\n0<\/volet28>\n0<\/volet29>\n0<\/volet30>\n0<\/volet31>\n\n0<\/pw0>\n0<\/pw1>\n0<\/pw2>\n0<\/pw3>\n0<\/pw4>\n0<\/pw5>\n0<\/pw6>\n0<\/pw7>\n0<\/pw8>\n0<\/pw9>\n0<\/pw10>\n0<\/pw11>\n0<\/pw12>\n0<\/pw13>\n0<\/pw14>\n0<\/pw15>\n0<\/pw16>\n0<\/pw17>\n0<\/pw18>\n0<\/pw19>\n0<\/pw20>\n0<\/pw21>\n0<\/pw22>\n0<\/pw23>\n0<\/pw24>\n0<\/pw25>\n0<\/pw26>\n0<\/pw27>\n0<\/pw28>\n0<\/pw29>\n0<\/pw30>\n0<\/pw31>\n\n0<\/eno0>\n0<\/eno1>\n0<\/eno2>\n0<\/eno3>\n0<\/eno4>\n0<\/eno5>\n0<\/eno6>\n0<\/eno7>\n0<\/eno8>\n0<\/eno9>\n0<\/eno10>\n0<\/eno11>\n0<\/eno12>\n0<\/eno13>\n0<\/eno14>\n0<\/eno15>\n0<\/eno16>\n0<\/eno17>\n0<\/eno18>\n0<\/eno19>\n0<\/eno20>\n0<\/eno21>\n0<\/eno22>\n0<\/eno23>\n0<\/eno24>\n0<\/eno25>\n0<\/eno26>\n0<\/eno27>\n0<\/eno28>\n0<\/eno29>\n0<\/eno30>\n0<\/eno31>\n0<\/eno32>\n0<\/eno33>\n0<\/eno34>\n0<\/eno35>\n0<\/eno36>\n0<\/eno37>\n0<\/eno38>\n0<\/eno39>\n0<\/eno40>\n0<\/eno41>\n0<\/eno42>\n0<\/eno43>\n0<\/eno44>\n0<\/eno45>\n0<\/eno46>\n0<\/eno47>\n0<\/eno48>\n0<\/eno49>\n0<\/eno50>\n0<\/eno51>\n0<\/eno52>\n0<\/eno53>\n0<\/eno54>\n0<\/eno55>\n0<\/eno56>\n0<\/eno57>\n0<\/eno58>\n0<\/eno59>\n0<\/eno60>\n0<\/eno61>\n0<\/eno62>\n0<\/eno63>\n0<\/eno64>\n0<\/eno65>\n0<\/eno66>\n0<\/eno67>\n0<\/eno68>\n0<\/eno69>\n0<\/eno70>\n0<\/eno71>\n0<\/eno72>\n0<\/eno73>\n0<\/eno74>\n0<\/eno75>\n0<\/eno76>\n0<\/eno77>\n0<\/eno78>\n0<\/eno79>\n0<\/eno80>\n0<\/eno81>\n0<\/eno82>\n0<\/eno83>\n0<\/eno84>\n0<\/eno85>\n0<\/eno86>\n0<\/eno87>\n0<\/eno88>\n0<\/eno89>\n0<\/eno90>\n0<\/eno91>\n0<\/eno92>\n0<\/eno93>\n0<\/eno94>\n0<\/eno95>\n0<\/eno96>\n0<\/eno97>\n0<\/eno98>\n0<\/eno99>\n0<\/eno100>\n0<\/eno101>\n0<\/eno102>\n0<\/eno103>\n0<\/eno104>\n0<\/eno105>\n0<\/eno106>\n0<\/eno107>\n0<\/eno108>\n0<\/eno109>\n0<\/eno110>\n0<\/eno111>\n0<\/eno112>\n0<\/eno113>\n0<\/eno114>\n0<\/eno115>\n0<\/eno116>\n0<\/eno117>\n0<\/eno118>\n0<\/eno119>\n0<\/eno120>\n0<\/eno121>\n0<\/eno122>\n0<\/eno123>\n0<\/eno124>\n0<\/eno125>\n0<\/eno126>\n0<\/eno127>\n0<\/eno128>\n0<\/eno129>\n0<\/eno130>\n0<\/eno131>\n0<\/eno132>\n0<\/eno133>\n0<\/eno134>\n0<\/eno135>\n0<\/eno136>\n0<\/eno137>\n0<\/eno138>\n0<\/eno139>\n0<\/eno140>\n0<\/eno141>\n0<\/eno142>\n0<\/eno143>\n0<\/eno144>\n0<\/eno145>\n0<\/eno146>\n0<\/eno147>\n0<\/eno148>\n0<\/eno149>\n0<\/eno150>\n0<\/eno151>\n0<\/eno152>\n0<\/eno153>\n0<\/eno154>\n0<\/eno155>\n0<\/eno156>\n0<\/eno157>\n0<\/eno158>\n0<\/eno159>\n0<\/eno160>\n0<\/eno161>\n0<\/eno162>\n0<\/eno163>\n0<\/eno164>\n0<\/eno165>\n0<\/eno166>\n0<\/eno167>\n\n255<\/x4fp10>\n255<\/x4fp11>\n255<\/x4fp12>\n255<\/x4fp13>\n255<\/x4fp14>\n255<\/x4fp20>\n255<\/x4fp21>\n255<\/x4fp22>\n255<\/x4fp23>\n255<\/x4fp24>\n255<\/x4fp30>\n255<\/x4fp31>\n255<\/x4fp32>\n255<\/x4fp33>\n255<\/x4fp34>\n255<\/x4fp40>\n255<\/x4fp41>\n255<\/x4fp42>\n255<\/x4fp43>\n255<\/x4fp44>\n\n54:10:EC:89:E9:60<\/mac>\n\n0<\/enoA0>\n0<\/enoA1>\n0<\/enoA2>\n0<\/enoA3>\n0<\/enoA4>\n0<\/enoA5>\n0<\/enoA6>\n0<\/enoA7>\n0<\/enoA8>\n0<\/enoA9>\n0<\/enoA10>\n0<\/enoA11>\n0<\/enoA12>\n0<\/enoA13>\n0<\/enoA14>\n0<\/enoA15>\n0<\/enoA16>\n0<\/enoA17>\n0<\/enoA18>\n0<\/enoA19>\n0<\/enoA20>\n0<\/enoA21>\n0<\/enoA22>\n0<\/enoA23>\n\n0<\/enoVT0>\n0<\/enoVT1>\n0<\/enoVT2>\n0<\/enoVT3>\n0<\/enoVT4>\n0<\/enoVT5>\n0<\/enoVT6>\n0<\/enoVT7>\n0<\/enoVT8>\n0<\/enoVT9>\n0<\/enoVT10>\n0<\/enoVT11>\n0<\/enoVT12>\n0<\/enoVT13>\n0<\/enoVT14>\n0<\/enoVT15>\n\n0<\/enoVR01>\n0<\/enoVR02>\n0<\/enoVR03>\n0<\/enoVR04>\n0<\/enoVR05>\n0<\/enoVR06>\n0<\/enoVR07>\n0<\/enoVR08>\n0<\/enoVR09>\n0<\/enoVR10>\n0<\/enoVR11>\n0<\/enoVR12>\n0<\/enoVR13>\n0<\/enoVR14>\n0<\/enoVR15>\n0<\/enoVR16>\n0<\/enoVR17>\n0<\/enoVR18>\n0<\/enoVR19>\n0<\/enoVR20>\n0<\/enoVR21>\n0<\/enoVR22>\n0<\/enoVR23>\n0<\/enoVR24>\n\n13172<\/lps0>\n893224<\/wuc0>\n<\/enotype>\n<\/enocode>\n\n06\/01\/2021<\/date>\n22:59:32<\/heure>\n\n<\/response>\n"

et je souhaite qu'elle prenne la valeur de analog0 (15872).

Peut-on envisager sans trop prendre de ressources faire tourner ce code régulièrement (toutes les secondes voire moins?)

Ou peut-on envisager que ce soit plutôt l'IPX qui pousse cette valeur à chaque changement (dans ce cas mon code est déjà obsolète!)?

Un peu d'aide serait la bienvenue..

 

Posté(e) (modifié)

il doit certainement y avoir une commande qui te renvoie juste cette valeur, faut regarder la doc de l'IPX.

 

Sinon tu fais un bon vieux string.find() pour trouver  "analog0" et tu regardes pour voir où tu tombes dans la chaine, pour en sortir la valeur.

Et ainsi la stocker dans une variable...

Modifié par jjacques68
Posté(e)

Merci pour cette aide!

J'ai essayé ça :

 success = function(response)
        local data=string.find(json.encode(response.data), "analog0")
        local data2 = tonumber(data)
        local data3 = data2 + "10000000"

Ca me retourne bien la valeur désirée :

 [QUICKAPP313]: onInit
[07.01.2021] [10:51:38] [DEBUG] [QUICKAPP313]: data3 = 12243

Mais je n'arrive pas à lui appliquer cette formule :

local analog = (((tonumber(data) *  0.000050354) - 0.25) / 0.028)

Je me demande si c'est la bonne syntaxe?

Posté(e)

En fait je me suis égaré, la valeur qui m'est retourné (12243) ne correspond pas la valeur souhaitée.. Une idée??

Posté(e)

L'IPX800 retourne la valeur analogique brute issue de convertisseur analogique vers numérique (ADC)

Il faut donc appliquer la formule pour obtenir la bonne valeur analogique.

Tu trouveras cette info sur le forum / wiki de GCE Electronics, ça dépend du type de sonde que tu mesures.

Tu dois aussi trouver la formule dans l'IPX800 lui-même, mais sur le v3 je ne sais pas où c'est.

Posté(e)

Merci Lazer pour ton retour,

La formule en effet je l'ai :

local analog = (((tonumber(data) *  0.000050354) - 0.25) / 0.028)

En revanche la valeur qui est me retournée ne correspond pas à celle que je lis derrière la variable analog0 dans le xml (elle ne correspond à rien dans le .xml):huh:

Posté(e)

Euh... ben non je sais pas

je ne sais même pas quelle valeur tu attends

Mais comme je n'ai pas d'IPX800 v3, peut être que l'API est différente de la v4, là encore je ne sais pas....

Posté(e)

J'ai une V4, la valeur que je souhaite est la valeur analogique de l'entrée 1, tout con mais je galère!

Posté(e)

Ah ben si tu as une V4, tu t'es un peu trompé de topic !

 

Prend la bonne URL ça ira mieux pour récupérer les valeurs analogiques : /api/xdevices.json?key=apikey&Get=A   <= warning : API pour IPX800 v4

 

Mais c'est HS ici alors je n'en dirai pas plus pour ne pas tromper les futurs lecteurs qui tomberaient sur ce post.

×
×
  • Créer...