NodeRed pour lire un fichier local de blagues et l'envoyer à rhasspy

Hello
J’utilise HAOS en mode local déconnecté du web mais j’aimerais pouvoir utiliser une possiblité de « Raconte moi une blague » et l’envoyer vers rhasspy
Les blagues sont stockées dans un fichier local en json sur mon raspberry

ce que j’ai déjà fait :

j'ai créé le fichier json
{
    "error": false,
    "amount": 10,
    "jokes": [
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Comment reconnaître un ministre qui ment?",
            "delivery": "Ses lèvres bougent",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 237,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Pourquoi est-ce que les anges sont sourds?",
            "delivery": "Parce que Jésus-Christ.",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 203,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Que disait Eve pour faire avancer le bâteau?",
            "delivery": "Ramadan",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 315,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Tu sais ce que c'est un suppositoire?",
            "delivery": "C'est une invention qui restera dans les annales.",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 319,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Quand 2 poissons s'énervent..",
            "delivery": "Est-ce qu'on peut dire que le thon monte?",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 298,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Pourquoi les bots ne parlent pas avec les humains?",
            "delivery": "Par peur de leur ressembler.",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 272,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Qu'est-ce qu'un cadeau qui s'en va?",
            "delivery": "Une surprise party.",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 153,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Que font 2 brosses à dents le 14 Juillet?",
            "delivery": "Un feu dentifrice!",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 262,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Chéri, je me sens grosse et laide... S'il te plait, fais-moi un compliment...",
            "delivery": "Tu as une bonne vue!",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 248,
            "lang": "fr"
        },
        {
            "category": "Misc",
            "type": "twopart",
            "setup": "Pourquoi il n'y a pas de ballon à question pour un champion?",
            "delivery": "Parce que Julien Lepers",
            "flags": {
                "nsfw": false,
                "religious": false,
                "political": false,
                "racist": false,
                "sexist": false,
                "explicit": false
            },
            "safe": true,
            "id": 15,
            "lang": "fr"
        }
    ]
}

Je réussis à le lire : es blagues sont sur 2 lignes (question =setup & réponse =delivery)

NodeRed noeuds
[
    {
        "id": "15c33a53cd75773b",
        "type": "file in",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "filename": "/config/Jokes/blagues.json",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "utf8",
        "allProps": false,
        "x": 320,
        "y": 640,
        "wires": [
            [
                "5cc6e99793bc4d7d"
            ]
        ]
    },
    {
        "id": "d39b1e46968ef8db",
        "type": "debug",
        "z": "20d5c36c60b1a5e6",
        "name": "DEbug content Json file",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1150,
        "y": 620,
        "wires": []
    },
    {
        "id": "81890602d5baede6",
        "type": "inject",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 80,
        "y": 600,
        "wires": [
            [
                "15c33a53cd75773b"
            ]
        ]
    },
    {
        "id": "5cc6e99793bc4d7d",
        "type": "json",
        "z": "20d5c36c60b1a5e6",
        "name": "Json String to Json Objet",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 610,
        "y": 640,
        "wires": [
            [
                "d39b1e46968ef8db",
                "5d3a22fa8158d720"
            ]
        ]
    },
    {
        "id": "5d3a22fa8158d720",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJoke",
        "func": "\nvar tts = payload.jokes[0].setup\n\nmsg.payload= tts\nreturn msg;",
        "outputs": 1,
        "noerr": 1,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 780,
        "y": 740,
        "wires": [
            [
                "35606b2bf84f5634"
            ]
        ]
    },
    {
        "id": "35606b2bf84f5634",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "credentials": {
            "user": "",
            "password": ""
        },
        "x": 1030,
        "y": 740,
        "wires": [
            []
        ]
    }
]

Monprobleme :
Pour le moment, je n’arrive pas à récupérer ces questions

La 2ème étape sera de piocher au hasard dans cette liste :slight_smile:

Si vous savez comment me faire avancer, je serais très heureux !
merci bcp

Fab

Salut,

Dans ton GetJoke, il n’aime visiblement pas la variable que tu lis.
Je ne crois pas que tu puisse utilise « payload » directement. Ce serait pas plutôt « msg.payload » ?

Sinon :
Je ne ferais pas de fonction à ta place, mais un switch c’est suffisant.
Je n’utiliserais pas non plus msg.paylaod pour passer la phrase, mais une nouvelle variable genre « msg.joke_setup » et du coup une 2eme « msg.joke_delivery ».

Hello

Merci @AlexHass !

Alors effectivement, ça marche bien avec le msg.payload

du coup le résultat est ps très joli en tts car il n’y a pas de pause et il y a une lecture du « ? »

Je vais essayer avec ta proposition de switch mais je vois pas ce que tu testes avec switch ?
C’est pour gérer le random ?

Alors voici là où en j’en suis:

voici les nœuds NodeRed

Résumé
[
    {
        "id": "15c33a53cd75773b",
        "type": "file in",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "filename": "/config/Jokes/blagues.json",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "utf8",
        "allProps": false,
        "x": 400,
        "y": 600,
        "wires": [
            [
                "5cc6e99793bc4d7d"
            ]
        ]
    },
    {
        "id": "81890602d5baede6",
        "type": "inject",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 160,
        "y": 600,
        "wires": [
            [
                "15c33a53cd75773b"
            ]
        ]
    },
    {
        "id": "5cc6e99793bc4d7d",
        "type": "json",
        "z": "20d5c36c60b1a5e6",
        "name": "Json String to Json Objet",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 690,
        "y": 600,
        "wires": [
            [
                "18888040a580fb7d"
            ]
        ]
    },
    {
        "id": "5d3a22fa8158d720",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeQuestion",
        "func": "var randomJoke = msg.random\nvar tts1 = msg.payload.jokes[msg.random].setup\nvar tts = tts1\nmsg.payload= tts\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1010,
        "y": 700,
        "wires": [
            [
                "35606b2bf84f5634"
            ]
        ]
    },
    {
        "id": "35606b2bf84f5634",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1230,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "18888040a580fb7d",
        "type": "random",
        "z": "20d5c36c60b1a5e6",
        "name": "Random",
        "low": 1,
        "high": "09",
        "inte": "true",
        "property": "random",
        "x": 620,
        "y": 700,
        "wires": [
            [
                "5d3a22fa8158d720",
                "86638e9d35563164"
            ]
        ]
    },
    {
        "id": "e9a030d9901b8801",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeAnswer",
        "func": "var randomJoke = msg.random\nvar tts2 = msg.payload.jokes[msg.random].delivery\nvar tts = tts2\nmsg.payload= tts\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 780,
        "wires": [
            [
                "e71ba3d0583bac94"
            ]
        ]
    },
    {
        "id": "e71ba3d0583bac94",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1230,
        "y": 780,
        "wires": [
            []
        ]
    },
    {
        "id": "86638e9d35563164",
        "type": "delay",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "pauseType": "delay",
        "timeout": "4",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 840,
        "y": 780,
        "wires": [
            [
                "e9a030d9901b8801"
            ]
        ]
    }
]

cela fonctionne bien !

Prochaine étape : passer ces éléments dans Lovelace : voir s’afficher la question puis la réponse.

Je ne sais pas comment faire mais on va tester :slight_smile:

Dsl je me suis trompé :slight_smile:
Je voualais parler du node Change pas Switch

Ca permet de faire exactement ce que tu fais dans ta fonction mais sans code :slight_smile:
Exemple:

Ah ok :wink:

Pas de souci, je vais tester ce node

Et pour afficher la question et la réponse dans lovelace , tu as une idée de comment faire ?
par où débuter ?

merci encore

Je ferais un ou deux entités input_text (à créer dans Parametres>Appareils&Services>Entrées)
Et ensuite depuis NodeRed appeler le service input_text.set_value.
Et sur le dashboard ajouter une carte qui affiche l’entité.

1 « J'aime »

Super, merci je vais tester cela !

Hello @AlexHass
J’ai essayé de récupérer ces données mais je n’y arrive pas

Voici la config Node red

ConfigNodeRed
[
    {
        "id": "15c33a53cd75773b",
        "type": "file in",
        "z": "20d5c36c60b1a5e6",
        "name": "Reading Json file",
        "filename": "/config/Jokes/blagues.json",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "utf8",
        "allProps": false,
        "x": 370,
        "y": 600,
        "wires": [
            [
                "5cc6e99793bc4d7d"
            ]
        ]
    },
    {
        "id": "81890602d5baede6",
        "type": "inject",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 160,
        "y": 600,
        "wires": [
            [
                "15c33a53cd75773b"
            ]
        ]
    },
    {
        "id": "5cc6e99793bc4d7d",
        "type": "json",
        "z": "20d5c36c60b1a5e6",
        "name": "JsonObject",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 570,
        "y": 600,
        "wires": [
            [
                "18888040a580fb7d"
            ]
        ]
    },
    {
        "id": "5d3a22fa8158d720",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeQuestion",
        "func": "var randomJoke = msg.random\nvar tts1 = msg.payload.jokes[msg.random].setup\nmsg.payload= tts1\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1010,
        "y": 700,
        "wires": [
            [
                "35606b2bf84f5634",
                "4bfe6febad65465e"
            ]
        ]
    },
    {
        "id": "35606b2bf84f5634",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "credentials": {},
        "x": 1250,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "18888040a580fb7d",
        "type": "random",
        "z": "20d5c36c60b1a5e6",
        "name": "Random",
        "low": 1,
        "high": "29",
        "inte": "true",
        "property": "random",
        "x": 660,
        "y": 700,
        "wires": [
            [
                "86638e9d35563164",
                "5d3a22fa8158d720"
            ]
        ]
    },
    {
        "id": "e9a030d9901b8801",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeAnswer",
        "func": "var randomJoke = msg.random\nvar tts2 = msg.payload.jokes[msg.random].delivery\nmsg.payload= tts2\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 780,
        "wires": [
            [
                "e71ba3d0583bac94"
            ]
        ]
    },
    {
        "id": "e71ba3d0583bac94",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1230,
        "y": 780,
        "wires": [
            []
        ]
    },
    {
        "id": "86638e9d35563164",
        "type": "delay",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "pauseType": "delay",
        "timeout": "4",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 840,
        "y": 780,
        "wires": [
            [
                "e9a030d9901b8801"
            ]
        ]
    },
    {
        "id": "3a1ef6e1987de676",
        "type": "change",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload.jokes[msg.random].setup",
                "pt": "msg",
                "to": "tts1",
                "tot": "env"
            },
            {
                "t": "set",
                "p": "payload.jokes[msg.random].delivery",
                "pt": "msg",
                "to": "tts2",
                "tot": "env"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 960,
        "y": 580,
        "wires": [
            []
        ]
    },
    {
        "id": "4bfe6febad65465e",
        "type": "ui_text_input",
        "z": "20d5c36c60b1a5e6",
        "name": "blague_question",
        "label": "blague_question",
        "tooltip": "",
        "group": "df327a1b25c6341e",
        "order": 0,
        "width": 0,
        "height": 0,
        "passthru": true,
        "mode": "text",
        "delay": 300,
        "topic": "blague",
        "sendOnBlur": true,
        "className": "",
        "topicType": "msg",
        "x": 1260,
        "y": 660,
        "wires": [
            [
                "d51b6ad84344e772"
            ]
        ]
    },
    {
        "id": "d51b6ad84344e772",
        "type": "debug",
        "z": "20d5c36c60b1a5e6",
        "name": "debug 4",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1460,
        "y": 640,
        "wires": []
    },
    {
        "id": "df327a1b25c6341e",
        "type": "ui_group",
        "name": "tableau",
        "tab": "ef96d520f0d03c8e",
        "order": 1,
        "disp": true,
        "width": "6",
        "collapse": false,
        "className": ""
    },
    {
        "id": "ef96d520f0d03c8e",
        "type": "ui_tab",
        "name": "Home",
        "icon": "dashboard",
        "disabled": false,
        "hidden": false
    }
]

Voici en particulier la configuration de la sortie (« blague_question » = envoi de la Question)

Du côté de HA :

  1. J’ai bien créé une entité pour la question:

  1. Et au niveau de lovelace, j’ai bien la carte de l’entité :

Mais rien ne se passe : la blague est bien lue mais rien n’est affiché sur lovelace
J’ai l’impression que je ne récupère pas les infos de NodeRed

Salut,

Dans nodeRed je ne vois pas de noeud d’appel au service HA input_text.set_value pour mettre à jour la valeur de l’entité. Là on dirait que tu met à jour la variable dans NR mais jamais de retour à HA.

image

Yes perfect, ça marche très bien !

Merci @AlexHass
J’ai bien compris l’intérêt du noeud « Change » que tu me suggérais mais je n’ai pas réussi à l’intégrer encore
D’autant plus qu’il faut que je choisisse la réponse qui est liée à la question donc c’est à dire le même « i » qui est choisi dans le noeud random

Voici donc le flow final :

Flow NR
[
    {
        "id": "15c33a53cd75773b",
        "type": "file in",
        "z": "20d5c36c60b1a5e6",
        "name": "Reading Json file",
        "filename": "/config/Jokes/blagues.json",
        "filenameType": "str",
        "format": "utf8",
        "chunk": false,
        "sendError": false,
        "encoding": "utf8",
        "allProps": false,
        "x": 370,
        "y": 600,
        "wires": [
            [
                "5cc6e99793bc4d7d"
            ]
        ]
    },
    {
        "id": "81890602d5baede6",
        "type": "inject",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 160,
        "y": 600,
        "wires": [
            [
                "15c33a53cd75773b"
            ]
        ]
    },
    {
        "id": "5cc6e99793bc4d7d",
        "type": "json",
        "z": "20d5c36c60b1a5e6",
        "name": "JsonObject",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 570,
        "y": 600,
        "wires": [
            [
                "18888040a580fb7d"
            ]
        ]
    },
    {
        "id": "5d3a22fa8158d720",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeQuestion",
        "func": "var randomJoke = msg.random\nvar tts1 = msg.payload.jokes[msg.random].setup\nmsg.payload= tts1\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1010,
        "y": 700,
        "wires": [
            [
                "35606b2bf84f5634",
                "e6c0afd702541dbb"
            ]
        ]
    },
    {
        "id": "35606b2bf84f5634",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1250,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "18888040a580fb7d",
        "type": "random",
        "z": "20d5c36c60b1a5e6",
        "name": "Random",
        "low": 1,
        "high": "29",
        "inte": "true",
        "property": "random",
        "x": 660,
        "y": 700,
        "wires": [
            [
                "86638e9d35563164",
                "5d3a22fa8158d720"
            ]
        ]
    },
    {
        "id": "e9a030d9901b8801",
        "type": "function",
        "z": "20d5c36c60b1a5e6",
        "name": "GetJokeAnswer",
        "func": "var randomJoke = msg.random\nvar tts2 = msg.payload.jokes[msg.random].delivery\nmsg.payload= tts2\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 780,
        "wires": [
            [
                "e71ba3d0583bac94",
                "e6c0afd702541dbb"
            ]
        ]
    },
    {
        "id": "e71ba3d0583bac94",
        "type": "http request",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://homeassistant.local:12101/api/text-to-speech",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 1230,
        "y": 780,
        "wires": [
            []
        ]
    },
    {
        "id": "86638e9d35563164",
        "type": "delay",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "pauseType": "delay",
        "timeout": "4",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 840,
        "y": 780,
        "wires": [
            [
                "e9a030d9901b8801"
            ]
        ]
    },
    {
        "id": "3a1ef6e1987de676",
        "type": "change",
        "z": "20d5c36c60b1a5e6",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload.jokes[msg.random].setup",
                "pt": "msg",
                "to": "tts1",
                "tot": "env"
            },
            {
                "t": "set",
                "p": "payload.jokes[msg.random].delivery",
                "pt": "msg",
                "to": "tts2",
                "tot": "env"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 960,
        "y": 580,
        "wires": [
            []
        ]
    },
    {
        "id": "e6c0afd702541dbb",
        "type": "api-call-service",
        "z": "20d5c36c60b1a5e6",
        "name": "Mise à jour texte",
        "server": "85a4abf690ce4522",
        "version": 5,
        "debugenabled": false,
        "domain": "input_text",
        "service": "set_value",
        "areaId": [
            "cuisine"
        ],
        "deviceId": [],
        "entityId": [
            "input_text.blague_question"
        ],
        "data": "{ \"value\": msg.payload }",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 1480,
        "y": 660,
        "wires": [
            []
        ]
    },
    {
        "id": "85a4abf690ce4522",
        "type": "server",
        "name": "Home Assistant",
        "version": 5,
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true,
        "cacheJson": true,
        "heartbeat": false,
        "heartbeatInterval": "30",
        "areaSelector": "friendlyName",
        "deviceSelector": "friendlyName",
        "entitySelector": "friendlyName",
        "statusSeparator": ": ",
        "statusYear": "hidden",
        "statusMonth": "short",
        "statusDay": "numeric",
        "statusHourCycle": "default",
        "statusTimeFormat": "h:m",
        "enableGlobalContextStore": true
    }
]