Aller au contenu

Messages recommandés

Posté(e) (modifié)

Salut  salut à tous

 

j’ai une question 

 

je suis à la recherche d’une personne ayant une connaissance sur Node-Red 

 

j’aurai une interopérabilité avec FIBARO merci d’avance

Modifié par 971jmd
  • Réponses 59
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Images postées

Posté(e) (modifié)

salut

 

j'ai réalisée un petit code avec NODE-RED  qui commande une carte relais ( http://denkovi.com/web-snmp-controlled-8-relay-board-daenetip2-v2 )

 

mai avant d'intégrée à avec les node fibaro je souhaite résoudre un problème.

 

Dans mon Dashboard qui fonctionne bien, je souhaite quand j'active le port 2 ou 3 (relais 2 ou 3) je souhaite réalisée un auto OFF ( si ON alors OFF après 2 secondes)

en gros réalisée une pulsion pour ouvrir mon portail ...

 

 

r1.JPG.f477ea52616692e421c24717d7c19885.JPG

 

le script :

 

P.json

Modifié par 971jmd
Posté(e)

Bon, je ne comprends pas tout, surtout que je n'ai pas exploré les fonctions de dashboard  :

  • Déjà dans la fonction Port 2 :
var tmp = (flow.get("tmpVar")) + 1;
flow.set("tmpVar", tmp);

var p53 = {payload:msg.payload.value === 0 ? "52=OFF" : "52=ON"}

///msg = {icon: '<font color = "white" i class="fa fa-book fa-2x"></i>'};

return [p52];

j'aurais plutôt vu un var p52 = ... ou alors un return [p53]...

  • Ensuite, avec la fonction resend every 5s, le message sera envoyé toutes les 5 secondes, ce qui me parait curieux.

Pour ma part, j'aurais plutôt prévu en sortie de la fonction Port 2, un lien direct vers Portail N° 1 et un second lien vers une fonction delay de 2 secondes dont la sortie est une fonction avec le code 

var msg1 = {};
msg1.payload = "52=OFF";
return msg1;

La sortie de cette fonction étant reliée à l'entrée de portail N° 1.

 

Cela répond-il à la question ? ou je n'ai vraiment rien compris...

 

Posté(e) (modifié)

 

r2.JPG.276f65dc13dbe90028b5f466431685fa.JPG

 

Fonction PORT3

var tmp = (flow.get("tmpVar")) + 1;
flow.set("tmpVar", tmp);

var p53 = {payload:msg.payload.value === 0 ? "52=OFF" : "52=ON"}

return [p52];

SWITCHE P2

r2.1.JPG.15307d9df81a6b23e37cca26e83f4fc7.JPG

 

et la dernier fonction qui envoie l'ordre ON ou OFF

 

if(flow.get("updatingNow1") === true) {
    flow.set("updatingNow1",false);
    return;
}
if(flow.get("updatingNow2") === true) {
    flow.set("updatingNow2",false);
    return;
}
msg.host = flow.get("host");
msg.community = flow.get("password");
msg.varbinds = [
    {
        "oid":   msg.payload.indexOf("53") != -1 ? "1.3.6.1.4.1.42505.9.2.2.3.0" : "1.3.6.1.4.1.42505.9.2.2.3.0",
        "type":  "Integer",
        "value": msg.payload.indexOf("ON") != -1 ? 1 : 0
    }
]

return msg;

 

pour le moment quand j'appuis sur le SWITCHE P3 (portail n°2) le relais passe ON et quand j'appuis de nouveau il  passe à OFF.  jusque la tout fonctionne nikel

 

mai le problème est que pour un portail il me faut une impulsion. Donc quand j'appuie sur le SWITCHE P2 il faut que le relais passe à ON et 2 seconde après repasse a OFF automatiquement 

 

 

 

 

 

 

 

Modifié par 971jmd
Posté(e)

J'avais compris que le sujet concerne le Portail N° 1...

Il me semble ne pas avoir été bien lu.

  • Dans la fonction Port 2, il y a un 
    return [p52];

or p52 n'y est pas défini. Donc j'ignore il y aura une erreur, par ailleurs je  suppose que syntaxiquement, dans les fonctions p2 à p5 (celles de gauche), il faudrait écrire :

var tmp = (flow.get("tmpVar")) + 1;
flow.set("tmpVar", tmp);

var msg1 = {};
msg1.payload = {payload:msg.payload.value === 0 ? "52=OFF" : "52=ON"}

return msg1;

Ci-après un script de test implémentant un timer de 2 secondes :

 

test.json

Posté(e)

su le principe c'est bon, mai je n'arrive pas a intégrée Lacommande

 

if(flow.get("updatingNow1") === true) {
    flow.set("updatingNow1",false);
    return;
}
if(flow.get("updatingNow2") === true) {
    flow.set("updatingNow2",false);
    return;
}
msg.host = flow.get("host");
msg.community = flow.get("password");
msg.varbinds = [
    {
        "oid":   msg.payload.indexOf("53") != -1 ? "1.3.6.1.4.1.42505.9.2.2.3.0" : "1.3.6.1.4.1.42505.9.2.2.3.0",
        "type":  "Integer",
        "value": msg.payload.indexOf("ON") != -1 ? 1 : 0
    }
]

return msg;

 

Posté(e) (modifié)

normalement la commande est :

SNMP

 

   "oid":   msg.payload.indexOf("53") != -1 ? "1.3.6.1.4.1.42505.9.2.2.3.0" : "1.3.6.1.4.1.42505.9.2.2.3.0",
        "type":  "Integer",
        "value": msg.payload.indexOf("ON") != -1 ? 1 : 0

je c'est que l'avant dernier chiffre représente le n° du relais  "1.3.6.1.4.1.42505.9.2.2.3.0" :   "1.3.6.1.4.1.42505.9.2.2.3.0"

 

 

Modifié par 971jmd
Posté(e)

Le test 

msg.payload.indexOf("53") != -1

est inutile, les valeurs retournées sont identiques.

Où est créé la variable msg.payload.indexOf ?

 

Posté(e)

Ce que je veux dire c'est que le code 

"oid":   "1.3.6.1.4.1.42505.9.2.2.3.0",

produira le même effet, les deux valeurs sont égales quelle que soit le résultat du test msg.payload.indexOf("53") != -1

 

Posté(e)

on

    {
        "oid":   msg.payload.indexOf("ON") != -1 ? "1.3.6.1.4.1.42505.9.2.2.3.0" : "1.3.6.1.4.1.42505.9.2.2.3.0",
      "type":  "Integer",
    "value": msg.payload.indexOf("ON") != -1 ? 1 : 0
 
        
        
    }

off

 

    {
        "oid":   msg.payload.indexOf("ON") != -1 ? "1.3.6.1.4.1.42505.9.2.2.3.0" : "1.3.6.1.4.1.42505.9.2.2.3.0",
      "type":  "Integer",
    "value": msg.payload.indexOf("OFF") != -1 ? 1 : 0
 
        
        
    }

 

Posté(e)

Cela devra revenir au même :

on

 

{
        "oid":   "1.3.6.1.4.1.42505.9.2.2.3.0",
      "type":  "Integer",
    "value": msg.payload.indexOf("ON") != -1 ? 1 : 0
 
        
        
    }

off

 

    {
        "oid":  "1.3.6.1.4.1.42505.9.2.2.3.0",
      "type":  "Integer",
    "value": msg.payload.indexOf("OFF") != -1 ? 1 : 0
 
        
        
    }

 

Mais où est donc créé la variable msg.payload.indexOf ?

 

 

Posté(e)

Je suppose que l'on devrait avoir le même résultat

on

 

{
    "oid":   "1.3.6.1.4.1.42505.9.2.2.3.0",
    "type":  "Integer",
    "value":  1
}

off

 

{
    "oid":  "1.3.6.1.4.1.42505.9.2.2.3.0",
    "type":  "Integer",
    "value": 0
 }

 


×
×
  • Créer...