- messages_sent now increments when a message is queued (async_send_message), not only when a delivery proof returns. LXMessage's delivery callback only fires on a returned proof (LXMessage.py ~566), which many peers/methods never send, so the "Messages sent" sensor was stuck at 0 for messages that were actually delivered. The delivery callback now only emits the event. - Implement the previously-inert "greeting" option: send it automatically the first time each sender contacts HA (tracked per sender in RuntimeData). - Clarify the notify entity (rename to "Send message" / "Отправить сообщение") and document greeting + notify in strings/translations/README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
166 lines
6.0 KiB
JSON
166 lines
6.0 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Connect to Reticulum",
|
|
"description": "Home Assistant will run a Reticulum instance and connect out to your Reticulum stack over TCP (the neighbouring machine must expose a TCPServerInterface).",
|
|
"data": {
|
|
"target_host": "Target host",
|
|
"target_port": "Target port",
|
|
"display_name": "Display name",
|
|
"interface_name": "Interface name"
|
|
},
|
|
"data_description": {
|
|
"target_host": "Hostname or IP of the machine running the Reticulum TCP server.",
|
|
"target_port": "TCP port of the Reticulum TCPServerInterface (default 4242).",
|
|
"display_name": "Name announced to other Reticulum peers for this Home Assistant.",
|
|
"interface_name": "Label used for this connection in the Reticulum config."
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Could not reach the Reticulum TCP server at that host and port."
|
|
},
|
|
"abort": {
|
|
"already_configured": "Reticulum is already configured.",
|
|
"single_instance_allowed": "Only a single Reticulum instance is allowed."
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "Reticulum options",
|
|
"data": {
|
|
"enable_assist": "Route incoming messages to Assist",
|
|
"assist_agent": "Assist agent (entity id / agent id, blank = default)",
|
|
"assist_language": "Assist language (blank = system default)",
|
|
"allow_all_senders": "Reply to any sender",
|
|
"allowed_identities": "Allowed sender addresses",
|
|
"default_recipient": "Default recipient address (for the notify entity)",
|
|
"greeting": "First-contact greeting message",
|
|
"delivery_method": "Default delivery method",
|
|
"announce_interval": "Announce interval",
|
|
"propagation_node": "Propagation node address",
|
|
"sync_interval": "Propagation sync interval",
|
|
"loglevel": "Reticulum log level (0-7)"
|
|
},
|
|
"data_description": {
|
|
"enable_assist": "When enabled, incoming LXMF messages are answered by the Assist conversation agent and the reply is sent back over Reticulum.",
|
|
"allowed_identities": "One address per line (or comma separated). Only used when 'Reply to any sender' is off.",
|
|
"default_recipient": "16-byte hex LXMF address that the notify.reticulum entity sends to.",
|
|
"greeting": "Sent automatically the first time each sender messages Home Assistant (once per sender per restart). Leave blank to disable.",
|
|
"announce_interval": "How often (seconds) to announce our address. 0 disables periodic announces.",
|
|
"propagation_node": "Optional LXMF propagation node for store-and-forward delivery.",
|
|
"sync_interval": "How often (seconds) to pull queued messages from the propagation node. 0 disables."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"entity": {
|
|
"sensor": {
|
|
"lxmf_address": { "name": "LXMF address" },
|
|
"messages_received": { "name": "Messages received" },
|
|
"messages_sent": { "name": "Messages sent" },
|
|
"messages_failed": { "name": "Messages failed" },
|
|
"peers": { "name": "Known peers" },
|
|
"last_message": { "name": "Last message" },
|
|
"last_message_time": { "name": "Last message time" },
|
|
"rx_bytes": { "name": "Received" },
|
|
"tx_bytes": { "name": "Transmitted" },
|
|
"bitrate": { "name": "Bitrate" },
|
|
"rssi": { "name": "RSSI" },
|
|
"snr": { "name": "SNR" },
|
|
"link_quality": { "name": "Link quality" }
|
|
},
|
|
"binary_sensor": {
|
|
"connected": { "name": "Connected" }
|
|
},
|
|
"button": {
|
|
"announce": { "name": "Announce" },
|
|
"sync": { "name": "Sync propagation node" }
|
|
},
|
|
"notify": {
|
|
"message": { "name": "Send message" }
|
|
}
|
|
},
|
|
"selector": {
|
|
"delivery_method": {
|
|
"options": {
|
|
"direct": "Direct (establish a link)",
|
|
"opportunistic": "Opportunistic (single packet)",
|
|
"propagated": "Propagated (store and forward)"
|
|
}
|
|
}
|
|
},
|
|
"device_automation": {
|
|
"trigger_type": {
|
|
"message_received": "Message received",
|
|
"message_delivered": "Message delivered",
|
|
"message_failed": "Message delivery failed",
|
|
"announce_received": "Announce received (peer heard)"
|
|
}
|
|
},
|
|
"services": {
|
|
"send_message": {
|
|
"name": "Send message",
|
|
"description": "Send an LXMF message to a Reticulum destination.",
|
|
"fields": {
|
|
"destination": {
|
|
"name": "Destination",
|
|
"description": "16-byte hex LXMF destination hash of the recipient."
|
|
},
|
|
"content": {
|
|
"name": "Content",
|
|
"description": "The message body."
|
|
},
|
|
"title": {
|
|
"name": "Title",
|
|
"description": "Optional message title / subject."
|
|
},
|
|
"method": {
|
|
"name": "Method",
|
|
"description": "Delivery method to use."
|
|
},
|
|
"fields": {
|
|
"name": "Fields",
|
|
"description": "Optional advanced LXMF fields dictionary."
|
|
}
|
|
}
|
|
},
|
|
"announce": {
|
|
"name": "Announce",
|
|
"description": "Announce this Home Assistant's LXMF destination on the network."
|
|
},
|
|
"request_path": {
|
|
"name": "Request path",
|
|
"description": "Ask the network for a path to a destination.",
|
|
"fields": {
|
|
"destination": {
|
|
"name": "Destination",
|
|
"description": "Destination hash to resolve a path to."
|
|
}
|
|
}
|
|
},
|
|
"set_propagation_node": {
|
|
"name": "Set propagation node",
|
|
"description": "Set the outbound LXMF propagation node.",
|
|
"fields": {
|
|
"destination": {
|
|
"name": "Destination",
|
|
"description": "Propagation node destination hash."
|
|
}
|
|
}
|
|
},
|
|
"sync_propagation": {
|
|
"name": "Sync propagation node",
|
|
"description": "Pull queued messages from the configured propagation node.",
|
|
"fields": {
|
|
"max_messages": {
|
|
"name": "Max messages",
|
|
"description": "Maximum number of messages to retrieve."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|