Affichage d'un détecteur de mouvements sur un IPX800

J’ai plusieurs détecteurs de mouvements sur un IPX800 et raccordés sur des entrées digitales.

Comme les détecteurs de mouvements fonctionnent en mode normalement fermé, ils apparaissent donc par défaut en vert (on), j’aurais préféré qu’ils soient en gris et qu’ils soient en vert lorsqu’il y a détections de mouvements.

Est-ce qu’il est possible d’inverser l’affichage pour une entrée digitale sans passer par un scénario et l’utilisation d’un entrée virtuelle. ?

Bonjour MAM78,

la solution serait de faire votre propre widget.
Celui-ci gère les 8 entrées de l’IPX, les affiche en gris quand les entrées sont activées, en bleu quand elles sont inactives. C’est mon choix pour différencier le widget de ceux intégrés. De même le titre est bleu et les noms des entrées s’affichent quand on positionne le curseur dessus (ne fonctionne pas avec Firefox chez moi).

if  (datasources["IPX"]["response"]["led0"] == 0) {var m1= "indicator-light4-on";} else {m1="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led1"] == 0) {var m2= "indicator-light4-on";} else {m2="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led2"] == 0) {var m3= "indicator-light4-on";} else {m3="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led3"] == 0) {var m4= "indicator-light4-on";} else {m4="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led4"] == 0) {var m5= "indicator-light4-on";} else {m5="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led5"] == 0) {var m6= "indicator-light4-on";} else {m6="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led6"] == 0) {var m7= "indicator-light4-on";} else {m7="indicator-light4-off";}
if  (datasources["IPX"]["response"]["led7"] == 0) {var m8= "indicator-light4-on";} else {m8="indicator-light4-off";}


var titre1="Titre widget";


return `

<style>
.indicator-light4-on {
    border-radius: 50%;
    width: 15px;
    height: 15px;
    border: 1px solid #fff;
    margin-top: 15px;
    float: left;
    background-color: #1a64ff;
    margin-right: 10px;
    margin-left: 3px;
}
.indicator-light4-off {
    border-radius: 50%;
    width: 15px;
    height: 15px;
    border: 1px solid #3d3d3d;
    margin-top: 15px;
    float: left;
    background-color: #222222;
    margin-right: 10px;
    margin-left: 3px;
}
</style>

<br>
<span style="margin-left:30px;color:#1a64ff;">${titre1}</span>
<br><br>
<div title="Nom1" class="${m1}" style="margin-left:10px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=0');"></div>
<div title="Nom2" class="${m2}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=1');"></div>
<div title="Nom3" class="${m3}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=2');"></div>
<div title="Nom4" class="${m4}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=3');"></div>
<div title="Nom5" class="${m5}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=4');"></div>
<div title="Nom6" class="${m6}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=5');"></div>
<div title="Nom7" class="${m7}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=6');"></div>
<div title="Nom8" class="${m8}" style="margin-left:7px;margin-top:8px;" onclick="newAJAXCommand('io.cgi?rly=7');"></div>

`; 

Bonne journée

bonjour @grocrabe
j’ai mis en place ton widjet mais normalement je devrais 2 voyant gris je te joint une capture
peut tu me dire pkoi ?
c’est l’entree 28 et 29 qui sont connecte en vert elle devrais etre grise normalement

widjet entree.pdf (15,3 Ko)

Bonjour seraphinou,

déjà évite de mettre plus de 8 boutons dans le même widget, les navigateurs ne gèrent pas trop bien, d’où ton décalage.

Les entrées de la 1ère X-24D sont nommées de btn8 à btn31 (pour toi bt27 et btn 28), ce qui explique que ça ne réagisse pas chez toi.

Enfin, tu as gardé les commandes des relais de l’IPX en fin de code, attention aux actions indésirables.

Bonne journée

Bonjour,
j’avais développé ce widget pour @merokaly,
si vous souhaitez plus d’explications, voyez le post d’origine.

cdt

1 « J'aime »

quand je supprime les relai ca n’affiche plus rien

non, « led0 » à « led55 » représentent les relais, pas les entrées.
Pour les entrées, il faudra utiliser « btn0 » à « btn55 »

le décalage est dû au mauvais positionnement des marges, les navigateurs n’y sont pour rien :wink:
Il est tout à fait possible de mettre plus de 8 afficheurs en valorisant correctement les attributs CSS margin-left et en utilisant un container <DIV> par ligne, afin de forcer un saut.
D’ailleurs, dans les matrices, il y en a 32 :smiley:

merci @fgtoul
mais la c’est complique
deja je voudrais enlever les relais j’arrive pas ca n’affiche plus rien

remplace « led » par « btn » pour avoir les entrées digitales

si je met btn je peut mettre la totalite du script?

le script ne fonctionne que s’il est entier !

dis nous exactement ce que tu veux

1 « J'aime »

c’est bon c’est ok la

le bas du script je le comprend pas onclick=« newAJAXCommand(‹ io.cgi?rly=0 ›); »>

c’est la commande interne du firmware pour basculer le relais n°1 par la commande SWITCH

moi je veux juste les infos des entree digital rouge a 0 et vert a 1

si tu ne veux pas le pilotage par le widget, enlèves tous les onclick="newAJAXCommand('io.cgi?rly=xx');"
et laisse les lignes sous ce format

<div title="Nom8" class="${m8}" style="margin-left:7px;margin-top:8px;"></div>

voici le code pour les entrées digitales 1 à 8

if  (datasources["IPX"]["response"]["btn0"] == 0) {var m1= "indicator-light4-on";} else {m1="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn1"] == 0) {var m2= "indicator-light4-on";} else {m2="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn2"] == 0) {var m3= "indicator-light4-on";} else {m3="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn3"] == 0) {var m4= "indicator-light4-on";} else {m4="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn4"] == 0) {var m5= "indicator-light4-on";} else {m5="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn5"] == 0) {var m6= "indicator-light4-on";} else {m6="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn6"] == 0) {var m7= "indicator-light4-on";} else {m7="indicator-light4-off";}
if  (datasources["IPX"]["response"]["btn7"] == 0) {var m8= "indicator-light4-on";} else {m8="indicator-light4-off";}


var titre1="Titre widget";


return `

<style>
.indicator-light4-on {
    border-radius: 50%;
    width: 15px;
    height: 15px;
    border: 1px solid #fff;
    margin-top: 15px;
    float: left;
    background-color: #1a64ff;
    margin-right: 10px;
    margin-left: 3px;
}
.indicator-light4-off {
    border-radius: 50%;
    width: 15px;
    height: 15px;
    border: 1px solid #3d3d3d;
    margin-top: 15px;
    float: left;
    background-color: #222222;
    margin-right: 10px;
    margin-left: 3px;
}
</style>

<br>
<span style="margin-left:30px;color:#1a64ff;">${titre1}</span>
<br><br>
<div title="Nom1" class="${m1}" style="margin-left:10px;margin-top:8px;"></div>
<div title="Nom2" class="${m2}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom3" class="${m3}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom4" class="${m4}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom5" class="${m5}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom6" class="${m6}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom7" class="${m7}" style="margin-left:7px;margin-top:8px;"></div>
<div title="Nom8" class="${m8}" style="margin-left:7px;margin-top:8px;"></div>

`; 
1 « J'aime »

trop fort
j’ai fait un autre post aussi sur scenario seuil si du tps

Il n’est pas pas possible d’agir au niveau de la configuration de l’IPX pour inverser les valeurs ?

le widget s’appuie sur les valeurs 1 ou 0 des périphériques. Vous ne pouvez pas les inverser sans créer votre propre code (sinon vous pensez bien que je n’aurais pas passé du temps à écrire celui-là, d’autant plus qu’ici il était question de modifier les couleurs :wink: )

Ok merci, c’est bien ce que je craignais.

il suffit de copier/coller le code entier dans un widget type HTML.