From: Constantin Berhard Date: Wed, 4 Dec 2013 22:28:36 +0000 (+0100) Subject: abs2rel works and more sounds X-Git-Url: https://git.ralfj.de/saartuer.git/commitdiff_plain/77625890f7be83890ca4a99fe9571a9a13772624?ds=inline abs2rel works and more sounds --- diff --git a/statemachine.py b/statemachine.py index 3e22206..4fccee4 100644 --- a/statemachine.py +++ b/statemachine.py @@ -20,8 +20,11 @@ def nervlist_abs2rel(nervlist_abs): for (t, f) in nervlist_abs: assert t >= last_t nervlist_rel.append((t-last_t, f)) + last_t = t return nervlist_rel +# StateAuf constants +HELLO_PROBABILITY = 0.2 # StateUnlocking constants OPEN_REPEAT_TIMEOUT = 7 @@ -35,10 +38,11 @@ CLOSE_REPEAT_NUMBER = 3 FALLBACK_LEAVE_DELAY_LOCK = 5 # seconds # StateAboutToOpen constants +SWITCH_PRAISE_PROBABILITY = 0.5 ABOUTOPEN_NERVLIST = nervlist_abs2rel([(5, lambda : play_sound("flipswitch")), (10, lambda:play_sound("flipswitch")),\ (20, lambda:play_sound("flipswitch")), (30, lambda:play_sound("flipswitch")), (30, lambda:logger.error("Space open but switch not flipped for 30 seconds")),\ - (40, lambda:play_sound("flipswitch")), (50, lambda:play_sound("flipswitch")), (60, lambda:play_sound("flipswitch")), - (60, lambda:logger.critical("Space open but switch not flipped for 60 seconds")), (120, lambda:play_sound("flipswitch")), + (40, lambda:play_sound("flipswitch")), (50, lambda:play_sound("flipswitch")), (60, lambda:play_sound("mail_sent")), + (60, lambda:logger.critical("Space open but switch not flipped for 60 seconds")), (120, lambda:play_sound("mail_sent")), (10*60, lambda:logger.critical("Space open but switch not flipped for 10 minutes")), (60*60, lambda:logger.critical("Space open but switch not flipped for one hour"))]) @@ -247,6 +251,8 @@ class StateMachine(): pins = self.pins() if pins.space_active: logger.info("Space activated, opening procedure completed") + if not self.old_pins().space_active and random.random() <= SWITCH_PRAISE_PROBABILITY: + play_sound("success") return StateMachine.StateAuf(self.state_machine) return super().handle_pins_event() @@ -265,6 +271,8 @@ class StateMachine(): if not pins.space_active: logger.info("StateMachine: space switch turned off - starting leaving procedure") return StateMachine.StateAboutToLeave(self.state_machine) + if not pins.door_closed and self.old_pins().door_closed and random.random() <= HELLO_PROBABILITY: + play_sound("hello") return super().handle_pins_event() def on_leave(self): self.api().set_state(False)