Describe openhab_bridge/Tutorials/WritingAndExaminingASimpleSubscriberForTheNumberItemTypePython here.
import os import rospy from openhab_msgs.msg import NumberState class NumberSubscriber(object): def __init__(self, item_name): self.item_name = item_name """Configure subscriber.""" # Create a subscriber with appropriate topic, custom message and name of # callback function. self.sub = rospy.Subscriber("/openhab/items/" + self.item_name + "/state", NumberState, self.callback) # Initialize message variables. self.enable = False self.data = None if self.enable: self.start() else: self.stop() def start(self): self.enable = True self.sub = rospy.Subscriber("/openhab/items/" + self.item_name + "/state", NumberState, self.callback) def callback(self, data): """Handle subscriber data.""" # Simply print out values in our custom message. self.data = data if self.data.isnull == False: msg = "Received %s with state %s" % (self.data.item, self.data.state) else: msg = "Received %s with NULL" % self.data.item rospy.loginfo(rospy.get_caller_id() + msg) def stop(self): """Turn off subscriber.""" self.enable = False self.sub.unregister() if __name__ == '__main__': # Initialize the node and name it. node_name = "NumberSubscriberNode" rospy.init_node(node_name, anonymous=True) numberSubscriber = NumberSubscriber("testNumber") # Go to the main loop try: numberSubscriber.start() # Wait for messages on topic, go to callback function when new messages arrive. # spin() simply keeps python from exiting until this node is stopped rospy.spin() # Stop with Ctrl + C except KeyboardInterrupt: numberSubscriber.stop() nodes = os.popen("rosnode list").readlines() for i in range(len(nodes)): nodes[i] = nodes[i].replace("\n","") for node in nodes: os.system("rosnode kill " + node_name) print("Node stopped")