Node red shake état lampe

Bonjour

je débute avec node red et je n arrive apps a récupéré l état de ma lampe qui envoie suivant le shake du cube un ordre pour éteindre si elle est allume ou allumer à 50 pour cent si elle est éteinte

j 'ai essaye pas mal de solution mais rien n y fait

je vous partage un noeud de test pour voir si quelqu’un peut m aider car j arrive pas lire l information boolean true et du coup elle passe a else meme quand la condition est vrai

la j ai meme converti la valeur boolean en Boolean au cas ou mais bon ca fonctionne pas come prévu

[
    {
        "id": "ac5591b57aa5148f",
        "type": "tab",
        "label": "Flux 3",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "6fcf6f83cde9ede6",
        "type": "inject",
        "z": "ac5591b57aa5148f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 110,
        "y": 100,
        "wires": [
            [
                "9fce76b4cb83a8da"
            ]
        ]
    },
    {
        "id": "fe4ea9f093eebdb3",
        "type": "inject",
        "z": "ac5591b57aa5148f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "false",
        "payloadType": "bool",
        "x": 110,
        "y": 140,
        "wires": [
            [
                "9fce76b4cb83a8da"
            ]
        ]
    },
    {
        "id": "9fce76b4cb83a8da",
        "type": "change",
        "z": "ac5591b57aa5148f",
        "name": "Stocke l'état actuel de l'applique",
        "rules": [
            {
                "t": "set",
                "p": "valeur",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 460,
        "y": 160,
        "wires": [
            [
                "f90be00c7d429640",
                "be7771660a191771"
            ]
        ]
    },
    {
        "id": "724e0dee0cb7f793",
        "type": "inject",
        "z": "ac5591b57aa5148f",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "shake",
        "payloadType": "str",
        "x": 270,
        "y": 400,
        "wires": [
            [
                "be7771660a191771"
            ]
        ]
    },
    {
        "id": "be7771660a191771",
        "type": "function",
        "z": "ac5591b57aa5148f",
        "name": "Allume/Eteint Applique",
        "func": "if (msg.shake = 'shake') {\n        // Convertir msg.valeur en un booléen\n       var val1 = Boolean(msg.valeur);\n        \n        if (val1 === true) {\n                msg.payload = 0;\n        } else {\n                msg.payload = 50;\n        }\n        return msg;\n}\n\nreturn null; // Ignore le message si la condition n'est pas satisfaite (pas de \"shake\")\n",
        "outputs": 1,
        "timeout": "0",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 620,
        "y": 240,
        "wires": [
            [
                "c2dd1a0f9266fb2b"
            ]
        ]
    },
    {
        "id": "f90be00c7d429640",
        "type": "debug",
        "z": "ac5591b57aa5148f",
        "name": "debug 31",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 800,
        "y": 20,
        "wires": []
    },
    {
        "id": "c2dd1a0f9266fb2b",
        "type": "debug",
        "z": "ac5591b57aa5148f",
        "name": "Debug sortie fonction",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 800,
        "y": 340,
        "wires": []
    }
]

merci si quelqu’un a une idée car la je sèche

Salut…

J’ai regardé le flow et j’ai pas vraiement compris ce que tu veux faire. Et relisant la description non plus.
C’est le cube qui bouge et ça change la lampe ?
Quel est l’intérêt de savoir l’état de la lampe ?

Ecris les différents cas (en détail) que tu imagines pour que l’on puisse regarder

1 « J'aime »

A l’ action du shake avec le cube je veux que la lampe s’éteigne si elle est allumé et s’allume si elle est éteinte mais mon périphérique envoie une variable booléenne true or false et il faut que le code ne s’exécute que quand le shake est actif pas en permanence donc j ai mis un if avec action shake et un autre if avec condition true lampe s éteint ou false l lampe s allume grace au check de la lampe ,pas facile a expliquer dis moi si c’est pas assez clair …

Tu as déjà plus simple :
Il est existe l’action toggle pour les lampes… ça inverse l’état donc…pas forcement besoin de savoir comment elle est…
Donc en gros :
Shake => toggle
ça doit tenir en 2 nodes

[{"id":"cc4793796968c247","type":"server-state-changed","z":"ac5591b57aa5148f","name":"","server":"94a12356.a4a14","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"switch.relais_4","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":210,"y":260,"wires":[["b3f6f9819bce8ce4"]]},{"id":"b3f6f9819bce8ce4","type":"api-call-service","z":"ac5591b57aa5148f","name":"","server":"94a12356.a4a14","version":5,"debugenabled":false,"domain":"light","service":"toggle","areaId":[],"deviceId":[],"entityId":["light.plafonnier_salon"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":260,"wires":[[]]},{"id":"94a12356.a4a14","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open|1","connectionDelay":true,"cacheJson":true,"heartbeat":true,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

merci mais j utilise pas HA pour cette lampe elle est en zwave sur une vera et c’est une dimmer c’est pour cela que je met 50 en envoie pour le on
j’ utilise le noeud mios in pour l état true ou false et le mios out pour le target 0 ou 50 mais cela doit pouvoir se faire

j y étais presque arrivé mais l’état du mios in et du mios out se « court-circuite » du coup j 'ai mis le shake avant et la ca ne fonctionne plus mais j 'ai tellement teste que je sais plus trop ce qui va pas

en regardant le problème c’est que le shake n’envoie que ca valeur si avec le shake j’envoie le msg.valeur en true ou en false cela fonctionne faut que j’arrive à faire en sorte que les 2 valeurs s envoie en meme temps dans la fonction je vais regarder

Donc j’ai corrigé la catégorie du sujet, parce c’est uniquement en lien avec NodeRed mais c’est pas un tuto
Je ne sais pas t’aider beaucoup plus mais :

  • il faut que réussisse à trouver le moyen de lire l’état de ton cube (là dans tes exemples tu utilises un node d’injection ça ne marche qu’à la main)
  • pareil il faut aussi que tu trouve un node qui envoie les infos vers vera (ou en zwave). Dans ton exemple ça ne fait que de l’affichage en debug

oui ca je sais j ai juste envoye le code avec des noeud d 'injection pour tester mais après je sais comment faire pour le reste je coince juste avec les 2 informations qui doivent se réunir et arriver en meme temps (msg.shake) et (msg.valeur) mais je devrais y arriver je pense à force lol merci de ton aide en tous cas et encore désolé pour le post pas au bon endroit

Pourquoi en même temps ?
De mon point de vue

  • node 1 = tu récupéres le mouvement du cube (dans msg.shake), ça lance le node 2
  • node 2 = tu récupéres l’état de ta lampe (dans msg.valeur), ça lance le node 3
  • node 3 = node switch avec 2 sorties sur le test de msg.valeur qui lance 4a ou 4b
[{"id":"49c50349d3dd6be4","type":"switch","z":"5db898f0.0aad08","name":"","property":"valeur","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1140,"y":600,"wires":[[],[]]}]
  • node 4a = éteindre
  • node 4b = allumer le lampe

j’ai essaye avec cela mais ca fonctionne pas je reregarderais demain la j’arrête lol merci

Bonjour,

Si c’est un Cube Aqara, n’est-il pas plus simple de passer par un blueprint?

Par exemple ZHA - Aqara Magic Cube (69 actions) - Blueprints Exchange - Home Assistant Community (home-assistant.io)

Cordialement,

Abel

Bonjour, je ne veux pas passer par Home Assistant (HA),

je souhaite refaire tous mes scénarios Jeedom, Vera, Home Assistant, IPX ou autres dans Node-RED.

Le cube d’action ne pose aucun souci dans Node-RED, c’est juste la récupération du statut de la Vera pour allumer ou éteindre en fonction de l’état actuel.

Actuellement, j’envoie le statut de la Vera en MQTT et j’essaie de travailler avec MQTT dans la fonction pour récupérer l’état actuel et envoyer la bonne valeur dès qu’un shake arrive du cube.

Pour l’instant, j’utilise deux actions, une pour allumer avec le flip 180 et une pour éteindre avec le shake. Cependant, pour des raisons d’ergonomie, j’aimerais utiliser le shake à la fois pour allumer et éteindre. Donc, je dois récupérer le statut de la lampe en MQTT, et c’est là que je bloque un peu.

c’est pas un besoin primordial mais ca m’entraine aussi avec le code node red masi là j ai besoin d 'aide lol

C’est bon, j’ai trouvé avec 3 fonctions lol, mais ça fonctionne. Là, j’ai fait la même chose avec une ampoule Hue pour un mouvement « flip 180 ». Il n’y a rien à faire, à part mettre un « toggle » dans le JSON de l’action. Donc, c’est vraiment la récupération de l’information de la Vera en direct ou via MQTT qui me posait problème.

Si cela intéresse quelqu’un, je fournirai ma solution, même si elle n’est pas optimisée, elle est quand même efficace lol.