Incrémenter ou decrementer la valeur d'un appareil

Hello !

Je me suis demandé récemment en installant un bouton (IKEA E2001/E2002 control via MQTT | Zigbee2MQTT),
Comment était il possible d’incrementer une value tel que la luminosité dans mons cas.

En effet mon bouton me permet de faire plusieurs actions dont 4 qui m’intéresses :

  • arrow_left_hold,
  • arrow_right_hold,
  • arrow_left_release,
  • arrow_right_release

Sauf que côté gladys je ne peut pas faire de “tant que”

Du coup je souhaiterais pouvoir incrementer ou decrementer la luminosité tant que jappuis sur un bouton et lorsque je le relâche on stop l’action.

Peut être que tu peux faire ça depuis une scène en utilisant les pauses.

Le déclencheur sera ton clic.
Tu fais une pause de 1sec.
Tu récupères l’état du bouton
Continuer si et seulement si le bouton est toujours sur hold
Augmenter la luminosité
Refaire une pause de 1 sec
Etc…

Effectivement c’est une solution mais contraignante :smiley:
La value de la luminosité sur certaine lampe est de 255 je me vois mal recrée 255 bloc pour dire luminosité++ :grinning:

Après on peut peut être avoir un bloc répète les action x et y tant que le capteur est pas dans un certain état :slight_smile:

Salut @spenceur !
N’est il pas possible de configurer ton périphérique de telle manière qu il envoi 1 toutes les 500ms (voir - toutes les 50ms). Car dans ce cas il suffit de configurer la scène 1 fois sans cocher la case “Exécuter seulement […]”. Il répétera la scène “+1” tant que tu reste appuyer. Si c est 500ms tu devra rester appuyer 127s pour franchir toute la plage.
Les périphériques d’ambiance sont généralement configuré le pas ou la frequence toutes les x secondes pour eviter de rester appuyer aussi longtemps. Avec un périphérique fictif tu pourrais même le faire toi même.

Ah mais effectivement je n’y ai pas pensé mais ça doit fonctionner ça normalement :thinking:
Je vais tester asap !

1 « J'aime »

@Terdious @pierre-gilles , une idée pour récupérer la last value et faire +1 dessus ?

Ce n’est pas possible en l’état, on a pas de fonction mathématiques dans les scènes :slight_smile:

C’est possible en passant par Node-RED en revanche

Ouai c’est ce que je use actuellement je me demande si ça ne devrais pas faire partie du core

Clairement :slight_smile: Il y a une demande de fonctionnalité qui s’en approche : Somme, moyenne, calculs dans les scènes

Après cette demande part un peu dans tous les sens, c’est pas très concret, donc je créerait bien des demandes de fonctionnalités concrètes.

Là en gros concrètement pour ta demande il manque 2 trucs :

  • Etre capable de faire une opération mathématique sur une “variable de scène”: addition, soustraction, multiplication, division
  • Etre capable d’injecter une variable dans une action “contrôler un appareil”.
3 « J'aime »

Je vais essayer ça de mon côté pour voir ce que j’arrive (ou pas) à faire !

Pardon je n’ai peut-être pas été clair par contre, je ne créerais pas les demandes de fonctionnalités moi même, c’est à vous de les créer si jamais vous voulez les voir dans Gladys :slight_smile:

Perso je passait par node red mais le bouton ne passe par par gladys ( je passerais mon flow).

@pierre-gilles si si j’avais bien capté mais je suis au taff donc je n’ai pas encore pris le temps de le faire

2 « J'aime »

voici ce que j’ai fait en attendant :

En gros via un noeud Z2M je récupère l’action du click puis via un gros switch je renvoie l’info a la lampe souhaité encore via d’autre noeud Z2M

[
    {
        "id": "04fe395c3e704b2a",
        "type": "switch",
        "z": "7ae9230582bf5831",
        "name": "",
        "property": "payload.action",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "on",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "off",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "brightness_move_up",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "brightness_move_down",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "brightness_stop",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_left_click",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_right_click",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_left_hold",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_right_hold",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_left_release",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "arrow_right_release",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 11,
        "x": 330,
        "y": 220,
        "wires": [
            [
                "2df8d7b2f5291fb7"
            ],
            [
                "1c3acbbddd183827"
            ],
            [],
            [],
            [],
            [
                "93fd7fdfe19f9209"
            ],
            [
                "a5f5aad809a82a17"
            ],
            [
                "e666d44b7b131d3e"
            ],
            [
                "43d6067a8e026fec"
            ],
            [
                "69f3c1ddc48ca93c"
            ],
            [
                "69f3c1ddc48ca93c"
            ]
        ]
    },
    {
        "id": "072c37a2c2c16bd9",
        "type": "debug",
        "z": "7ae9230582bf5831",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 340,
        "y": 80,
        "wires": []
    },
    {
        "id": "b2b7835c2619dfff",
        "type": "zigbee2mqtt-in",
        "z": "7ae9230582bf5831",
        "name": "Styrbar",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x842e14fffe462c2a",
        "device_id": "0x842e14fffe462c2a",
        "state": "0",
        "outputAtStartup": true,
        "x": 50,
        "y": 120,
        "wires": [
            [
                "072c37a2c2c16bd9",
                "04fe395c3e704b2a"
            ]
        ]
    },
    {
        "id": "28ff1c7daf962686",
        "type": "zigbee2mqtt-out",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "command": "state",
        "commandType": "z2m_cmd",
        "payload": "payload",
        "payloadType": "msg",
        "transition": 0,
        "x": 700,
        "y": 120,
        "wires": []
    },
    {
        "id": "2df8d7b2f5291fb7",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = \"on\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 520,
        "y": 100,
        "wires": [
            [
                "28ff1c7daf962686"
            ]
        ]
    },
    {
        "id": "1c3acbbddd183827",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = \"off\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 520,
        "y": 140,
        "wires": [
            [
                "28ff1c7daf962686"
            ]
        ]
    },
    {
        "id": "7f4dd9cc9aed52fb",
        "type": "zigbee2mqtt-out",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "command": "brightness",
        "commandType": "z2m_cmd",
        "payload": "payload",
        "payloadType": "msg",
        "transition": 0,
        "x": 920,
        "y": 240,
        "wires": []
    },
    {
        "id": "a5f5aad809a82a17",
        "type": "zigbee2mqtt-get",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "state": "0",
        "x": 560,
        "y": 240,
        "wires": [
            [
                "bc87b3c6c082b665"
            ]
        ]
    },
    {
        "id": "bc87b3c6c082b665",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = msg.payload.brightness+50;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 240,
        "wires": [
            [
                "7f4dd9cc9aed52fb"
            ]
        ]
    },
    {
        "id": "dfc4380a19b4d4cc",
        "type": "zigbee2mqtt-out",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "command": "brightness",
        "commandType": "z2m_cmd",
        "payload": "payload",
        "payloadType": "msg",
        "transition": 0,
        "x": 920,
        "y": 200,
        "wires": []
    },
    {
        "id": "93fd7fdfe19f9209",
        "type": "zigbee2mqtt-get",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "state": "0",
        "x": 560,
        "y": 200,
        "wires": [
            [
                "077a9abae383f024"
            ]
        ]
    },
    {
        "id": "077a9abae383f024",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = msg.payload.brightness-50;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 200,
        "wires": [
            [
                "dfc4380a19b4d4cc"
            ]
        ]
    },
    {
        "id": "43d6067a8e026fec",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = \"+50\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 320,
        "wires": [
            [
                "fba10e4b7c87bb54"
            ]
        ]
    },
    {
        "id": "e666d44b7b131d3e",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = \"-50\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 280,
        "wires": [
            [
                "fba10e4b7c87bb54"
            ]
        ]
    },
    {
        "id": "fba10e4b7c87bb54",
        "type": "zigbee2mqtt-out",
        "z": "7ae9230582bf5831",
        "name": "",
        "server": "d51526c1d3f21365",
        "friendly_name": "0x000b57fffe4960e8",
        "device_id": "0x000b57fffe4960e8",
        "command": "brightness_move",
        "commandType": "z2m_cmd",
        "payload": "payload",
        "payloadType": "msg",
        "transition": 0,
        "x": 820,
        "y": 340,
        "wires": []
    },
    {
        "id": "69f3c1ddc48ca93c",
        "type": "function",
        "z": "7ae9230582bf5831",
        "name": "",
        "func": "msg.payload = \"stop\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 360,
        "wires": [
            [
                "fba10e4b7c87bb54"
            ]
        ]
    },
    {
        "id": "d51526c1d3f21365",
        "type": "zigbee2mqtt-server",
        "name": "",
        "host": "192.168.1.59",
        "mqtt_port": "1884",
        "mqtt_username": "z2m",
        "mqtt_password": "BdoseXmoNi5OpOJsYEdY",
        "tls": "",
        "usetls": false,
        "base_topic": "zigbee2mqtt"
    }
]
1 « J'aime »

done

je me suis pas trop pris la tête je t’avoue :slight_smile:

2 « J'aime »

Merci @spenceur ! Laissons le vote faire maintenant :slight_smile: