Describe openhab_bridge/Tutorials/WritingAndExaminingASimplePublisherForTheNumberItemTypePython here.

import rospy
from openhab_msgs.msg import NumberCommand

class NumberPublisher(object):
    """Node example class."""

    def __init__(self, item_name):

        self.item_name = item_name
        self.pub = rospy.Publisher("/openhab/items/" + self.item_name + "/command", NumberCommand, queue_size=10)
        self.rate = rospy.Rate(10) # 10hz

        # Initialize message variables.
        self.enable = False
        self.message = None

        if self.enable:
            self.start()
        else:
            self.stop()

    def start(self):
        """Turn on publisher."""
        self.enable = True
        self.pub = rospy.Publisher("/openhab/items/" + self.item_name + "/command", NumberCommand, queue_size=10)

        i = 0
        while not rospy.is_shutdown():

            self.message = NumberCommand()

            i = i + 1
            self.message.command = float(i)
            
            self.message.isnull = False

            self.message.header.stamp = rospy.Time.now()
            self.message.header.frame_id = "/base_link"
            self.message.item = self.item_name

            message = "Publishing to %s at %s: command = %s" % (self.message.item, rospy.get_time(), self.message.command)
            rospy.loginfo(message)

            self.pub.publish(self.message)
            self.rate.sleep()

    def stop(self):
        """Turn off publisher."""
        self.enable = False
        self.pub.unregister()

# Main function.
if __name__ == "__main__":
    # Initialize the node and name it.
    rospy.init_node("NumberPublisherNode", anonymous=True)
    # Go to class functions that do all the heavy lifting.

    numberPublisher = NumberPublisher("testNumber")

    try:
        numberPublisher.start()
    except rospy.ROSInterruptException:
        pass
    # Allow ROS to go to all callbacks.
    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

Wiki: openhab_bridge/Tutorials/WritingAndExaminingASimplePublisherForTheNumberItemTypePython (last edited 2022-10-30 10:21:43 by Michdo93)