def init_alarm(self, hour, minutes, days=[1, 2, 3, 4, 5]): self.alarms.append(Alarm(hour, minutes, days)) self.dump_alarms()
def test_alarm_is_off_by_default(self): alarm = Alarm() self.assertFalse(alarm.is_alarm_on)
def test_check_too_high_temp_sounds_alarm(self): alarm = Alarm(sensor=TestSensor(32)) alarm.check() self.assertTrue(alarm.is_alarm_on)
elif mqttmanager.status==status.getStatusCode("CLOSED"): #calibrate closed&unlocked state lock.calibrate_closed() mqttmanager.publish("esys/dadada/status", status.getStatusCode("CLOSED")) #2 mqttmanager.status = 0 elif mqttmanager.status==status.getStatusCode("OPEN"): #open state lock.calibrate_open() mqttmanager.publish("esys/dadada/status", status.getStatusCode("OPEN")) #2 mqttmanager.status = 0 currentStatus = status.getStatusCode("OPEN") #OPEN utime.sleep_ms(300) mqttmanager.client.check_msg() alarm = Alarm() alarm_on = False while(True): if mqttmanager.alarm_status==1 and (currentStatus==status.getStatusCode("OPEN") or currentStatus==status.getStatusCode("CLOSED")): alarm.beep() if not wifi_conn.station.active(): wifi_conn.connect() # update MQTT broker when door changes state nextState = lock.get_status() if currentStatus != nextState: currentStatus = nextState # save the current door state mqttmanager.publish("esys/dadada/status", currentStatus) #update mqtt
def test_check_normal_pressure_doesnt_sound_alarm(self): alarm = Alarm(sensor=TestSensor(18)) alarm.check() self.assertFalse(alarm.is_alarm_on)
def run(): try: __alarmtime = '' __path_to_sounds = 'sounds' __fade_in = 60000 __wait = [20, 40] __blacklist = ['instruments', 'other folder'] __max_sounds = 5 input_time = sys.argv[1] # get alarmtime from command line alarm = Alarm(input_time, __path_to_sounds, __fade_in, __wait, __blacklist, __max_sounds) # Setup GPIO cancel button alarm.init_gpio() # alarm.test_all_sounds() # Show popup with when alarm is set and cancel option # Not needed when running from php/apache # popup = Popup(alarm.get_alarmtime()) # check if alarmtime == current time or if flag file exists to cancel alarm while (alarm.now() != alarm.get_alarmtime() and not alarm.cancel_file_exists()): # print("sleeping until alarm...") # setup alarm button to see when alarm is set when pressed alarm.check_alarm_button() time.sleep(1) # make alarm go off if flag file doesn't exist if not alarm.cancel_file_exists(): print("Time to wake up!") alarm.init_mixer() alarm.play_sounds() print("") while mixer.get_busy() and not alarm.cancel_file_exists(): # print("playing alarm...") # check if cancel button is pressed alarm.is_button_pressed() time.sleep(0.1) except (KeyboardInterrupt): print("--- Stopped alarm ---") except IndexError: print("Can't set alarm. Time needs to be given (HH:MM)") except ValueError as err: print(err) finally: mixer.quit() alarm.cleanup_gpio() try: alarm.remove_cancel_file() print("Deleted flag file") except (NameError, FileNotFoundError): print("No flag file to delete") try: alarm.remove_alarm_file() except (NameError, FileNotFoundError): print("No alarm set file to delete")
def test_alarm_is_off_by_default(): alarm = Alarm() assert not alarm.is_alarm_on
from alarm import Alarm from script import Script import multiprocessing import sys if __name__ == '__main__': alarm = Alarm(seconds=5) p1 = multiprocessing.Process(target=Script.main) p2 = multiprocessing.Process(target=alarm.run) p_list = [p1, p2] for p in p_list: p.start() while True: if p1.is_alive() is False or p2.is_alive() is False: if p1.is_alive(): p1.terminate() sys.exit(1) else: p2.terminate() sys.exit(0)
from argparse import ArgumentParser from datetime import datetime from flask import Flask, request, render_template from alarm import Alarm app = Flask(__name__) alarm = Alarm(alarm_t=datetime.now(), active=False) @app.route('/') def index(): return render_template('index.html', status=alarm.status(), alarm_t=alarm.time()) @app.route('/set_alarm', methods=['POST']) def set_alarm(): hour, minute = [int(n) for n in request.form['alarm_time'].split(':')] alarm.set_alarm( datetime( 2000, 1, 1, hour, minute ) ) return render_template('index.html', status=alarm.status(), alarm_t=alarm.time()) @app.route('/deactivate') def deactivate(): alarm.deactivate()
def test_check_high_presure_sounds_alarm(self): alarm = Alarm(sensor=TestSensor(22)) alarm.check() self.assertTrue(alarm.is_alarm_on)
def getClock(self): global weekdayNames with open('clock.html', 'r') as file: numberAlarms = 0 nowCompare = datetime.now() minDiff = 8 * 24 * 60 * 60 alarm = Alarm(0, 0, 0) day = 0 for i in AlarmControl().getAlarms(): if len(i.weekdays) > 0: for x in i.weekdays: numberAlarms = numberAlarms + 1 s2 = str(i.hour) + ":" + str(i.minute) + ":00" s1 = str(nowCompare.hour) + ":" + str( nowCompare.minute) + ":00" FMT = '%H:%M:%S' tdelta = datetime.strptime( s2, FMT) - datetime.strptime(s1, FMT) dayDiff = (7 + (x - nowCompare.weekday())) % 7 if dayDiff == 0 and tdelta.days == -1: dayDiff = dayDiff + 7 #print "tdelta: "+str(tdelta) #print "daydiff: "+str(dayDiff) diff = tdelta.seconds + dayDiff * 24 * 60 * 60 #print "diff: "+str(diff) if diff < minDiff: minDiff = diff alarm = i day = x else: numberAlarms = numberAlarms + 1 s2 = str(i.hour) + ":" + str(i.minute) + ":00" s1 = str(nowCompare.hour) + ":" + str( nowCompare.minute) + ":00" FMT = '%H:%M:%S' tdelta = datetime.strptime(s2, FMT) - datetime.strptime( s1, FMT) #dayDiff = 1 if tdelta.days == -1: dayDiff = 1 else: dayDiff = 0 #print "tdelta: "+str(tdelta) #print "daydiff: "+str(dayDiff) #diff=tdelta.seconds+dayDiff*24*60*60 diff = tdelta.seconds #print "diff: "+str(diff) if diff != 0: if diff < minDiff: minDiff = diff alarm = i day = nowCompare.weekday() + dayDiff text = "" if (numberAlarms > 0): print "closest alarm is: " + weekdayNames[day] + ", " + str( alarm.hour) + ":" + str(alarm.minute) text = text + weekdayNames[day] + ", " text = text + str(alarm.hour).zfill(2) + ":" + str( alarm.minute).zfill(2) if (numberAlarms > 1): text = text + " +" + str(numberAlarms - 1) return file.read().replace("$NEXT_ALARM$", text)
def requestAlarm(self, level, what="???"): self.emit(self.alarmTrigger, Alarm(self, level, what))
def add_alarm(): db = DB("alarms.json") db.add_alarm(Alarm())
def main(): prices = Prices() weather = Weather() def wake_up_routine(number): if number == 1: w1 = Weather() send_message = "God morgen Tommy! I dag kan du forvente følgende temperaturer " + w1.min_max_weather( ) channel = "raspberry-pi" slack_client.api_call("chat.postMessage", channel=channel, text=send_message) audio = AudioPlayer() audio.music_then_radio("random", 10, 300, "random") def send_bitcoin_price(channel): price_bit = prices.get_bitcoin_price() send_msg_bit = "Den nåværende prisen for Bitcoin er: " + price_bit[0] returns_msg_bit = "Din nåværende avkastning på Bitcoin er: " + price_bit[ 1] slack_client.api_call("chat.postMessage", channel=channel, text=send_msg_bit) slack_client.api_call("chat.postMessage", channel=channel, text=returns_msg_bit) def send_dogecoin_price(channel): price_dog = prices.get_dogecoin_price() send_msg_dog = "Den nåværende prisen for Dogecoin er: " + price_dog[0] # returns_msg_dog = "Din nåværende avkastning på Bitcoin er: " + price_dog[1] slack_client.api_call("chat.postMessage", channel=channel, text=send_msg_dog) # slack_client.api_call("chat.postMessage", channel=channel, text=returns_msg_dog) def send_litecoin_price(channel): price_ltc = prices.get_litecoin_price() send_msg_ltc = "Den nåværende prisen for Litecoin er: " + price_ltc[0] returns_msg_ltc = "Din nåværende avkastning på Litecoin er: " + price_ltc[ 1] slack_client.api_call("chat.postMessage", channel=channel, text=send_msg_ltc) slack_client.api_call("chat.postMessage", channel=channel, text=returns_msg_ltc) def morning_messages(): time = datetime.now().time() hour = str(time)[0:2] global sent if hour == "09" and not sent: morning_prices() morning_weather() sent = True if hour == "10" and sent: sent = False def morning_weather(): curr_weather = weather.min_max_weather().split() minimum = curr_weather[0] maximum = curr_weather[1] send_message = f"I dag kan du forvente temperaturer mellom {minimum} og {maximum}." channel = "raspberry-pi" slack_client.api_call("chat.postMessage", channel=channel, text=send_message) def morning_prices(): channel = "raspberry-pi" good_morning_msg = "God morgen Tommy! Håper du får en fin dag :)" slack_client.api_call("chat.postMessage", channel=channel, text=good_morning_msg) send_bitcoin_price(channel) send_dogecoin_price(channel) send_litecoin_price(channel) tokens = {} with open('configs.json') as json_data: tokens = json.load(json_data) slack_client = SlackClient(tokens.get("slack_bot_token")) alarm = Alarm() if slack_client.rtm_connect(auto_reconnect=True): print("Connected!") while True: morning_messages() try: messages = slack_client.rtm_read() except: print("Disconnected.") print("Reconnecting...") time.sleep(20) slack_client.rtm_connect() messages = slack_client.rtm_read() if alarm.alarm_active(): if alarm.check_alarm(): wake_up_routine(1) # print(messages) if messages: for message in messages: if message.get("subtype") is None and message.get( 'user') is not None and message.get( 'text' ) is not None and "BOT TEST" in message.get( 'text'): channel = message["channel"] send_message = "Responding to `BOT TEST` message sent by user <@%s>" % message[ "user"] slack_client.api_call("chat.postMessage", channel=channel, text=send_message) if message.get("subtype") is None and message.get( 'user') is not None and message.get( 'text') is not None and "audio" in message.get( 'text'): command = message.get('text') command_lst = command.split() command = " ".join(command_lst[1:]) au1 = AudioPlayer() au1.audio_handler(command) if message.get("subtype") is None and message.get( 'user') is not None and message.get( 'text' ) is not None and "weather_now" in message.get( 'text'): command = message.get('text') command_lst = command.split() command = " ".join(command_lst[1:]) weather = Weather() send_message = weather.weather_handler(command) channel = message["channel"] slack_client.api_call("chat.postMessage", channel=channel, text=send_message) if message.get("subtype") is None and message.get( 'user') is not None and message.get( 'text' ) is not None and "weather_min_max" in message.get( 'text'): weather = Weather() send_message = weather.min_max_weather() channel = message["channel"] slack_client.api_call("chat.postMessage", channel=channel, text=send_message) if message.get("subtype") is None and message.get( 'user') is not None and message.get( 'text' ) is not None and "set_alarm" in message.get( 'text'): command = message.get('text') command_lst = command.split() alarm.set_alarm(int(command_lst[1]), int(command_lst[2]), int(command_lst[3]), int(command_lst[4])) if message.get("subtype") is None and message.get( 'user' ) is not None and message.get( 'text' ) is not None and "get_bitcoin_price" in message.get( 'text'): send_bitcoin_price(message["channel"]) if message.get("subtype") is None and message.get( 'user' ) is not None and message.get( 'text' ) is not None and "get_dogecoin_price" in message.get( 'text'): send_dogecoin_price(message["channel"]) if message.get("subtype") is None and message.get( 'user' ) is not None and message.get( 'text' ) is not None and "get_litecoin_price" in message.get( 'text'): send_litecoin_price(message["channel"]) if message.get("subtype") is None and message.get( 'user' ) is not None and message.get( 'text' ) is not None and "get_crypto_price" in message.get( 'text'): channel = message["channel"] send_bitcoin_price(channel) send_dogecoin_price(channel) send_litecoin_price(channel) time.sleep(4) else: print("Connection Failed")
if request.method == 'GET': a = [ passenger['heating']['chest'], passenger['heating']['hip'], passenger['heating']['feet'] ] return make_response(jsonify(a), 200) else: r = request.get_json(silent=True) if r is not None: if len(r) == 3: setHeating(passenger['_id'], r) return make_response( jsonify({'ok': 'Troy and Abed in the morning'}), 200) else: return make_response(jsonify({'error': 'wrong json object'}), 401) else: return make_response(jsonify({'error': 'not a json post'}), 401) if __name__ == '__main__': try: local = localcouch['passenger'] except Exception as e: local = localcouch.create('passenger') a = Alarm() app.run(host="::", port=8036)
def setUp(self): print("setUp") self.alarmtTime = Alarm(datetime(date.year,date.month,date.day,18,20))
from event_alarms import EventAlarms from alarm import Alarm with Alarm() as a: with EventAlarms(a): a.set_alarms(25, 10) a.set_alarms(20, 11) print("exited context manager...") a.set_alarms(10, 20)
def alarm(): return Alarm()
def test_normal_pressure_alarm_stays_off(): stub_sensor = Mock(Sensor) stub_sensor.sample_pressure.return_value = 18 alarm = Alarm(stub_sensor) alarm.check() assert not alarm.is_alarm_on
def test_check_too_low_pressure_sounds(low_sensor): alarm = Alarm(low_sensor) alarm.check() assert alarm.is_alarm_on
def test_low_pressure_activates_alarm(): alarm = Alarm(sensor = StubSensor()) alarm.check() assert alarm.is_alarm_on
def test_check_too_high_pressure_sounds(high_sensor): alarm = Alarm(high_sensor) alarm.check() assert alarm.is_alarm_on
def test_check_too_low_pressure_sounds_alarm(self): alarm = Alarm(sensor=TestSensor(15)) alarm.check() self.assertTrue(alarm.is_alarm_on)
def test_check_normal_pressure_doesnt_sound_alarm_with_mock(mocker): test_sensor = Mock(Sensor) test_sensor.sample_pressure.return_value = 18 alarm = Alarm(test_sensor) alarm.check() assert not alarm.is_alarm_on
def test_check_with_pressure_ok_with_mock_fw(self): test_sensor = Mock(Sensor) test_sensor.sample_pressure.return_value = 18 alarm = Alarm(test_sensor) alarm.check() self.assertFalse(alarm.is_alarm_on)
def test_check_normal_pressure_doesnt_sound_alarm(normal_sensor): alarm = Alarm(normal_sensor) alarm.check() assert not alarm.is_alarm_on
def test_check_too_low_temp_sounds_alarm(self): alarm = Alarm(sensor=TestSensor(2)) # arrange alarm.check() # act self.assertTrue(alarm.is_alarm_on) # assert
def run(): oled = Oled(12, 2, 15, 14, 13, 4) ssd = oled.ssd #home=14, left=13 right=11 back=7 key = Key(33, 25, 26, 32) key.start() keyvalue = 15 menu_index = 1 menu = Menu(ssd, jsonfile) def lowpower(ssd): ssd.poweroff() machine.deepsleep() wake1 = Pin(33, mode=Pin.IN) #level parameter can be: esp32.WAKEUP_ANY_HIGH or esp32.WAKEUP_ALL_LOW esp32.wake_on_ext0(pin=wake1, level=esp32.WAKEUP_ALL_LOW) time_cnt = 0 clock = Clock(ssd, key) alarm = Alarm(ssd, key, jsonfile) compass = Compass(ssd, key) weather = Weather(ssd, key, jsonfile) appstore = Appstore(ssd, key, jsonfile) sysset = Sysset(ssd, key, jsonfile) menu_dic = { 1: menu.clock, 2: menu.alarm, 3: menu.compass, 4: menu.weather, 5: menu.appstore, 6: menu.sysset } menu_event = { 1: clock.run, 2: alarm.run, 3: compass.run, 4: weather.run, 5: appstore.run, 6: sysset.run } while True: # time.sleep_ms(200) #time_cnt+=1 #if time_cnt>50: # lowpower(ssd) if key.read() == key.LEFT_PRESS: time_cnt = 0 menu_index = menu_index - 1 if menu_index <= 1: menu_index = 1 time.sleep_ms(200) elif key.read() == key.RIGHT_PRESS: time_cnt = 0 menu_index = menu_index + 1 if menu_index >= 6: menu_index = 6 time.sleep_ms(200) menu.disSensor(90, 0, 0.57) menu_dic[menu_index]() if key.read() == key.HOME_PRESS: time_cnt = 0 ssd.fill(0) menu_event[menu_index]() ssd.fill(0) time.sleep_ms(200)
def test_check_normal_temp_doesnt_sounds_alarm(self): alarm = Alarm(sensor=TestSensor(20)) alarm.check() self.assertFalse(alarm.is_alarm_on)
def init_alarm(): from alarm import Alarm a1 = Alarm("alarm1", "Loud speaker", "Alarm 1") db.session.add(a1) db.session.commit() print Alarm.query.all()