Ouvrir volet moitier node red somfy RTS

Bonjour

Je dispose de volets somfy RTS J’ai fait un script avec Node Red pour ouvrir et fermer les volets automatiquement.
Maintenant j’aimerais que 2 volets s’ouvre a moitié.
Mais je ne sais pas ou mettre le Cover.Stop dans Node Red.

Autre question sur les volets si absents ouvrir volet étage c’est bon comme cela?

[
    {
        "id": "94625e9c25300474",
        "type": "tab",
        "label": "Volet ok",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "45323552d3f3c188",
        "type": "cronplus",
        "z": "94625e9c25300474",
        "name": "Ouverture RDC cuisine + bow window + sejour",
        "outputField": "payload",
        "timeZone": "",
        "persistDynamic": false,
        "commandResponseMsgOutput": "output1",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "cron",
                "expression": "0 0 7 * * MON-FRI *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            },
            {
                "name": "schedule2",
                "topic": "topic2",
                "payloadType": "default",
                "payload": "",
                "expressionType": "cron",
                "expression": "0 0 9 * * SAT-SUN *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            }
        ],
        "x": 300,
        "y": 340,
        "wires": [
            [
                "33e8f37e5ba07969"
            ]
        ]
    },
    {
        "id": "8665ab8a66a6475c",
        "type": "debug",
        "z": "94625e9c25300474",
        "name": "Ouvrir volet RDC",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 910,
        "y": 340,
        "wires": []
    },
    {
        "id": "33e8f37e5ba07969",
        "type": "api-call-service",
        "z": "94625e9c25300474",
        "name": "",
        "server": "b4a0da5d.eb0d98",
        "version": 5,
        "debugenabled": false,
        "domain": "cover",
        "service": "open_cover",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "cover.bowwindow_porte_sejour",
            "cover.fenetre_cuisine",
            "cover.porte_fenetre_cuisine"
        ],
        "data": "",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 630,
        "y": 340,
        "wires": [
            [
                "8665ab8a66a6475c"
            ]
        ]
    },
    {
        "id": "10dbca79ec5738c6",
        "type": "cronplus",
        "z": "94625e9c25300474",
        "name": "Fermeture RDC",
        "outputField": "payload",
        "timeZone": "",
        "persistDynamic": false,
        "commandResponseMsgOutput": "output1",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "solar",
                "expression": "0 0 7 * * MON-FRI *",
                "location": "47.579941667607216, 7.516464649107559",
                "offset": "30",
                "solarType": "selected",
                "solarEvents": "sunset"
            }
        ],
        "x": 340,
        "y": 440,
        "wires": [
            [
                "37c41cd6526b4dc5"
            ]
        ]
    },
    {
        "id": "37c41cd6526b4dc5",
        "type": "api-call-service",
        "z": "94625e9c25300474",
        "name": "",
        "server": "b4a0da5d.eb0d98",
        "version": 5,
        "debugenabled": false,
        "domain": "cover",
        "service": "close_cover",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "cover.rdc"
        ],
        "data": "",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 610,
        "y": 440,
        "wires": [
            [
                "294676724a383d3e"
            ]
        ]
    },
    {
        "id": "294676724a383d3e",
        "type": "debug",
        "z": "94625e9c25300474",
        "name": "Fermer volet RDC",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 910,
        "y": 440,
        "wires": []
    },
    {
        "id": "6e47633bfa523752",
        "type": "cronplus",
        "z": "94625e9c25300474",
        "name": "Fermeture Etage",
        "outputField": "payload",
        "timeZone": "",
        "persistDynamic": false,
        "commandResponseMsgOutput": "output1",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "solar",
                "expression": "0 0 7 * * MON-FRI *",
                "location": "47.579941667607216, 7.516464649107559",
                "offset": "15",
                "solarType": "selected",
                "solarEvents": "sunset"
            }
        ],
        "x": 330,
        "y": 540,
        "wires": [
            [
                "ac33bdfe940ddaf3"
            ]
        ]
    },
    {
        "id": "ac33bdfe940ddaf3",
        "type": "api-call-service",
        "z": "94625e9c25300474",
        "name": "",
        "server": "b4a0da5d.eb0d98",
        "version": 5,
        "debugenabled": false,
        "domain": "cover",
        "service": "close_cover",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "cover.etage"
        ],
        "data": "",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 590,
        "y": 540,
        "wires": [
            [
                "9be69282be4c1155"
            ]
        ]
    },
    {
        "id": "9be69282be4c1155",
        "type": "debug",
        "z": "94625e9c25300474",
        "name": "Fermer volet Etage",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 890,
        "y": 540,
        "wires": []
    },
    {
        "id": "4fc1954a9d375ca7",
        "type": "cronplus",
        "z": "94625e9c25300474",
        "name": "Ouvrir étage ",
        "outputField": "payload",
        "timeZone": "",
        "persistDynamic": false,
        "commandResponseMsgOutput": "output1",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "dates",
                "expression": "0 0 8 * * MON-FRI *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            }
        ],
        "x": 430,
        "y": 640,
        "wires": [
            [
                "14db2903db0aac1e"
            ]
        ]
    },
    {
        "id": "14db2903db0aac1e",
        "type": "api-call-service",
        "z": "94625e9c25300474",
        "name": "",
        "server": "b4a0da5d.eb0d98",
        "version": 5,
        "debugenabled": false,
        "domain": "cover",
        "service": "open_cover",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "cover.etage"
        ],
        "data": "",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 750,
        "y": 640,
        "wires": [
            [
                "304b8f6b58bdaa23"
            ]
        ]
    },
    {
        "id": "2f9c1c126b524f6d",
        "type": "cronplus",
        "z": "94625e9c25300474",
        "name": "Ouverture bandeau a moitier",
        "outputField": "payload",
        "timeZone": "",
        "persistDynamic": false,
        "commandResponseMsgOutput": "output1",
        "outputs": 1,
        "options": [
            {
                "name": "schedule1",
                "topic": "topic1",
                "payloadType": "default",
                "payload": "",
                "expressionType": "cron",
                "expression": "0 0 7 * * MON-FRI *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            },
            {
                "name": "schedule2",
                "topic": "topic2",
                "payloadType": "default",
                "payload": "",
                "expressionType": "cron",
                "expression": "0 0 9 * * SAT-SUN *",
                "location": "",
                "offset": "0",
                "solarType": "all",
                "solarEvents": "sunrise,sunset"
            }
        ],
        "x": 260,
        "y": 240,
        "wires": [
            [
                "f2b7660bf57691d3"
            ]
        ]
    },
    {
        "id": "f2b7660bf57691d3",
        "type": "api-call-service",
        "z": "94625e9c25300474",
        "name": "",
        "server": "b4a0da5d.eb0d98",
        "version": 5,
        "debugenabled": false,
        "domain": "cover",
        "service": "open_cover",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "cover.gerer_les_2_bandeau"
        ],
        "data": "",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 530,
        "y": 240,
        "wires": [
            [
                "8c28a70403c2c1f2"
            ]
        ]
    },
    {
        "id": "8c28a70403c2c1f2",
        "type": "debug",
        "z": "94625e9c25300474",
        "name": "Ouvrir volet RDC",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 990,
        "y": 240,
        "wires": []
    },
    {
        "id": "304b8f6b58bdaa23",
        "type": "debug",
        "z": "94625e9c25300474",
        "name": "Ouvrir volet Etage",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 990,
        "y": 640,
        "wires": []
    },
    {
        "id": "02afceeaf706f432",
        "type": "server-state-changed",
        "z": "94625e9c25300474",
        "name": "Si absent",
        "server": "b4a0da5d.eb0d98",
        "version": 4,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityidfilter": "group.personne",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "not_home",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "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": 100,
        "y": 640,
        "wires": [
            [
                "4fc1954a9d375ca7"
            ],
            []
        ]
    },
    {
        "id": "b4a0da5d.eb0d98",
        "type": "server",
        "name": "Home Assistant ok",
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "",
        "connectionDelay": false,
        "cacheJson": false,
        "heartbeat": false,
        "heartbeatInterval": "",
        "statusSeparator": "",
        "enableGlobalContextStore": false
    }
]

Je vous remercie pour votre aide

Quelque chose comme ça, non ?

Pas d’aide pour la partie Node-red car je ne suis pas pratiquant…

Mais une question: comment veux tu réaliser la 1/2 ouverture?

En somfy RTS, selon les volets, tu peux mémoriser une position grace à un appui long sur la touche « my/stop ». Ensuite, si le volet n’est pas en train de bouger, un appui sur « my/stop » permet d’aller à cette position.

Si tes volets sont capables, tu peux ainsi atteindre cette 1/2 ouverture directement avec cette fonction. Il suffit donc d’envoyer la commande « stop » et le volet ira à la position mémorisée s’il n’était pas en mouvement (sinon il s’arrête).

Sinon il faut savoir dans quel état est ton volet (ouvert ou fermé), lancer la commande opposée (fermer ou ouvrir) attendre un temps égal à la moitié du trajet et lancer la commande stop. La même chose que proposé par @FillR2 éventuellement doublée pour couvrir le cas de 1/2 ouverture et de 1/2 fermeture suivant l’état initial.

Merci pour votre aide oui justement je cherchais a mettre un délais mais je ne savais pas comment le mettre je vais tester le temps qu’il faut pour ouvrir a moiter.

Sinon il faut savoir dans quel état est ton volet (ouvert ou fermé), lancer la commande opposée (fermer ou ouvrir) attendre un temps égal à la moitié du trajet et lancer la commande stop. La même chose que proposé par @FillR2 éventuellement doublée pour couvrir le cas de 1/2 ouverture et de 1/2 fermeture suivant l’état initial.

BBE que veut tu dire par doublée?
en gros je dois d’abord récupérer l’état de mon volet et après soit l’ouvrir ou le fermer de moitié?

Oui.
Sinon, si tu ne fais qu’ouvrir, tu as un cas qui ne marchera pas si le volet est ouvert au départ…
Tu peux aussi t’en sortir avec deux automatisations: 1/2 ouverture et 1/2 fermeture que tu appelles distinctement en testant ailleurs l’état initial du volet (ça peut être plus malin pour une commande vocale par exemple: « ouvre à moitié » ou « ferme à moitié » car toi tu vois l’état initial…).

Comme tu es sur du RTS, donc a priori sans retour d’état, tu n’est en plus jamais sur à 100% de ta position. (Par exemple au démarrage, ou si quelqu’un manipule le volet directement avec la commande d’origine).
Si c’est pour une automatisation où tu veux être 100% sur, tu peux aussi faire une manip compliquée mais qui marche à chaque fois:

  • commander l’ouverture
  • attendre le temps de l’ouverture complète
  • commander la fermeture
  • attendre la moitié du temps de fermeture
  • commander l’arrêt

Ca va marcher dans tous les cas, mais ça va prendre plus longtemps pour arriver à l’état final recherché et manipuler ton volet 2Xplus s’il était fermé au départ (s’il était ouvert tu perds le temps d’attente de l’ouverture).

C’est pour ça que chez moi, pour réaliser la 1/2 ouverture ou fermeture, je me contente d’envoyer la commande « my/stop » et les volets, quel que soit leur état, partent vers cette unique position mémorisée (1/2 ouverture pour les volets, 100% fermé et lames ouvertes pour les brise soleils orientables).

Hello.
Il y a tout à fait moyen de gérer les somfy rts en pourcentage. Il y a plusieurs sujets à ce propos mais l’idée c’est de passer par l’intégration

A partir de là en ayant défini les valeurs de temps de montée et de descente(et en désactivant la position my !) , ça fonctionne simplement en indiquant la position souhaitée. 30% permet de calculer le temps de mouvement…

J’ai nodered au quotidien mais c’est infiniment plus simple comme ça.
Il y a aussi un node spécialisé qui fait la même chose mais avec cette dernière méthode, pas simple d’avoir la position dans ha…

Très intéressant !

Je découvre et je vais regarder…

Car il y a un point qui reste toujours délicat à gérer en Somfy RTS c’est la prise en compte des appui télécommandes « normaux ».

J’ai un bubendorf avec un micromodule MOES sur la commande filaire, et là j’ai la prise en compte des appuis manuels dans la position.

Sur le Somfy RTS, dès qu’on agit sur la télécommande, on peut piéger le système. Du coup j’ai « respecté » la philo en ne faisant que de l’émission de commande (monter, descendre, my/stop) mais mon retour d’état est « très perfectible » pour ne pas dire mieux: HA affiche la position « finale » de la dernière commande envoyée, dès la commande. Donc dès que je fait « fermer » sous HA, le volet devient « fermé », même si je l’arrete avant fermeture totale. Idem pour l’ouverture… En particulier, je ne sais pas remonter ma position intermédiaire sur les somfy avec ma manière de faire, ils restent sur l’état précédent.

Par contre si quelqu’un a remonté le volet avec la télécommande, même si HA ne sait pas que le volet est ouvert et qu’il le croit fermé, lorsque je presse sur le bouton ‹ fermer ›, le volet se ferme (même s’il est déjà dans l’état fermé sur HA).

Comment cela est il pris en compte dans l’intégration cover-time-based?

Les actions manuelles restent toujours un problème.
Après ça se resynchronise plus ou moins le soir ou le matin quand il y ouverture/fermeture automatique.

Tant qu’il n’y a pas de blocage pour fermer un volet déjà fermé, et inversement, c’est bon…

Typiquement mon module MOES grise la commande fermer quand le volet est fermé (respectivement ouvrir volet ouvert) donc ce serait problématique…

Et désolé @steevy pour la pollution de ta question de départ…

Pas de soucis ça m’intéresse aussi je suis entrain de tester

Mais je n’arrive pas a copier le dossier dans « custom_components »? je n’arrive pas me connecter avec Putty.
Dans Home assistant j’ai installé Terminal & SSH je dois passer par ces lignes de commandes?

Je vous remercie

J’ai l’impression qu’il y a plusieurs « custom component » qui font la même chose, certains plus ou moins bien maintenus, et certains qui sont déjà intégrés dans HACS.

Il faudrait voir lesquels sont les plus employés ou les mieux adaptés au Somfy RTS (celle d’au dessus n’a pas été updaté depuis 3 ans…), mais il y a une version « rf » qui s’installe via HACS:

J’ai aussi trouvé celle ci, qui s’installe avec HACS, et updaté il y a 5mois qui supporte le réglage my/stop:

Je sens que je vais moi aussi devoir tout retester et re-integrer mes volets pour avoir quelque chose de propre cet été…

Il s’agit d’un simple fork


Pas d’intérêt donc de conserver la copie (pas à jour)
donc la différence entre mon premier lien est celui-ci est que le second permet de faire des scripts.
Je l’utilise pour un cas bien particulier de volets qui nécessitent de doubler la commande en remplacement de la commande stop qui n’existe pas de base

Je suis tombé sur ce post :

Sur le forum anglophone.

A priori il a construit une interface a base d’ESP32 et de radio CC1101 qui permet aussi d’écouter les ordres des télécommandes somfy « classiques » pour les prendre en compte dans HA !

Quelqu’un a testé?

Salut
Ecouter en théorie… mais dans les faits c’est pas en place

qui indique depuis 2021 :

Remaining issues

Real state is unknown

As noted above, the ESP does not know the real state of the shutters: a command could have been lost in transmission (the Somfy protocol is send-only, there is no feedback) or the shutters might have been controlled by another remote. At least the second part could be solved by listening all the time and trying to decode commands heard over the air, but I don’t think this is worth the time – worst that can happen is that a closed (opened) shutter receives another close (open) command and that is harmless as they have integrated endstops and know that they should not move further.

Si si.

Tu peux « associer » jusqu’à 5 télécommandes (ou channels pour les tellis4) à chaque volet.

Il s’agit donc d’écouter en permanence et de mettre à jour l’état logique du volet en fonction des ordres « réels ».

L’intérêt réel est toujours discutable… mais la fonctionnalité est là.

1 « J'aime »

Bien vu. ça ressemble à une bonne alternative au rfxcom