Skip to content

Receive rich notifications about "new_devices", "down_devices" and "down_reconnected" via MQTT same way as with webhook #1339

@mprajsler

Description

@mprajsler

Is there an existing issue for this?

  • I have searched the existing open and closed issues

Is your feature request related to a problem? Please describe

This is not a problem but a friendly feature request. Current solution can send rich webhook notification in JSON i.e.

"new_devices": [
        {
            "MAC": "xx:xx:xx:xx:xx:xx",
            "Datetime": "2025-12-08 16:50:31+01:00",
            "IP": "192.168.xx.xxx",
            "Event Type": "New Device",
            "Device name": "device.lan",
            "Comments": ""
        }
    ],
    "new_devices_meta": {
        "title": "🆕 New devices",
        "columnNames": [
            "MAC",
            "Datetime",
            "IP",
            "Event Type",
            "Device name",
            "Comments"
        ]
    },
    "down_devices": [],
    "down_devices_meta": {
        "title": "🔴 Down devices",
        "columnNames": []
    },
    "down_reconnected": [],
    "down_reconnected_meta": {
        "title": "🔁 Reconnected down devices",
        "columnNames": []
    },
    "events": [],
    "events_meta": {},
    "plugins": [],
    "plugins_meta": {}
}

Describe the solution you'd like

It would be good to have the same functionality but recieve such notifications via separate MQTT topic.

MQTT is quicker compared to webhooks.

Describe alternatives you've considered

Notification sent to home assistant via webhook, automatioin notification sent to mobile device via "notify.mobile_app_my_phone from this webhook.

Anything else?

HA Webhook automation for refference:

alias: Notify - NetAlertX Events
description: >
  Sends notifications for NetAlertX events with de-duplication and
  separate messages (only Name, IP, MAC).
triggers:
  - trigger: webhook
    webhook_id: your_webhook_id_here
    allowed_methods:
      - POST
      - PUT
      - HEAD
      - GET
    local_only: false

actions:
  - variables:
      payload: |
        {% if trigger.json is defined
           and trigger.json.attachments is defined
           and trigger.json.attachments|length > 0
           and trigger.json.attachments[0].text is defined %}
          {% set parsed = trigger.json.attachments[0].text | from_json(default={}) %}
        {% else %}
          {% set parsed = {} %}
        {% endif %}
        {{ parsed }}

      unique_new_devices: >
        {{ payload.get('new_devices', []) | unique(attribute='MAC') | list }}
      unique_down_devices: >
        {{ payload.get('down_devices', []) | unique(attribute='MAC') | list }}
      unique_reconnected_devices: >
        {{ payload.get('down_reconnected', []) | unique(attribute='MAC') | list }}

  #
  # NEW DEVICES
  #
  - condition: template
    value_template: "{{ unique_new_devices | length > 0 }}"
  - repeat:
      for_each: "{{ unique_new_devices }}"
      sequence:
        - action: notify.mobile_app_your_device_here
          data:
            title: "📶 New Device Detected"
            message: |
              Name: {{ repeat.item.get('Device name', 'Unknown') }}
              IP: {{ repeat.item.IP }}
              MAC: {{ repeat.item.MAC }}

  #
  # DEVICES DOWN
  #
  - condition: template
    value_template: "{{ unique_down_devices | length > 0 }}"
  - repeat:
      for_each: "{{ unique_down_devices }}"
      sequence:
        - action: notify.mobile_app_your_device_here
          data:
            title: "🔴 Device Offline"
            message: |
              Name: {{ repeat.item.get('devName', 'Unknown') }}
              IP: {{ repeat.item.get('eve_IP', 'Unknown') }}
              MAC: {{ repeat.item.get('eve_MAC', 'Unknown') }}

  #
  # DEVICES RECONNECTED
  #
  - condition: template
    value_template: "{{ unique_reconnected_devices | length > 0 }}"
  - repeat:
      for_each: "{{ unique_reconnected_devices }}"
      sequence:
        - action: notify.mobile_app_your_device_here
          data:
            title: "🟢 Device Reconnected"
            message: |
              Name: {{ repeat.item.get('devName', 'Unknown') }}
              IP: {{ repeat.item.get('eve_IP', 'Unknown') }}
              MAC: {{ repeat.item.get('eve_MAC', 'Unknown') }}


mode: queued
max: 10

Am I willing to test this? 🧪

  • I will do my best to test this feature on the netlertx-dev image when requested within 48h and report bugs to help deliver a great user experience for everyone and not to break existing installations.

Can I help implement this? 👩‍💻👨‍💻

  • Yes
  • No

Metadata

Metadata

Assignees

No one assigned

    Labels

    Feature request ➕New feature or requestHome Assistant 🏠Installed as an Home Assistant addonnext release/in dev image 🚀This is coming in the next release or was already released if the issue is Closed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions