#########################################
# Random.py
# description: Random message generator - sends messages
# at random intervales with random parameters
# categories: general
# more info @: http://myrobotlab.org/service/Random
#########################################
# start the service
python = runtime.start("python", "Python")
random = runtime.start("random", "Random")
clock = runtime.start("clock", "Clock")
def happy():
print("i am happy")
def sad():
print("i am sad")
def angry():
print("i am angry")
# add a named random task
random.addRandom("random emotion", 1000, 2000, "python", "exec", "happy()", "sad()", "angry()")
# enable random events
random.enable()
def roll_dice(value):
print("roll_dice " + str(value))
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_dice", random.intRange(1, 6))
# add a complex dice
def roll_complex_dice(value):
print("roll_complex_dice " + str(value))
# roll the complex dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_complex_dice", random.doubleRange(1, 6))
def random_color(value):
print("random_color " + str(value))
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "random_color", random.setRange("red", "green", "blue", "yellow"))
# do a complex multi parameter, multi-type method
def kitchen_sink(dice, complex_dice, colors, names):
print("kitchen_sink ", dice, complex_dice, colors, names)
random.addRandom(1000, 2000, "python", "kitchen_sink", random.intRange(1, 6), random.doubleRange(1, 6), random.setRange("red","green","blue","yellow"), random.setRange("bob","jane","fred","mary"))
# set the interval on a clock between 1000 and 8000
# if you look in the UI you can see the clock interval changing
random.addRandom(200, 500, "clock", "setInterval", random.intRange(1000, 8000))
# Chaos monkey clock starting and stopping !
random.addRandom(200, 500, "clock", "startClock")
random.addRandom(200, 500, "clock", "stopClock")
# disable single random event generator - must be explicit with name.method key
random.disable("python.roll_dice")
# you know longer should see the python.roll_dice event firing - since it was explicitly disabled
# stop events - but leave all random event data
# allows re-enabling
# random.disable()
# enable events
# random.enable()
# stop events and clear all random event ata
# random.purge()