Créer une entité à partir d'une ligne MQTT

Salutation !

je cherche à afficher dans mon lovelace, la donnée d’une ligne que je recois dans mqtt explorer :

image

{
  "state": {
    "text": "Printing",
    "flags": {
      "operational": true,
      "printing": true,
      "cancelling": false,
      "pausing": false,
      "resuming": false,
      "finishing": false,
      "closedOrError": false,
      "error": false,
      "paused": false,
      "ready": false,
      "sdReady": false
    }
  },
  "job": {
    "file": {
      "name": "cover.gcode",
      "path": "cover.gcode",
      "display": "cover.gcode",
      "origin": "local",
      "size": 1815764,
      "date": 1617553848
    },
    "estimatedPrintTime": 12624.76710764033,
    "averagePrintTime": null,
    "lastPrintTime": null,
    "filament": {
      "tool0": {
        "length": *[u]11455.703890000725[/u]*,
        "volume": 0
      }
    },
   ........

il s’agit de l’attribue « length » , je souhaiterai le voir devenir une entité dans HA exprimé en metre (dans mqtt exprimé en millimetre)

objectif final :
Ayant pour but par la suite que chaque projet d’impression 3D, et cela en fonction de la bobine de filament utilisée, s’additionne et m’avertisse si une impression dépasserai la longueur de filament en stock sur la bobine concerné :
filament noir : 10m + 20m + nouveau projet de 50m = 80m donc OK
filament rouge : 30m + 22m + nouveau projet de 50m = 102m donc NOK
ect …

Je ne m’y connais pas trop en MQTT mais en utilisant la documentation je ferais :

sensor:
  - platform: mqtt
    name: "Longueur Tool0"
    state_topic: "octoPrint/hass/printing"
    value_template: "{{ value_json.job.filament.tool0.length }}"
    json_attributes_topic: "octoPrint/hass/printing"
    json_attributes_template: "{{ value_json.job.filament.tool0 | tojson }}"

et si ça fonctionne alors j’essaierais de multiplier par 0.001 (division par 1000) pour l’avoir en mètre :

sensor:
  - platform: mqtt
    name: "Longueur Tool0"
    state_topic: "octoPrint/hass/printing"
    value_template: "{{ ((value_json.job.filament.tool0.length)|float * 0.001)|round(2) }}"
    json_attributes_topic: "octoPrint/hass/printing"
    json_attributes_template: "{{ value_json.job.filament.tool0 | tojson }}"

Mais je ne suis vraiment pas un grand utilisateur de MQTT (mais ça m’intéresse de savoir faire :upside_down_face: :yum:)

Attendons ceux qui savent… :+1:

4 « J'aime »

nikel @Clemalex , effectivement savoir où chercher dans la doc et avec la bonne doc ca aide pas mal :slight_smile: le code est bon et la conversion mm en m aussi bien entendu ^^ merci encore

image

1 « J'aime »

Bonjour à tous,
J’ai un pb qui semble similaire mais je n’arrive pas à me dépatouiller…
J’ai un capteur pluvio sur un CC2530 qui envoi l’état, visible sur MQTT explorer, mais pas moyen de visualiser cet état sous HA.


image
Sous Zigbee2mqtt mon module est bien détecter, mais sous « expose » je ne vois pas mon état de capteur.
J’ai essayer de rajouter ds le Config.yaml ce bout de code:
image
Mais aucune amélioration…
Si vous n’aviez pas deviné, cela ne fait que 15j que je me suis lancé ds la domotique…
Bref si qq à une idée…
Merci

Bon bein du coup j’ai trouvé :slight_smile:
Je n’avais pas mis le bout de code au bon endroit ds le yaml…
image
Maintenant, j’ai l’info qui gigote ds HA…
Bonne soirée