@@ -99,7 +99,7 @@ def status(self) -> int:
9999 @property
100100 def ready (self ) -> Optional [bool ]:
101101 """Return the ready."""
102- return self .data .get ("ready" ) # TODO: I can't find ready in the docs.
102+ return self .data .get ("ready" )
103103
104104 @property
105105 def device_class (self ) -> DeviceClass :
@@ -314,6 +314,13 @@ def handle_interview_failed(self, event: Event) -> None:
314314
315315 def handle_ready (self , event : Event ) -> None :
316316 """Process a node ready event."""
317+ # the event contains a full dump of the node
318+ self .data .update (event .data ["nodeState" ])
319+ # update/add values
320+ for value_state in event .data ["nodeState" ]["values" ]:
321+ value_id = get_value_id (self , value_state )
322+ value = self .values .get (value_id , Value (self , value_state ))
323+ value .update (value_state )
317324
318325 def handle_value_added (self , event : Event ) -> None :
319326 """Process a node value added event."""
@@ -324,27 +331,20 @@ def handle_value_updated(self, event: Event) -> None:
324331 """Process a node value updated event."""
325332 value = self .values .get (get_value_id (self , event .data ["args" ]))
326333 if value is None :
327- # TODO decide how to handle value updated for unknown values
328- print ()
329- print (
330- "Value updated for unknown value" ,
331- get_value_id (self , event .data ["args" ]),
332- )
333- print ("Available value IDs" , ", " .join (self .values ))
334- print ()
335- value = Value (self , event .data ["args" ])
336- self .values [value .value_id ] = value
334+ # received update for unknown value
335+ # should not happen but just in case, treat like added value
336+ self .handle_value_added (event )
337337 else :
338338 value .receive_event (event )
339- event .data ["value" ] = value
339+ event .data ["value" ] = value
340340
341341 def handle_value_removed (self , event : Event ) -> None :
342342 """Process a node value removed event."""
343343 event .data ["value" ] = self .values .pop (get_value_id (self , event .data ["args" ]))
344344
345345 def handle_value_notification (self , event : Event ) -> None :
346346 """Process a node value notification event."""
347- event .data ["notification" ] = ValueNotification . from_event ( event )
347+ event .data ["notification" ] = ValueNotification ( self , event . data [ "args" ] )
348348
349349 def handle_metadata_updated (self , event : Event ) -> None :
350350 """Process a node metadata updated event."""
0 commit comments