User: Message<"meshtastic.User"> & {
    hwModel: HardwareModel;
    id: string;
    isLicensed: boolean;
    longName: string;
    macaddr: Uint8Array;
    publicKey: Uint8Array;
    role: Config_DeviceConfig_Role;
    shortName: string;
}

Broadcast when a newly powered mesh node wants to find a node num it can use Sent from the phone over bluetooth to set the user id for the owner of this node. Also sent from nodes to each other when a new node signs on (so all clients can have this info) The algorithm is as follows: when a node starts up, it broadcasts their user and the normal flow is for all other nodes to reply with their User as well (so the new node can build its nodedb) If a node ever receives a User (not just the first broadcast) message where the sender node number equals our node number, that indicates a collision has occurred and the following steps should happen: If the receiving node (that was already in the mesh)'s macaddr is LOWER than the new User who just tried to sign in: it gets to keep its nodenum. We send a broadcast message of OUR User (we use a broadcast so that the other node can receive our message, considering we have the same id - it also serves to let observers correct their nodedb) - this case is rare so it should be okay. If any node receives a User where the macaddr is GTE than their local macaddr, they have been vetoed and should pick a new random nodenum (filtering against whatever it knows about the nodedb) and rebroadcast their User. A few nodenums are reserved and will never be requested: 0xff - broadcast 0 through 3 - for future use

Type declaration

  • hwModel: HardwareModel

    TBEAM, HELTEC, etc... Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. Apps will still need the string here for older builds (so OTA update can find the right image), but if the enum is available it will be used instead.

    from field: meshtastic.HardwareModel hw_model = 5;

  • id: string

    A globally unique ID string for this user. In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>. Note: app developers are encouraged to also use the following standard node IDs "^all" (for broadcast), "^local" (for the locally connected node)

    from field: string id = 1;

  • isLicensed: boolean

    In some regions Ham radio operators have different bandwidth limitations than others. If this user is a licensed operator, set this flag. Also, "long_name" should be their licence number.

    from field: bool is_licensed = 6;

  • longName: string

    A full name for this user, i.e. "Kevin Hester"

    from field: string long_name = 2;

  • macaddr: Uint8Array

    Deprecated in Meshtastic 2.1.x This is the addr of the radio. Not populated by the phone, but added by the esp32 when broadcasting

    from field: bytes macaddr = 4 [deprecated = true];

  • publicKey: Uint8Array

    The public key of the user's device. This is sent out to other nodes on the mesh to allow them to compute a shared secret key.

    from field: bytes public_key = 8;

  • role: Config_DeviceConfig_Role

    Indicates that the user's role in the mesh

    from field: meshtastic.Config.DeviceConfig.Role role = 7;

  • shortName: string

    A VERY short name, ideally two characters. Suitable for a tiny OLED screen

    from field: string short_name = 3;

from message meshtastic.User