Exemplo n.º 1
0
def broadcast_state():
    alarm = Clock.get_alarm()
    state = {
        'time': Clock.get_datetime(),
        'alarm': {
            'time': f'{str(alarm.hour).zfill(2)}:{str(alarm.minute).zfill(2)}',
            'daysOfWeek': alarm.day_of_week,
            'enabled': alarm.enabled,
            'durationMinutes': alarm.duration_minutes,
            'isSounding': Clock.alarm_is_on(),
            'type': alarm.type.value
        },
        'radio': {
            'on': Radio.is_playing(),
            'stations': [{'name': s.name, 'url': s.url} for s in Radio.get_stations()],
            'currentStation': Radio.state.current_station.url,
            'volume': Radio.get_volume()
        }
    }
    socketio.emit('state_update', json.dumps(state))
Exemplo n.º 2
0
        Clock.update()
        time_str = Clock.get_time()
        alarm = Clock.get_alarm()
        alarm_str = f'{str(alarm.hour).zfill(2)}:{str(alarm.minute).zfill(2)} [{Clock.get_days_str(alarm.day_of_week)}]'

        display.draw_text((20, 0), time_str, font=display.big_font)
        if Clock.maybe_trigger_alarm() and not Radio.is_playing():
            volume = Radio.get_volume()
            Radio.set_volume(0)
            if not Radio.play_radio(triggered_by_alarm=alarm):
                print("Failed to play chosen station, playing fallback mp3.")
                Radio.play_mp3('radioError.mp3')
            Radio.fadein(volume)
            AdminServer.broadcast_state()
        Clock.maybe_stop_alarm()
        if not Clock.alarm_is_on() and Radio.is_playing(
        ) and Radio.was_triggered_by_alarm():
            Radio.stop()
            AdminServer.broadcast_state()
        if Clock.alarm_is_on() and Clock.on_beat():
            display.draw_text((0, 16),
                              '*** ALARM ***',
                              font=display.small_font)
            LED.on()
        elif alarm.enabled:
            display.draw_text((0, 16), alarm_str, font=display.small_font)
            LED.off()
        current_radio_station = str(Radio.state.current_station.name)
        display.draw_text((0, 25),
                          f'{current_radio_station} - {Radio.get_volume()}%',
                          font=display.small_font)