@@ -166,7 +166,8 @@ def getTimeAgo(ts) -> Optional[str]:
166166 if not includeSelf and node ["num" ] == self .localNode .nodeNum :
167167 continue
168168
169- row = {"N" : 0 , "User" : f"UNK: { node ['num' ]} " , "ID" : f"!{ node ['num' ]:08x} " }
169+ presumptive_id = f"!{ node ['num' ]:08x} "
170+ row = {"N" : 0 , "User" : f"Meshtastic { presumptive_id [- 4 :]} " , "ID" : presumptive_id }
170171
171172 user = node .get ("user" )
172173 if user :
@@ -175,6 +176,7 @@ def getTimeAgo(ts) -> Optional[str]:
175176 "User" : user .get ("longName" , "N/A" ),
176177 "AKA" : user .get ("shortName" , "N/A" ),
177178 "ID" : user ["id" ],
179+ "Hardware" : user .get ("hwModel" , "UNSET" )
178180 }
179181 )
180182
@@ -844,16 +846,18 @@ def _handleFromRadio(self, fromRadioBytes):
844846 logging .debug (f"Received device metadata: { stripnl (fromRadio .metadata )} " )
845847
846848 elif fromRadio .HasField ("node_info" ):
847- node = asDict ["nodeInfo" ]
849+ logging .debug (f"Received nodeinfo: { asDict ['nodeInfo' ]} " )
850+
851+ node = self ._getOrCreateByNum (asDict ["nodeInfo" ]["num" ])
852+ node .update (asDict ["nodeInfo" ])
848853 try :
849854 newpos = self ._fixupPosition (node ["position" ])
850855 node ["position" ] = newpos
851856 except :
852857 logging .debug ("Node without position" )
853858
854- logging .debug (f"Received nodeinfo: { node } " )
855-
856- self .nodesByNum [node ["num" ]] = node
859+ # no longer necessary since we're mutating directly in nodesByNum via _getOrCreateByNum
860+ #self.nodesByNum[node["num"]] = node
857861 if "user" in node : # Some nodes might not have user/ids assigned yet
858862 if "id" in node ["user" ]:
859863 self .nodes [node ["user" ]["id" ]] = node
@@ -1005,7 +1009,16 @@ def _getOrCreateByNum(self, nodeNum):
10051009 if nodeNum in self .nodesByNum :
10061010 return self .nodesByNum [nodeNum ]
10071011 else :
1008- n = {"num" : nodeNum } # Create a minimal node db entry
1012+ presumptive_id = f"!{ nodeNum :08x} "
1013+ n = {
1014+ "num" : nodeNum ,
1015+ "user" : {
1016+ "id" : presumptive_id ,
1017+ "longName" : f"Meshtastic { presumptive_id [- 4 :]} " ,
1018+ "shortName" : f"{ presumptive_id [- 4 :]} " ,
1019+ "hwModel" : "UNSET"
1020+ }
1021+ } # Create a minimal node db entry
10091022 self .nodesByNum [nodeNum ] = n
10101023 return n
10111024
0 commit comments