Passing an array into a sensor attribute using the API node

Hi all,

Using chatgpt, I am creating a week menu into the form of a JSON file.
the JSON file so the plan is to display this into a dashboard.
My JSON looks like this out of chatgpt

{
  "menu": {
    "Lundi": {
      "nom": "Salade de quinoa aux légumes",
      "recette": [
        "Faites cuire 200g de quinoa selon les instructions du paquet.",
        
        "Dans un saladier, ajoutez le quinoa cuit, 1 concombre coupé en dés, 1 poivron rouge coupé, et 10 tomates cerises coupées en deux.",
        
        "Ajoutez 1 boîte de maïs égoutté et 1 avocat coupé en dés.",
        
        "Assaisonnez avec 3 c. à soupe d'huile d'olive, 1 c. à soupe de vinaigre balsamique, du sel et du poivre.",
        
        "Mélangez bien et servez frais."
      ],
      "ingredients": "200g de quinoa, 1 concombre, 1 poivron rouge, 10 tomates cerises, 1 boîte de maïs, 1 avocat, 3 c. à soupe d'huile d'olive, 1 c. à soupe de vinaigre balsamique, sel, poivre"
    },
    "Mardi": {
      "nom": "Pâtes au pesto et poulet",
      "recette": [
        "Faites cuire 300g de pâtes selon les instructions du paquet.",
        
        "Dans une poêle, faites chauffer 1 c. à soupe d'huile d'olive.",
        
        "Ajoutez 400g de poulet coupé en dés et faites cuire jusqu'à ce qu'il soit doré.",
        
        "Incorporez 150g de pesto et mélangez avec les pâtes cuites.",
        
        "Servez avec du parmesan râpé."
      ],
      "ingredients": "300g de pâtes, 1 c. à soupe d'huile d'olive, 400g de poulet, 150g de pesto, parmesan râpé"
    },
    "Mercredi": {
      "nom": "Chili sin carne",
      "recette": [
        "Dans une casserole, faites chauffer 1 c. à soupe d'huile d'olive.",
        
        "Ajoutez 1 oignon haché et 2 gousses d'ail écrasées, faites revenir jusqu'à ce qu'ils soient dorés.",
        
        "Ajoutez 400g de haricots rouges (en conserve), 400g de tomates concassées et 1 c. à soupe de cumin.",
        
        "Laissez mijoter pendant 10 minutes.",
        
        "Servez avec du riz."
      ],
      "ingredients": "1 oignon, 2 gousses d'ail, 400g de haricots rouges (en conserve), 400g de tomates concassées, 1 c. à soupe de cumin, 1 c. à soupe d'huile d'olive, riz"
    },
    "Jeudi": {
      "nom": "Curry de légumes",
      "recette": [
        "Dans une poêle, faites chauffer 1 c. à soupe d'huile d'olive.",
        
        "Ajoutez 1 oignon haché et faites revenir jusqu'à ce qu'il soit translucide.",
        
        "Ajoutez 1 courgette, 1 carotte et 1 poivron coupés en dés.",
        
        "Ajoutez 400ml de lait de coco et 2 c. à soupe de pâte de curry.",
        
        "Laissez mijoter pendant 10 minutes.",
        
        "Servez avec du riz."
      ],
      "ingredients": "1 c. à soupe d'huile d'olive, 1 oignon, 1 courgette, 1 carotte, 1 poivron, 400ml de lait de coco, 2 c. à soupe de pâte de curry, riz"
    },
    "Vendredi": {
      "nom": "Omelette aux légumes",
      "recette": [
        "Battez 6 œufs dans un bol avec du sel et du poivre.",
        
        "Dans une poêle, faites chauffer 1 c. à soupe d'huile d'olive.",
        
        "Ajoutez 1 poivron et 1 courgette coupés en dés, faites revenir jusqu'à ce qu'ils soient tendres.",
        
        "Ajoutez les œufs battus et laissez cuire à feu doux jusqu'à ce que l'omelette soit prise.",
        
        "Servez avec du pain grillé."
      ],
      "ingredients": "6 œufs, 1 poivron, 1 courgette, 1 c. à soupe d'huile d'olive, sel, poivre, pain"
    },
    "Samedi": {
      "nom": "Burgers de lentilles",
      "recette": [
        "Dans un saladier, écrasez 400g de lentilles cuites.",
        
        "Ajoutez 1 oignon haché, 1 carotte râpée, 1 c. à café de cumin et 1 œuf.",
        
        "Formez des galettes et faites-les cuire dans une poêle avec 1 c. à soupe d'huile d'olive pendant 4-5 minutes de chaque côté.",
        
        "Servez avec des pains à burger et des garnitures au choix."
      ],
      "ingredients": "400g de lentilles cuites, 1 oignon, 1 carotte, 1 c. à café de cumin, 1 œuf, 1 c. à soupe d'huile d'olive, pains à burger, garnitures au choix"
    },
    "Dimanche": {
      "nom": "Riz sauté aux légumes",
      "recette": [
        "Faites cuire 200g de riz selon les instructions du paquet.",
        
        "Dans une poêle, faites chauffer 1 c. à soupe d'huile d'olive.",
        
        "Ajoutez 1 carotte coupée en dés, 1 poivron et 100g de petits pois.",
        
        "Faites sauter les légumes pendant 5-7 minutes.",
        
        "Ajoutez le riz cuit et 2 c. à soupe de sauce soja, mélangez bien et servez."
      ],
      "ingredients": "200g de riz, 1 c. à soupe d'huile d'olive, 1 carotte, 1 poivron, 100g de petits pois, 2 c. à soupe de sauce soja"
    }
  },
  "liste": "200g de quinoa, 1 concombre, 1 poivron rouge, 10 tomates cerises, 1 boîte de maïs, 300g de pâtes, 400g de poulet, 150g de pesto, 1 oignon, 2 gousses d'ail, 400g de haricots rouges (en conserve), 400g de tomates concassées, 1 c. à soupe de cumin, 1 c. à soupe d'huile d'olive, 1 courgette, 1 carotte, 400ml de lait de coco, 2 c. à soupe de pâte de curry, 6 œufs, 200g de champignons, 1 c. à soupe d'huile d'olive, sel, poivre, 400g de lentilles cuites, 1 c. à café de cumin, 1 œuf, 1 c. à soupe d'huile d'olive, 4 filets de saumon, 1 citron, 1 c. à soupe d'huile d'olive, légumes vapeur"
}

Then I am using the JSON parsing node from Nodered so I can extract the data I need easily and put them into messages.

I want to update sensors attributes with those data.

For this I am using the API node with this JSON file:


{
    "state": "Lundi",
    "attributes": {
        "recette_details": "{{recette}}",
        "recette_nom": "{{nom}}",
        "recette_ingredients": "{{ingredients}}"
    }
}

recette_nom and recette_ingredients are strings and and my flow updates them correctly.

The problem:
recette_details is an array but it shows as a string into home assistant. It looks like my API node configuration converts it into a string
Please note that msg.recette is sent as an array to the API node (I checked with a debug node)

I can’t help you as far as why the api is converting it to a string. You can create a sensor inside nodered. I have a few that I have arrays and obj as attributes. What you send into the attribute is what shows up in HA.

You will need to add the nodered companion from hacs to be able to create sensors that show up as an entity in HA.

1 Like

Thanks,

I will give it a try.
Do you know if you can set up attributes in those nodered sensors?

When you open a sensor node there is an attribute key, you can add as many as you want.

Anything in msg.data sent to the sensor node, shows up in “data” or whatever you name the key.

1 Like

yep got it
Just tested and it looks lit it works

Could be a good workaround for what I am trying to achieve
thanks for the tip

1 Like